Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/beginner686_campusreuse.json
T

1 line
414 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "beginner686/campusreuse", "files": {"CampusReuse-ui/.env.development": {"a32d43201e6bad14852d62e9e0b2ab6270717973": {"t": 1785599282.3839495, "n": 128, "h": "0db4604893fd9572", "c": "# 页面标题\nVITE_APP_TITLE = 校园闲置物品智能管理平台\n\n# 开发环境配置\nVITE_APP_ENV = 'development'\n\n# 校园闲置物品智能管理平台/开发环境\nVITE_APP_BASE_API = '/dev-api'\n"}}, "CampusReuse-admin/src/main/java/com/campusreuse/RuoYiApplication.java": {"e0f47f9bb7236023c517c2d9e91e904cb46a41cc": {"t": 1785599282.5275412, "n": 1153, "h": "6a204d6c89d7897c", "c": "package com.campusreuse;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;\n\n/**\n * 启动程序\n * \n * @author ruoyi\n */\n@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })\npublic class RuoYiApplication\n{\n public static void main(String[] args)\n {\n // System.setProperty(\"spring.devtools.restart.enabled\", \"false\");\n SpringApplication.run(RuoYiApplication.class, args);\n System.out.println(\"(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \\n\" +\n \" .-------. ____ __ \\n\" +\n \" | _ _ \\\\ \\\\ \\\\ / / \\n\" +\n \" | ( ' ) | \\\\ _. / ' \\n\" +\n \" |(_ o _) / _( )_ .' \\n\" +\n \" | (_,_).' __ ___(_ o _)' \\n\" +\n \" | |\\\\ \\\\ | || |(_,_)' \\n\" +\n \" | | \\\\ `' /| `-' / \\n\" +\n \" | | \\\\ / \\\\ / \\n\" +\n \" ''-' `'-' `-..-' \");\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/security/handle/AuthenticationEntryPointImpl.java": {"b26932fcafb022891e74166b36cc58387a7a8fd7": {"t": 1785599282.5746927, "n": 1244, "h": "4de5c9f0ae1f5b37", "c": "package com.campusreuse.framework.security.handle;\n\nimport java.io.IOException;\nimport java.io.Serializable;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport org.springframework.security.core.AuthenticationException;\nimport org.springframework.security.web.AuthenticationEntryPoint;\nimport org.springframework.stereotype.Component;\nimport com.alibaba.fastjson2.JSON;\nimport com.campusreuse.common.constant.HttpStatus;\nimport com.campusreuse.common.core.domain.AjaxResult;\nimport com.campusreuse.common.utils.ServletUtils;\nimport com.campusreuse.common.utils.StringUtils;\n\n/**\n * 认证失败处理类 返回未授权\n * \n * @author ruoyi\n */\n@Component\npublic class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, Serializable\n{\n private static final long serialVersionUID = -8970718410437077606L;\n\n @Override\n public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e)\n throws IOException\n {\n int code = HttpStatus.UNAUTHORIZED;\n String msg = StringUtils.format(\"请求访问:{},认证失败,无法访问系统资源\", request.getRequestURI());\n ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg)));\n }\n}\n"}}, "CampusReuse-ui/src/views/system/user/authRole.vue": {"a7546aaab4e7c3f4a5f461bc57d29c6687ea9267": {"t": 1785599282.6468918, "n": 3744, "h": "16be7641679cd145", "c": "<template>\n <div class=\"app-container\">\n <h4 class=\"form-header h4\">基本信息</h4>\n <el-form :model=\"form\" label-width=\"80px\">\n <el-row>\n <el-col :span=\"8\" :offset=\"2\">\n <el-form-item label=\"用户昵称\" prop=\"nickName\">\n <el-input v-model=\"form.nickName\" disabled />\n </el-form-item>\n </el-col>\n <el-col :span=\"8\" :offset=\"2\">\n <el-form-item label=\"登录账号\" prop=\"userName\">\n <el-input v-model=\"form.userName\" disabled />\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n\n <h4 class=\"form-header h4\">角色信息</h4>\n <el-table v-loading=\"loading\" :row-key=\"getRowKey\" @row-click=\"clickRow\" ref=\"roleRef\" @selection-change=\"handleSelectionChange\" :data=\"roles.slice((pageNum - 1) * pageSize, pageNum * pageSize)\">\n <el-table-column label=\"序号\" width=\"55\" type=\"index\" align=\"center\">\n <template #default=\"scope\">\n <span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>\n </template>\n </el-table-column>\n <el-table-column type=\"selection\" :reserve-selection=\"true\" :selectable=\"checkSelectable\" width=\"55\"></el-table-column>\n <el-table-column label=\"角色编号\" align=\"center\" prop=\"roleId\" />\n <el-table-column label=\"角色名称\" align=\"center\" prop=\"roleName\" />\n <el-table-column label=\"权限字符\" align=\"center\" prop=\"roleKey\" />\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" width=\"180\">\n <template #default=\"scope\">\n <span>{{ parseTime(scope.row.createTime) }}</span>\n </template>\n </el-table-column>\n </el-table>\n\n <pagination v-show=\"total > 0\" :total=\"total\" v-model:page=\"pageNum\" v-model:limit=\"pageSize\" />\n\n <el-form label-width=\"100px\">\n <div style=\"text-align: center;margin-left:-120px;margin-top:30px;\">\n <el-button type=\"primary\" @click=\"submitForm()\">提交</el-button>\n <el-button @click=\"close()\">返回</el-button>\n </div>\n </el-form>\n </div>\n</template>\n\n<script setup name=\"AuthRole\">\nimport { getAuthRole, updateAuthRole } from \"@/api/system/user\"\n\nconst route = useRoute()\nconst { proxy } = getCurrentInstance()\n\nconst loading = ref(true)\nconst total = ref(0)\nconst pageNum = ref(1)\nconst pageSize = ref(10)\nconst roleIds = ref([])\nconst roles = ref([])\nconst form = ref({\n nickName: undefined,\n userName: undefined,\n userId: undefined\n})\n\n/** 单击选中行数据 */\nfunction clickRow(row) {\n if (checkSelectable(row)) {\n proxy.$refs[\"roleRef\"].toggleRowSelection(row)\n }\n}\n\n/** 多选框选中数据 */\nfunction handleSelectionChange(selection) {\n roleIds.value = selection.map(item => item.roleId)\n}\n\n/** 保存选中的数据编号 */\nfunction getRowKey(row) {\n return row.roleId\n}\n\n// 检查角色状态\nfunction checkSelectable(row) {\n return row.status === \"0\" ? true : false\n}\n\n/** 关闭按钮 */\nfunction close() {\n const obj = { path: \"/system/user\" }\n proxy.$tab.closeOpenPage(obj)\n}\n\n/** 提交按钮 */\nfunction submitForm() {\n const userId = form.value.userId\n const rIds = roleIds.value.join(\",\")\n updateAuthRole({ userId: userId, roleIds: rIds }).then(response => {\n proxy.$modal.msgSuccess(\"授权成功\")\n close()\n })\n}\n\n(() => {\n const userId = route.params && route.params.userId\n if (userId) {\n loading.value = true\n getAuthRole(userId).then(response => {\n form.value = response.user\n roles.value = response.roles\n total.value = roles.value.length\n nextTick(() => {\n roles.value.forEach(row => {\n if (row.flag) {\n proxy.$refs[\"roleRef\"].toggleRowSelection(row)\n }\n })\n })\n loading.value = false\n })\n }\n})()\n</script>\n"}}, "CampusReuse-ui/src/utils/auth.js": {"08a43d6e299227a695497dd2d8a312096315958b": {"t": 1785599282.6904573, "n": 271, "h": "afe56db4feae7f7e", "c": "import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n"}}, "CampusReuse-ui/.env.production": {"e90c616c7a5ae8950380ba93796169c1446adcb9": {"t": 1785599282.6921067, "n": 185, "h": "918f1f2b51705f0a", "c": "# 页面标题\nVITE_APP_TITLE = 校园闲置物品智能管理平台\n\n# 生产环境配置\nVITE_APP_ENV = 'production'\n\n# 校园闲置物品智能管理平台/生产环境\nVITE_APP_BASE_API = '/prod-api'\n\n# 是否在打包时开启压缩,支持 gzip 和 brotli\nVITE_BUILD_COMPRESS = gzip"}}, "CampusReuse-ui/src/plugins/auth.js": {"1354e8760f3b797fc580dbb35a9d118ee896fb18": {"t": 1785599282.7350366, "n": 1274, "h": "86e65b3fd4db9512", "c": "import useUserStore from '@/store/modules/user'\n\nfunction authPermission(permission) {\n const all_permission = \"*:*:*\"\n const permissions = useUserStore().permissions\n if (permission && permission.length > 0) {\n return permissions.some(v => {\n return all_permission === v || v === permission\n })\n } else {\n return false\n }\n}\n\nfunction authRole(role) {\n const super_admin = \"admin\"\n const roles = useUserStore().roles\n if (role && role.length > 0) {\n return roles.some(v => {\n return super_admin === v || v === role\n })\n } else {\n return false\n }\n}\n\nexport default {\n // 验证用户是否具备某权限\n hasPermi(permission) {\n return authPermission(permission)\n },\n // 验证用户是否含有指定权限,只需包含其中一个\n hasPermiOr(permissions) {\n return permissions.some(item => {\n return authPermission(item)\n })\n },\n // 验证用户是否含有指定权限,必须全部拥有\n hasPermiAnd(permissions) {\n return permissions.every(item => {\n return authPermission(item)\n })\n },\n // 验证用户是否具备某角色\n hasRole(role) {\n return authRole(role)\n },\n // 验证用户是否含有指定角色,只需包含其中一个\n hasRoleOr(roles) {\n return roles.some(item => {\n return authRole(item)\n })\n },\n // 验证用户是否含有指定角色,必须全部拥有\n hasRoleAnd(roles) {\n return roles.every(item => {\n return authRole(item)\n })\n }\n}\n"}}, "CampusReuse-ui/.env.staging": {"2b7d47c9c087324e9429dafff73c3acb80151e66": {"t": 1785599282.7688565, "n": 183, "h": "5862b1f3275eaba5", "c": "# 页面标题\nVITE_APP_TITLE = 校园闲置物品智能管理平台\n\n# 生产环境配置\nVITE_APP_ENV = 'staging'\n\n# 校园闲置物品智能管理平台/生产环境\nVITE_APP_BASE_API = '/stage-api'\n\n# 是否在打包时开启压缩,支持 gzip 和 brotli\nVITE_BUILD_COMPRESS = gzip"}}, ".vscode/settings.json": {"7b016a89fbafd4b802a61d3207cf76f7c2253c6e": {"t": 1785599282.807956, "n": 53, "h": "c1d39a7eba93e0c2", "c": "{\n \"java.compile.nullAnalysis.mode\": \"automatic\"\n}"}}, "CampusReuse-admin/src/main/java/com/campusreuse/web/controller/system/SysConfigController.java": {"96c7657e31af563a1e1e459d6bcd46e681f2adcf": {"t": 1785599282.8360884, "n": 4303, "h": "3373e9f18f6a164d", "c": "package com.campusreuse.web.controller.system;\n\nimport java.util.List;\nimport javax.servlet.http.HttpServletResponse;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.DeleteMapping;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PathVariable;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.PutMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\nimport com.campusreuse.common.annotation.Log;\nimport com.campusreuse.common.core.controller.BaseController;\nimport com.campusreuse.common.core.domain.AjaxResult;\nimport com.campusreuse.common.core.page.TableDataInfo;\nimport com.campusreuse.common.enums.BusinessType;\nimport com.campusreuse.common.utils.poi.ExcelUtil;\nimport com.campusreuse.system.domain.SysConfig;\nimport com.campusreuse.system.service.ISysConfigService;\n\n/**\n * 参数配置 信息操作处理\n * \n * @author ruoyi\n */\n@RestController\n@RequestMapping(\"/system/config\")\npublic class SysConfigController extends BaseController\n{\n @Autowired\n private ISysConfigService configService;\n\n /**\n * 获取参数配置列表\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:list')\")\n @GetMapping(\"/list\")\n public TableDataInfo list(SysConfig config)\n {\n startPage();\n List<SysConfig> list = configService.selectConfigList(config);\n return getDataTable(list);\n }\n\n @Log(title = \"参数管理\", businessType = BusinessType.EXPORT)\n @PreAuthorize(\"@ss.hasPermi('system:config:export')\")\n @PostMapping(\"/export\")\n public void export(HttpServletResponse response, SysConfig config)\n {\n List<SysConfig> list = configService.selectConfigList(config);\n ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);\n util.exportExcel(response, list, \"参数数据\");\n }\n\n /**\n * 根据参数编号获取详细信息\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:query')\")\n @GetMapping(value = \"/{configId}\")\n public AjaxResult getInfo(@PathVariable Long configId)\n {\n return success(configService.selectConfigById(configId));\n }\n\n /**\n * 根据参数键名查询参数值\n */\n @GetMapping(value = \"/configKey/{configKey}\")\n public AjaxResult getConfigKey(@PathVariable String configKey)\n {\n return success(configService.selectConfigByKey(configKey));\n }\n\n /**\n * 新增参数配置\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:add')\")\n @Log(title = \"参数管理\", businessType = BusinessType.INSERT)\n @PostMapping\n public AjaxResult add(@Validated @RequestBody SysConfig config)\n {\n if (!configService.checkConfigKeyUnique(config))\n {\n return error(\"新增参数'\" + config.getConfigName() + \"'失败,参数键名已存在\");\n }\n config.setCreateBy(getUsername());\n return toAjax(configService.insertConfig(config));\n }\n\n /**\n * 修改参数配置\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:edit')\")\n @Log(title = \"参数管理\", businessType = BusinessType.UPDATE)\n @PutMapping\n public AjaxResult edit(@Validated @RequestBody SysConfig config)\n {\n if (!configService.checkConfigKeyUnique(config))\n {\n return error(\"修改参数'\" + config.getConfigName() + \"'失败,参数键名已存在\");\n }\n config.setUpdateBy(getUsername());\n return toAjax(configService.updateConfig(config));\n }\n\n /**\n * 删除参数配置\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:remove')\")\n @Log(title = \"参数管理\", businessType = BusinessType.DELETE)\n @DeleteMapping(\"/{configIds}\")\n public AjaxResult remove(@PathVariable Long[] configIds)\n {\n configService.deleteConfigByIds(configIds);\n return success();\n }\n\n /**\n * 刷新参数缓存\n */\n @PreAuthorize(\"@ss.hasPermi('system:config:remove')\")\n @Log(title = \"参数管理\", businessType = BusinessType.CLEAN)\n @DeleteMapping(\"/refreshCache\")\n public AjaxResult refreshCache()\n {\n configService.resetConfigCache();\n return success();\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/security/filter/JwtAuthenticationTokenFilter.java": {"4a83e4fbaa4dce23bec5b7315e949efdded66d23": {"t": 1785599282.838055, "n": 1893, "h": "87d138fce82951f8", "c": "package com.campusreuse.framework.security.filter;\n\nimport java.io.IOException;\nimport javax.servlet.FilterChain;\nimport javax.servlet.ServletException;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\nimport org.springframework.security.core.context.SecurityContextHolder;\nimport org.springframework.security.web.authentication.WebAuthenticationDetailsSource;\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.filter.OncePerRequestFilter;\nimport com.campusreuse.common.core.domain.model.LoginUser;\nimport com.campusreuse.common.utils.SecurityUtils;\nimport com.campusreuse.common.utils.StringUtils;\nimport com.campusreuse.framework.web.service.TokenService;\n\n/**\n * token过滤器 验证token有效性\n * \n * @author ruoyi\n */\n@Component\npublic class JwtAuthenticationTokenFilter extends OncePerRequestFilter\n{\n @Autowired\n private TokenService tokenService;\n\n @Override\n protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)\n throws ServletException, IOException\n {\n LoginUser loginUser = tokenService.getLoginUser(request);\n if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))\n {\n tokenService.verifyToken(loginUser);\n UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());\n authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));\n SecurityContextHolder.getContext().setAuthentication(authenticationToken);\n }\n chain.doFilter(request, response);\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/security/context/AuthenticationContextHolder.java": {"577cd1ff966f1b499f298a9069afbb8b2d39c6e0": {"t": 1785599282.961583, "n": 570, "h": "bed5a903ce9eac37", "c": "package com.campusreuse.framework.security.context;\n\nimport org.springframework.security.core.Authentication;\n\n/**\n * 身份验证信息\n * \n * @author ruoyi\n */\npublic class AuthenticationContextHolder\n{\n private static final ThreadLocal<Authentication> contextHolder = new ThreadLocal<>();\n\n public static Authentication getContext()\n {\n return contextHolder.get();\n }\n\n public static void setContext(Authentication context)\n {\n contextHolder.set(context);\n }\n\n public static void clearContext()\n {\n contextHolder.remove();\n }\n}\n"}}, "CampusReuse-ui/src/views/system/role/authUser.vue": {"c607f639513f57a5d5f1cde26ca52608aa7679fd": {"t": 1785599283.0418432, "n": 5565, "h": "95dedcd2600d2cf3", "c": "\n<template>\n <div class=\"app-container\">\n <el-form :model=\"queryParams\" ref=\"queryRef\" v-show=\"showSearch\" :inline=\"true\">\n <el-form-item label=\"用户名称\" prop=\"userName\">\n <el-input\n v-model=\"queryParams.userName\"\n placeholder=\"请输入用户名称\"\n clearable\n style=\"width: 240px\"\n @keyup.enter=\"handleQuery\"\n />\n </el-form-item>\n <el-form-item label=\"手机号码\" prop=\"phonenumber\">\n <el-input\n v-model=\"queryParams.phonenumber\"\n placeholder=\"请输入手机号码\"\n clearable\n style=\"width: 240px\"\n @keyup.enter=\"handleQuery\"\n />\n </el-form-item>\n <el-form-item>\n <el-button type=\"primary\" icon=\"Search\" @click=\"handleQuery\">搜索</el-button>\n <el-button icon=\"Refresh\" @click=\"resetQuery\">重置</el-button>\n </el-form-item>\n </el-form>\n\n <el-row :gutter=\"10\" class=\"mb8\">\n <el-col :span=\"1.5\">\n <el-button\n type=\"primary\"\n plain\n icon=\"Plus\"\n @click=\"openSelectUser\"\n v-hasPermi=\"['system:role:add']\"\n >添加用户</el-button>\n </el-col>\n <el-col :span=\"1.5\">\n <el-button\n type=\"danger\"\n plain\n icon=\"CircleClose\"\n :disabled=\"multiple\"\n @click=\"cancelAuthUserAll\"\n v-hasPermi=\"['system:role:remove']\"\n >批量取消授权</el-button>\n </el-col>\n <el-col :span=\"1.5\">\n <el-button \n type=\"warning\" \n plain \n icon=\"Close\"\n @click=\"handleClose\"\n >关闭</el-button>\n </el-col>\n <right-toolbar v-model:showSearch=\"showSearch\" @queryTable=\"getList\"></right-toolbar>\n </el-row>\n\n <el-table v-loading=\"loading\" :data=\"userList\" @selection-change=\"handleSelectionChange\">\n <el-table-column type=\"selection\" width=\"55\" align=\"center\" />\n <el-table-column label=\"用户名称\" prop=\"userName\" :show-overflow-tooltip=\"true\" />\n <el-table-column label=\"用户昵称\" prop=\"nickName\" :show-overflow-tooltip=\"true\" />\n <el-table-column label=\"邮箱\" prop=\"email\" :show-overflow-tooltip=\"true\" />\n <el-table-column label=\"手机\" prop=\"phonenumber\" :show-overflow-tooltip=\"true\" />\n <el-table-column label=\"状态\" align=\"center\" prop=\"status\">\n <template #default=\"scope\">\n <dict-tag :options=\"sys_normal_disable\" :value=\"scope.row.status\" />\n </template>\n </el-table-column>\n <el-table-column label=\"创建时间\" align=\"center\" prop=\"createTime\" width=\"180\">\n <template #default=\"scope\">\n <span>{{ parseTime(scope.row.createTime) }}</span>\n </template>\n </el-table-column>\n <el-table-column label=\"操作\" align=\"center\" class-name=\"small-padding fixed-width\">\n <template #default=\"scope\">\n <el-button link type=\"primary\" icon=\"CircleClose\" @click=\"cancelAuthUser(scope.row)\" v-hasPermi=\"['system:role:remove']\">取消授权</el-button>\n </template>\n </el-table-column>\n </el-table>\n\n <pagination\n v-show=\"total > 0\"\n :total=\"total\"\n v-model:page=\"queryParams.pageNum\"\n v-model:limit=\"queryParams.pageSize\"\n @pagination=\"getList\"\n />\n <select-user ref=\"selectRef\" :roleId=\"queryParams.roleId\" @ok=\"handleQuery\" />\n </div>\n</template>\n\n<script setup name=\"AuthUser\">\nimport selectUser from \"./selectUser\"\nimport { allocatedUserList, authUserCancel, authUserCancelAll } from \"@/api/system/role\"\n\nconst route = useRoute()\nconst { proxy } = getCurrentInstance()\nconst { sys_normal_disable } = proxy.useDict(\"sys_normal_disable\")\n\nconst userList = ref([])\nconst loading = ref(true)\nconst showSearch = ref(true)\nconst multiple = ref(true)\nconst total = ref(0)\nconst userIds = ref([])\n\nconst queryParams = reactive({\n pageNum: 1,\n pageSize: 10,\n roleId: route.params.roleId,\n userName: undefined,\n phonenumber: undefined,\n})\n\n/** 查询授权用户列表 */\nfunction getList() {\n loading.value = true\n allocatedUserList(queryParams).then(response => {\n userList.value = response.rows\n total.value = response.total\n loading.value = false\n })\n}\n\n/** 返回按钮 */\nfunction handleClose() {\n const obj = { path: \"/system/role\" }\n proxy.$tab.closeOpenPage(obj)\n}\n\n/** 搜索按钮操作 */\nfunction handleQuery() {\n queryParams.pageNum = 1\n getList()\n}\n\n/** 重置按钮操作 */\nfunction resetQuery() {\n proxy.resetForm(\"queryRef\")\n handleQuery()\n}\n\n/** 多选框选中数据 */\nfunction handleSelectionChange(selection) {\n userIds.value = selection.map(item => item.userId)\n multiple.value = !selection.length\n}\n\n/** 打开授权用户表弹窗 */\nfunction openSelectUser() {\n proxy.$refs[\"selectRef\"].show()\n}\n\n/** 取消授权按钮操作 */\nfunction cancelAuthUser(row) {\n proxy.$modal.confirm('确认要取消该用户\"' + row.userName + '\"角色吗?').then(function () {\n return authUserCancel({ userId: row.userId, roleId: queryParams.roleId })\n }).then(() => {\n getList()\n proxy.$modal.msgSuccess(\"取消授权成功\")\n }).catch(() => {})\n}\n\n/** 批量取消授权按钮操作 */\nfunction cancelAuthUserAll(row) {\n const roleId = queryParams.roleId\n const uIds = userIds.value.join(\",\")\n proxy.$modal.confirm(\"是否取消选中用户授权数据项?\").then(function () {\n return authUserCancelAll({ roleId: roleId, userIds: uIds })\n }).then(() => {\n getList()\n proxy.$modal.msgSuccess(\"取消授权成功\")\n }).catch(() => {})\n}\n\ngetList()\n</script>\n"}}, "CampusReuse-admin/src/main/resources/META-INF/spring-devtools.properties": {"37e7b5806ee4a61e35699d6f114f906efad2e500": {"t": 1785599283.0554752, "n": 49, "h": "6705545e6beb6226", "c": "restart.include.json=/com.alibaba.fastjson2.*.jar"}}, "CampusReuse-admin/src/main/java/com/campusreuse/web/core/config/SwaggerConfig.java": {"557534f38e492c88913a1edb266188ff2cf7ed99": {"t": 1785599283.2339761, "n": 4214, "h": "00f8873c4664929c", "c": "package com.campusreuse.web.core.config;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport com.campusreuse.common.config.RuoYiConfig;\nimport io.swagger.annotations.ApiOperation;\nimport io.swagger.models.auth.In;\nimport springfox.documentation.builders.ApiInfoBuilder;\nimport springfox.documentation.builders.PathSelectors;\nimport springfox.documentation.builders.RequestHandlerSelectors;\nimport springfox.documentation.service.ApiInfo;\nimport springfox.documentation.service.ApiKey;\nimport springfox.documentation.service.AuthorizationScope;\nimport springfox.documentation.service.Contact;\nimport springfox.documentation.service.SecurityReference;\nimport springfox.documentation.service.SecurityScheme;\nimport springfox.documentation.spi.DocumentationType;\nimport springfox.documentation.spi.service.contexts.SecurityContext;\nimport springfox.documentation.spring.web.plugins.Docket;\n\n/**\n * Swagger2的接口配置\n * \n * @author ruoyi\n */\n@Configuration\npublic class SwaggerConfig\n{\n /** 系统基础配置 */\n @Autowired\n private RuoYiConfig ruoyiConfig;\n\n /** 是否开启swagger */\n @Value(\"${swagger.enabled}\")\n private boolean enabled;\n\n /** 设置请求的统一前缀 */\n @Value(\"${swagger.pathMapping}\")\n private String pathMapping;\n\n /**\n * 创建API\n */\n @Bean\n public Docket createRestApi()\n {\n return new Docket(DocumentationType.OAS_30)\n // 是否启用Swagger\n .enable(enabled)\n // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)\n .apiInfo(apiInfo())\n // 设置哪些接口暴露给Swagger展示\n .select()\n // 扫描所有有注解的api,用这种方式更灵活\n .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))\n // 扫描指定包中的swagger注解\n // .apis(RequestHandlerSelectors.basePackage(\"com.campusreuse.project.tool.swagger\"))\n // 扫描所有 .apis(RequestHandlerSelectors.any())\n .paths(PathSelectors.any())\n .build()\n /* 设置安全模式,swagger可以设置访问token */\n .securitySchemes(securitySchemes())\n .securityContexts(securityContexts())\n .pathMapping(pathMapping);\n }\n\n /**\n * 安全模式,这里指定token通过Authorization头请求头传递\n */\n private List<SecurityScheme> securitySchemes()\n {\n List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();\n apiKeyList.add(new ApiKey(\"Authorization\", \"Authorization\", In.HEADER.toValue()));\n return apiKeyList;\n }\n\n /**\n * 安全上下文\n */\n private List<SecurityContext> securityContexts()\n {\n List<SecurityContext> securityContexts = new ArrayList<>();\n securityContexts.add(\n SecurityContext.builder()\n .securityReferences(defaultAuth())\n .operationSelector(o -> o.requestMappingPattern().matches(\"/.*\"))\n .build());\n return securityContexts;\n }\n\n /**\n * 默认的安全上引用\n */\n private List<SecurityReference> defaultAuth()\n {\n AuthorizationScope authorizationScope = new AuthorizationScope(\"global\", \"accessEverything\");\n AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];\n authorizationScopes[0] = authorizationScope;\n List<SecurityReference> securityReferences = new ArrayList<>();\n securityReferences.add(new SecurityReference(\"Authorization\", authorizationScopes));\n return securityReferences;\n }\n\n /**\n * 添加摘要信息\n */\n private ApiInfo apiInfo()\n {\n // 用ApiInfoBuilder进行定制\n return new ApiInfoBuilder()\n // 设置标题\n .title(\"标题:校园二手交易系统_接口文档\")\n // 描述\n .description(\"描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...\")\n // 作者信息\n .contact(new Contact(ruoyiConfig.getName(), null, null))\n // 版本\n .version(\"版本号:\" + ruoyiConfig.getVersion())\n .build();\n }\n}\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/config/RuoYiConfig.java": {"6e3f60ebd809eedd7f3d705ec1608ba62b0a8651": {"t": 1785599284.0605962, "n": 2160, "h": "da00f487f1b3ec8e", "c": "package com.campusreuse.common.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.stereotype.Component;\n\n/**\n * 读取项目相关配置\n * \n * @author ruoyi\n */\n@Component\n@ConfigurationProperties(prefix = \"ruoyi\")\npublic class RuoYiConfig\n{\n /** 项目名称 */\n private String name;\n\n /** 版本 */\n private String version;\n\n /** 版权年份 */\n private String copyrightYear;\n\n /** 上传路径 */\n private static String profile;\n\n /** 获取地址开关 */\n private static boolean addressEnabled;\n\n /** 验证码类型 */\n private static String captchaType;\n\n public String getName()\n {\n return name;\n }\n\n public void setName(String name)\n {\n this.name = name;\n }\n\n public String getVersion()\n {\n return version;\n }\n\n public void setVersion(String version)\n {\n this.version = version;\n }\n\n public String getCopyrightYear()\n {\n return copyrightYear;\n }\n\n public void setCopyrightYear(String copyrightYear)\n {\n this.copyrightYear = copyrightYear;\n }\n\n public static String getProfile()\n {\n return profile;\n }\n\n public void setProfile(String profile)\n {\n RuoYiConfig.profile = profile;\n }\n\n public static boolean isAddressEnabled()\n {\n return addressEnabled;\n }\n\n public void setAddressEnabled(boolean addressEnabled)\n {\n RuoYiConfig.addressEnabled = addressEnabled;\n }\n\n public static String getCaptchaType() {\n return captchaType;\n }\n\n public void setCaptchaType(String captchaType) {\n RuoYiConfig.captchaType = captchaType;\n }\n\n /**\n * 获取导入上传路径\n */\n public static String getImportPath()\n {\n return getProfile() + \"/import\";\n }\n\n /**\n * 获取头像上传路径\n */\n public static String getAvatarPath()\n {\n return getProfile() + \"/avatar\";\n }\n\n /**\n * 获取下载路径\n */\n public static String getDownloadPath()\n {\n return getProfile() + \"/download/\";\n }\n\n /**\n * 获取上传路径\n */\n public static String getUploadPath()\n {\n return getProfile() + \"/upload\";\n }\n}\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/filter/XssHttpServletRequestWrapper.java": {"ab033fab0b414b0af0de77bd849a32b17ae98f30": {"t": 1785599284.2432535, "n": 2873, "h": "7a3614def735fef6", "c": "package com.campusreuse.common.filter;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.IOException;\nimport javax.servlet.ReadListener;\nimport javax.servlet.ServletInputStream;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletRequestWrapper;\nimport org.apache.commons.io.IOUtils;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.MediaType;\nimport com.campusreuse.common.utils.StringUtils;\nimport com.campusreuse.common.utils.html.EscapeUtil;\n\n/**\n * XSS过滤处理\n * \n * @author ruoyi\n */\npublic class XssHttpServletRequestWrapper extends HttpServletRequestWrapper\n{\n /**\n * @param request\n */\n public XssHttpServletRequestWrapper(HttpServletRequest request)\n {\n super(request);\n }\n\n @Override\n public String[] getParameterValues(String name)\n {\n String[] values = super.getParameterValues(name);\n if (values != null)\n {\n int length = values.length;\n String[] escapesValues = new String[length];\n for (int i = 0; i < length; i++)\n {\n // 防xss攻击和过滤前后空格\n escapesValues[i] = EscapeUtil.clean(values[i]).trim();\n }\n return escapesValues;\n }\n return super.getParameterValues(name);\n }\n\n @Override\n public ServletInputStream getInputStream() throws IOException\n {\n // 非json类型,直接返回\n if (!isJsonRequest())\n {\n return super.getInputStream();\n }\n\n // 为空,直接返回\n String json = IOUtils.toString(super.getInputStream(), \"utf-8\");\n if (StringUtils.isEmpty(json))\n {\n return super.getInputStream();\n }\n\n // xss过滤\n json = EscapeUtil.clean(json).trim();\n byte[] jsonBytes = json.getBytes(\"utf-8\");\n final ByteArrayInputStream bis = new ByteArrayInputStream(jsonBytes);\n return new ServletInputStream()\n {\n @Override\n public boolean isFinished()\n {\n return true;\n }\n\n @Override\n public boolean isReady()\n {\n return true;\n }\n\n @Override\n public int available() throws IOException\n {\n return jsonBytes.length;\n }\n\n @Override\n public void setReadListener(ReadListener readListener)\n {\n }\n\n @Override\n public int read() throws IOException\n {\n return bis.read();\n }\n };\n }\n\n /**\n * 是否是Json请求\n * \n * @param request\n */\n public boolean isJsonRequest()\n {\n String header = super.getHeader(HttpHeaders.CONTENT_TYPE);\n return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);\n }\n}"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/filter/RepeatedlyRequestWrapper.java": {"c2d9129dfb0b16545cf975c739fb91169ccde333": {"t": 1785599284.271596, "n": 2006, "h": "af9e3a9a08f3a033", "c": "package com.campusreuse.common.filter;\n\nimport java.io.BufferedReader;\nimport java.io.ByteArrayInputStream;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport javax.servlet.ReadListener;\nimport javax.servlet.ServletInputStream;\nimport javax.servlet.ServletResponse;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletRequestWrapper;\nimport com.campusreuse.common.utils.http.HttpHelper;\nimport com.campusreuse.common.constant.Constants;\n\n/**\n * 构建可重复读取inputStream的request\n * \n * @author ruoyi\n */\npublic class RepeatedlyRequestWrapper extends HttpServletRequestWrapper\n{\n private final byte[] body;\n\n public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException\n {\n super(request);\n request.setCharacterEncoding(Constants.UTF8);\n response.setCharacterEncoding(Constants.UTF8);\n\n body = HttpHelper.getBodyString(request).getBytes(Constants.UTF8);\n }\n\n @Override\n public BufferedReader getReader() throws IOException\n {\n return new BufferedReader(new InputStreamReader(getInputStream()));\n }\n\n @Override\n public ServletInputStream getInputStream() throws IOException\n {\n final ByteArrayInputStream bais = new ByteArrayInputStream(body);\n return new ServletInputStream()\n {\n @Override\n public int read() throws IOException\n {\n return bais.read();\n }\n\n @Override\n public int available() throws IOException\n {\n return body.length;\n }\n\n @Override\n public boolean isFinished()\n {\n return false;\n }\n\n @Override\n public boolean isReady()\n {\n return false;\n }\n\n @Override\n public void setReadListener(ReadListener readListener)\n {\n\n }\n };\n }\n}\n"}}, "CampusReuse-admin/src/main/resources/mybatis/mybatis-config.xml": {"ac47c038e041f2435bdd4975c0ce7225c6b21b28": {"t": 1785599284.2779987, "n": 796, "h": "cc4d464dc3550f63", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE configuration\nPUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-config.dtd\">\n<configuration>\n <!-- 全局参数 -->\n <settings>\n <!-- 使全局的映射器启用或禁用缓存 -->\n <setting name=\"cacheEnabled\" value=\"true\" />\n <!-- 允许JDBC 支持自动生成主键 -->\n <setting name=\"useGeneratedKeys\" value=\"true\" />\n <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->\n <setting name=\"defaultExecutorType\" value=\"SIMPLE\" />\n\t\t<!-- 指定 MyBatis 所用日志的具体实现 -->\n <setting name=\"logImpl\" value=\"SLF4J\" />\n <!-- 使用驼峰命名法转换字段 -->\n\t\t<!-- <setting name=\"mapUnderscoreToCamelCase\" value=\"true\"/> -->\n\t</settings>\n\t\n</configuration>\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/UserConstants.java": {"aa75a796e9dc5ea4792c74d6d7b3970c74864703": {"t": 1785599284.6220062, "n": 1804, "h": "af1d6e7da6554538", "c": "package com.campusreuse.common.constant;\n\n/**\n * 用户常量信息\n * \n * @author ruoyi\n */\npublic class UserConstants\n{\n /**\n * 平台内系统用户的唯一标志\n */\n public static final String SYS_USER = \"SYS_USER\";\n\n /** 正常状态 */\n public static final String NORMAL = \"0\";\n\n /** 异常状态 */\n public static final String EXCEPTION = \"1\";\n\n /** 用户封禁状态 */\n public static final String USER_DISABLE = \"1\";\n\n /** 角色正常状态 */\n public static final String ROLE_NORMAL = \"0\";\n\n /** 角色封禁状态 */\n public static final String ROLE_DISABLE = \"1\";\n\n /** 部门正常状态 */\n public static final String DEPT_NORMAL = \"0\";\n\n /** 部门停用状态 */\n public static final String DEPT_DISABLE = \"1\";\n\n /** 字典正常状态 */\n public static final String DICT_NORMAL = \"0\";\n\n /** 是否为系统默认(是) */\n public static final String YES = \"Y\";\n\n /** 是否菜单外链(是) */\n public static final String YES_FRAME = \"0\";\n\n /** 是否菜单外链(否) */\n public static final String NO_FRAME = \"1\";\n\n /** 菜单类型(目录) */\n public static final String TYPE_DIR = \"M\";\n\n /** 菜单类型(菜单) */\n public static final String TYPE_MENU = \"C\";\n\n /** 菜单类型(按钮) */\n public static final String TYPE_BUTTON = \"F\";\n\n /** Layout组件标识 */\n public final static String LAYOUT = \"Layout\";\n \n /** ParentView组件标识 */\n public final static String PARENT_VIEW = \"ParentView\";\n\n /** InnerLink组件标识 */\n public final static String INNER_LINK = \"InnerLink\";\n\n /** 校验是否唯一的返回标识 */\n public final static boolean UNIQUE = true;\n public final static boolean NOT_UNIQUE = false;\n\n /**\n * 用户名长度限制\n */\n public static final int USERNAME_MIN_LENGTH = 2;\n public static final int USERNAME_MAX_LENGTH = 20;\n\n /**\n * 密码长度限制\n */\n public static final int PASSWORD_MIN_LENGTH = 5;\n public static final int PASSWORD_MAX_LENGTH = 20;\n}\n"}}, "CampusReuse-admin/src/main/resources/application.yml": {"497cbef080c325933ed4484df08a76e51bf278d6": {"t": 1785599284.7901425, "n": 2485, "h": "0fa37b76ccd3962b", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: CampusReuse\n # 版本\n version: 3.9.0\n # 版权年份\n copyrightYear: 2025\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n # 使用绝对路径,确保能正确访问上传的文件\n profile: C:/Users/黄裔雄/Desktop/论文1/xiaoyuan/20251223104749/CampusReuse/my_uploads\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# AI 豆包大模型配置\nai:\n doubao:\n # API Key (建议通过环境变量配置)\n api-key: 99ffb06b-ff6f-44bc-b376-c171b688851f\n # 接口地址\n endpoint: https://ark.cn-beijing.volces.com/api/v3/chat/completions\n # 模型名称\n model: ep-20260109112940-2s6v2\n\n\n\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8081\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.campusreuse.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Swagger配置\nswagger:\n # 是否开启swagger\n enabled: true\n # 请求前缀\n pathMapping: /dev-api\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n\n\n"}, "427252fc68bbe46248249d298baa33128ef2c207": {"t": 1785611542.471752, "n": 2485, "h": "0fa37b76ccd3962b", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: CampusReuse\n # 版本\n version: 3.9.0\n # 版权年份\n copyrightYear: 2025\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n # 使用绝对路径,确保能正确访问上传的文件\n profile: C:/Users/黄裔雄/Desktop/论文1/xiaoyuan/20251223104749/CampusReuse/my_uploads\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# AI 豆包大模型配置\nai:\n doubao:\n # API Key (建议通过环境变量配置)\n api-key: 99ffb06b-ff6f-44bc-b376-c171b688851f\n # 接口地址\n endpoint: https://ark.cn-beijing.volces.com/api/v3/chat/completions\n # 模型名称\n model: ep-20260109112940-2s6v2\n\n\n\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8081\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.campusreuse.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Swagger配置\nswagger:\n # 是否开启swagger\n enabled: true\n # 请求前缀\n pathMapping: /dev-api\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n\n\n"}, "5092e74aa684812e1fbe6898ad2e5aa1c42ff0e0": {"t": 1785611544.2607687, "n": 2402, "h": "e882cca0e9bf1057", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: CampusReuse\n # 版本\n version: 3.9.0\n # 版权年份\n copyrightYear: 2025\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n profile: ./my_uploads\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# AI 豆包大模型配置\nai:\n doubao:\n # API Key (建议通过环境变量配置)\n api-key: 99ffb06b-ff6f-44bc-b376-c171b688851f\n # 接口地址\n endpoint: https://ark.cn-beijing.volces.com/api/v3/chat/completions\n # 模型名称\n model: ep-20260109112940-2s6v2\n\n\n\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8081\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.campusreuse.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Swagger配置\nswagger:\n # 是否开启swagger\n enabled: true\n # 请求前缀\n pathMapping: /dev-api\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n\n\n"}, "ab3adea29f2ce0d4284eb02dccbdced37ce19650": {"t": 1785611545.660528, "n": 2403, "h": "12ee44bab2939c23", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: RuoYi\n # 版本\n version: 3.9.0\n # 版权年份\n copyrightYear: 2025\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n profile: D:/ruoyi/uploadPath\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# AI 豆包大模型配置\nai:\n doubao:\n # API Key (建议通过环境变量配置)\n api-key: 99ffb06b-ff6f-44bc-b376-c171b688851f\n # 接口地址\n endpoint: https://ark.cn-beijing.volces.com/api/v3/chat/completions\n # 模型名称\n model: ep-20260109112940-2s6v2\n\n\n\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8081\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.campusreuse.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Swagger配置\nswagger:\n # 是否开启swagger\n enabled: true\n # 请求前缀\n pathMapping: /dev-api\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n\n\n"}, "d8c4b8c2469d9e015f52bfdf4063e9ec47f0efca": {"t": 1785611546.8240445, "n": 2166, "h": "e41029e4c8f474ca", "c": "# 项目相关配置\nruoyi:\n # 名称\n name: RuoYi\n # 版本\n version: 3.9.0\n # 版权年份\n copyrightYear: 2025\n # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)\n profile: D:/ruoyi/uploadPath\n # 获取ip地址开关\n addressEnabled: false\n # 验证码类型 math 数字计算 char 字符验证\n captchaType: math\n\n# 开发环境配置\nserver:\n # 服务器的HTTP端口,默认为8080\n port: 8081\n servlet:\n # 应用的访问路径\n context-path: /\n tomcat:\n # tomcat的URI编码\n uri-encoding: UTF-8\n # 连接数满后的排队数,默认为100\n accept-count: 1000\n threads:\n # tomcat最大线程数,默认为200\n max: 800\n # Tomcat启动初始化的线程数,默认值10\n min-spare: 100\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: debug\n org.springframework: warn\n\n# 用户配置\nuser:\n password:\n # 密码最大错误次数\n maxRetryCount: 5\n # 密码锁定时间(默认10分钟)\n lockTime: 10\n\n# Spring配置\nspring:\n # 资源信息\n messages:\n # 国际化资源文件路径\n basename: i18n/messages\n profiles:\n active: druid\n # 文件上传\n servlet:\n multipart:\n # 单个文件大小\n max-file-size: 10MB\n # 设置总上传的文件大小\n max-request-size: 20MB\n # 服务模块\n devtools:\n restart:\n # 热部署开关\n enabled: true\n # redis 配置\n redis:\n # 地址\n host: localhost\n # 端口,默认为6379\n port: 6379\n # 数据库索引\n database: 0\n # 密码\n password:\n # 连接超时时间\n timeout: 10s\n lettuce:\n pool:\n # 连接池中的最小空闲连接\n min-idle: 0\n # 连接池中的最大空闲连接\n max-idle: 8\n # 连接池的最大数据库连接数\n max-active: 8\n # #连接池最大阻塞等待时间(使用负值表示没有限制)\n max-wait: -1ms\n\n# token配置\ntoken:\n # 令牌自定义标识\n header: Authorization\n # 令牌密钥\n secret: abcdefghijklmnopqrstuvwxyz\n # 令牌有效期(默认30分钟)\n expireTime: 30\n\n# MyBatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.campusreuse.**.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath*:mapper/**/*Mapper.xml\n # 加载全局的配置文件\n configLocation: classpath:mybatis/mybatis-config.xml\n\n# PageHelper分页插件\npagehelper:\n helperDialect: mysql\n supportMethodsArguments: true\n params: count=countSql\n\n# Swagger配置\nswagger:\n # 是否开启swagger\n enabled: true\n # 请求前缀\n pathMapping: /dev-api\n\n# 防止XSS攻击\nxss:\n # 过滤开关\n enabled: true\n # 排除链接(多个用逗号分隔)\n excludes: /system/notice\n # 匹配链接\n urlPatterns: /system/*,/monitor/*,/tool/*\n\n\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/ApplicationConfig.java": {"cde032df7ff0d595909ccba4e07b0c61470f14bd": {"t": 1785599284.9720595, "n": 865, "h": "13ddcd8c23dc7ac5", "c": "package com.campusreuse.framework.config;\n\nimport java.util.TimeZone;\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.EnableAspectJAutoProxy;\n\n/**\n * 程序注解配置\n *\n * @author ruoyi\n */\n@Configuration\n// 表示通过aop框架暴露该代理对象,AopContext能够访问\n@EnableAspectJAutoProxy(exposeProxy = true)\n// 指定要扫描的Mapper类的包的路径\n@MapperScan(\"com.campusreuse.**.mapper\")\npublic class ApplicationConfig\n{\n /**\n * 时区配置\n */\n @Bean\n public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization()\n {\n return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());\n }\n}\n"}}, "CampusReuse-admin/src/main/resources/i18n/messages.properties": {"93de0055b88777639f269935b652207b53c9078a": {"t": 1785599285.021339, "n": 1120, "h": "0548b262df1fd48a", "c": "#错误消息\nnot.null=* 必须填写\nuser.jcaptcha.error=验证码错误\nuser.jcaptcha.expire=验证码已失效\nuser.not.exists=用户不存在/密码错误\nuser.password.not.match=用户不存在/密码错误\nuser.password.retry.limit.count=密码输入错误{0}次\nuser.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟\nuser.password.delete=对不起,您的账号已被删除\nuser.blocked=用户已封禁,请联系管理员\nrole.blocked=角色已封禁,请联系管理员\nlogin.blocked=很遗憾,访问IP已被列入系统黑名单\nuser.logout.success=退出成功\n\nlength.not.valid=长度必须在{min}到{max}个字符之间\n\nuser.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头\nuser.password.not.valid=* 5-50个字符\n \nuser.email.not.valid=邮箱格式错误\nuser.mobile.phone.number.not.valid=手机号格式错误\nuser.login.success=登录成功\nuser.register.success=注册成功\nuser.notfound=请重新登录\nuser.forcelogout=管理员强制退出,请重新登录\nuser.unknown.error=未知错误,请重新登录\n\n##文件上传消息\nupload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB!\nupload.filename.exceed.length=上传的文件名最长{0}个字符\n\n##权限\nno.permission=您没有数据的权限,请联系管理员添加权限 [{0}]\nno.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]\nno.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]\nno.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]\nno.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]\nno.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/MarketConstants.java": {"5b117e0919cf9f8ad7b62c7a50c45e134ef9062e": {"t": 1785599285.0532846, "n": 1558, "h": "6ab1d0d7c240a31f", "c": "package com.campusreuse.common.constant;\n\n/**\n * 校园二手交易系统 业务常量\n * \n * @author campusreuse\n */\npublic class MarketConstants {\n\n /** 订单状态:待付款 */\n public static final String ORDER_STATUS_PENDING_PAY = \"0\";\n /** 订单状态:待发货 */\n public static final String ORDER_STATUS_PENDING_SHIP = \"1\";\n /** 订单状态:待收货 */\n public static final String ORDER_STATUS_PENDING_RECEIVE = \"2\";\n /** 订单状态:已完成 */\n public static final String ORDER_STATUS_COMPLETED = \"3\";\n /** 订单状态:已取消 */\n public static final String ORDER_STATUS_CANCELLED = \"4\";\n /** 订单状态:退款中 */\n public static final String ORDER_STATUS_REFUNDING = \"5\";\n /** 订单状态:已退款 */\n public static final String ORDER_STATUS_REFUNDED = \"6\";\n\n /** 支付状态:未支付 */\n public static final String PAY_STATUS_UNPAID = \"0\";\n /** 支付状态:已支付 */\n public static final String PAY_STATUS_PAID = \"1\";\n\n /** 商品状态:在售 */\n public static final String GOODS_STATUS_ON_SALE = \"0\";\n /** 商品状态:已售 */\n public static final String GOODS_STATUS_SOLD = \"1\";\n /** 商品状态:已下架 */\n public static final String GOODS_STATUS_OFF_SHELF = \"2\";\n\n /** 审核状态:待审核 */\n public static final String AUDIT_STATUS_PENDING = \"0\";\n /** 审核状态:审核通过 */\n public static final String AUDIT_STATUS_PASS = \"1\";\n /** 审核状态:审核拒绝 */\n public static final String AUDIT_STATUS_REJECT = \"2\";\n\n /** 消息类型:通知 */\n public static final String MESSAGE_TYPE_NOTICE = \"0\";\n /** 消息类型:私聊 */\n public static final String MESSAGE_TYPE_CHAT = \"1\";\n /** 消息类型:订单消息 */\n public static final String MESSAGE_TYPE_ORDER = \"2\";\n}\n"}}, "CampusReuse-admin/src/main/resources/application-prod.yml": {"b405a78ce0488bab048e255f79a896f1278b3638": {"t": 1785599285.205915, "n": 693, "h": "e6dbe0a9c0be662e", "c": "# 项目生产环境配置\nspring:\n # 数据源配置\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/campus_market?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: YOUR_PROD_USERNAME\n password: YOUR_PROD_PASSWORD\n \n # Redis 配置\n redis:\n host: 127.0.0.1\n port: 6379\n password: \n database: 0\n timeout: 3000\n\n# 日志配置\nlogging:\n level:\n com.campusreuse: info\n org.springframework: info\n file:\n name: logs/campus-reuse.log\n path: /app/logs\n logback:\n rollingpolicy:\n max-file-size: 10MB\n max-history: 30\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/ScheduleConstants.java": {"b0d9deba11fc21aa022a81b1cb28f653628c0eeb": {"t": 1785599285.2339988, "n": 937, "h": "ecccf97169c7ccae", "c": "package com.campusreuse.common.constant;\n\n/**\n * 任务调度通用常量\n * \n * @author ruoyi\n */\npublic class ScheduleConstants\n{\n public static final String TASK_CLASS_NAME = \"TASK_CLASS_NAME\";\n\n /** 执行目标key */\n public static final String TASK_PROPERTIES = \"TASK_PROPERTIES\";\n\n /** 默认 */\n public static final String MISFIRE_DEFAULT = \"0\";\n\n /** 立即触发执行 */\n public static final String MISFIRE_IGNORE_MISFIRES = \"1\";\n\n /** 触发一次执行 */\n public static final String MISFIRE_FIRE_AND_PROCEED = \"2\";\n\n /** 不触发立即执行 */\n public static final String MISFIRE_DO_NOTHING = \"3\";\n\n public enum Status\n {\n /**\n * 正常\n */\n NORMAL(\"0\"),\n /**\n * 暂停\n */\n PAUSE(\"1\");\n\n private String value;\n\n private Status(String value)\n {\n this.value = value;\n }\n\n public String getValue()\n {\n return value;\n }\n }\n}\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/CacheConstants.java": {"9a8cba83822d29bf5849f3b105fb0a6859e1f145": {"t": 1785599285.4828568, "n": 844, "h": "0c6227b6f7970577", "c": "package com.campusreuse.common.constant;\n\n/**\n * 缓存的key 常量\n * \n * @author ruoyi\n */\npublic class CacheConstants\n{\n /**\n * 登录用户 redis key\n */\n public static final String LOGIN_TOKEN_KEY = \"login_tokens:\";\n\n /**\n * 验证码 redis key\n */\n public static final String CAPTCHA_CODE_KEY = \"captcha_codes:\";\n\n /**\n * 参数管理 cache key\n */\n public static final String SYS_CONFIG_KEY = \"sys_config:\";\n\n /**\n * 字典管理 cache key\n */\n public static final String SYS_DICT_KEY = \"sys_dict:\";\n\n /**\n * 防重提交 redis key\n */\n public static final String REPEAT_SUBMIT_KEY = \"repeat_submit:\";\n\n /**\n * 限流 redis key\n */\n public static final String RATE_LIMIT_KEY = \"rate_limit:\";\n\n /**\n * 登录账户密码错误次数 redis key\n */\n public static final String PWD_ERR_CNT_KEY = \"pwd_err_cnt:\";\n}\n"}}, "CampusReuse-admin/src/main/resources/application-druid.yml": {"11541ceaa6363020b4aae02cf622f658b2b1bf02": {"t": 1785599285.617123, "n": 1977, "h": "6752234be17c9a7f", "c": "# 数据源配置\nspring:\n datasource:\n type: com.alibaba.druid.pool.DruidDataSource\n driverClassName: com.mysql.cj.jdbc.Driver\n druid:\n # 主库数据源\n master:\n url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: 123456\n # 从库数据源\n slave:\n # 从数据源开关/默认关闭\n enabled: false\n url: \n username: \n password: \n # 初始连接数\n initialSize: 5\n # 最小连接池数量\n minIdle: 10\n # 最大连接池数量\n maxActive: 20\n # 配置获取连接等待超时的时间\n maxWait: 60000\n # 配置连接超时时间\n connectTimeout: 30000\n # 配置网络超时时间\n socketTimeout: 60000\n # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n timeBetweenEvictionRunsMillis: 60000\n # 配置一个连接在池中最小生存的时间,单位是毫秒\n minEvictableIdleTimeMillis: 300000\n # 配置一个连接在池中最大生存的时间,单位是毫秒\n maxEvictableIdleTimeMillis: 900000\n # 配置检测连接是否有效\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n webStatFilter: \n enabled: true\n statViewServlet:\n enabled: true\n # 设置白名单,不填则允许所有访问\n allow:\n url-pattern: /druid/*\n # 控制台管理用户名和密码\n login-username: ruoyi\n login-password: 123456\n filter:\n stat:\n enabled: true\n # 慢SQL记录\n log-slow-sql: true\n slow-sql-millis: 1000\n merge-sql: true\n wall:\n config:\n multi-statement-allow: true"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/AsyncConfig.java": {"38c30a35f220a2a2c2aa347453ba021905ea5671": {"t": 1785599285.885312, "n": 267, "h": "439065748a8eb087", "c": "package com.campusreuse.framework.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.scheduling.annotation.EnableAsync;\n\n/**\n * 异步配置\n * \n * @author campusreuse\n */\n@Configuration\n@EnableAsync\npublic class AsyncConfig {\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/I18nConfig.java": {"f1a3db7514066946604f8b84af6c8f8c96ced899": {"t": 1785599286.024267, "n": 1256, "h": "f725f4c14d4eb3a0", "c": "package com.campusreuse.framework.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.web.servlet.LocaleResolver;\nimport org.springframework.web.servlet.config.annotation.InterceptorRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurer;\nimport org.springframework.web.servlet.i18n.LocaleChangeInterceptor;\nimport org.springframework.web.servlet.i18n.SessionLocaleResolver;\nimport com.campusreuse.common.constant.Constants;\n\n/**\n * 资源文件配置加载\n * \n * @author ruoyi\n */\n@Configuration\npublic class I18nConfig implements WebMvcConfigurer\n{\n @Bean\n public LocaleResolver localeResolver()\n {\n SessionLocaleResolver slr = new SessionLocaleResolver();\n // 默认语言\n slr.setDefaultLocale(Constants.DEFAULT_LOCALE);\n return slr;\n }\n\n @Bean\n public LocaleChangeInterceptor localeChangeInterceptor()\n {\n LocaleChangeInterceptor lci = new LocaleChangeInterceptor();\n // 参数名\n lci.setParamName(\"lang\");\n return lci;\n }\n\n @Override\n public void addInterceptors(InterceptorRegistry registry)\n {\n registry.addInterceptor(localeChangeInterceptor());\n }\n}\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/Constants.java": {"9610be281fabe047555538fb9ebe2f2e711cc0e3": {"t": 1785599286.2329876, "n": 3246, "h": "fc66122561908505", "c": "package com.campusreuse.common.constant;\n\nimport java.util.Locale;\nimport io.jsonwebtoken.Claims;\n\n/**\n * 通用常量信息\n * \n * @author ruoyi\n */\npublic class Constants\n{\n /**\n * UTF-8 字符集\n */\n public static final String UTF8 = \"UTF-8\";\n\n /**\n * GBK 字符集\n */\n public static final String GBK = \"GBK\";\n\n /**\n * 系统语言\n */\n public static final Locale DEFAULT_LOCALE = Locale.SIMPLIFIED_CHINESE;\n\n /**\n * www主域\n */\n public static final String WWW = \"www.\";\n\n /**\n * http请求\n */\n public static final String HTTP = \"http://\";\n\n /**\n * https请求\n */\n public static final String HTTPS = \"https://\";\n\n /**\n * 通用成功标识\n */\n public static final String SUCCESS = \"0\";\n\n /**\n * 通用失败标识\n */\n public static final String FAIL = \"1\";\n\n /**\n * 登录成功\n */\n public static final String LOGIN_SUCCESS = \"Success\";\n\n /**\n * 注销\n */\n public static final String LOGOUT = \"Logout\";\n\n /**\n * 注册\n */\n public static final String REGISTER = \"Register\";\n\n /**\n * 登录失败\n */\n public static final String LOGIN_FAIL = \"Error\";\n\n /**\n * 所有权限标识\n */\n public static final String ALL_PERMISSION = \"*:*:*\";\n\n /**\n * 管理员角色权限标识\n */\n public static final String SUPER_ADMIN = \"admin\";\n\n /**\n * 角色权限分隔符\n */\n public static final String ROLE_DELIMETER = \",\";\n\n /**\n * 权限标识分隔符\n */\n public static final String PERMISSION_DELIMETER = \",\";\n\n /**\n * 验证码有效期(分钟)\n */\n public static final Integer CAPTCHA_EXPIRATION = 2;\n\n /**\n * 令牌\n */\n public static final String TOKEN = \"token\";\n\n /**\n * 令牌前缀\n */\n public static final String TOKEN_PREFIX = \"Bearer \";\n\n /**\n * 令牌前缀\n */\n public static final String LOGIN_USER_KEY = \"login_user_key\";\n\n /**\n * 用户ID\n */\n public static final String JWT_USERID = \"userid\";\n\n /**\n * 用户名称\n */\n public static final String JWT_USERNAME = Claims.SUBJECT;\n\n /**\n * 用户头像\n */\n public static final String JWT_AVATAR = \"avatar\";\n\n /**\n * 创建时间\n */\n public static final String JWT_CREATED = \"created\";\n\n /**\n * 用户权限\n */\n public static final String JWT_AUTHORITIES = \"authorities\";\n\n /**\n * 资源映射路径 前缀\n */\n public static final String RESOURCE_PREFIX = \"/profile\";\n\n /**\n * RMI 远程方法调用\n */\n public static final String LOOKUP_RMI = \"rmi:\";\n\n /**\n * LDAP 远程方法调用\n */\n public static final String LOOKUP_LDAP = \"ldap:\";\n\n /**\n * LDAPS 远程方法调用\n */\n public static final String LOOKUP_LDAPS = \"ldaps:\";\n\n /**\n * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)\n */\n public static final String[] JSON_WHITELIST_STR = { \"org.springframework\", \"com.campusreuse\" };\n\n /**\n * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)\n */\n public static final String[] JOB_WHITELIST_STR = { \"com.campusreuse.quartz.task\" };\n\n /**\n * 定时任务违规的字符\n */\n public static final String[] JOB_ERROR_STR = { \"java.net.URL\", \"javax.naming.InitialContext\", \"org.yaml.snakeyaml\",\n \"org.springframework\", \"org.apache\", \"com.campusreuse.common.utils.file\", \"com.campusreuse.common.config\", \"com.campusreuse.generator\" };\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/ResourcesConfig.java": {"464723cd81d9d30b6bc53b72e7016fa33cc42c08": {"t": 1785599286.3002102, "n": 2863, "h": "1c08796db7cd00aa", "c": "package com.campusreuse.framework.config;\n\nimport java.util.concurrent.TimeUnit;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.CacheControl;\nimport org.springframework.web.cors.CorsConfiguration;\nimport org.springframework.web.cors.UrlBasedCorsConfigurationSource;\nimport org.springframework.web.filter.CorsFilter;\nimport org.springframework.web.servlet.config.annotation.InterceptorRegistry;\nimport org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurer;\nimport com.campusreuse.common.config.RuoYiConfig;\nimport com.campusreuse.common.constant.Constants;\nimport com.campusreuse.framework.interceptor.RepeatSubmitInterceptor;\n\n/**\n * 通用配置\n * \n * @author ruoyi\n */\n@Configuration\npublic class ResourcesConfig implements WebMvcConfigurer {\n private static final Logger log = LoggerFactory.getLogger(ResourcesConfig.class);\n\n @Autowired\n private RepeatSubmitInterceptor repeatSubmitInterceptor;\n\n @Override\n public void addResourceHandlers(ResourceHandlerRegistry registry) {\n /** 本地文件上传路径 */\n String profile = RuoYiConfig.getProfile();\n log.info(\"本地文件上传路径 profile: {}\", profile);\n\n // 规范化路径,适配 Windows,确保以 file: 开头且路径正确\n String path = profile;\n if (!path.endsWith(\"/\") && !path.endsWith(\"\\\\\")) {\n path += \"/\";\n }\n String resourceLocation = \"file:\" + path;\n\n registry.addResourceHandler(Constants.RESOURCE_PREFIX + \"/**\")\n .addResourceLocations(resourceLocation);\n\n /** swagger配置 */\n registry.addResourceHandler(\"/swagger-ui/**\")\n .addResourceLocations(\"classpath:/META-INF/resources/webjars/springfox-swagger-ui/\")\n .setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic());\n }\n\n /**\n * 自定义拦截规则\n */\n @Override\n public void addInterceptors(InterceptorRegistry registry) {\n registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns(\"/**\");\n }\n\n /**\n * 跨域配置\n */\n @Bean\n public CorsFilter corsFilter() {\n CorsConfiguration config = new CorsConfiguration();\n // 设置访问源地址\n config.addAllowedOriginPattern(\"*\");\n // 设置访问源请求头\n config.addAllowedHeader(\"*\");\n // 设置访问源请求方法\n config.addAllowedMethod(\"*\");\n // 有效期 1800秒\n config.setMaxAge(1800L);\n // 添加映射路径,拦截一切请求\n UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();\n source.registerCorsConfiguration(\"/**\", config);\n // 返回新的CorsFilter\n return new CorsFilter(source);\n }\n}"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/ThreadPoolConfig.java": {"43095816a0fe53d15130879a0564dc5a09559aa9": {"t": 1785599286.694495, "n": 1944, "h": "ee99a3ed41c80ba5", "c": "package com.campusreuse.framework.config;\n\nimport com.campusreuse.common.utils.Threads;\nimport org.apache.commons.lang3.concurrent.BasicThreadFactory;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\nimport java.util.concurrent.ScheduledExecutorService;\nimport java.util.concurrent.ScheduledThreadPoolExecutor;\nimport java.util.concurrent.ThreadPoolExecutor;\n\n/**\n * 线程池配置\n *\n * @author ruoyi\n **/\n@Configuration\npublic class ThreadPoolConfig\n{\n // 核心线程池大小\n private int corePoolSize = 50;\n\n // 最大可创建的线程数\n private int maxPoolSize = 200;\n\n // 队列最大长度\n private int queueCapacity = 1000;\n\n // 线程池维护线程所允许的空闲时间\n private int keepAliveSeconds = 300;\n\n @Bean(name = \"threadPoolTaskExecutor\")\n public ThreadPoolTaskExecutor threadPoolTaskExecutor()\n {\n ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();\n executor.setMaxPoolSize(maxPoolSize);\n executor.setCorePoolSize(corePoolSize);\n executor.setQueueCapacity(queueCapacity);\n executor.setKeepAliveSeconds(keepAliveSeconds);\n // 线程池对拒绝任务(无线程可用)的处理策略\n executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());\n return executor;\n }\n\n /**\n * 执行周期性或定时任务\n */\n @Bean(name = \"scheduledExecutorService\")\n protected ScheduledExecutorService scheduledExecutorService()\n {\n return new ScheduledThreadPoolExecutor(corePoolSize,\n new BasicThreadFactory.Builder().namingPattern(\"schedule-pool-%d\").daemon(true).build(),\n new ThreadPoolExecutor.CallerRunsPolicy())\n {\n @Override\n protected void afterExecute(Runnable r, Throwable t)\n {\n super.afterExecute(r, t);\n Threads.printException(r, t);\n }\n };\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/DruidConfig.java": {"add81d406fba0fc7bdbecf72d3333ffd1eb5d5dc": {"t": 1785599286.7699833, "n": 4767, "h": "d2628d90551bdf38", "c": "package com.campusreuse.framework.config;\n\nimport java.io.IOException;\nimport java.util.HashMap;\nimport java.util.Map;\nimport javax.servlet.Filter;\nimport javax.servlet.FilterChain;\nimport javax.servlet.ServletException;\nimport javax.servlet.ServletRequest;\nimport javax.servlet.ServletResponse;\nimport javax.sql.DataSource;\nimport org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.boot.web.servlet.FilterRegistrationBean;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Primary;\nimport com.alibaba.druid.pool.DruidDataSource;\nimport com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;\nimport com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;\nimport com.alibaba.druid.util.Utils;\nimport com.campusreuse.common.enums.DataSourceType;\nimport com.campusreuse.common.utils.spring.SpringUtils;\nimport com.campusreuse.framework.config.properties.DruidProperties;\nimport com.campusreuse.framework.datasource.DynamicDataSource;\n\n/**\n * druid 配置多数据源\n * \n * @author ruoyi\n */\n@Configuration\npublic class DruidConfig\n{\n @Bean\n @ConfigurationProperties(\"spring.datasource.druid.master\")\n public DataSource masterDataSource(DruidProperties druidProperties)\n {\n DruidDataSource dataSource = DruidDataSourceBuilder.create().build();\n return druidProperties.dataSource(dataSource);\n }\n\n @Bean\n @ConfigurationProperties(\"spring.datasource.druid.slave\")\n @ConditionalOnProperty(prefix = \"spring.datasource.druid.slave\", name = \"enabled\", havingValue = \"true\")\n public DataSource slaveDataSource(DruidProperties druidProperties)\n {\n DruidDataSource dataSource = DruidDataSourceBuilder.create().build();\n return druidProperties.dataSource(dataSource);\n }\n\n @Bean(name = \"dynamicDataSource\")\n @Primary\n public DynamicDataSource dataSource(DataSource masterDataSource)\n {\n Map<Object, Object> targetDataSources = new HashMap<>();\n targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);\n setDataSource(targetDataSources, DataSourceType.SLAVE.name(), \"slaveDataSource\");\n return new DynamicDataSource(masterDataSource, targetDataSources);\n }\n \n /**\n * 设置数据源\n * \n * @param targetDataSources 备选数据源集合\n * @param sourceName 数据源名称\n * @param beanName bean名称\n */\n public void setDataSource(Map<Object, Object> targetDataSources, String sourceName, String beanName)\n {\n try\n {\n DataSource dataSource = SpringUtils.getBean(beanName);\n targetDataSources.put(sourceName, dataSource);\n }\n catch (Exception e)\n {\n }\n }\n\n /**\n * 去除监控页面底部的广告\n */\n @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n @Bean\n @ConditionalOnProperty(name = \"spring.datasource.druid.statViewServlet.enabled\", havingValue = \"true\")\n public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties)\n {\n // 获取web监控页面的参数\n DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();\n // 提取common.js的配置路径\n String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : \"/druid/*\";\n String commonJsPattern = pattern.replaceAll(\"\\\\*\", \"js/common.js\");\n final String filePath = \"support/http/resources/js/common.js\";\n // 创建filter进行过滤\n Filter filter = new Filter()\n {\n @Override\n public void init(javax.servlet.FilterConfig filterConfig) throws ServletException\n {\n }\n @Override\n public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)\n throws IOException, ServletException\n {\n chain.doFilter(request, response);\n // 重置缓冲区,响应头不会被重置\n response.resetBuffer();\n // 获取common.js\n String text = Utils.readFromResource(filePath);\n // 正则替换banner, 除去底部的广告信息\n text = text.replaceAll(\"<a.*?banner\\\"></a><br/>\", \"\");\n text = text.replaceAll(\"powered.*?shrek.wang</a>\", \"\");\n response.getWriter().write(text);\n }\n @Override\n public void destroy()\n {\n }\n };\n FilterRegistrationBean registrationBean = new FilterRegistrationBean();\n registrationBean.setFilter(filter);\n registrationBean.addUrlPatterns(commonJsPattern);\n return registrationBean;\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/FilterConfig.java": {"276fb5bac7af7fd0e8096a82ce7b13b19ccbd555": {"t": 1785599286.833436, "n": 2067, "h": "325abaf20b0d3712", "c": "package com.campusreuse.framework.config;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport javax.servlet.DispatcherType;\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;\nimport org.springframework.boot.web.servlet.FilterRegistrationBean;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport com.campusreuse.common.filter.RepeatableFilter;\nimport com.campusreuse.common.filter.XssFilter;\nimport com.campusreuse.common.utils.StringUtils;\n\n/**\n * Filter配置\n *\n * @author ruoyi\n */\n@Configuration\npublic class FilterConfig\n{\n @Value(\"${xss.excludes}\")\n private String excludes;\n\n @Value(\"${xss.urlPatterns}\")\n private String urlPatterns;\n\n @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n @Bean\n @ConditionalOnProperty(value = \"xss.enabled\", havingValue = \"true\")\n public FilterRegistrationBean xssFilterRegistration()\n {\n FilterRegistrationBean registration = new FilterRegistrationBean();\n registration.setDispatcherTypes(DispatcherType.REQUEST);\n registration.setFilter(new XssFilter());\n registration.addUrlPatterns(StringUtils.split(urlPatterns, \",\"));\n registration.setName(\"xssFilter\");\n registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);\n Map<String, String> initParameters = new HashMap<String, String>();\n initParameters.put(\"excludes\", excludes);\n registration.setInitParameters(initParameters);\n return registration;\n }\n\n @SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n @Bean\n public FilterRegistrationBean someFilterRegistration()\n {\n FilterRegistrationBean registration = new FilterRegistrationBean();\n registration.setFilter(new RepeatableFilter());\n registration.addUrlPatterns(\"/*\");\n registration.setName(\"repeatableFilter\");\n registration.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);\n return registration;\n }\n\n}\n"}}, "CampusReuse-generator/src/main/java/com/campusreuse/generator/config/GenConfig.java": {"31273cb6e0f82c60e6249e0376e1699c77d66eb9": {"t": 1785599287.0866582, "n": 1868, "h": "b63f4054e4783381", "c": "package com.campusreuse.generator.config;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.PropertySource;\nimport org.springframework.stereotype.Component;\n\n/**\n * 读取代码生成相关配置\n * \n * @author ruoyi\n */\n@Component\n@ConfigurationProperties(prefix = \"gen\")\n@PropertySource(value = { \"classpath:generator.yml\" })\npublic class GenConfig\n{\n /** 作者 */\n public static String author;\n\n /** 生成包路径 */\n public static String packageName;\n\n /** 自动去除表前缀 */\n public static boolean autoRemovePre;\n\n /** 表前缀 */\n public static String tablePrefix;\n\n /** 是否允许生成文件覆盖到本地(自定义路径) */\n public static boolean allowOverwrite;\n\n public static String getAuthor()\n {\n return author;\n }\n\n @Value(\"${author}\")\n public void setAuthor(String author)\n {\n GenConfig.author = author;\n }\n\n public static String getPackageName()\n {\n return packageName;\n }\n\n @Value(\"${packageName}\")\n public void setPackageName(String packageName)\n {\n GenConfig.packageName = packageName;\n }\n\n public static boolean getAutoRemovePre()\n {\n return autoRemovePre;\n }\n\n @Value(\"${autoRemovePre}\")\n public void setAutoRemovePre(boolean autoRemovePre)\n {\n GenConfig.autoRemovePre = autoRemovePre;\n }\n\n public static String getTablePrefix()\n {\n return tablePrefix;\n }\n\n @Value(\"${tablePrefix}\")\n public void setTablePrefix(String tablePrefix)\n {\n GenConfig.tablePrefix = tablePrefix;\n }\n\n public static boolean isAllowOverwrite()\n {\n return allowOverwrite;\n }\n\n @Value(\"${allowOverwrite}\")\n public void setAllowOverwrite(boolean allowOverwrite)\n {\n GenConfig.allowOverwrite = allowOverwrite;\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/MyBatisConfig.java": {"9a88cf6cc8b8d80fd5732b5f5aa5a50abeae5960": {"t": 1785599287.193732, "n": 5416, "h": "7c7127249ac0fbaf", "c": "package com.campusreuse.framework.config;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashSet;\nimport java.util.List;\nimport javax.sql.DataSource;\nimport org.apache.ibatis.io.VFS;\nimport org.apache.ibatis.session.SqlSessionFactory;\nimport org.mybatis.spring.SqlSessionFactoryBean;\nimport org.mybatis.spring.boot.autoconfigure.SpringBootVFS;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.core.env.Environment;\nimport org.springframework.core.io.DefaultResourceLoader;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.support.PathMatchingResourcePatternResolver;\nimport org.springframework.core.io.support.ResourcePatternResolver;\nimport org.springframework.core.type.classreading.CachingMetadataReaderFactory;\nimport org.springframework.core.type.classreading.MetadataReader;\nimport org.springframework.core.type.classreading.MetadataReaderFactory;\nimport org.springframework.util.ClassUtils;\nimport com.campusreuse.common.utils.StringUtils;\n\n/**\n * Mybatis支持*匹配扫描包\n * \n * @author ruoyi\n */\n@Configuration\npublic class MyBatisConfig\n{\n @Autowired\n private Environment env;\n\n static final String DEFAULT_RESOURCE_PATTERN = \"**/*.class\";\n\n public static String setTypeAliasesPackage(String typeAliasesPackage)\n {\n ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();\n MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);\n List<String> allResult = new ArrayList<String>();\n try\n {\n for (String aliasesPackage : typeAliasesPackage.split(\",\"))\n {\n List<String> result = new ArrayList<String>();\n aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX\n + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + \"/\" + DEFAULT_RESOURCE_PATTERN;\n Resource[] resources = resolver.getResources(aliasesPackage);\n if (resources != null && resources.length > 0)\n {\n MetadataReader metadataReader = null;\n for (Resource resource : resources)\n {\n if (resource.isReadable())\n {\n metadataReader = metadataReaderFactory.getMetadataReader(resource);\n try\n {\n result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());\n }\n catch (ClassNotFoundException e)\n {\n e.printStackTrace();\n }\n }\n }\n }\n if (result.size() > 0)\n {\n HashSet<String> hashResult = new HashSet<String>(result);\n allResult.addAll(hashResult);\n }\n }\n if (allResult.size() > 0)\n {\n typeAliasesPackage = String.join(\",\", (String[]) allResult.toArray(new String[0]));\n }\n else\n {\n throw new RuntimeException(\"mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:\" + typeAliasesPackage + \"未找到任何包\");\n }\n }\n catch (IOException e)\n {\n e.printStackTrace();\n }\n return typeAliasesPackage;\n }\n\n public Resource[] resolveMapperLocations(String[] mapperLocations)\n {\n ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();\n List<Resource> resources = new ArrayList<Resource>();\n if (mapperLocations != null)\n {\n for (String mapperLocation : mapperLocations)\n {\n try\n {\n Resource[] mappers = resourceResolver.getResources(mapperLocation);\n resources.addAll(Arrays.asList(mappers));\n }\n catch (IOException e)\n {\n // ignore\n }\n }\n }\n return resources.toArray(new Resource[resources.size()]);\n }\n\n @Bean\n public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception\n {\n String typeAliasesPackage = env.getProperty(\"mybatis.typeAliasesPackage\");\n String mapperLocations = env.getProperty(\"mybatis.mapperLocations\");\n String configLocation = env.getProperty(\"mybatis.configLocation\");\n typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);\n VFS.addImplClass(SpringBootVFS.class);\n\n final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();\n sessionFactory.setDataSource(dataSource);\n sessionFactory.setTypeAliasesPackage(typeAliasesPackage);\n sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, \",\")));\n sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));\n return sessionFactory.getObject();\n }\n}"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/ServerConfig.java": {"2dcc81cef7c54baf19e8eed0abd5c736275210ac": {"t": 1785599287.443372, "n": 809, "h": "92077b80f0c81919", "c": "package com.campusreuse.framework.config;\n\nimport javax.servlet.http.HttpServletRequest;\nimport org.springframework.stereotype.Component;\nimport com.campusreuse.common.utils.ServletUtils;\n\n/**\n * 服务相关配置\n * \n * @author ruoyi\n */\n@Component\npublic class ServerConfig\n{\n /**\n * 获取完整的请求路径,包括:域名,端口,上下文访问路径\n * \n * @return 服务地址\n */\n public String getUrl()\n {\n HttpServletRequest request = ServletUtils.getRequest();\n return getDomain(request);\n }\n\n public static String getDomain(HttpServletRequest request)\n {\n StringBuffer url = request.getRequestURL();\n String contextPath = request.getServletContext().getContextPath();\n return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString();\n }\n}\n"}}, "CampusReuse-common/src/main/java/com/campusreuse/common/constant/GenConstants.java": {"b667975aede9c34251aede69f3c31846e46a0df8": {"t": 1785599287.493945, "n": 3337, "h": "fc2795a806d8c22a", "c": "package com.campusreuse.common.constant;\n\n/**\n * 代码生成通用常量\n * \n * @author ruoyi\n */\npublic class GenConstants\n{\n /** 单表(增删改查) */\n public static final String TPL_CRUD = \"crud\";\n\n /** 树表(增删改查) */\n public static final String TPL_TREE = \"tree\";\n\n /** 主子表(增删改查) */\n public static final String TPL_SUB = \"sub\";\n\n /** 树编码字段 */\n public static final String TREE_CODE = \"treeCode\";\n\n /** 树父编码字段 */\n public static final String TREE_PARENT_CODE = \"treeParentCode\";\n\n /** 树名称字段 */\n public static final String TREE_NAME = \"treeName\";\n\n /** 上级菜单ID字段 */\n public static final String PARENT_MENU_ID = \"parentMenuId\";\n\n /** 上级菜单名称字段 */\n public static final String PARENT_MENU_NAME = \"parentMenuName\";\n\n /** 数据库字符串类型 */\n public static final String[] COLUMNTYPE_STR = { \"char\", \"varchar\", \"nvarchar\", \"varchar2\" };\n\n /** 数据库文本类型 */\n public static final String[] COLUMNTYPE_TEXT = { \"tinytext\", \"text\", \"mediumtext\", \"longtext\" };\n\n /** 数据库时间类型 */\n public static final String[] COLUMNTYPE_TIME = { \"datetime\", \"time\", \"date\", \"timestamp\" };\n\n /** 数据库数字类型 */\n public static final String[] COLUMNTYPE_NUMBER = { \"tinyint\", \"smallint\", \"mediumint\", \"int\", \"number\", \"integer\",\n \"bit\", \"bigint\", \"float\", \"double\", \"decimal\" };\n\n /** 页面不需要编辑字段 */\n public static final String[] COLUMNNAME_NOT_EDIT = { \"id\", \"create_by\", \"create_time\", \"del_flag\" };\n\n /** 页面不需要显示的列表字段 */\n public static final String[] COLUMNNAME_NOT_LIST = { \"id\", \"create_by\", \"create_time\", \"del_flag\", \"update_by\",\n \"update_time\" };\n\n /** 页面不需要查询字段 */\n public static final String[] COLUMNNAME_NOT_QUERY = { \"id\", \"create_by\", \"create_time\", \"del_flag\", \"update_by\",\n \"update_time\", \"remark\" };\n\n /** Entity基类字段 */\n public static final String[] BASE_ENTITY = { \"createBy\", \"createTime\", \"updateBy\", \"updateTime\", \"remark\" };\n\n /** Tree基类字段 */\n public static final String[] TREE_ENTITY = { \"parentName\", \"parentId\", \"orderNum\", \"ancestors\", \"children\" };\n\n /** 文本框 */\n public static final String HTML_INPUT = \"input\";\n\n /** 文本域 */\n public static final String HTML_TEXTAREA = \"textarea\";\n\n /** 下拉框 */\n public static final String HTML_SELECT = \"select\";\n\n /** 单选框 */\n public static final String HTML_RADIO = \"radio\";\n\n /** 复选框 */\n public static final String HTML_CHECKBOX = \"checkbox\";\n\n /** 日期控件 */\n public static final String HTML_DATETIME = \"datetime\";\n\n /** 图片上传控件 */\n public static final String HTML_IMAGE_UPLOAD = \"imageUpload\";\n\n /** 文件上传控件 */\n public static final String HTML_FILE_UPLOAD = \"fileUpload\";\n\n /** 富文本控件 */\n public static final String HTML_EDITOR = \"editor\";\n\n /** 字符串类型 */\n public static final String TYPE_STRING = \"String\";\n\n /** 整型 */\n public static final String TYPE_INTEGER = \"Integer\";\n\n /** 长整型 */\n public static final String TYPE_LONG = \"Long\";\n\n /** 浮点型 */\n public static final String TYPE_DOUBLE = \"Double\";\n\n /** 高精度计算类型 */\n public static final String TYPE_BIGDECIMAL = \"BigDecimal\";\n\n /** 时间类型 */\n public static final String TYPE_DATE = \"Date\";\n\n /** 模糊查询 */\n public static final String QUERY_LIKE = \"LIKE\";\n\n /** 相等查询 */\n public static final String QUERY_EQ = \"EQ\";\n\n /** 需要 */\n public static final String REQUIRE = \"1\";\n}\n"}}, "CampusReuse-generator/src/main/java/com/campusreuse/generator/mapper/GenTableColumnMapper.java": {"9a318e037e3ad688ab6ad55756f3fbca524d2063": {"t": 1785599287.6160004, "n": 1176, "h": "beee21adfef1ff0b", "c": "package com.campusreuse.generator.mapper;\n\nimport java.util.List;\nimport com.campusreuse.generator.domain.GenTableColumn;\n\n/**\n * 业务字段 数据层\n * \n * @author ruoyi\n */\npublic interface GenTableColumnMapper\n{\n /**\n * 根据表名称查询列信息\n * \n * @param tableName 表名称\n * @return 列信息\n */\n public List<GenTableColumn> selectDbTableColumnsByName(String tableName);\n\n /**\n * 查询业务字段列表\n * \n * @param tableId 业务字段编号\n * @return 业务字段集合\n */\n public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId);\n\n /**\n * 新增业务字段\n * \n * @param genTableColumn 业务字段信息\n * @return 结果\n */\n public int insertGenTableColumn(GenTableColumn genTableColumn);\n\n /**\n * 修改业务字段\n * \n * @param genTableColumn 业务字段信息\n * @return 结果\n */\n public int updateGenTableColumn(GenTableColumn genTableColumn);\n\n /**\n * 删除业务字段\n * \n * @param genTableColumns 列数据\n * @return 结果\n */\n public int deleteGenTableColumns(List<GenTableColumn> genTableColumns);\n\n /**\n * 批量删除业务字段\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteGenTableColumnByIds(Long[] ids);\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/RedisConfig.java": {"7a72ff1ab3d30c66a66226119cc902cc6547333c": {"t": 1785599287.6923282, "n": 2452, "h": "fd1769f212ba79c8", "c": "package com.campusreuse.framework.config;\n\nimport org.springframework.cache.annotation.CachingConfigurerSupport;\nimport org.springframework.cache.annotation.EnableCaching;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.data.redis.connection.RedisConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.core.script.DefaultRedisScript;\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\n\n/**\n * redis配置\n * \n * @author ruoyi\n */\n@Configuration\n@EnableCaching\npublic class RedisConfig extends CachingConfigurerSupport\n{\n @Bean\n @SuppressWarnings(value = { \"unchecked\", \"rawtypes\" })\n public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)\n {\n RedisTemplate<Object, Object> template = new RedisTemplate<>();\n template.setConnectionFactory(connectionFactory);\n\n FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);\n\n // 使用StringRedisSerializer来序列化和反序列化redis的key值\n template.setKeySerializer(new StringRedisSerializer());\n template.setValueSerializer(serializer);\n\n // Hash的key也采用StringRedisSerializer的序列化方式\n template.setHashKeySerializer(new StringRedisSerializer());\n template.setHashValueSerializer(serializer);\n\n template.afterPropertiesSet();\n return template;\n }\n\n @Bean\n public DefaultRedisScript<Long> limitScript()\n {\n DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();\n redisScript.setScriptText(limitScriptText());\n redisScript.setResultType(Long.class);\n return redisScript;\n }\n\n /**\n * 限流脚本\n */\n private String limitScriptText()\n {\n return \"local key = KEYS[1]\\n\" +\n \"local count = tonumber(ARGV[1])\\n\" +\n \"local time = tonumber(ARGV[2])\\n\" +\n \"local current = redis.call('get', key);\\n\" +\n \"if current and tonumber(current) > count then\\n\" +\n \" return tonumber(current);\\n\" +\n \"end\\n\" +\n \"current = redis.call('incr', key)\\n\" +\n \"if tonumber(current) == 1 then\\n\" +\n \" redis.call('expire', key, time)\\n\" +\n \"end\\n\" +\n \"return tonumber(current);\";\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/SecurityConfig.java": {"52931c2ed2d12e52eec92bb50db4cbdcad36ca26": {"t": 1785599287.895088, "n": 5531, "h": "13fde416065b6679", "c": "package com.campusreuse.framework.config;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.http.HttpMethod;\nimport org.springframework.security.authentication.AuthenticationManager;\nimport org.springframework.security.authentication.ProviderManager;\nimport org.springframework.security.authentication.dao.DaoAuthenticationProvider;\nimport org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\nimport org.springframework.security.config.http.SessionCreationPolicy;\nimport org.springframework.security.core.userdetails.UserDetailsService;\nimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\nimport org.springframework.security.web.SecurityFilterChain;\nimport org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;\nimport org.springframework.security.web.authentication.logout.LogoutFilter;\nimport org.springframework.web.filter.CorsFilter;\nimport com.campusreuse.framework.config.properties.PermitAllUrlProperties;\nimport com.campusreuse.framework.security.filter.JwtAuthenticationTokenFilter;\nimport com.campusreuse.framework.security.handle.AuthenticationEntryPointImpl;\nimport com.campusreuse.framework.security.handle.LogoutSuccessHandlerImpl;\n\n/**\n * spring security配置\n * \n * @author ruoyi\n */\n@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true)\n@Configuration\npublic class SecurityConfig {\n /**\n * 自定义用户认证逻辑\n */\n @Autowired\n private UserDetailsService userDetailsService;\n\n /**\n * 认证失败处理类\n */\n @Autowired\n private AuthenticationEntryPointImpl unauthorizedHandler;\n\n /**\n * 退出处理类\n */\n @Autowired\n private LogoutSuccessHandlerImpl logoutSuccessHandler;\n\n /**\n * token认证过滤器\n */\n @Autowired\n private JwtAuthenticationTokenFilter authenticationTokenFilter;\n\n /**\n * 跨域过滤器\n */\n @Autowired\n private CorsFilter corsFilter;\n\n /**\n * 允许匿名访问的地址\n */\n @Autowired\n private PermitAllUrlProperties permitAllUrl;\n\n /**\n * 身份验证实现\n */\n @Bean\n public AuthenticationManager authenticationManager() {\n DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();\n daoAuthenticationProvider.setUserDetailsService(userDetailsService);\n daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder());\n return new ProviderManager(daoAuthenticationProvider);\n }\n\n /**\n * anyRequest | 匹配所有请求路径\n * access | SpringEl表达式结果为true时可以访问\n * anonymous | 匿名可以访问\n * denyAll | 用户不能访问\n * fullyAuthenticated | 用户完全认证可以访问(非remember-me下自动登录)\n * hasAnyAuthority | 如果有参数,参数表示权限,则其中任何一个权限可以访问\n * hasAnyRole | 如果有参数,参数表示角色,则其中任何一个角色可以访问\n * hasAuthority | 如果有参数,参数表示权限,则其权限可以访问\n * hasIpAddress | 如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问\n * hasRole | 如果有参数,参数表示角色,则其角色可以访问\n * permitAll | 用户可以任意访问\n * rememberMe | 允许通过remember-me登录的用户访问\n * authenticated | 用户登录后可访问\n */\n @Bean\n protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {\n return httpSecurity\n // CSRF禁用,因为不使用session\n .csrf(csrf -> csrf.disable())\n // 禁用HTTP响应标头\n .headers((headersCustomizer) -> {\n headersCustomizer.cacheControl(cache -> cache.disable())\n .frameOptions(options -> options.sameOrigin());\n })\n // 认证失败处理类\n .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler))\n // 基于token,所以不需要session\n .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))\n // 注解标记允许匿名访问的url\n .authorizeHttpRequests((requests) -> {\n permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());\n // 对于登录login 注册register 验证码captchaImage 允许匿名访问\n requests.antMatchers(\"/login\", \"/register\", \"/captchaImage\", \"/websocket/**\").permitAll()\n // 静态资源,可匿名访问\n .antMatchers(HttpMethod.GET, \"/\", \"/*.html\", \"/**/*.html\", \"/**/*.css\", \"/**/*.js\",\n \"/profile/**\")\n .permitAll()\n .antMatchers(\"/swagger-ui.html\", \"/swagger-resources/**\", \"/webjars/**\", \"/*/api-docs\",\n \"/druid/**\")\n .permitAll()\n // 除上面外的所有请求全部需要鉴权认证\n .anyRequest().authenticated();\n })\n // 添加Logout filter\n .logout(logout -> logout.logoutUrl(\"/logout\").logoutSuccessHandler(logoutSuccessHandler))\n // 添加JWT filter\n .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)\n // 添加CORS filter\n .addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class)\n .addFilterBefore(corsFilter, LogoutFilter.class)\n .build();\n }\n\n /**\n * 强散列哈希加密实现\n */\n @Bean\n public BCryptPasswordEncoder bCryptPasswordEncoder() {\n return new BCryptPasswordEncoder();\n }\n}\n"}}, "CampusReuse-generator/src/main/resources/mapper/generator/GenTableMapper.xml": {"edb0ab59623b6d3835dc90180cb17d8cd7195cd5": {"t": 1785599288.0228431, "n": 12642, "h": "1122c43d79a0ca94", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.generator.mapper.GenTableMapper\">\n\n\t<resultMap type=\"GenTable\" id=\"GenTableResult\">\n\t <id property=\"tableId\" column=\"table_id\" />\n\t\t<result property=\"tableName\" column=\"table_name\" />\n\t\t<result property=\"tableComment\" column=\"table_comment\" />\n\t\t<result property=\"subTableName\" column=\"sub_table_name\" />\n\t\t<result property=\"subTableFkName\" column=\"sub_table_fk_name\" />\n\t\t<result property=\"className\" column=\"class_name\" />\n\t\t<result property=\"tplCategory\" column=\"tpl_category\" />\n\t\t<result property=\"tplWebType\" column=\"tpl_web_type\" />\n\t\t<result property=\"packageName\" column=\"package_name\" />\n\t\t<result property=\"moduleName\" column=\"module_name\" />\n\t\t<result property=\"businessName\" column=\"business_name\" />\n\t\t<result property=\"functionName\" column=\"function_name\" />\n\t\t<result property=\"functionAuthor\" column=\"function_author\" />\n\t\t<result property=\"genType\" column=\"gen_type\" />\n\t\t<result property=\"genPath\" column=\"gen_path\" />\n\t\t<result property=\"options\" column=\"options\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t\t<result property=\"remark\" column=\"remark\" />\n\t\t<collection property=\"columns\" javaType=\"java.util.List\" resultMap=\"GenTableColumnResult\" />\n\t</resultMap>\n\t\n\t<resultMap type=\"GenTableColumn\" id=\"GenTableColumnResult\">\n <id property=\"columnId\" column=\"column_id\" />\n <result property=\"tableId\" column=\"table_id\" />\n <result property=\"columnName\" column=\"column_name\" />\n <result property=\"columnComment\" column=\"column_comment\" />\n <result property=\"columnType\" column=\"column_type\" />\n <result property=\"javaType\" column=\"java_type\" />\n <result property=\"javaField\" column=\"java_field\" />\n <result property=\"isPk\" column=\"is_pk\" />\n <result property=\"isIncrement\" column=\"is_increment\" />\n <result property=\"isRequired\" column=\"is_required\" />\n <result property=\"isInsert\" column=\"is_insert\" />\n <result property=\"isEdit\" column=\"is_edit\" />\n <result property=\"isList\" column=\"is_list\" />\n <result property=\"isQuery\" column=\"is_query\" />\n <result property=\"queryType\" column=\"query_type\" />\n <result property=\"htmlType\" column=\"html_type\" />\n <result property=\"dictType\" column=\"dict_type\" />\n <result property=\"sort\" column=\"sort\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n </resultMap>\n\t\n\t<sql id=\"selectGenTableVo\">\n select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, tpl_web_type, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table\n </sql>\n \n <select id=\"selectGenTableList\" parameterType=\"GenTable\" resultMap=\"GenTableResult\">\n\t\t<include refid=\"selectGenTableVo\"/>\n\t\t<where>\n\t\t\t<if test=\"tableName != null and tableName != ''\">\n\t\t\t\tAND lower(table_name) like lower(concat('%', #{tableName}, '%'))\n\t\t\t</if>\n\t\t\t<if test=\"tableComment != null and tableComment != ''\">\n\t\t\t\tAND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tAND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tAND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t\t</if>\n\t\t</where>\n\t</select>\n\n\t<select id=\"selectDbTableList\" parameterType=\"GenTable\" resultMap=\"GenTableResult\">\n\t\tselect table_name, table_comment, create_time, update_time from information_schema.tables\n\t\twhere table_schema = (select database())\n\t\tAND table_name NOT LIKE 'qrtz\\_%' AND table_name NOT LIKE 'gen\\_%'\n\t\tAND table_name NOT IN (select table_name from gen_table)\n\t\t<if test=\"tableName != null and tableName != ''\">\n\t\t\tAND lower(table_name) like lower(concat('%', #{tableName}, '%'))\n\t\t</if>\n\t\t<if test=\"tableComment != null and tableComment != ''\">\n\t\t\tAND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))\n\t\t</if>\n\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\tAND date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t</if>\n\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\tAND date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t</if>\n order by create_time desc\n\t</select>\n\t\n\t<select id=\"selectDbTableListByNames\" resultMap=\"GenTableResult\">\n\t\tselect table_name, table_comment, create_time, update_time from information_schema.tables\n\t\twhere table_name NOT LIKE 'qrtz\\_%' and table_name NOT LIKE 'gen\\_%' and table_schema = (select database())\n\t\tand table_name in\n\t <foreach collection=\"array\" item=\"name\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{name}\n </foreach> \n\t</select>\n\t\n\t<select id=\"selectTableByName\" parameterType=\"String\" resultMap=\"GenTableResult\">\n\t\tselect table_name, table_comment, create_time, update_time from information_schema.tables\n\t\twhere table_comment <![CDATA[ <> ]]> '' and table_schema = (select database())\n\t\tand table_name = #{tableName}\n\t</select>\n\t\n\t<select id=\"selectGenTableById\" parameterType=\"Long\" resultMap=\"GenTableResult\">\n\t SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,\n\t\t\t c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort\n\t\tFROM gen_table t\n\t\t\t LEFT JOIN gen_table_column c ON t.table_id = c.table_id\n\t\twhere t.table_id = #{tableId} order by c.sort\n\t</select>\n\t\n\t<select id=\"selectGenTableByName\" parameterType=\"String\" resultMap=\"GenTableResult\">\n\t SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark,\n\t\t\t c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort\n\t\tFROM gen_table t\n\t\t\t LEFT JOIN gen_table_column c ON t.table_id = c.table_id\n\t\twhere t.table_name = #{tableName} order by c.sort\n\t</select>\n\t\n\t<select id=\"selectGenTableAll\" parameterType=\"String\" resultMap=\"GenTableResult\">\n\t SELECT t.table_id, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.tpl_web_type, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.options, t.remark,\n\t\t\t c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort\n\t\tFROM gen_table t\n\t\t\t LEFT JOIN gen_table_column c ON t.table_id = c.table_id\n\t\torder by c.sort\n\t</select>\n\t\n\t<insert id=\"insertGenTable\" parameterType=\"GenTable\" useGeneratedKeys=\"true\" keyProperty=\"tableId\">\n insert into gen_table (\n\t\t\t<if test=\"tableName != null\">table_name,</if>\n\t\t\t<if test=\"tableComment != null and tableComment != ''\">table_comment,</if>\n\t\t\t<if test=\"className != null and className != ''\">class_name,</if>\n\t\t\t<if test=\"tplCategory != null and tplCategory != ''\">tpl_category,</if>\n\t\t\t<if test=\"tplWebType != null and tplWebType != ''\">tpl_web_type,</if>\n\t\t\t<if test=\"packageName != null and packageName != ''\">package_name,</if>\n\t\t\t<if test=\"moduleName != null and moduleName != ''\">module_name,</if>\n\t\t\t<if test=\"businessName != null and businessName != ''\">business_name,</if>\n\t\t\t<if test=\"functionName != null and functionName != ''\">function_name,</if>\n\t\t\t<if test=\"functionAuthor != null and functionAuthor != ''\">function_author,</if>\n\t\t\t<if test=\"genType != null and genType != ''\">gen_type,</if>\n\t\t\t<if test=\"genPath != null and genPath != ''\">gen_path,</if>\n\t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n\t\t\tcreate_time\n )values(\n\t\t\t<if test=\"tableName != null\">#{tableName},</if>\n\t\t\t<if test=\"tableComment != null and tableComment != ''\">#{tableComment},</if>\n\t\t\t<if test=\"className != null and className != ''\">#{className},</if>\n\t\t\t<if test=\"tplCategory != null and tplCategory != ''\">#{tplCategory},</if>\n\t\t\t<if test=\"tplWebType != null and tplWebType != ''\">#{tplWebType},</if>\n\t\t\t<if test=\"packageName != null and packageName != ''\">#{packageName},</if>\n\t\t\t<if test=\"moduleName != null and moduleName != ''\">#{moduleName},</if>\n\t\t\t<if test=\"businessName != null and businessName != ''\">#{businessName},</if>\n\t\t\t<if test=\"functionName != null and functionName != ''\">#{functionName},</if>\n\t\t\t<if test=\"functionAuthor != null and functionAuthor != ''\">#{functionAuthor},</if>\n\t\t\t<if test=\"genType != null and genType != ''\">#{genType},</if>\n\t\t\t<if test=\"genPath != null and genPath != ''\">#{genPath},</if>\n\t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n\t\t\tsysdate()\n )\n </insert>\n \n <update id=\"createTable\">\n ${sql}\n </update>\n \n <update id=\"updateGenTable\" parameterType=\"GenTable\">\n update gen_table\n <set>\n <if test=\"tableName != null\">table_name = #{tableName},</if>\n <if test=\"tableComment != null and tableComment != ''\">table_comment = #{tableComment},</if>\n <if test=\"subTableName != null\">sub_table_name = #{subTableName},</if>\n <if test=\"subTableFkName != null\">sub_table_fk_name = #{subTableFkName},</if>\n <if test=\"className != null and className != ''\">class_name = #{className},</if>\n <if test=\"functionAuthor != null and functionAuthor != ''\">function_author = #{functionAuthor},</if>\n <if test=\"genType != null and genType != ''\">gen_type = #{genType},</if>\n <if test=\"genPath != null and genPath != ''\">gen_path = #{genPath},</if>\n <if test=\"tplCategory != null and tplCategory != ''\">tpl_category = #{tplCategory},</if>\n <if test=\"tplWebType != null and tplWebType != ''\">tpl_web_type = #{tplWebType},</if>\n <if test=\"packageName != null and packageName != ''\">package_name = #{packageName},</if>\n <if test=\"moduleName != null and moduleName != ''\">module_name = #{moduleName},</if>\n <if test=\"businessName != null and businessName != ''\">business_name = #{businessName},</if>\n <if test=\"functionName != null and functionName != ''\">function_name = #{functionName},</if>\n <if test=\"options != null and options != ''\">options = #{options},</if>\n <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n update_time = sysdate()\n </set>\n where table_id = #{tableId}\n </update>\n \n <delete id=\"deleteGenTableByIds\" parameterType=\"Long\">\n delete from gen_table where table_id in \n <foreach collection=\"array\" item=\"tableId\" open=\"(\" separator=\",\" close=\")\">\n #{tableId}\n </foreach>\n </delete>\n\n</mapper>"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/CaptchaConfig.java": {"8300f643a5410048582c0ad6d970ad38d8297319": {"t": 1785599288.0757673, "n": 3807, "h": "41593a0691b6ec48", "c": "package com.campusreuse.framework.config;\n\nimport java.util.Properties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport com.google.code.kaptcha.impl.DefaultKaptcha;\nimport com.google.code.kaptcha.util.Config;\nimport static com.google.code.kaptcha.Constants.*;\n\n/**\n * 验证码配置\n * \n * @author ruoyi\n */\n@Configuration\npublic class CaptchaConfig\n{\n @Bean(name = \"captchaProducer\")\n public DefaultKaptcha getKaptchaBean()\n {\n DefaultKaptcha defaultKaptcha = new DefaultKaptcha();\n Properties properties = new Properties();\n // 是否有边框 默认为true 我们可以自己设置yes,no\n properties.setProperty(KAPTCHA_BORDER, \"yes\");\n // 验证码文本字符颜色 默认为Color.BLACK\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, \"black\");\n // 验证码图片宽度 默认为200\n properties.setProperty(KAPTCHA_IMAGE_WIDTH, \"160\");\n // 验证码图片高度 默认为50\n properties.setProperty(KAPTCHA_IMAGE_HEIGHT, \"60\");\n // 验证码文本字符大小 默认为40\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, \"38\");\n // KAPTCHA_SESSION_KEY\n properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, \"kaptchaCode\");\n // 验证码文本字符长度 默认为5\n properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, \"4\");\n // 验证码文本字体样式 默认为new Font(\"Arial\", 1, fontSize), new Font(\"Courier\", 1, fontSize)\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, \"Arial,Courier\");\n // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy\n properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, \"com.google.code.kaptcha.impl.ShadowGimpy\");\n Config config = new Config(properties);\n defaultKaptcha.setConfig(config);\n return defaultKaptcha;\n }\n\n @Bean(name = \"captchaProducerMath\")\n public DefaultKaptcha getKaptchaBeanMath()\n {\n DefaultKaptcha defaultKaptcha = new DefaultKaptcha();\n Properties properties = new Properties();\n // 是否有边框 默认为true 我们可以自己设置yes,no\n properties.setProperty(KAPTCHA_BORDER, \"yes\");\n // 边框颜色 默认为Color.BLACK\n properties.setProperty(KAPTCHA_BORDER_COLOR, \"105,179,90\");\n // 验证码文本字符颜色 默认为Color.BLACK\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, \"blue\");\n // 验证码图片宽度 默认为200\n properties.setProperty(KAPTCHA_IMAGE_WIDTH, \"160\");\n // 验证码图片高度 默认为50\n properties.setProperty(KAPTCHA_IMAGE_HEIGHT, \"60\");\n // 验证码文本字符大小 默认为40\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, \"35\");\n // KAPTCHA_SESSION_KEY\n properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, \"kaptchaCodeMath\");\n // 验证码文本生成器\n properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, \"com.campusreuse.framework.config.KaptchaTextCreator\");\n // 验证码文本字符间距 默认为2\n properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, \"3\");\n // 验证码文本字符长度 默认为5\n properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, \"6\");\n // 验证码文本字体样式 默认为new Font(\"Arial\", 1, fontSize), new Font(\"Courier\", 1, fontSize)\n properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, \"Arial,Courier\");\n // 验证码噪点颜色 默认为Color.BLACK\n properties.setProperty(KAPTCHA_NOISE_COLOR, \"white\");\n // 干扰实现类\n properties.setProperty(KAPTCHA_NOISE_IMPL, \"com.google.code.kaptcha.impl.NoNoise\");\n // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy\n properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, \"com.google.code.kaptcha.impl.ShadowGimpy\");\n Config config = new Config(properties);\n defaultKaptcha.setConfig(config);\n return defaultKaptcha;\n }\n}\n"}}, "CampusReuse-framework/src/main/java/com/campusreuse/framework/config/WebSocketConfig.java": {"5d37ad10955413d04db52be9e67996461d4644fe": {"t": 1785599288.468917, "n": 428, "h": "5ecc18110d36ad97", "c": "package com.campusreuse.framework.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.web.socket.server.standard.ServerEndpointExporter;\n\n/**\n * WebSocket配置\n */\n@Configuration\npublic class WebSocketConfig {\n @Bean\n public ServerEndpointExporter serverEndpointExporter() {\n return new ServerEndpointExporter();\n }\n}\n"}}, "CampusReuse-generator/src/main/java/com/campusreuse/generator/mapper/GenTableMapper.java": {"417fc4069167c07083ebd3d49f1aa693412d09a9": {"t": 1785599288.6066155, "n": 1565, "h": "7c7cb533af56a8a8", "c": "package com.campusreuse.generator.mapper;\n\nimport java.util.List;\nimport com.campusreuse.generator.domain.GenTable;\n\n/**\n * 业务 数据层\n * \n * @author ruoyi\n */\npublic interface GenTableMapper\n{\n /**\n * 查询业务列表\n * \n * @param genTable 业务信息\n * @return 业务集合\n */\n public List<GenTable> selectGenTableList(GenTable genTable);\n\n /**\n * 查询据库列表\n * \n * @param genTable 业务信息\n * @return 数据库表集合\n */\n public List<GenTable> selectDbTableList(GenTable genTable);\n\n /**\n * 查询据库列表\n * \n * @param tableNames 表名称组\n * @return 数据库表集合\n */\n public List<GenTable> selectDbTableListByNames(String[] tableNames);\n\n /**\n * 查询所有表信息\n * \n * @return 表信息集合\n */\n public List<GenTable> selectGenTableAll();\n\n /**\n * 查询表ID业务信息\n * \n * @param id 业务ID\n * @return 业务信息\n */\n public GenTable selectGenTableById(Long id);\n\n /**\n * 查询表名称业务信息\n * \n * @param tableName 表名称\n * @return 业务信息\n */\n public GenTable selectGenTableByName(String tableName);\n\n /**\n * 新增业务\n * \n * @param genTable 业务信息\n * @return 结果\n */\n public int insertGenTable(GenTable genTable);\n\n /**\n * 修改业务\n * \n * @param genTable 业务信息\n * @return 结果\n */\n public int updateGenTable(GenTable genTable);\n\n /**\n * 批量删除业务\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteGenTableByIds(Long[] ids);\n\n /**\n * 创建表\n *\n * @param sql 表结构\n * @return 结果\n */\n public int createTable(String sql);\n}\n"}}, "CampusReuse-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml": {"83ce9b1704c88adebf2524291418ed0b62f5e174": {"t": 1785599288.8679228, "n": 4940, "h": "17688a98f7e55c81", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.quartz.mapper.SysJobMapper\">\n\n\t<resultMap type=\"SysJob\" id=\"SysJobResult\">\n\t\t<id property=\"jobId\" column=\"job_id\" />\n\t\t<result property=\"jobName\" column=\"job_name\" />\n\t\t<result property=\"jobGroup\" column=\"job_group\" />\n\t\t<result property=\"invokeTarget\" column=\"invoke_target\" />\n\t\t<result property=\"cronExpression\" column=\"cron_expression\" />\n\t\t<result property=\"misfirePolicy\" column=\"misfire_policy\" />\n\t\t<result property=\"concurrent\" column=\"concurrent\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t\t<result property=\"remark\" column=\"remark\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectJobVo\">\n select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark \n\t\tfrom sys_job\n </sql>\n\t\n\t<select id=\"selectJobList\" parameterType=\"SysJob\" resultMap=\"SysJobResult\">\n\t\t<include refid=\"selectJobVo\"/>\n\t\t<where>\n\t\t\t<if test=\"jobName != null and jobName != ''\">\n\t\t\t\tAND job_name like concat('%', #{jobName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"jobGroup != null and jobGroup != ''\">\n\t\t\t\tAND job_group = #{jobGroup}\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">\n\t\t\t\tAND invoke_target like concat('%', #{invokeTarget}, '%')\n\t\t\t</if>\n\t\t</where>\n\t</select>\n\t\n\t<select id=\"selectJobAll\" resultMap=\"SysJobResult\">\n\t\t<include refid=\"selectJobVo\"/>\n\t</select>\n\t\n\t<select id=\"selectJobById\" parameterType=\"Long\" resultMap=\"SysJobResult\">\n\t\t<include refid=\"selectJobVo\"/>\n\t\twhere job_id = #{jobId}\n\t</select>\n\t\n\t<delete id=\"deleteJobById\" parameterType=\"Long\">\n \t\tdelete from sys_job where job_id = #{jobId}\n \t</delete>\n \t\n \t<delete id=\"deleteJobByIds\" parameterType=\"Long\">\n \t\tdelete from sys_job where job_id in\n \t\t<foreach collection=\"array\" item=\"jobId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{jobId}\n </foreach> \n \t</delete>\n \t\n \t<update id=\"updateJob\" parameterType=\"SysJob\">\n \t\tupdate sys_job\n \t\t<set>\n \t\t\t<if test=\"jobName != null and jobName != ''\">job_name = #{jobName},</if>\n \t\t\t<if test=\"jobGroup != null and jobGroup != ''\">job_group = #{jobGroup},</if>\n \t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">invoke_target = #{invokeTarget},</if>\n \t\t\t<if test=\"cronExpression != null and cronExpression != ''\">cron_expression = #{cronExpression},</if>\n \t\t\t<if test=\"misfirePolicy != null and misfirePolicy != ''\">misfire_policy = #{misfirePolicy},</if>\n \t\t\t<if test=\"concurrent != null and concurrent != ''\">concurrent = #{concurrent},</if>\n \t\t\t<if test=\"status !=null\">status = #{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark = #{remark},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere job_id = #{jobId}\n\t</update>\n \t\n \t<insert id=\"insertJob\" parameterType=\"SysJob\" useGeneratedKeys=\"true\" keyProperty=\"jobId\">\n \t\tinsert into sys_job(\n \t\t\t<if test=\"jobId != null and jobId != 0\">job_id,</if>\n \t\t\t<if test=\"jobName != null and jobName != ''\">job_name,</if>\n \t\t\t<if test=\"jobGroup != null and jobGroup != ''\">job_group,</if>\n \t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">invoke_target,</if>\n \t\t\t<if test=\"cronExpression != null and cronExpression != ''\">cron_expression,</if>\n \t\t\t<if test=\"misfirePolicy != null and misfirePolicy != ''\">misfire_policy,</if>\n \t\t\t<if test=\"concurrent != null and concurrent != ''\">concurrent,</if>\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"jobId != null and jobId != 0\">#{jobId},</if>\n \t\t\t<if test=\"jobName != null and jobName != ''\">#{jobName},</if>\n \t\t\t<if test=\"jobGroup != null and jobGroup != ''\">#{jobGroup},</if>\n \t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">#{invokeTarget},</if>\n \t\t\t<if test=\"cronExpression != null and cronExpression != ''\">#{cronExpression},</if>\n \t\t\t<if test=\"misfirePolicy != null and misfirePolicy != ''\">#{misfirePolicy},</if>\n \t\t\t<if test=\"concurrent != null and concurrent != ''\">#{concurrent},</if>\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\n</mapper> "}}, "CampusReuse-system/src/main/java/com/campusreuse/course/mapper/CourseMapper.java": {"89b50a4841b111c575d3fc973ad7588da1c70780": {"t": 1785599288.8938205, "n": 992, "h": "b04283ec567177ab", "c": "package com.campusreuse.course.mapper;\n\nimport java.util.List;\nimport com.campusreuse.course.domain.Course;\n\n/**\n * 课程管理Mapper接口\n * \n * @author hyx\n * @date 2025-08-18\n */\npublic interface CourseMapper \n{\n /**\n * 查询课程管理\n * \n * @param id 课程管理主键\n * @return 课程管理\n */\n public Course selectCourseById(Long id);\n\n /**\n * 查询课程管理列表\n * \n * @param course 课程管理\n * @return 课程管理集合\n */\n public List<Course> selectCourseList(Course course);\n\n /**\n * 新增课程管理\n * \n * @param course 课程管理\n * @return 结果\n */\n public int insertCourse(Course course);\n\n /**\n * 修改课程管理\n * \n * @param course 课程管理\n * @return 结果\n */\n public int updateCourse(Course course);\n\n /**\n * 删除课程管理\n * \n * @param id 课程管理主键\n * @return 结果\n */\n public int deleteCourseById(Long id);\n\n /**\n * 批量删除课程管理\n * \n * @param ids 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteCourseByIds(Long[] ids);\n}\n"}}, "CampusReuse-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml": {"74573419a94928d4d8a60d3e930d884f3e84842f": {"t": 1785599288.9420738, "n": 7216, "h": "74acc438e3444f3b", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.generator.mapper.GenTableColumnMapper\">\n\n <resultMap type=\"GenTableColumn\" id=\"GenTableColumnResult\">\n <id property=\"columnId\" column=\"column_id\" />\n <result property=\"tableId\" column=\"table_id\" />\n <result property=\"columnName\" column=\"column_name\" />\n <result property=\"columnComment\" column=\"column_comment\" />\n <result property=\"columnType\" column=\"column_type\" />\n <result property=\"javaType\" column=\"java_type\" />\n <result property=\"javaField\" column=\"java_field\" />\n <result property=\"isPk\" column=\"is_pk\" />\n <result property=\"isIncrement\" column=\"is_increment\" />\n <result property=\"isRequired\" column=\"is_required\" />\n <result property=\"isInsert\" column=\"is_insert\" />\n <result property=\"isEdit\" column=\"is_edit\" />\n <result property=\"isList\" column=\"is_list\" />\n <result property=\"isQuery\" column=\"is_query\" />\n <result property=\"queryType\" column=\"query_type\" />\n <result property=\"htmlType\" column=\"html_type\" />\n <result property=\"dictType\" column=\"dict_type\" />\n <result property=\"sort\" column=\"sort\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n </resultMap>\n\n\t<sql id=\"selectGenTableColumnVo\">\n select column_id, table_id, column_name, column_comment, column_type, java_type, java_field, is_pk, is_increment, is_required, is_insert, is_edit, is_list, is_query, query_type, html_type, dict_type, sort, create_by, create_time, update_by, update_time from gen_table_column\n </sql>\n\n <select id=\"selectGenTableColumnListByTableId\" parameterType=\"Long\" resultMap=\"GenTableColumnResult\">\n <include refid=\"selectGenTableColumnVo\"/>\n where table_id = #{tableId}\n order by sort\n </select>\n\n <select id=\"selectDbTableColumnsByName\" parameterType=\"String\" resultMap=\"GenTableColumnResult\">\n\t\tselect column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else '0' end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type\n\t\tfrom information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})\n\t\torder by ordinal_position\n\t</select>\n\n <insert id=\"insertGenTableColumn\" parameterType=\"GenTableColumn\" useGeneratedKeys=\"true\" keyProperty=\"columnId\">\n insert into gen_table_column (\n\t\t\t<if test=\"tableId != null and tableId != ''\">table_id,</if>\n\t\t\t<if test=\"columnName != null and columnName != ''\">column_name,</if>\n\t\t\t<if test=\"columnComment != null and columnComment != ''\">column_comment,</if>\n\t\t\t<if test=\"columnType != null and columnType != ''\">column_type,</if>\n\t\t\t<if test=\"javaType != null and javaType != ''\">java_type,</if>\n\t\t\t<if test=\"javaField != null and javaField != ''\">java_field,</if>\n\t\t\t<if test=\"isPk != null and isPk != ''\">is_pk,</if>\n\t\t\t<if test=\"isIncrement != null and isIncrement != ''\">is_increment,</if>\n\t\t\t<if test=\"isRequired != null and isRequired != ''\">is_required,</if>\n\t\t\t<if test=\"isInsert != null and isInsert != ''\">is_insert,</if>\n\t\t\t<if test=\"isEdit != null and isEdit != ''\">is_edit,</if>\n\t\t\t<if test=\"isList != null and isList != ''\">is_list,</if>\n\t\t\t<if test=\"isQuery != null and isQuery != ''\">is_query,</if>\n\t\t\t<if test=\"queryType != null and queryType != ''\">query_type,</if>\n\t\t\t<if test=\"htmlType != null and htmlType != ''\">html_type,</if>\n\t\t\t<if test=\"dictType != null and dictType != ''\">dict_type,</if>\n\t\t\t<if test=\"sort != null\">sort,</if>\n\t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n\t\t\tcreate_time\n )values(\n\t\t\t<if test=\"tableId != null and tableId != ''\">#{tableId},</if>\n\t\t\t<if test=\"columnName != null and columnName != ''\">#{columnName},</if>\n\t\t\t<if test=\"columnComment != null and columnComment != ''\">#{columnComment},</if>\n\t\t\t<if test=\"columnType != null and columnType != ''\">#{columnType},</if>\n\t\t\t<if test=\"javaType != null and javaType != ''\">#{javaType},</if>\n\t\t\t<if test=\"javaField != null and javaField != ''\">#{javaField},</if>\n\t\t\t<if test=\"isPk != null and isPk != ''\">#{isPk},</if>\n\t\t\t<if test=\"isIncrement != null and isIncrement != ''\">#{isIncrement},</if>\n\t\t\t<if test=\"isRequired != null and isRequired != ''\">#{isRequired},</if>\n\t\t\t<if test=\"isInsert != null and isInsert != ''\">#{isInsert},</if>\n\t\t\t<if test=\"isEdit != null and isEdit != ''\">#{isEdit},</if>\n\t\t\t<if test=\"isList != null and isList != ''\">#{isList},</if>\n\t\t\t<if test=\"isQuery != null and isQuery != ''\">#{isQuery},</if>\n\t\t\t<if test=\"queryType != null and queryType != ''\">#{queryType},</if>\n\t\t\t<if test=\"htmlType != null and htmlType != ''\">#{htmlType},</if>\n\t\t\t<if test=\"dictType != null and dictType != ''\">#{dictType},</if>\n\t\t\t<if test=\"sort != null\">#{sort},</if>\n\t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n\t\t\tsysdate()\n )\n </insert>\n\n <update id=\"updateGenTableColumn\" parameterType=\"GenTableColumn\">\n update gen_table_column\n <set>\n <if test=\"columnComment != null\">column_comment = #{columnComment},</if>\n <if test=\"javaType != null\">java_type = #{javaType},</if>\n <if test=\"javaField != null\">java_field = #{javaField},</if>\n <if test=\"isInsert != null\">is_insert = #{isInsert},</if>\n <if test=\"isEdit != null\">is_edit = #{isEdit},</if>\n <if test=\"isList != null\">is_list = #{isList},</if>\n <if test=\"isQuery != null\">is_query = #{isQuery},</if>\n <if test=\"isRequired != null\">is_required = #{isRequired},</if>\n <if test=\"queryType != null\">query_type = #{queryType},</if>\n <if test=\"htmlType != null\">html_type = #{htmlType},</if>\n <if test=\"dictType != null\">dict_type = #{dictType},</if>\n <if test=\"sort != null\">sort = #{sort},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n update_time = sysdate()\n </set>\n where column_id = #{columnId}\n </update>\n\n <delete id=\"deleteGenTableColumnByIds\" parameterType=\"Long\">\n delete from gen_table_column where table_id in\n <foreach collection=\"array\" item=\"tableId\" open=\"(\" separator=\",\" close=\")\">\n #{tableId}\n </foreach>\n </delete>\n\n <delete id=\"deleteGenTableColumns\">\n delete from gen_table_column where column_id in\n <foreach collection=\"list\" item=\"item\" open=\"(\" separator=\",\" close=\")\">\n #{item.columnId}\n </foreach>\n </delete>\n\n</mapper>"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketCartMapper.java": {"9e9888cfb43e943f8df2a27a1b4d47bb7a3d4e23": {"t": 1785599288.979595, "n": 1570, "h": "3598987f067c7b82", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.market.domain.MarketCart;\n\n/**\n * 购物车Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketCartMapper {\n /**\n * 查询购物车\n * \n * @param cartId 购物车主键\n * @return 购物车\n */\n public MarketCart selectMarketCartById(Long cartId);\n\n /**\n * 查询购物车列表\n * \n * @param marketCart 购物车\n * @return 购物车集合\n */\n public List<MarketCart> selectMarketCartList(MarketCart marketCart);\n\n /**\n * 新增购物车\n * \n * @param marketCart 购物车\n * @return 结果\n */\n public int insertMarketCart(MarketCart marketCart);\n\n /**\n * 修改购物车\n * \n * @param marketCart 购物车\n * @return 结果\n */\n public int updateMarketCart(MarketCart marketCart);\n\n /**\n * 删除购物车\n * \n * @param cartId 购物车主键\n * @return 结果\n */\n public int deleteMarketCartById(Long cartId);\n\n /**\n * 批量删除购物车\n * \n * @param cartIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketCartByIds(Long[] cartIds);\n\n /**\n * 根据用户ID和商品ID查询购物车\n * \n * @param userId 用户ID\n * @param goodsId 商品ID\n * @return 购物车\n */\n public MarketCart selectCartByUserAndGoods(@Param(\"userId\") Long userId, @Param(\"goodsId\") Long goodsId);\n\n /**\n * 更新购物车数量\n * \n * @param cartId 购物车ID\n * @param quantity 数量\n * @return 结果\n */\n public int updateCartQuantity(@Param(\"cartId\") Long cartId, @Param(\"quantity\") Integer quantity);\n}\n"}}, "CampusReuse-generator/src/main/resources/vm/java/mapper.java.vm": {"7e7d7c26f4f967da6ff36ed9978e9798cdfeaeaa": {"t": 1785599289.1366954, "n": 2292, "h": "09d151d8e8a3e9f7", "c": "package ${packageName}.mapper;\n\nimport java.util.List;\nimport ${packageName}.domain.${ClassName};\n#if($table.sub)\nimport ${packageName}.domain.${subClassName};\n#end\n\n/**\n * ${functionName}Mapper接口\n * \n * @author ${author}\n * @date ${datetime}\n */\npublic interface ${ClassName}Mapper \n{\n /**\n * 查询${functionName}\n * \n * @param ${pkColumn.javaField} ${functionName}主键\n * @return ${functionName}\n */\n public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});\n\n /**\n * 查询${functionName}列表\n * \n * @param ${className} ${functionName}\n * @return ${functionName}集合\n */\n public List<${ClassName}> select${ClassName}List(${ClassName} ${className});\n\n /**\n * 新增${functionName}\n * \n * @param ${className} ${functionName}\n * @return 结果\n */\n public int insert${ClassName}(${ClassName} ${className});\n\n /**\n * 修改${functionName}\n * \n * @param ${className} ${functionName}\n * @return 结果\n */\n public int update${ClassName}(${ClassName} ${className});\n\n /**\n * 删除${functionName}\n * \n * @param ${pkColumn.javaField} ${functionName}主键\n * @return 结果\n */\n public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});\n\n /**\n * 批量删除${functionName}\n * \n * @param ${pkColumn.javaField}s 需要删除的数据主键集合\n * @return 结果\n */\n public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);\n#if($table.sub)\n\n /**\n * 批量删除${subTable.functionName}\n * \n * @param ${pkColumn.javaField}s 需要删除的数据主键集合\n * @return 结果\n */\n public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);\n \n /**\n * 批量新增${subTable.functionName}\n * \n * @param ${subclassName}List ${subTable.functionName}列表\n * @return 结果\n */\n public int batch${subClassName}(List<${subClassName}> ${subclassName}List);\n \n\n /**\n * 通过${functionName}主键删除${subTable.functionName}信息\n * \n * @param ${pkColumn.javaField} ${functionName}ID\n * @return 结果\n */\n public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});\n#end\n}\n"}}, "CampusReuse-generator/src/main/resources/vm/xml/mapper.xml.vm": {"456755b52d2b7cdf38e719b3ca65c366ec85e06f": {"t": 1785599289.1400898, "n": 6916, "h": "96993f26628b3e41", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"${packageName}.mapper.${ClassName}Mapper\">\n \n <resultMap type=\"${ClassName}\" id=\"${ClassName}Result\">\n#foreach ($column in $columns)\n <result property=\"${column.javaField}\" column=\"${column.columnName}\" />\n#end\n </resultMap>\n#if($table.sub)\n\n <resultMap id=\"${ClassName}${subClassName}Result\" type=\"${ClassName}\" extends=\"${ClassName}Result\">\n <collection property=\"${subclassName}List\" ofType=\"${subClassName}\" column=\"${pkColumn.columnName}\" select=\"select${subClassName}List\" />\n </resultMap>\n\n <resultMap type=\"${subClassName}\" id=\"${subClassName}Result\">\n#foreach ($column in $subTable.columns)\n <result property=\"${column.javaField}\" column=\"${column.columnName}\" />\n#end\n </resultMap>\n#end\n\n <sql id=\"select${ClassName}Vo\">\n select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}\n </sql>\n\n <select id=\"select${ClassName}List\" parameterType=\"${ClassName}\" resultMap=\"${ClassName}Result\">\n <include refid=\"select${ClassName}Vo\"/>\n <where> \n#foreach($column in $columns)\n#set($queryType=$column.queryType)\n#set($javaField=$column.javaField)\n#set($javaType=$column.javaType)\n#set($columnName=$column.columnName)\n#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})\n#if($column.query)\n#if($column.queryType == \"EQ\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName = #{$javaField}</if>\n#elseif($queryType == \"NE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName != #{$javaField}</if>\n#elseif($queryType == \"GT\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName &gt; #{$javaField}</if>\n#elseif($queryType == \"GTE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName &gt;= #{$javaField}</if>\n#elseif($queryType == \"LT\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName &lt; #{$javaField}</if>\n#elseif($queryType == \"LTE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName &lt;= #{$javaField}</if>\n#elseif($queryType == \"LIKE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName like concat('%', #{$javaField}, '%')</if>\n#elseif($queryType == \"BETWEEN\")\n <if test=\"params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''\"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>\n#end\n#end\n#end\n </where>\n </select>\n \n <select id=\"select${ClassName}By${pkColumn.capJavaField}\" parameterType=\"${pkColumn.javaType}\" resultMap=\"#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end\">\n#if($table.crud || $table.tree)\n <include refid=\"select${ClassName}Vo\"/>\n where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n#elseif($table.sub)\n select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end\n from ${tableName}\n where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n#end\n </select>\n#if($table.sub)\n\n <select id=\"select${subClassName}List\" resultMap=\"${subClassName}Result\">\n select#foreach ($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end\n from ${subTableName}\n where ${subTableFkName} = #{${subTableFkName}}\n </select>\n#end\n\n <insert id=\"insert${ClassName}\" parameterType=\"${ClassName}\"#if($pkColumn.increment) useGeneratedKeys=\"true\" keyProperty=\"$pkColumn.javaField\"#end>\n insert into ${tableName}\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)\n <if test=\"$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end\">$column.columnName,</if>\n#end\n#end\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)\n <if test=\"$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end\">#{$column.javaField},</if>\n#end\n#end\n </trim>\n </insert>\n\n <update id=\"update${ClassName}\" parameterType=\"${ClassName}\">\n update ${tableName}\n <trim prefix=\"SET\" suffixOverrides=\",\">\n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName)\n <if test=\"$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end\">$column.columnName = #{$column.javaField},</if>\n#end\n#end\n </trim>\n where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n </update>\n\n <delete id=\"delete${ClassName}By${pkColumn.capJavaField}\" parameterType=\"${pkColumn.javaType}\">\n delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n </delete>\n\n <delete id=\"delete${ClassName}By${pkColumn.capJavaField}s\" parameterType=\"String\">\n delete from ${tableName} where ${pkColumn.columnName} in \n <foreach item=\"${pkColumn.javaField}\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{${pkColumn.javaField}}\n </foreach>\n </delete>\n#if($table.sub)\n \n <delete id=\"delete${subClassName}By${subTableFkClassName}s\" parameterType=\"String\">\n delete from ${subTableName} where ${subTableFkName} in \n <foreach item=\"${subTableFkclassName}\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{${subTableFkclassName}}\n </foreach>\n </delete>\n\n <delete id=\"delete${subClassName}By${subTableFkClassName}\" parameterType=\"${pkColumn.javaType}\">\n delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}\n </delete>\n\n <insert id=\"batch${subClassName}\">\n insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values\n <foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\n (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)\n </foreach>\n </insert>\n#end\n</mapper>"}}, "CampusReuse-quartz/src/main/java/com/campusreuse/quartz/config/ScheduleConfig.java": {"bda79df8048e54a46aa329fd750986f247edbf45": {"t": 1785599289.26427, "n": 2319, "h": "53bae6b935c17b13", "c": "//package com.campusreuse.quartz.config;\n//\n//import org.springframework.context.annotation.Bean;\n//import org.springframework.context.annotation.Configuration;\n//import org.springframework.scheduling.quartz.SchedulerFactoryBean;\n//import javax.sql.DataSource;\n//import java.util.Properties;\n//\n///**\n// * 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效)\n// * \n// * @author ruoyi\n// */\n//@Configuration\n//public class ScheduleConfig\n//{\n// @Bean\n// public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource)\n// {\n// SchedulerFactoryBean factory = new SchedulerFactoryBean();\n// factory.setDataSource(dataSource);\n//\n// // quartz参数\n// Properties prop = new Properties();\n// prop.put(\"org.quartz.scheduler.instanceName\", \"RuoyiScheduler\");\n// prop.put(\"org.quartz.scheduler.instanceId\", \"AUTO\");\n// // 线程池配置\n// prop.put(\"org.quartz.threadPool.class\", \"org.quartz.simpl.SimpleThreadPool\");\n// prop.put(\"org.quartz.threadPool.threadCount\", \"20\");\n// prop.put(\"org.quartz.threadPool.threadPriority\", \"5\");\n// // JobStore配置\n// prop.put(\"org.quartz.jobStore.class\", \"org.springframework.scheduling.quartz.LocalDataSourceJobStore\");\n// // 集群配置\n// prop.put(\"org.quartz.jobStore.isClustered\", \"true\");\n// prop.put(\"org.quartz.jobStore.clusterCheckinInterval\", \"15000\");\n// prop.put(\"org.quartz.jobStore.maxMisfiresToHandleAtATime\", \"10\");\n// prop.put(\"org.quartz.jobStore.txIsolationLevelSerializable\", \"true\");\n//\n// // sqlserver 启用\n// // prop.put(\"org.quartz.jobStore.selectWithLockSQL\", \"SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?\");\n// prop.put(\"org.quartz.jobStore.misfireThreshold\", \"12000\");\n// prop.put(\"org.quartz.jobStore.tablePrefix\", \"QRTZ_\");\n// factory.setQuartzProperties(prop);\n//\n// factory.setSchedulerName(\"RuoyiScheduler\");\n// // 延时启动\n// factory.setStartupDelay(1);\n// factory.setApplicationContextSchedulerContextKey(\"applicationContextKey\");\n// // 可选,QuartzScheduler\n// // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了\n// factory.setOverwriteExistingJobs(true);\n// // 设置自动启动,默认为true\n// factory.setAutoStartup(true);\n//\n// return factory;\n// }\n//}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketCommentMapper.java": {"15c22b21dd71d9bd5c9367fd841b39590d55b199": {"t": 1785599289.3142998, "n": 1843, "h": "de6d1fd95be1c4fc", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketComment;\n\n/**\n * 评论Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketCommentMapper {\n /**\n * 查询评论\n * \n * @param commentId 评论主键\n * @return 评论\n */\n public MarketComment selectMarketCommentById(Long commentId);\n\n /**\n * 查询评论列表\n * \n * @param marketComment 评论\n * @return 评论集合\n */\n public List<MarketComment> selectMarketCommentList(MarketComment marketComment);\n\n /**\n * 新增评论\n * \n * @param marketComment 评论\n * @return 结果\n */\n public int insertMarketComment(MarketComment marketComment);\n\n /**\n * 修改评论\n * \n * @param marketComment 评论\n * @return 结果\n */\n public int updateMarketComment(MarketComment marketComment);\n\n /**\n * 删除评论\n * \n * @param commentId 评论主键\n * @return 结果\n */\n public int deleteMarketCommentById(Long commentId);\n\n /**\n * 批量删除评论\n * \n * @param commentIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketCommentByIds(Long[] commentIds);\n\n /**\n * 查询商品的所有评论(包含回复)\n * \n * @param goodsId 商品ID\n * @return 评论集合\n */\n public List<MarketComment> selectCommentsByGoodsId(Long goodsId);\n\n /**\n * 查询求购的所有评论(包含回复)\n * \n * @param demandId 求购ID\n * @return 评论集合\n */\n public List<MarketComment> selectCommentsByDemandId(Long demandId);\n\n /**\n * 查询主评论列表(parent_id = 0),带回复数量统计\n * \n * @param marketComment 查询条件\n * @return 主评论集合\n */\n public List<MarketComment> selectMainCommentList(MarketComment marketComment);\n\n /**\n * 根据父评论ID查询子回复列表\n * \n * @param parentId 父评论ID\n * @return 子回复集合\n */\n public List<MarketComment> selectReplyListByParentId(Long parentId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketCategoryMapper.java": {"853a600088c10ecece6911107c4d1c9da2cff998": {"t": 1785599289.4070146, "n": 1309, "h": "fcd8a7494ce77df4", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketCategory;\n\n/**\n * 商品分类Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketCategoryMapper \n{\n /**\n * 查询商品分类\n * \n * @param categoryId 商品分类主键\n * @return 商品分类\n */\n public MarketCategory selectMarketCategoryById(Long categoryId);\n\n /**\n * 查询商品分类列表\n * \n * @param marketCategory 商品分类\n * @return 商品分类集合\n */\n public List<MarketCategory> selectMarketCategoryList(MarketCategory marketCategory);\n\n /**\n * 新增商品分类\n * \n * @param marketCategory 商品分类\n * @return 结果\n */\n public int insertMarketCategory(MarketCategory marketCategory);\n\n /**\n * 修改商品分类\n * \n * @param marketCategory 商品分类\n * @return 结果\n */\n public int updateMarketCategory(MarketCategory marketCategory);\n\n /**\n * 删除商品分类\n * \n * @param categoryId 商品分类主键\n * @return 结果\n */\n public int deleteMarketCategoryById(Long categoryId);\n\n /**\n * 批量删除商品分类\n * \n * @param categoryIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketCategoryByIds(Long[] categoryIds);\n\n /**\n * 查询分类树列表\n * \n * @return 分类集合\n */\n public List<MarketCategory> selectCategoryTree();\n}\n\n"}}, "CampusReuse-quartz/src/main/java/com/campusreuse/quartz/mapper/SysJobMapper.java": {"cd6d4606573c73ee955ba76b68203916051bce05": {"t": 1785599289.601991, "n": 1074, "h": "70078eaf99ad71a7", "c": "package com.campusreuse.quartz.mapper;\n\nimport java.util.List;\nimport com.campusreuse.quartz.domain.SysJob;\n\n/**\n * 调度任务信息 数据层\n * \n * @author ruoyi\n */\npublic interface SysJobMapper\n{\n /**\n * 查询调度任务日志集合\n * \n * @param job 调度信息\n * @return 操作日志集合\n */\n public List<SysJob> selectJobList(SysJob job);\n\n /**\n * 查询所有调度任务\n * \n * @return 调度任务列表\n */\n public List<SysJob> selectJobAll();\n\n /**\n * 通过调度ID查询调度任务信息\n * \n * @param jobId 调度ID\n * @return 角色对象信息\n */\n public SysJob selectJobById(Long jobId);\n\n /**\n * 通过调度ID删除调度任务信息\n * \n * @param jobId 调度ID\n * @return 结果\n */\n public int deleteJobById(Long jobId);\n\n /**\n * 批量删除调度任务信息\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteJobByIds(Long[] ids);\n\n /**\n * 修改调度任务信息\n * \n * @param job 调度任务信息\n * @return 结果\n */\n public int updateJob(SysJob job);\n\n /**\n * 新增调度任务信息\n * \n * @param job 调度任务信息\n * @return 结果\n */\n public int insertJob(SysJob job);\n}\n"}}, "CampusReuse-quartz/src/main/java/com/campusreuse/quartz/mapper/SysJobLogMapper.java": {"b406900b952fd512bb176173a34dad4a9c06c295": {"t": 1785599289.6846187, "n": 1096, "h": "0cd177594e6cc90a", "c": "package com.campusreuse.quartz.mapper;\n\nimport java.util.List;\nimport com.campusreuse.quartz.domain.SysJobLog;\n\n/**\n * 调度任务日志信息 数据层\n * \n * @author ruoyi\n */\npublic interface SysJobLogMapper\n{\n /**\n * 获取quartz调度器日志的计划任务\n * \n * @param jobLog 调度日志信息\n * @return 调度任务日志集合\n */\n public List<SysJobLog> selectJobLogList(SysJobLog jobLog);\n\n /**\n * 查询所有调度任务日志\n *\n * @return 调度任务日志列表\n */\n public List<SysJobLog> selectJobLogAll();\n\n /**\n * 通过调度任务日志ID查询调度信息\n * \n * @param jobLogId 调度任务日志ID\n * @return 调度任务日志对象信息\n */\n public SysJobLog selectJobLogById(Long jobLogId);\n\n /**\n * 新增任务日志\n * \n * @param jobLog 调度日志信息\n * @return 结果\n */\n public int insertJobLog(SysJobLog jobLog);\n\n /**\n * 批量删除调度日志信息\n * \n * @param logIds 需要删除的数据ID\n * @return 结果\n */\n public int deleteJobLogByIds(Long[] logIds);\n\n /**\n * 删除任务日志\n * \n * @param jobId 调度日志ID\n * @return 结果\n */\n public int deleteJobLogById(Long jobId);\n\n /**\n * 清空任务日志\n */\n public void cleanJobLog();\n}\n"}}, "CampusReuse-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml": {"2416f00cfa1950af3f38ab6d73f5ddd8b06f7bbe": {"t": 1785599289.811823, "n": 3781, "h": "367ea4338b0ffa43", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.quartz.mapper.SysJobLogMapper\">\n\n\t<resultMap type=\"SysJobLog\" id=\"SysJobLogResult\">\n\t\t<id property=\"jobLogId\" column=\"job_log_id\" />\n\t\t<result property=\"jobName\" column=\"job_name\" />\n\t\t<result property=\"jobGroup\" column=\"job_group\" />\n\t\t<result property=\"invokeTarget\" column=\"invoke_target\" />\n\t\t<result property=\"jobMessage\" column=\"job_message\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"exceptionInfo\" column=\"exception_info\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectJobLogVo\">\n select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time \n\t\tfrom sys_job_log\n </sql>\n\t\n\t<select id=\"selectJobLogList\" parameterType=\"SysJobLog\" resultMap=\"SysJobLogResult\">\n\t\t<include refid=\"selectJobLogVo\"/>\n\t\t<where>\n\t\t\t<if test=\"jobName != null and jobName != ''\">\n\t\t\t\tAND job_name like concat('%', #{jobName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"jobGroup != null and jobGroup != ''\">\n\t\t\t\tAND job_group = #{jobGroup}\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">\n\t\t\t\tAND invoke_target like concat('%', #{invokeTarget}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t\t</if>\n\t\t</where>\n\t\torder by create_time desc\n\t</select>\n\t\n\t<select id=\"selectJobLogAll\" resultMap=\"SysJobLogResult\">\n\t\t<include refid=\"selectJobLogVo\"/>\n\t</select>\n\t\n\t<select id=\"selectJobLogById\" parameterType=\"Long\" resultMap=\"SysJobLogResult\">\n\t\t<include refid=\"selectJobLogVo\"/>\n\t\twhere job_log_id = #{jobLogId}\n\t</select>\n\t\n\t<delete id=\"deleteJobLogById\" parameterType=\"Long\">\n \t\tdelete from sys_job_log where job_log_id = #{jobLogId}\n \t</delete>\n \t\n \t<delete id=\"deleteJobLogByIds\" parameterType=\"Long\">\n \t\tdelete from sys_job_log where job_log_id in\n \t\t<foreach collection=\"array\" item=\"jobLogId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{jobLogId}\n </foreach> \n \t</delete>\n \t\n \t<update id=\"cleanJobLog\">\n truncate table sys_job_log\n </update>\n \t\n \t<insert id=\"insertJobLog\" parameterType=\"SysJobLog\">\n \t\tinsert into sys_job_log(\n \t\t\t<if test=\"jobLogId != null and jobLogId != 0\">job_log_id,</if>\n \t\t\t<if test=\"jobName != null and jobName != ''\">job_name,</if>\n \t\t\t<if test=\"jobGroup != null and jobGroup != ''\">job_group,</if>\n \t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">invoke_target,</if>\n \t\t\t<if test=\"jobMessage != null and jobMessage != ''\">job_message,</if>\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\n \t\t\t<if test=\"exceptionInfo != null and exceptionInfo != ''\">exception_info,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"jobLogId != null and jobLogId != 0\">#{jobLogId},</if>\n \t\t\t<if test=\"jobName != null and jobName != ''\">#{jobName},</if>\n \t\t\t<if test=\"jobGroup != null and jobGroup != ''\">#{jobGroup},</if>\n \t\t\t<if test=\"invokeTarget != null and invokeTarget != ''\">#{invokeTarget},</if>\n \t\t\t<if test=\"jobMessage != null and jobMessage != ''\">#{jobMessage},</if>\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\n \t\t\t<if test=\"exceptionInfo != null and exceptionInfo != ''\">#{exceptionInfo},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\n</mapper> "}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketFavoriteMapper.java": {"29b20c9b5059f7cc59f110d3545af4dd7d4a1b95": {"t": 1785599290.1065776, "n": 1447, "h": "479017031f9cb5c1", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.market.domain.MarketFavorite;\n\n/**\n * 收藏Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketFavoriteMapper {\n /**\n * 查询收藏\n * \n * @param favoriteId 收藏主键\n * @return 收藏\n */\n public MarketFavorite selectMarketFavoriteById(Long favoriteId);\n\n /**\n * 查询收藏列表\n * \n * @param marketFavorite 收藏\n * @return 收藏集合\n */\n public List<MarketFavorite> selectMarketFavoriteList(MarketFavorite marketFavorite);\n\n /**\n * 新增收藏\n * \n * @param marketFavorite 收藏\n * @return 结果\n */\n public int insertMarketFavorite(MarketFavorite marketFavorite);\n\n /**\n * 修改收藏\n * \n * @param marketFavorite 收藏\n * @return 结果\n */\n public int updateMarketFavorite(MarketFavorite marketFavorite);\n\n /**\n * 删除收藏\n * \n * @param favoriteId 收藏主键\n * @return 结果\n */\n public int deleteMarketFavoriteById(Long favoriteId);\n\n /**\n * 批量删除收藏\n * \n * @param favoriteIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketFavoriteByIds(Long[] favoriteIds);\n\n /**\n * 根据用户ID和商品ID查询收藏\n * \n * @param userId 用户ID\n * @param goodsId 商品ID\n * @return 收藏\n */\n public MarketFavorite selectFavoriteByUserAndGoods(@Param(\"userId\") Long userId, @Param(\"goodsId\") Long goodsId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketDemandMapper.java": {"4d869fe2fd4b6d9d144d20d00272d691aed8b224": {"t": 1785599290.183861, "n": 1141, "h": "fc3f06bfc23bf6db", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketDemand;\n\n/**\n * 求购信息Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-08\n */\npublic interface MarketDemandMapper {\n /**\n * 查询求购信息\n * \n * @param demandId 求购信息ID\n * @return 求购信息\n */\n public MarketDemand selectMarketDemandById(Long demandId);\n\n /**\n * 查询求购信息列表\n * \n * @param marketDemand 求购信息\n * @return 求购信息集合\n */\n public List<MarketDemand> selectMarketDemandList(MarketDemand marketDemand);\n\n /**\n * 新增求购信息\n * \n * @param marketDemand 求购信息\n * @return 结果\n */\n public int insertMarketDemand(MarketDemand marketDemand);\n\n /**\n * 修改求购信息\n * \n * @param marketDemand 求购信息\n * @return 结果\n */\n public int updateMarketDemand(MarketDemand marketDemand);\n\n /**\n * 删除求购信息\n * \n * @param demandId 求购信息ID\n * @return 结果\n */\n public int deleteMarketDemandById(Long demandId);\n\n /**\n * 批量删除求购信息\n * \n * @param demandIds 需要删除的数据ID\n * @return 结果\n */\n public int deleteMarketDemandByIds(Long[] demandIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketHistoryMapper.java": {"526bd64a0bdb93126f4a6846980065266a12d5a7": {"t": 1785599290.2871835, "n": 2091, "h": "0b6cbd0f27d6ebcd", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketHistory;\nimport org.apache.ibatis.annotations.Param;\n\n/**\n * 浏览记录Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-07\n */\npublic interface MarketHistoryMapper {\n /**\n * 查询浏览记录\n * \n * @param historyId 浏览记录主键\n * @return 浏览记录\n */\n public MarketHistory selectMarketHistoryByHistoryId(Long historyId);\n\n /**\n * 查询浏览记录列表\n * \n * @param marketHistory 浏览记录\n * @return 浏览记录集合\n */\n public List<MarketHistory> selectMarketHistoryList(MarketHistory marketHistory);\n\n /**\n * 新增浏览记录\n * \n * @param marketHistory 浏览记录\n * @return 结果\n */\n public int insertMarketHistory(MarketHistory marketHistory);\n\n /**\n * 修改浏览记录\n * \n * @param marketHistory 浏览记录\n * @return 结果\n */\n public int updateMarketHistory(MarketHistory marketHistory);\n\n /**\n * 删除浏览记录\n * \n * @param historyId 浏览记录主键\n * @return 结果\n */\n public int deleteMarketHistoryByHistoryId(Long historyId);\n\n /**\n * 批量删除浏览记录\n * \n * @param historyIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketHistoryByHistoryIds(Long[] historyIds);\n\n /**\n * 检查是否已存在记录\n * \n * @param userId 用户ID\n * @param goodsId 商品ID\n * @return 记录ID,不存在返回null\n */\n public Long checkHistoryExists(@Param(\"userId\") Long userId, @Param(\"goodsId\") Long goodsId);\n\n /**\n * 更新浏览时间\n * \n * @param historyId 记录ID\n * @return 结果\n */\n public int updateViewTime(@Param(\"historyId\") Long historyId);\n\n /**\n * 获取用户记录数量\n * \n * @param userId\n * @return\n */\n public int countUserHistory(@Param(\"userId\") Long userId);\n\n /**\n * 删除多余记录(保留最近50条)\n * \n * @param userId 用户ID\n * @param limit 保留数量\n */\n public int deleteOldestHistory(@Param(\"userId\") Long userId, @Param(\"limit\") int limit);\n\n /**\n * 清空用户浏览记录\n * \n * @param userId 用户ID\n * @return 结果\n */\n public int cleanUserHistory(@Param(\"userId\") Long userId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketMessageMapper.java": {"0e870d363181590efe145b9fe7c1065a36e55c0b": {"t": 1785599290.364314, "n": 1305, "h": "639b66e23a6fb5bb", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketMessage;\n\n/**\n * 消息通知Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-07\n */\npublic interface MarketMessageMapper {\n /**\n * 查询消息通知\n * \n * @param messageId 消息通知主键\n * @return 消息通知\n */\n public MarketMessage selectMarketMessageByMessageId(Long messageId);\n\n /**\n * 查询消息通知列表\n * \n * @param marketMessage 消息通知\n * @return 消息通知集合\n */\n public List<MarketMessage> selectMarketMessageList(MarketMessage marketMessage);\n\n /**\n * 新增消息通知\n * \n * @param marketMessage 消息通知\n * @return 结果\n */\n public int insertMarketMessage(MarketMessage marketMessage);\n\n /**\n * 修改消息通知\n * \n * @param marketMessage 消息通知\n * @return 结果\n */\n public int updateMarketMessage(MarketMessage marketMessage);\n\n /**\n * 批量删除消息通知\n * \n * @param messageIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketMessageByMessageIds(Long[] messageIds);\n\n /**\n * 批量标记已读\n * \n * @param messageIds\n * @return\n */\n public int readMarketMessageByMessageIds(Long[] messageIds);\n\n /**\n * 查询未读数量\n * \n * @param userId\n * @return\n */\n public int countUnreadMessage(Long userId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketOrderMapper.java": {"87cee529de783f82c6c7048864faaf8a7b6cd2e0": {"t": 1785599290.4184792, "n": 1882, "h": "de827f5342a1a162", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketOrder;\n\n/**\n * 订单Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketOrderMapper {\n /**\n * 查询订单\n * \n * @param orderId 订单主键\n * @return 订单\n */\n public MarketOrder selectMarketOrderById(Long orderId);\n\n /**\n * 查询订单列表\n * \n * @param marketOrder 订单\n * @return 订单集合\n */\n public List<MarketOrder> selectMarketOrderList(MarketOrder marketOrder);\n\n /**\n * 新增订单\n * \n * @param marketOrder 订单\n * @return 结果\n */\n public int insertMarketOrder(MarketOrder marketOrder);\n\n /**\n * 修改订单\n * \n * @param marketOrder 订单\n * @return 结果\n */\n public int updateMarketOrder(MarketOrder marketOrder);\n\n /**\n * 删除订单\n * \n * @param orderId 订单主键\n * @return 结果\n */\n public int deleteMarketOrderById(Long orderId);\n\n /**\n * 批量删除订单\n * \n * @param orderIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketOrderByIds(Long[] orderIds);\n\n /**\n * 根据订单编号查询订单\n * \n * @param orderNo 订单编号\n * @return 订单\n */\n public MarketOrder selectMarketOrderByOrderNo(String orderNo);\n\n /**\n * 更新订单状态\n * \n * @param orderId 订单ID\n * @param orderStatus 订单状态\n * @return 结果\n */\n public int updateOrderStatus(Long orderId, String orderStatus);\n\n /**\n * 更新支付状态\n * \n * @param orderId 订单ID\n * @param payStatus 支付状态\n * @return 结果\n */\n public int updatePayStatus(Long orderId, String payStatus);\n\n /**\n * 查询总成交金额\n * \n * @return 总金额\n */\n public java.math.BigDecimal selectTotalTradeAmount();\n\n /**\n * 查询订单趋势统计(近7日)\n * \n * @return 统计列表\n */\n public java.util.List<java.util.Map<String, Object>> selectOrderTrendStatistical();\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketGoodsMapper.java": {"925b9dad688819e161764ce4d6f076f2a2041559": {"t": 1785599290.6202385, "n": 2621, "h": "af39848323b709c7", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.market.domain.MarketGoods;\n\n/**\n * 商品Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketGoodsMapper {\n /**\n * 查询商品\n * \n * @param goodsId 商品主键\n * @return 商品\n */\n public MarketGoods selectMarketGoodsById(Long goodsId);\n\n /**\n * 查询商品列表\n * \n * @param marketGoods 商品\n * @return 商品集合\n */\n public List<MarketGoods> selectMarketGoodsList(MarketGoods marketGoods);\n\n /**\n * 新增商品\n * \n * @param marketGoods 商品\n * @return 结果\n */\n public int insertMarketGoods(MarketGoods marketGoods);\n\n /**\n * 修改商品\n * \n * @param marketGoods 商品\n * @return 结果\n */\n public int updateMarketGoods(MarketGoods marketGoods);\n\n /**\n * 删除商品\n * \n * @param goodsId 商品主键\n * @return 结果\n */\n public int deleteMarketGoodsById(Long goodsId);\n\n /**\n * 批量删除商品\n * \n * @param goodsIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketGoodsByIds(Long[] goodsIds);\n\n /**\n * 更新商品浏览次数\n * \n * @param goodsId 商品ID\n * @return 结果\n */\n public int updateViewCount(Long goodsId);\n\n /**\n * 更新商品收藏次数\n * \n * @param goodsId 商品ID\n * @param count 变化数量(正数增加,负数减少)\n * @return 结果\n */\n public int updateFavoriteCount(@Param(\"goodsId\") Long goodsId, @Param(\"count\") Integer count);\n\n /**\n * 更新商品状态\n * \n * @param goodsId 商品ID\n * @param goodsStatus 商品状态\n * @return 结果\n */\n public int updateGoodsStatus(@Param(\"goodsId\") Long goodsId, @Param(\"goodsStatus\") String goodsStatus);\n\n /**\n * 扣减库存(乐观锁)\n * \n * @param goodsId 商品ID\n * @return 影响行数\n */\n public int reduceStock(@Param(\"goodsId\") Long goodsId);\n\n /**\n * 查询商品大厅列表(仅已上架已审核的商品)\n * \n * @param query 查询参数\n * @return 商品VO列表\n */\n public java.util.List<com.campusreuse.market.domain.vo.GoodsMallVO> selectGoodsMallList(\n com.campusreuse.market.domain.dto.GoodsMallQuery query);\n\n /**\n * 查询商品大厅详情(仅已上架已审核的商品)\n * \n * @param goodsId 商品ID\n * @return 商品VO\n */\n public com.campusreuse.market.domain.vo.GoodsMallVO selectGoodsMallById(Long goodsId);\n\n /**\n * 查询商品总数\n * \n * @param marketGoods 过滤条件\n * @return 商品总数\n */\n public int selectMarketGoodsCount(MarketGoods marketGoods);\n\n /**\n * 查询商品分类占比统计\n * \n * @return 统计列表\n */\n public java.util.List<java.util.Map<String, Object>> selectCategoryStatistical();\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketSensitiveWordMapper.java": {"20fd8806e46f5b1a4e3a56394845d417dbed227e": {"t": 1785599290.6216815, "n": 1383, "h": "7f081024f78d0839", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketSensitiveWord;\n\n/**\n * 敏感词Mapper接口\n * \n * @author campusreuse\n * @date 2026-01-10\n */\npublic interface MarketSensitiveWordMapper {\n\n /**\n * 查询敏感词\n * \n * @param wordId 敏感词主键\n * @return 敏感词\n */\n public MarketSensitiveWord selectMarketSensitiveWordById(Long wordId);\n\n /**\n * 查询敏感词列表\n * \n * @param marketSensitiveWord 敏感词\n * @return 敏感词集合\n */\n public List<MarketSensitiveWord> selectMarketSensitiveWordList(MarketSensitiveWord marketSensitiveWord);\n\n /**\n * 查询所有启用的敏感词\n * \n * @return 敏感词集合\n */\n public List<MarketSensitiveWord> selectAllEnabledWords();\n\n /**\n * 新增敏感词\n * \n * @param marketSensitiveWord 敏感词\n * @return 结果\n */\n public int insertMarketSensitiveWord(MarketSensitiveWord marketSensitiveWord);\n\n /**\n * 修改敏感词\n * \n * @param marketSensitiveWord 敏感词\n * @return 结果\n */\n public int updateMarketSensitiveWord(MarketSensitiveWord marketSensitiveWord);\n\n /**\n * 删除敏感词\n * \n * @param wordId 敏感词主键\n * @return 结果\n */\n public int deleteMarketSensitiveWordById(Long wordId);\n\n /**\n * 批量删除敏感词\n * \n * @param wordIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketSensitiveWordByIds(Long[] wordIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/market/mapper/MarketNoticeMapper.java": {"ac9d45f8b642484569466136ee16cdb9243f54a4": {"t": 1785599290.629522, "n": 1367, "h": "645c344a06823b8f", "c": "package com.campusreuse.market.mapper;\n\nimport java.util.List;\nimport com.campusreuse.market.domain.MarketNotice;\n\n/**\n * 公告Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-01\n */\npublic interface MarketNoticeMapper \n{\n /**\n * 查询公告\n * \n * @param noticeId 公告主键\n * @return 公告\n */\n public MarketNotice selectMarketNoticeById(Long noticeId);\n\n /**\n * 查询公告列表\n * \n * @param marketNotice 公告\n * @return 公告集合\n */\n public List<MarketNotice> selectMarketNoticeList(MarketNotice marketNotice);\n\n /**\n * 新增公告\n * \n * @param marketNotice 公告\n * @return 结果\n */\n public int insertMarketNotice(MarketNotice marketNotice);\n\n /**\n * 修改公告\n * \n * @param marketNotice 公告\n * @return 结果\n */\n public int updateMarketNotice(MarketNotice marketNotice);\n\n /**\n * 删除公告\n * \n * @param noticeId 公告主键\n * @return 结果\n */\n public int deleteMarketNoticeById(Long noticeId);\n\n /**\n * 批量删除公告\n * \n * @param noticeIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteMarketNoticeByIds(Long[] noticeIds);\n\n /**\n * 增加浏览次数\n * \n * @param noticeId 公告ID\n * @return 结果\n */\n public int incrementViewCount(Long noticeId);\n\n /**\n * 查询置顶公告列表\n * \n * @return 公告集合\n */\n public List<MarketNotice> selectTopNoticeList();\n}\n\n\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/domain/SysConfig.java": {"4535ec7fd0a7d3f4dff7dfa8d1b3e75d8fb1d0d9": {"t": 1785599290.8510916, "n": 2769, "h": "8977cbeb124e7908", "c": "package com.campusreuse.system.domain;\n\nimport javax.validation.constraints.NotBlank;\nimport javax.validation.constraints.Size;\nimport org.apache.commons.lang3.builder.ToStringBuilder;\nimport org.apache.commons.lang3.builder.ToStringStyle;\nimport com.campusreuse.common.annotation.Excel;\nimport com.campusreuse.common.annotation.Excel.ColumnType;\nimport com.campusreuse.common.core.domain.BaseEntity;\n\n/**\n * 参数配置表 sys_config\n * \n * @author ruoyi\n */\npublic class SysConfig extends BaseEntity\n{\n private static final long serialVersionUID = 1L;\n\n /** 参数主键 */\n @Excel(name = \"参数主键\", cellType = ColumnType.NUMERIC)\n private Long configId;\n\n /** 参数名称 */\n @Excel(name = \"参数名称\")\n private String configName;\n\n /** 参数键名 */\n @Excel(name = \"参数键名\")\n private String configKey;\n\n /** 参数键值 */\n @Excel(name = \"参数键值\")\n private String configValue;\n\n /** 系统内置(Y是 N否) */\n @Excel(name = \"系统内置\", readConverterExp = \"Y=是,N=否\")\n private String configType;\n\n public Long getConfigId()\n {\n return configId;\n }\n\n public void setConfigId(Long configId)\n {\n this.configId = configId;\n }\n\n @NotBlank(message = \"参数名称不能为空\")\n @Size(min = 0, max = 100, message = \"参数名称不能超过100个字符\")\n public String getConfigName()\n {\n return configName;\n }\n\n public void setConfigName(String configName)\n {\n this.configName = configName;\n }\n\n @NotBlank(message = \"参数键名长度不能为空\")\n @Size(min = 0, max = 100, message = \"参数键名长度不能超过100个字符\")\n public String getConfigKey()\n {\n return configKey;\n }\n\n public void setConfigKey(String configKey)\n {\n this.configKey = configKey;\n }\n\n @NotBlank(message = \"参数键值不能为空\")\n @Size(min = 0, max = 500, message = \"参数键值长度不能超过500个字符\")\n public String getConfigValue()\n {\n return configValue;\n }\n\n public void setConfigValue(String configValue)\n {\n this.configValue = configValue;\n }\n\n public String getConfigType()\n {\n return configType;\n }\n\n public void setConfigType(String configType)\n {\n this.configType = configType;\n }\n \n @Override\n public String toString() {\n return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)\n .append(\"configId\", getConfigId())\n .append(\"configName\", getConfigName())\n .append(\"configKey\", getConfigKey())\n .append(\"configValue\", getConfigValue())\n .append(\"configType\", getConfigType())\n .append(\"createBy\", getCreateBy())\n .append(\"createTime\", getCreateTime())\n .append(\"updateBy\", getUpdateBy())\n .append(\"updateTime\", getUpdateTime())\n .append(\"remark\", getRemark())\n .toString();\n }\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysCreditLogMapper.java": {"7886f3f5be39aeaac6b75dd70520eaad40407636": {"t": 1785599291.06847, "n": 681, "h": "d492fd6cc003d861", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysCreditLog;\n\n/**\n * 信用分变动日志Mapper接口\n */\npublic interface SysCreditLogMapper {\n /**\n * 查询信用分变动日志\n * \n * @param logId 信用分变动日志主键\n * @return 信用分变动日志\n */\n public SysCreditLog selectSysCreditLogByLogId(Long logId);\n\n /**\n * 查询信用分变动日志列表\n * \n * @param sysCreditLog 信用分变动日志\n * @return 信用分变动日志集合\n */\n public List<SysCreditLog> selectSysCreditLogList(SysCreditLog sysCreditLog);\n\n /**\n * 新增信用分变动日志\n * \n * @param sysCreditLog 信用分变动日志\n * @return 结果\n */\n public int insertSysCreditLog(SysCreditLog sysCreditLog);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysDictDataMapper.java": {"fca7b341d921e84a7efb918aedd2d68371fa4554": {"t": 1785599291.2628543, "n": 1937, "h": "0ba8bb2b028827e1", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.common.core.domain.entity.SysDictData;\n\n/**\n * 字典表 数据层\n * \n * @author ruoyi\n */\npublic interface SysDictDataMapper\n{\n /**\n * 根据条件分页查询字典数据\n * \n * @param dictData 字典数据信息\n * @return 字典数据集合信息\n */\n public List<SysDictData> selectDictDataList(SysDictData dictData);\n\n /**\n * 根据字典类型查询字典数据\n * \n * @param dictType 字典类型\n * @return 字典数据集合信息\n */\n public List<SysDictData> selectDictDataByType(String dictType);\n\n /**\n * 根据字典类型和字典键值查询字典数据信息\n * \n * @param dictType 字典类型\n * @param dictValue 字典键值\n * @return 字典标签\n */\n public String selectDictLabel(@Param(\"dictType\") String dictType, @Param(\"dictValue\") String dictValue);\n\n /**\n * 根据字典数据ID查询信息\n * \n * @param dictCode 字典数据ID\n * @return 字典数据\n */\n public SysDictData selectDictDataById(Long dictCode);\n\n /**\n * 查询字典数据\n * \n * @param dictType 字典类型\n * @return 字典数据\n */\n public int countDictDataByType(String dictType);\n\n /**\n * 通过字典ID删除字典数据信息\n * \n * @param dictCode 字典数据ID\n * @return 结果\n */\n public int deleteDictDataById(Long dictCode);\n\n /**\n * 批量删除字典数据信息\n * \n * @param dictCodes 需要删除的字典数据ID\n * @return 结果\n */\n public int deleteDictDataByIds(Long[] dictCodes);\n\n /**\n * 新增字典数据信息\n * \n * @param dictData 字典数据信息\n * @return 结果\n */\n public int insertDictData(SysDictData dictData);\n\n /**\n * 修改字典数据信息\n * \n * @param dictData 字典数据信息\n * @return 结果\n */\n public int updateDictData(SysDictData dictData);\n\n /**\n * 同步修改字典类型\n * \n * @param oldDictType 旧字典类型\n * @param newDictType 新旧字典类型\n * @return 结果\n */\n public int updateDictDataType(@Param(\"oldDictType\") String oldDictType, @Param(\"newDictType\") String newDictType);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysDeptMapper.java": {"e0ceab88c0e33480fe04f6110011482e73e8a94a": {"t": 1785599291.2782242, "n": 2243, "h": "e3e439c9150a1bf6", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.common.core.domain.entity.SysDept;\n\n/**\n * 部门管理 数据层\n * \n * @author ruoyi\n */\npublic interface SysDeptMapper\n{\n /**\n * 查询部门管理数据\n * \n * @param dept 部门信息\n * @return 部门信息集合\n */\n public List<SysDept> selectDeptList(SysDept dept);\n\n /**\n * 根据角色ID查询部门树信息\n * \n * @param roleId 角色ID\n * @param deptCheckStrictly 部门树选择项是否关联显示\n * @return 选中部门列表\n */\n public List<Long> selectDeptListByRoleId(@Param(\"roleId\") Long roleId, @Param(\"deptCheckStrictly\") boolean deptCheckStrictly);\n\n /**\n * 根据部门ID查询信息\n * \n * @param deptId 部门ID\n * @return 部门信息\n */\n public SysDept selectDeptById(Long deptId);\n\n /**\n * 根据ID查询所有子部门\n * \n * @param deptId 部门ID\n * @return 部门列表\n */\n public List<SysDept> selectChildrenDeptById(Long deptId);\n\n /**\n * 根据ID查询所有子部门(正常状态)\n * \n * @param deptId 部门ID\n * @return 子部门数\n */\n public int selectNormalChildrenDeptById(Long deptId);\n\n /**\n * 是否存在子节点\n * \n * @param deptId 部门ID\n * @return 结果\n */\n public int hasChildByDeptId(Long deptId);\n\n /**\n * 查询部门是否存在用户\n * \n * @param deptId 部门ID\n * @return 结果\n */\n public int checkDeptExistUser(Long deptId);\n\n /**\n * 校验部门名称是否唯一\n * \n * @param deptName 部门名称\n * @param parentId 父部门ID\n * @return 结果\n */\n public SysDept checkDeptNameUnique(@Param(\"deptName\") String deptName, @Param(\"parentId\") Long parentId);\n\n /**\n * 新增部门信息\n * \n * @param dept 部门信息\n * @return 结果\n */\n public int insertDept(SysDept dept);\n\n /**\n * 修改部门信息\n * \n * @param dept 部门信息\n * @return 结果\n */\n public int updateDept(SysDept dept);\n\n /**\n * 修改所在部门正常状态\n * \n * @param deptIds 部门ID组\n */\n public void updateDeptStatusNormal(Long[] deptIds);\n\n /**\n * 修改子元素关系\n * \n * @param depts 子元素\n * @return 结果\n */\n public int updateDeptChildren(@Param(\"depts\") List<SysDept> depts);\n\n /**\n * 删除部门管理信息\n * \n * @param deptId 部门ID\n * @return 结果\n */\n public int deleteDeptById(Long deptId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysDictTypeMapper.java": {"22c89f17245ee16f7054051c662675e741d4556f": {"t": 1785599291.4934568, "n": 1508, "h": "b51ba73dd1855e14", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.common.core.domain.entity.SysDictType;\n\n/**\n * 字典表 数据层\n * \n * @author ruoyi\n */\npublic interface SysDictTypeMapper\n{\n /**\n * 根据条件分页查询字典类型\n * \n * @param dictType 字典类型信息\n * @return 字典类型集合信息\n */\n public List<SysDictType> selectDictTypeList(SysDictType dictType);\n\n /**\n * 根据所有字典类型\n * \n * @return 字典类型集合信息\n */\n public List<SysDictType> selectDictTypeAll();\n\n /**\n * 根据字典类型ID查询信息\n * \n * @param dictId 字典类型ID\n * @return 字典类型\n */\n public SysDictType selectDictTypeById(Long dictId);\n\n /**\n * 根据字典类型查询信息\n * \n * @param dictType 字典类型\n * @return 字典类型\n */\n public SysDictType selectDictTypeByType(String dictType);\n\n /**\n * 通过字典ID删除字典信息\n * \n * @param dictId 字典ID\n * @return 结果\n */\n public int deleteDictTypeById(Long dictId);\n\n /**\n * 批量删除字典类型信息\n * \n * @param dictIds 需要删除的字典ID\n * @return 结果\n */\n public int deleteDictTypeByIds(Long[] dictIds);\n\n /**\n * 新增字典类型信息\n * \n * @param dictType 字典类型信息\n * @return 结果\n */\n public int insertDictType(SysDictType dictType);\n\n /**\n * 修改字典类型信息\n * \n * @param dictType 字典类型信息\n * @return 结果\n */\n public int updateDictType(SysDictType dictType);\n\n /**\n * 校验字典类型称是否唯一\n * \n * @param dictType 字典类型\n * @return 结果\n */\n public SysDictType checkDictTypeUnique(String dictType);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysConfigMapper.java": {"e915ecc3e3b4bbd468515981d8f6e04c0aef91b0": {"t": 1785599291.6015527, "n": 1331, "h": "dda4b6690faed00f", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysConfig;\n\n/**\n * 参数配置 数据层\n * \n * @author ruoyi\n */\npublic interface SysConfigMapper\n{\n /**\n * 查询参数配置信息\n * \n * @param config 参数配置信息\n * @return 参数配置信息\n */\n public SysConfig selectConfig(SysConfig config);\n\n /**\n * 通过ID查询配置\n * \n * @param configId 参数ID\n * @return 参数配置信息\n */\n public SysConfig selectConfigById(Long configId);\n\n /**\n * 查询参数配置列表\n * \n * @param config 参数配置信息\n * @return 参数配置集合\n */\n public List<SysConfig> selectConfigList(SysConfig config);\n\n /**\n * 根据键名查询参数配置信息\n * \n * @param configKey 参数键名\n * @return 参数配置信息\n */\n public SysConfig checkConfigKeyUnique(String configKey);\n\n /**\n * 新增参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n public int insertConfig(SysConfig config);\n\n /**\n * 修改参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n public int updateConfig(SysConfig config);\n\n /**\n * 删除参数配置\n * \n * @param configId 参数ID\n * @return 结果\n */\n public int deleteConfigById(Long configId);\n\n /**\n * 批量删除参数信息\n * \n * @param configIds 需要删除的参数ID\n * @return 结果\n */\n public int deleteConfigByIds(Long[] configIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysChatMsgMapper.java": {"1173dd414c6ddd93acdc9c6dbeaa73f283775e47": {"t": 1785599291.755308, "n": 2016, "h": "f530fda31cc1aaee", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysChatMsg;\nimport org.apache.ibatis.annotations.Param;\n\n/**\n * 私信消息Mapper接口\n * \n * @author ruoyi\n * @date 2025-01-10\n */\npublic interface SysChatMsgMapper {\n /**\n * 查询私信消息\n * \n * @param msgId 私信消息主键\n * @return 私信消息\n */\n public SysChatMsg selectSysChatMsgByMsgId(Long msgId);\n\n /**\n * 查询私信消息列表\n * \n * @param sysChatMsg 私信消息\n * @return 私信消息集合\n */\n public List<SysChatMsg> selectSysChatMsgList(SysChatMsg sysChatMsg);\n\n /**\n * 新增私信消息\n * \n * @param sysChatMsg 私信消息\n * @return 结果\n */\n public int insertSysChatMsg(SysChatMsg sysChatMsg);\n\n /**\n * 修改私信消息\n * \n * @param sysChatMsg 私信消息\n * @return 结果\n */\n public int updateSysChatMsg(SysChatMsg sysChatMsg);\n\n /**\n * 删除私信消息\n * \n * @param msgId 私信消息主键\n * @return 结果\n */\n public int deleteSysChatMsgByMsgId(Long msgId);\n\n /**\n * 批量删除私信消息\n * \n * @param msgIds 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteSysChatMsgByMsgIds(Long[] msgIds);\n\n /**\n * 查询两人之间的聊天记录\n * \n * @param userId 当前用户ID\n * @param friendId 好友ID\n * @return 聊天记录\n */\n public List<SysChatMsg> selectChatHistory(@Param(\"userId\") Long userId, @Param(\"friendId\") Long friendId);\n\n /**\n * 查询最近联系人列表\n * \n * @param userId 当前用户ID\n * @return 联系人列表(SysChatMsg封装,借用sender/receiver字段存储对方信息)\n */\n /**\n * 查询最近联系人列表\n * \n * @param userId 当前用户ID\n * @return 联系人列表\n */\n public List<SysChatMsg> selectContactList(@Param(\"userId\") Long userId);\n\n /**\n * 删除对话\n */\n public int deleteConversation(@Param(\"userId\") Long userId, @Param(\"friendId\") Long friendId);\n\n /**\n * 标记消息已读\n */\n public int markAsRead(@Param(\"userId\") Long userId, @Param(\"friendId\") Long friendId);\n\n /**\n * 获取私聊未读消息数\n */\n public int getUnreadCount(@Param(\"userId\") Long userId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysLogininforMapper.java": {"e331eef6908b86def0d2ae10a73d217fb2c231c7": {"t": 1785599291.8400223, "n": 754, "h": "a9f4da3236c9d458", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysLogininfor;\n\n/**\n * 系统访问日志情况信息 数据层\n * \n * @author ruoyi\n */\npublic interface SysLogininforMapper\n{\n /**\n * 新增系统登录日志\n * \n * @param logininfor 访问日志对象\n */\n public void insertLogininfor(SysLogininfor logininfor);\n\n /**\n * 查询系统登录日志集合\n * \n * @param logininfor 访问日志对象\n * @return 登录记录集合\n */\n public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);\n\n /**\n * 批量删除系统登录日志\n * \n * @param infoIds 需要删除的登录日志ID\n * @return 结果\n */\n public int deleteLogininforByIds(Long[] infoIds);\n\n /**\n * 清空系统登录日志\n * \n * @return 结果\n */\n public int cleanLogininfor();\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysOperLogMapper.java": {"f0912f55a798dc73982ac6da4f7e9606fdac93fa": {"t": 1785599291.9080813, "n": 823, "h": "807748fc181f586d", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysOperLog;\n\n/**\n * 操作日志 数据层\n * \n * @author ruoyi\n */\npublic interface SysOperLogMapper\n{\n /**\n * 新增操作日志\n * \n * @param operLog 操作日志对象\n */\n public void insertOperlog(SysOperLog operLog);\n\n /**\n * 查询系统操作日志集合\n * \n * @param operLog 操作日志对象\n * @return 操作日志集合\n */\n public List<SysOperLog> selectOperLogList(SysOperLog operLog);\n\n /**\n * 批量删除系统操作日志\n * \n * @param operIds 需要删除的操作日志ID\n * @return 结果\n */\n public int deleteOperLogByIds(Long[] operIds);\n\n /**\n * 查询操作日志详细\n * \n * @param operId 操作ID\n * @return 操作日志对象\n */\n public SysOperLog selectOperLogById(Long operId);\n\n /**\n * 清空操作日志\n */\n public void cleanOperLog();\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysMenuMapper.java": {"4800bc91fb9b69c0f7ced7501410f953487d386f": {"t": 1785599291.9176168, "n": 2325, "h": "1bf28ddf6f665dad", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.common.core.domain.entity.SysMenu;\n\n/**\n * 菜单表 数据层\n *\n * @author ruoyi\n */\npublic interface SysMenuMapper\n{\n /**\n * 查询系统菜单列表\n *\n * @param menu 菜单信息\n * @return 菜单列表\n */\n public List<SysMenu> selectMenuList(SysMenu menu);\n\n /**\n * 根据用户所有权限\n *\n * @return 权限列表\n */\n public List<String> selectMenuPerms();\n\n /**\n * 根据用户查询系统菜单列表\n *\n * @param menu 菜单信息\n * @return 菜单列表\n */\n public List<SysMenu> selectMenuListByUserId(SysMenu menu);\n\n /**\n * 根据角色ID查询权限\n * \n * @param roleId 角色ID\n * @return 权限列表\n */\n public List<String> selectMenuPermsByRoleId(Long roleId);\n\n /**\n * 根据用户ID查询权限\n *\n * @param userId 用户ID\n * @return 权限列表\n */\n public List<String> selectMenuPermsByUserId(Long userId);\n\n /**\n * 根据用户ID查询菜单\n *\n * @return 菜单列表\n */\n public List<SysMenu> selectMenuTreeAll();\n\n /**\n * 根据用户ID查询菜单\n *\n * @param userId 用户ID\n * @return 菜单列表\n */\n public List<SysMenu> selectMenuTreeByUserId(Long userId);\n\n /**\n * 根据角色ID查询菜单树信息\n * \n * @param roleId 角色ID\n * @param menuCheckStrictly 菜单树选择项是否关联显示\n * @return 选中菜单列表\n */\n public List<Long> selectMenuListByRoleId(@Param(\"roleId\") Long roleId, @Param(\"menuCheckStrictly\") boolean menuCheckStrictly);\n\n /**\n * 根据菜单ID查询信息\n *\n * @param menuId 菜单ID\n * @return 菜单信息\n */\n public SysMenu selectMenuById(Long menuId);\n\n /**\n * 是否存在菜单子节点\n *\n * @param menuId 菜单ID\n * @return 结果\n */\n public int hasChildByMenuId(Long menuId);\n\n /**\n * 新增菜单信息\n *\n * @param menu 菜单信息\n * @return 结果\n */\n public int insertMenu(SysMenu menu);\n\n /**\n * 修改菜单信息\n *\n * @param menu 菜单信息\n * @return 结果\n */\n public int updateMenu(SysMenu menu);\n\n /**\n * 删除菜单管理信息\n *\n * @param menuId 菜单ID\n * @return 结果\n */\n public int deleteMenuById(Long menuId);\n\n /**\n * 校验菜单名称是否唯一\n *\n * @param menuName 菜单名称\n * @param parentId 父菜单ID\n * @return 结果\n */\n public SysMenu checkMenuNameUnique(@Param(\"menuName\") String menuName, @Param(\"parentId\") Long parentId);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysNoticeMapper.java": {"492812be29d831e4814b233c930c53214e2e27aa": {"t": 1785599292.0135596, "n": 1013, "h": "b04496ae2606e835", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysNotice;\n\n/**\n * 通知公告表 数据层\n * \n * @author ruoyi\n */\npublic interface SysNoticeMapper\n{\n /**\n * 查询公告信息\n * \n * @param noticeId 公告ID\n * @return 公告信息\n */\n public SysNotice selectNoticeById(Long noticeId);\n\n /**\n * 查询公告列表\n * \n * @param notice 公告信息\n * @return 公告集合\n */\n public List<SysNotice> selectNoticeList(SysNotice notice);\n\n /**\n * 新增公告\n * \n * @param notice 公告信息\n * @return 结果\n */\n public int insertNotice(SysNotice notice);\n\n /**\n * 修改公告\n * \n * @param notice 公告信息\n * @return 结果\n */\n public int updateNotice(SysNotice notice);\n\n /**\n * 批量删除公告\n * \n * @param noticeId 公告ID\n * @return 结果\n */\n public int deleteNoticeById(Long noticeId);\n\n /**\n * 批量删除公告信息\n * \n * @param noticeIds 需要删除的公告ID\n * @return 结果\n */\n public int deleteNoticeByIds(Long[] noticeIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysPostMapper.java": {"d106dc60a260be3fa86df7a55e034d1d7afda8a6": {"t": 1785599292.1148238, "n": 1672, "h": "1c97c51427fb65fc", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysPost;\n\n/**\n * 岗位信息 数据层\n * \n * @author ruoyi\n */\npublic interface SysPostMapper\n{\n /**\n * 查询岗位数据集合\n * \n * @param post 岗位信息\n * @return 岗位数据集合\n */\n public List<SysPost> selectPostList(SysPost post);\n\n /**\n * 查询所有岗位\n * \n * @return 岗位列表\n */\n public List<SysPost> selectPostAll();\n\n /**\n * 通过岗位ID查询岗位信息\n * \n * @param postId 岗位ID\n * @return 角色对象信息\n */\n public SysPost selectPostById(Long postId);\n\n /**\n * 根据用户ID获取岗位选择框列表\n * \n * @param userId 用户ID\n * @return 选中岗位ID列表\n */\n public List<Long> selectPostListByUserId(Long userId);\n\n /**\n * 查询用户所属岗位组\n * \n * @param userName 用户名\n * @return 结果\n */\n public List<SysPost> selectPostsByUserName(String userName);\n\n /**\n * 删除岗位信息\n * \n * @param postId 岗位ID\n * @return 结果\n */\n public int deletePostById(Long postId);\n\n /**\n * 批量删除岗位信息\n * \n * @param postIds 需要删除的岗位ID\n * @return 结果\n */\n public int deletePostByIds(Long[] postIds);\n\n /**\n * 修改岗位信息\n * \n * @param post 岗位信息\n * @return 结果\n */\n public int updatePost(SysPost post);\n\n /**\n * 新增岗位信息\n * \n * @param post 岗位信息\n * @return 结果\n */\n public int insertPost(SysPost post);\n\n /**\n * 校验岗位名称\n * \n * @param postName 岗位名称\n * @return 结果\n */\n public SysPost checkPostNameUnique(String postName);\n\n /**\n * 校验岗位编码\n * \n * @param postCode 岗位编码\n * @return 结果\n */\n public SysPost checkPostCodeUnique(String postCode);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysRoleDeptMapper.java": {"c00f0d8c0edb91e435a349637f8a1dfd3117cbba": {"t": 1785599292.4216006, "n": 774, "h": "f37cc6a42d38d0c1", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysRoleDept;\n\n/**\n * 角色与部门关联表 数据层\n * \n * @author ruoyi\n */\npublic interface SysRoleDeptMapper\n{\n /**\n * 通过角色ID删除角色和部门关联\n * \n * @param roleId 角色ID\n * @return 结果\n */\n public int deleteRoleDeptByRoleId(Long roleId);\n\n /**\n * 批量删除角色部门关联信息\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteRoleDept(Long[] ids);\n\n /**\n * 查询部门使用数量\n * \n * @param deptId 部门ID\n * @return 结果\n */\n public int selectCountRoleDeptByDeptId(Long deptId);\n\n /**\n * 批量新增角色部门信息\n * \n * @param roleDeptList 角色部门列表\n * @return 结果\n */\n public int batchRoleDept(List<SysRoleDept> roleDeptList);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysRoleMapper.java": {"47c52920ebc1d1941764d1f805c070faafe22e47": {"t": 1785599292.4379325, "n": 1860, "h": "2f6ffa52ea4e6323", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.common.core.domain.entity.SysRole;\n\n/**\n * 角色表 数据层\n * \n * @author ruoyi\n */\npublic interface SysRoleMapper\n{\n /**\n * 根据条件分页查询角色数据\n * \n * @param role 角色信息\n * @return 角色数据集合信息\n */\n public List<SysRole> selectRoleList(SysRole role);\n\n /**\n * 根据用户ID查询角色\n * \n * @param userId 用户ID\n * @return 角色列表\n */\n public List<SysRole> selectRolePermissionByUserId(Long userId);\n\n /**\n * 查询所有角色\n * \n * @return 角色列表\n */\n public List<SysRole> selectRoleAll();\n\n /**\n * 根据用户ID获取角色选择框列表\n * \n * @param userId 用户ID\n * @return 选中角色ID列表\n */\n public List<Long> selectRoleListByUserId(Long userId);\n\n /**\n * 通过角色ID查询角色\n * \n * @param roleId 角色ID\n * @return 角色对象信息\n */\n public SysRole selectRoleById(Long roleId);\n\n /**\n * 根据用户ID查询角色\n * \n * @param userName 用户名\n * @return 角色列表\n */\n public List<SysRole> selectRolesByUserName(String userName);\n\n /**\n * 校验角色名称是否唯一\n * \n * @param roleName 角色名称\n * @return 角色信息\n */\n public SysRole checkRoleNameUnique(String roleName);\n\n /**\n * 校验角色权限是否唯一\n * \n * @param roleKey 角色权限\n * @return 角色信息\n */\n public SysRole checkRoleKeyUnique(String roleKey);\n\n /**\n * 修改角色信息\n * \n * @param role 角色信息\n * @return 结果\n */\n public int updateRole(SysRole role);\n\n /**\n * 新增角色信息\n * \n * @param role 角色信息\n * @return 结果\n */\n public int insertRole(SysRole role);\n\n /**\n * 通过角色ID删除角色\n * \n * @param roleId 角色ID\n * @return 结果\n */\n public int deleteRoleById(Long roleId);\n\n /**\n * 批量删除角色信息\n * \n * @param roleIds 需要删除的角色ID\n * @return 结果\n */\n public int deleteRoleByIds(Long[] roleIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysRoleMenuMapper.java": {"a62308a52411c995bb0dc1ae9d5fccbf8e640a78": {"t": 1785599292.5014062, "n": 765, "h": "3e085e401a93e4b4", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysRoleMenu;\n\n/**\n * 角色与菜单关联表 数据层\n * \n * @author ruoyi\n */\npublic interface SysRoleMenuMapper\n{\n /**\n * 查询菜单使用数量\n * \n * @param menuId 菜单ID\n * @return 结果\n */\n public int checkMenuExistRole(Long menuId);\n\n /**\n * 通过角色ID删除角色和菜单关联\n * \n * @param roleId 角色ID\n * @return 结果\n */\n public int deleteRoleMenuByRoleId(Long roleId);\n\n /**\n * 批量删除角色菜单关联信息\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteRoleMenu(Long[] ids);\n\n /**\n * 批量新增角色菜单信息\n * \n * @param roleMenuList 角色菜单列表\n * @return 结果\n */\n public int batchRoleMenu(List<SysRoleMenu> roleMenuList);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysUserMapper.java": {"7dcf28ea38ca8d37570d8dd3dab9805002d007cc": {"t": 1785599292.7487895, "n": 2447, "h": "9ee1b8388a725122", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.common.core.domain.entity.SysUser;\n\n/**\n * 用户表 数据层\n * \n * @author ruoyi\n */\npublic interface SysUserMapper {\n /**\n * 根据条件分页查询用户列表\n * \n * @param sysUser 用户信息\n * @return 用户信息集合信息\n */\n public List<SysUser> selectUserList(SysUser sysUser);\n\n /**\n * 根据条件分页查询已配用户角色列表\n * \n * @param user 用户信息\n * @return 用户信息集合信息\n */\n public List<SysUser> selectAllocatedList(SysUser user);\n\n /**\n * 根据条件分页查询未分配用户角色列表\n * \n * @param user 用户信息\n * @return 用户信息集合信息\n */\n public List<SysUser> selectUnallocatedList(SysUser user);\n\n /**\n * 通过用户名查询用户\n * \n * @param userName 用户名\n * @return 用户对象信息\n */\n public SysUser selectUserByUserName(String userName);\n\n /**\n * 通过用户ID查询用户\n * \n * @param userId 用户ID\n * @return 用户对象信息\n */\n public SysUser selectUserById(Long userId);\n\n /**\n * 新增用户信息\n * \n * @param user 用户信息\n * @return 结果\n */\n public int insertUser(SysUser user);\n\n /**\n * 修改用户信息\n * \n * @param user 用户信息\n * @return 结果\n */\n public int updateUser(SysUser user);\n\n /**\n * 修改用户头像\n * \n * @param userId 用户ID\n * @param avatar 头像地址\n * @return 结果\n */\n public int updateUserAvatar(@Param(\"userId\") Long userId, @Param(\"avatar\") String avatar);\n\n /**\n * 重置用户密码\n * \n * @param userId 用户ID\n * @param password 密码\n * @return 结果\n */\n public int resetUserPwd(@Param(\"userId\") Long userId, @Param(\"password\") String password);\n\n /**\n * 通过用户ID删除用户\n * \n * @param userId 用户ID\n * @return 结果\n */\n public int deleteUserById(Long userId);\n\n /**\n * 批量删除用户信息\n * \n * @param userIds 需要删除的用户ID\n * @return 结果\n */\n public int deleteUserByIds(Long[] userIds);\n\n /**\n * 校验用户名称是否唯一\n * \n * @param userName 用户名称\n * @return 结果\n */\n public SysUser checkUserNameUnique(String userName);\n\n /**\n * 校验手机号码是否唯一\n *\n * @param phonenumber 手机号码\n * @return 结果\n */\n public SysUser checkPhoneUnique(String phonenumber);\n\n /**\n * 校验email是否唯一\n *\n * @param email 用户邮箱\n * @return 结果\n */\n public SysUser checkEmailUnique(String email);\n\n /**\n * 查询用户总数\n * \n * @return 用户总数\n */\n public int selectUserCount();\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysUserRoleMapper.java": {"32424066fe7a4c5f52cf0d7c945a17feb8f76ecd": {"t": 1785599292.9772396, "n": 1190, "h": "12a3c0dcebcfec3f", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport com.campusreuse.system.domain.SysUserRole;\n\n/**\n * 用户与角色关联表 数据层\n * \n * @author ruoyi\n */\npublic interface SysUserRoleMapper\n{\n /**\n * 通过用户ID删除用户和角色关联\n * \n * @param userId 用户ID\n * @return 结果\n */\n public int deleteUserRoleByUserId(Long userId);\n\n /**\n * 批量删除用户和角色关联\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteUserRole(Long[] ids);\n\n /**\n * 通过角色ID查询角色使用数量\n * \n * @param roleId 角色ID\n * @return 结果\n */\n public int countUserRoleByRoleId(Long roleId);\n\n /**\n * 批量新增用户角色信息\n * \n * @param userRoleList 用户角色列表\n * @return 结果\n */\n public int batchUserRole(List<SysUserRole> userRoleList);\n\n /**\n * 删除用户和角色关联信息\n * \n * @param userRole 用户和角色关联信息\n * @return 结果\n */\n public int deleteUserRoleInfo(SysUserRole userRole);\n\n /**\n * 批量取消授权用户角色\n * \n * @param roleId 角色ID\n * @param userIds 需要删除的用户数据ID\n * @return 结果\n */\n public int deleteUserRoleInfos(@Param(\"roleId\") Long roleId, @Param(\"userIds\") Long[] userIds);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/service/ISysConfigService.java": {"8512d08ac4b253465586578260d61c7473a6651a": {"t": 1785599293.0899212, "n": 1502, "h": "4595bf2b834212ef", "c": "package com.campusreuse.system.service;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysConfig;\n\n/**\n * 参数配置 服务层\n * \n * @author ruoyi\n */\npublic interface ISysConfigService\n{\n /**\n * 查询参数配置信息\n * \n * @param configId 参数配置ID\n * @return 参数配置信息\n */\n public SysConfig selectConfigById(Long configId);\n\n /**\n * 根据键名查询参数配置信息\n * \n * @param configKey 参数键名\n * @return 参数键值\n */\n public String selectConfigByKey(String configKey);\n\n /**\n * 获取验证码开关\n * \n * @return true开启,false关闭\n */\n public boolean selectCaptchaEnabled();\n\n /**\n * 查询参数配置列表\n * \n * @param config 参数配置信息\n * @return 参数配置集合\n */\n public List<SysConfig> selectConfigList(SysConfig config);\n\n /**\n * 新增参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n public int insertConfig(SysConfig config);\n\n /**\n * 修改参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n public int updateConfig(SysConfig config);\n\n /**\n * 批量删除参数信息\n * \n * @param configIds 需要删除的参数ID\n */\n public void deleteConfigByIds(Long[] configIds);\n\n /**\n * 加载参数缓存数据\n */\n public void loadingConfigCache();\n\n /**\n * 清空参数缓存数据\n */\n public void clearConfigCache();\n\n /**\n * 重置参数缓存数据\n */\n public void resetConfigCache();\n\n /**\n * 校验参数键名是否唯一\n * \n * @param config 参数信息\n * @return 结果\n */\n public boolean checkConfigKeyUnique(SysConfig config);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/TestDemoMapper.java": {"588a128a631cbab246edd130c1c3e23db6778251": {"t": 1785599293.1161623, "n": 1032, "h": "a2d3a872cea2dde6", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.TestDemo;\n\n/**\n * 测试管理Mapper接口\n * \n * @author ruoyi\n * @date 2025-07-17\n */\npublic interface TestDemoMapper \n{\n /**\n * 查询测试管理\n * \n * @param id 测试管理主键\n * @return 测试管理\n */\n public TestDemo selectTestDemoById(Long id);\n\n /**\n * 查询测试管理列表\n * \n * @param testDemo 测试管理\n * @return 测试管理集合\n */\n public List<TestDemo> selectTestDemoList(TestDemo testDemo);\n\n /**\n * 新增测试管理\n * \n * @param testDemo 测试管理\n * @return 结果\n */\n public int insertTestDemo(TestDemo testDemo);\n\n /**\n * 修改测试管理\n * \n * @param testDemo 测试管理\n * @return 结果\n */\n public int updateTestDemo(TestDemo testDemo);\n\n /**\n * 删除测试管理\n * \n * @param id 测试管理主键\n * @return 结果\n */\n public int deleteTestDemoById(Long id);\n\n /**\n * 批量删除测试管理\n * \n * @param ids 需要删除的数据主键集合\n * @return 结果\n */\n public int deleteTestDemoByIds(Long[] ids);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/mapper/SysUserPostMapper.java": {"b2fa0349da920061a07c891f8ae195f162855b76": {"t": 1785599293.2652488, "n": 769, "h": "432aac58bef6c1b3", "c": "package com.campusreuse.system.mapper;\n\nimport java.util.List;\nimport com.campusreuse.system.domain.SysUserPost;\n\n/**\n * 用户与岗位关联表 数据层\n * \n * @author ruoyi\n */\npublic interface SysUserPostMapper\n{\n /**\n * 通过用户ID删除用户和岗位关联\n * \n * @param userId 用户ID\n * @return 结果\n */\n public int deleteUserPostByUserId(Long userId);\n\n /**\n * 通过岗位ID查询岗位使用数量\n * \n * @param postId 岗位ID\n * @return 结果\n */\n public int countUserPostById(Long postId);\n\n /**\n * 批量删除用户和岗位关联\n * \n * @param ids 需要删除的数据ID\n * @return 结果\n */\n public int deleteUserPost(Long[] ids);\n\n /**\n * 批量新增用户岗位信息\n * \n * @param userPostList 用户岗位列表\n * @return 结果\n */\n public int batchUserPost(List<SysUserPost> userPostList);\n}\n"}}, "CampusReuse-system/src/main/java/com/campusreuse/system/service/impl/SysConfigServiceImpl.java": {"ae8f14afb2f8732f30b33644dd875a4fd789e426": {"t": 1785599293.3542702, "n": 5954, "h": "99e31a587dd7755e", "c": "package com.campusreuse.system.service.impl;\n\nimport java.util.Collection;\nimport java.util.List;\nimport javax.annotation.PostConstruct;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport com.campusreuse.common.annotation.DataSource;\nimport com.campusreuse.common.constant.CacheConstants;\nimport com.campusreuse.common.constant.UserConstants;\nimport com.campusreuse.common.core.redis.RedisCache;\nimport com.campusreuse.common.core.text.Convert;\nimport com.campusreuse.common.enums.DataSourceType;\nimport com.campusreuse.common.exception.ServiceException;\nimport com.campusreuse.common.utils.StringUtils;\nimport com.campusreuse.system.domain.SysConfig;\nimport com.campusreuse.system.mapper.SysConfigMapper;\nimport com.campusreuse.system.service.ISysConfigService;\n\n/**\n * 参数配置 服务层实现\n * \n * @author ruoyi\n */\n@Service\npublic class SysConfigServiceImpl implements ISysConfigService\n{\n @Autowired\n private SysConfigMapper configMapper;\n\n @Autowired\n private RedisCache redisCache;\n\n /**\n * 项目启动时,初始化参数到缓存\n */\n @PostConstruct\n public void init()\n {\n loadingConfigCache();\n }\n\n /**\n * 查询参数配置信息\n * \n * @param configId 参数配置ID\n * @return 参数配置信息\n */\n @Override\n @DataSource(DataSourceType.MASTER)\n public SysConfig selectConfigById(Long configId)\n {\n SysConfig config = new SysConfig();\n config.setConfigId(configId);\n return configMapper.selectConfig(config);\n }\n\n /**\n * 根据键名查询参数配置信息\n * \n * @param configKey 参数key\n * @return 参数键值\n */\n @Override\n public String selectConfigByKey(String configKey)\n {\n String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));\n if (StringUtils.isNotEmpty(configValue))\n {\n return configValue;\n }\n SysConfig config = new SysConfig();\n config.setConfigKey(configKey);\n SysConfig retConfig = configMapper.selectConfig(config);\n if (StringUtils.isNotNull(retConfig))\n {\n redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());\n return retConfig.getConfigValue();\n }\n return StringUtils.EMPTY;\n }\n\n /**\n * 获取验证码开关\n * \n * @return true开启,false关闭\n */\n @Override\n public boolean selectCaptchaEnabled()\n {\n String captchaEnabled = selectConfigByKey(\"sys.account.captchaEnabled\");\n if (StringUtils.isEmpty(captchaEnabled))\n {\n return true;\n }\n return Convert.toBool(captchaEnabled);\n }\n\n /**\n * 查询参数配置列表\n * \n * @param config 参数配置信息\n * @return 参数配置集合\n */\n @Override\n public List<SysConfig> selectConfigList(SysConfig config)\n {\n return configMapper.selectConfigList(config);\n }\n\n /**\n * 新增参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n @Override\n public int insertConfig(SysConfig config)\n {\n int row = configMapper.insertConfig(config);\n if (row > 0)\n {\n redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\n }\n return row;\n }\n\n /**\n * 修改参数配置\n * \n * @param config 参数配置信息\n * @return 结果\n */\n @Override\n public int updateConfig(SysConfig config)\n {\n SysConfig temp = configMapper.selectConfigById(config.getConfigId());\n if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey()))\n {\n redisCache.deleteObject(getCacheKey(temp.getConfigKey()));\n }\n\n int row = configMapper.updateConfig(config);\n if (row > 0)\n {\n redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\n }\n return row;\n }\n\n /**\n * 批量删除参数信息\n * \n * @param configIds 需要删除的参数ID\n */\n @Override\n public void deleteConfigByIds(Long[] configIds)\n {\n for (Long configId : configIds)\n {\n SysConfig config = selectConfigById(configId);\n if (StringUtils.equals(UserConstants.YES, config.getConfigType()))\n {\n throw new ServiceException(String.format(\"内置参数【%1$s】不能删除 \", config.getConfigKey()));\n }\n configMapper.deleteConfigById(configId);\n redisCache.deleteObject(getCacheKey(config.getConfigKey()));\n }\n }\n\n /**\n * 加载参数缓存数据\n */\n @Override\n public void loadingConfigCache()\n {\n List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());\n for (SysConfig config : configsList)\n {\n redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\n }\n }\n\n /**\n * 清空参数缓存数据\n */\n @Override\n public void clearConfigCache()\n {\n Collection<String> keys = redisCache.keys(CacheConstants.SYS_CONFIG_KEY + \"*\");\n redisCache.deleteObject(keys);\n }\n\n /**\n * 重置参数缓存数据\n */\n @Override\n public void resetConfigCache()\n {\n clearConfigCache();\n loadingConfigCache();\n }\n\n /**\n * 校验参数键名是否唯一\n * \n * @param config 参数配置信息\n * @return 结果\n */\n @Override\n public boolean checkConfigKeyUnique(SysConfig config)\n {\n Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();\n SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());\n if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())\n {\n return UserConstants.NOT_UNIQUE;\n }\n return UserConstants.UNIQUE;\n }\n\n /**\n * 设置cache key\n * \n * @param configKey 参数键\n * @return 缓存键key\n */\n private String getCacheKey(String configKey)\n {\n return CacheConstants.SYS_CONFIG_KEY + configKey;\n }\n}\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketCommentMapper.xml": {"4167a7c39f3375f141ffab89ec681d4e830c122b": {"t": 1785599293.4710133, "n": 11404, "h": "f44278b7a1512635", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketCommentMapper\">\n \n <resultMap type=\"MarketComment\" id=\"MarketCommentResult\">\n <result property=\"commentId\" column=\"comment_id\" />\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"demandId\" column=\"demand_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"parentId\" column=\"parent_id\" />\n <result property=\"replyUserId\" column=\"reply_user_id\" />\n <result property=\"content\" column=\"content\" />\n <result property=\"rating\" column=\"rating\" />\n <result property=\"images\" column=\"images\" />\n <result property=\"likeCount\" column=\"like_count\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"userNickName\" column=\"user_nick_name\" />\n <result property=\"userAvatar\" column=\"user_avatar\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"demandTitle\" column=\"demand_title\" />\n <result property=\"replyUserNickName\" column=\"reply_user_nick_name\" />\n <result property=\"replyCount\" column=\"reply_count\" />\n <result property=\"auditUserId\" column=\"audit_user_id\" />\n <result property=\"auditTime\" column=\"audit_time\" />\n <result property=\"auditRemark\" column=\"audit_remark\" />\n <result property=\"hitWords\" column=\"hit_words\" />\n <result property=\"auditUserName\" column=\"audit_user_name\" />\n <result property=\"sellerNickName\" column=\"seller_nick_name\" />\n </resultMap>\n\n <sql id=\"selectMarketCommentVo\">\n select c.comment_id, c.goods_id, c.demand_id, c.user_id, c.parent_id, c.reply_user_id, c.content, c.rating, c.images,\n c.like_count, c.status, c.del_flag, c.create_by, c.create_time, c.update_by, c.update_time,\n c.audit_user_id, c.audit_time, c.audit_remark, c.hit_words,\n u.nick_name as user_nick_name,\n u.avatar as user_avatar,\n g.goods_title,\n d.title as demand_title,\n ru.nick_name as reply_user_nick_name,\n au.nick_name as audit_user_name,\n COALESCE(seller.nick_name, do.nick_name) as seller_nick_name\n from market_comment c\n left join sys_user u on c.user_id = u.user_id\n left join market_goods g on c.goods_id = g.goods_id\n left join sys_user seller on g.seller_id = seller.user_id\n left join market_demand d on c.demand_id = d.demand_id\n left join sys_user do on d.user_id = do.user_id\n left join sys_user ru on c.reply_user_id = ru.user_id\n left join sys_user au on c.audit_user_id = au.user_id\n </sql>\n\n <select id=\"selectMarketCommentList\" parameterType=\"MarketComment\" resultMap=\"MarketCommentResult\">\n <include refid=\"selectMarketCommentVo\"/>\n <where> \n c.del_flag = '0'\n <if test=\"goodsId != null \"> and c.goods_id = #{goodsId}</if>\n <if test=\"demandId != null \"> and c.demand_id = #{demandId}</if>\n <if test=\"userId != null \"> and c.user_id = #{userId}</if>\n <if test=\"parentId != null \"> and c.parent_id = #{parentId}</if>\n <if test=\"status != null and status != ''\"> and c.status = #{status}</if>\n <if test=\"commentType == 'goods'\"> and (c.goods_id is not null and c.goods_id != 0)</if>\n <if test=\"commentType == 'demand'\"> and (c.demand_id is not null and c.demand_id != 0)</if>\n <!-- 新增:查询我收到的评价(即查询我发布的商品下的评论) -->\n <if test=\"params.sellerId != null\">\n and g.create_by = #{params.sellerId}\n </if>\n <!-- 新增:仅查询评价(评分大于0且是顶级评论),过滤掉普通留言和回复 -->\n <if test=\"params.onlyReview != null and params.onlyReview\">\n and c.rating > 0 and (c.parent_id is null or c.parent_id = 0)\n and (c.demand_id is null or c.demand_id = 0)\n </if>\n </where>\n order by c.create_time desc\n </select>\n \n <select id=\"selectMarketCommentById\" parameterType=\"Long\" resultMap=\"MarketCommentResult\">\n <include refid=\"selectMarketCommentVo\"/>\n where c.comment_id = #{commentId} and c.del_flag = '0'\n </select>\n\n <select id=\"selectCommentsByGoodsId\" parameterType=\"Long\" resultMap=\"MarketCommentResult\">\n <include refid=\"selectMarketCommentVo\"/>\n where c.goods_id = #{goodsId} and c.del_flag = '0' and c.status = '0'\n order by c.create_time desc\n </select>\n\n <select id=\"selectCommentsByDemandId\" parameterType=\"Long\" resultMap=\"MarketCommentResult\">\n <include refid=\"selectMarketCommentVo\"/>\n where c.demand_id = #{demandId} and c.del_flag = '0' and c.status = '0'\n order by c.create_time desc\n </select>\n \n <insert id=\"insertMarketComment\" parameterType=\"MarketComment\" useGeneratedKeys=\"true\" keyProperty=\"commentId\">\n insert into market_comment\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"goodsId != null\">goods_id,</if>\n <if test=\"demandId != null\">demand_id,</if>\n <if test=\"userId != null\">user_id,</if>\n <if test=\"parentId != null\">parent_id,</if>\n <if test=\"content != null and content != ''\">content,</if>\n <if test=\"rating != null\">rating,</if>\n <if test=\"images != null\">images,</if>\n <if test=\"likeCount != null\">like_count,</if>\n <if test=\"status != null\">status,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"goodsId != null\">#{goodsId},</if>\n <if test=\"demandId != null\">#{demandId},</if>\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"parentId != null\">#{parentId},</if>\n <if test=\"content != null and content != ''\">#{content},</if>\n <if test=\"rating != null\">#{rating},</if>\n <if test=\"images != null\">#{images},</if>\n <if test=\"likeCount != null\">#{likeCount},</if>\n <if test=\"status != null\">#{status},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketComment\" parameterType=\"MarketComment\">\n update market_comment\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"content != null and content != ''\">content = #{content},</if>\n <if test=\"rating != null\">rating = #{rating},</if>\n <if test=\"images != null\">images = #{images},</if>\n <if test=\"status != null\">status = #{status},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"auditUserId != null\">audit_user_id = #{auditUserId},</if>\n <if test=\"auditTime != null\">audit_time = #{auditTime},</if>\n <if test=\"auditRemark != null\">audit_remark = #{auditRemark},</if>\n <if test=\"hitWords != null\">hit_words = #{hitWords},</if>\n </trim>\n where comment_id = #{commentId}\n </update>\n\n <delete id=\"deleteMarketCommentById\" parameterType=\"Long\">\n update market_comment set del_flag = '2' where comment_id = #{commentId}\n </delete>\n\n <delete id=\"deleteMarketCommentByIds\" parameterType=\"String\">\n update market_comment set del_flag = '2' where comment_id in \n <foreach item=\"commentId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{commentId}\n </foreach>\n </delete>\n\n <!-- 查询主评论列表(parent_id = 0),带回复数量统计 -->\n <select id=\"selectMainCommentList\" parameterType=\"MarketComment\" resultMap=\"MarketCommentResult\">\n select c.comment_id, c.goods_id, c.demand_id, c.user_id, c.parent_id, c.reply_user_id, c.content, c.rating, c.images,\n c.like_count, c.status, c.del_flag, c.create_by, c.create_time, c.update_by, c.update_time,\n u.nick_name as user_nick_name,\n u.avatar as user_avatar,\n g.goods_title,\n d.title as demand_title,\n (select count(*) from market_comment r where r.parent_id = c.comment_id and r.del_flag = '0') as reply_count\n from market_comment c\n left join sys_user u on c.user_id = u.user_id\n left join market_goods g on c.goods_id = g.goods_id\n left join market_demand d on c.demand_id = d.demand_id\n <where>\n c.del_flag = '0' and (c.parent_id = 0 or c.parent_id is null)\n <if test=\"goodsId != null \"> and c.goods_id = #{goodsId}</if>\n <if test=\"demandId != null \"> and c.demand_id = #{demandId}</if>\n <if test=\"userId != null \"> and c.user_id = #{userId}</if>\n <if test=\"status != null and status != ''\"> and c.status = #{status}</if>\n <if test=\"commentType == 'goods'\"> and (c.goods_id is not null and c.goods_id != 0)</if>\n <if test=\"commentType == 'demand'\"> and (c.demand_id is not null and c.demand_id != 0)</if>\n </where>\n order by c.create_time desc\n </select>\n\n <!-- 根据父评论ID查询子回复列表 -->\n <select id=\"selectReplyListByParentId\" parameterType=\"Long\" resultMap=\"MarketCommentResult\">\n select c.comment_id, c.goods_id, c.demand_id, c.user_id, c.parent_id, c.reply_user_id, c.content, c.rating, c.images,\n c.like_count, c.status, c.del_flag, c.create_by, c.create_time, c.update_by, c.update_time,\n u.nick_name as user_nick_name,\n u.avatar as user_avatar,\n g.goods_title,\n d.title as demand_title,\n ru.nick_name as reply_user_nick_name\n from market_comment c\n left join sys_user u on c.user_id = u.user_id\n left join market_goods g on c.goods_id = g.goods_id\n left join market_demand d on c.demand_id = d.demand_id\n left join sys_user ru on c.reply_user_id = ru.user_id\n where c.parent_id = #{parentId} and c.del_flag = '0'\n order by c.create_time asc\n </select>\n</mapper>\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketCartMapper.xml": {"3d36bb747b9bd4e728e48aa24d9f8ca950a1fc92": {"t": 1785599293.5622249, "n": 5148, "h": "cd2fcb570b9d482e", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketCartMapper\">\n \n <resultMap type=\"MarketCart\" id=\"MarketCartResult\">\n <result property=\"cartId\" column=\"cart_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"quantity\" column=\"quantity\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"goodsImage\" column=\"goods_image\" />\n <result property=\"goodsPrice\" column=\"goods_price\" />\n <result property=\"goodsStatus\" column=\"goods_status\" />\n <result property=\"sellerNickName\" column=\"seller_nick_name\" />\n <result property=\"sellerAvatar\" column=\"seller_avatar\" />\n </resultMap>\n\n <sql id=\"selectMarketCartVo\">\n select c.cart_id, c.user_id, c.goods_id, c.quantity, c.del_flag, \n c.create_by, c.create_time, c.update_by, c.update_time,\n g.goods_title, g.price as goods_price, g.goods_status,\n case when g.images is not null and g.images != '' \n then substring_index(g.images, ',', 1) \n else '' end as goods_image,\n u.nick_name as seller_nick_name,\n u.avatar as seller_avatar\n from market_cart c\n left join market_goods g on c.goods_id = g.goods_id\n left join sys_user u on g.seller_id = u.user_id\n </sql>\n\n <select id=\"selectMarketCartList\" parameterType=\"MarketCart\" resultMap=\"MarketCartResult\">\n <include refid=\"selectMarketCartVo\"/>\n <where> \n c.del_flag = '0'\n <if test=\"userId != null \"> and c.user_id = #{userId}</if>\n <if test=\"goodsId != null \"> and c.goods_id = #{goodsId}</if>\n </where>\n order by c.create_time desc\n </select>\n \n <select id=\"selectMarketCartById\" parameterType=\"Long\" resultMap=\"MarketCartResult\">\n <include refid=\"selectMarketCartVo\"/>\n where c.cart_id = #{cartId} and c.del_flag = '0'\n </select>\n\n <select id=\"selectCartByUserAndGoods\" resultMap=\"MarketCartResult\">\n <include refid=\"selectMarketCartVo\"/>\n where c.user_id = #{userId} and c.goods_id = #{goodsId} and c.del_flag = '0'\n limit 1\n </select>\n \n <insert id=\"insertMarketCart\" parameterType=\"MarketCart\" useGeneratedKeys=\"true\" keyProperty=\"cartId\">\n insert into market_cart\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"goodsId != null\">goods_id,</if>\n <if test=\"quantity != null\">quantity,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"goodsId != null\">#{goodsId},</if>\n <if test=\"quantity != null\">#{quantity},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketCart\" parameterType=\"MarketCart\">\n update market_cart\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"quantity != null\">quantity = #{quantity},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n </trim>\n where cart_id = #{cartId}\n </update>\n\n <update id=\"updateCartQuantity\">\n update market_cart set quantity = #{quantity}, update_time = sysdate() where cart_id = #{cartId}\n </update>\n\n <delete id=\"deleteMarketCartById\" parameterType=\"Long\">\n update market_cart set del_flag = '2' where cart_id = #{cartId}\n </delete>\n\n <delete id=\"deleteMarketCartByIds\" parameterType=\"String\">\n update market_cart set del_flag = '2' where cart_id in \n <foreach item=\"cartId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{cartId}\n </foreach>\n </delete>\n</mapper>\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketFavoriteMapper.xml": {"b24aa158181295422d9043e3c04971cae9424b0a": {"t": 1785599293.6228104, "n": 4426, "h": "cc5ee5e309738c5e", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketFavoriteMapper\">\n \n <resultMap type=\"MarketFavorite\" id=\"MarketFavoriteResult\">\n <result property=\"favoriteId\" column=\"favorite_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"images\" column=\"images\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"goodsStatus\" column=\"goods_status\" />\n </resultMap>\n\n <sql id=\"selectMarketFavoriteVo\">\n select f.favorite_id, f.user_id, f.goods_id, f.del_flag, \n f.create_by, f.create_time, f.update_by, f.update_time\n from market_favorite f\n </sql>\n\n <select id=\"selectMarketFavoriteList\" parameterType=\"MarketFavorite\" resultMap=\"MarketFavoriteResult\">\n select f.favorite_id, f.user_id, f.goods_id, f.del_flag, f.create_time,\n g.goods_title, g.images, g.price, g.goods_status\n from market_favorite f\n left join market_goods g on f.goods_id = g.goods_id\n <where> \n f.del_flag = '0'\n <if test=\"userId != null \"> and f.user_id = #{userId}</if>\n <if test=\"goodsId != null \"> and f.goods_id = #{goodsId}</if>\n </where>\n order by f.create_time desc\n </select>\n \n <select id=\"selectMarketFavoriteById\" parameterType=\"Long\" resultMap=\"MarketFavoriteResult\">\n <include refid=\"selectMarketFavoriteVo\"/>\n where f.favorite_id = #{favoriteId} and f.del_flag = '0'\n </select>\n\n <select id=\"selectFavoriteByUserAndGoods\" resultMap=\"MarketFavoriteResult\">\n <include refid=\"selectMarketFavoriteVo\"/>\n where f.user_id = #{userId} and f.goods_id = #{goodsId} and f.del_flag = '0'\n limit 1\n </select>\n \n <insert id=\"insertMarketFavorite\" parameterType=\"MarketFavorite\" useGeneratedKeys=\"true\" keyProperty=\"favoriteId\">\n insert into market_favorite\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"goodsId != null\">goods_id,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"goodsId != null\">#{goodsId},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketFavorite\" parameterType=\"MarketFavorite\">\n update market_favorite\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n </trim>\n where favorite_id = #{favoriteId}\n </update>\n\n <delete id=\"deleteMarketFavoriteById\" parameterType=\"Long\">\n delete from market_favorite where favorite_id = #{favoriteId}\n </delete>\n\n <delete id=\"deleteMarketFavoriteByIds\" parameterType=\"String\">\n delete from market_favorite where favorite_id in \n <foreach item=\"favoriteId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{favoriteId}\n </foreach>\n </delete>\n</mapper>\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketCategoryMapper.xml": {"ec081a7f3ef2a9d2792a5158709f00fa1f5a4bee": {"t": 1785599293.691941, "n": 5256, "h": "bd9667d8b906a6de", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketCategoryMapper\">\n \n <resultMap type=\"MarketCategory\" id=\"MarketCategoryResult\">\n <result property=\"categoryId\" column=\"category_id\" />\n <result property=\"categoryName\" column=\"category_name\" />\n <result property=\"parentId\" column=\"parent_id\" />\n <result property=\"orderNum\" column=\"order_num\" />\n <result property=\"icon\" column=\"icon\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n </resultMap>\n\n <sql id=\"selectMarketCategoryVo\">\n select category_id, category_name, parent_id, order_num, icon, status, del_flag, \n create_by, create_time, update_by, update_time, remark \n from market_category\n </sql>\n\n <select id=\"selectMarketCategoryList\" parameterType=\"MarketCategory\" resultMap=\"MarketCategoryResult\">\n <include refid=\"selectMarketCategoryVo\"/>\n <where> \n del_flag = '0'\n <if test=\"categoryName != null and categoryName != ''\"> and category_name like concat('%', #{categoryName}, '%')</if>\n <if test=\"parentId != null \"> and parent_id = #{parentId}</if>\n <if test=\"status != null and status != ''\"> and status = #{status}</if>\n </where>\n order by parent_id, order_num\n </select>\n \n <select id=\"selectMarketCategoryById\" parameterType=\"Long\" resultMap=\"MarketCategoryResult\">\n <include refid=\"selectMarketCategoryVo\"/>\n where category_id = #{categoryId} and del_flag = '0'\n </select>\n\n <select id=\"selectCategoryTree\" resultMap=\"MarketCategoryResult\">\n <include refid=\"selectMarketCategoryVo\"/>\n where del_flag = '0' and status = '0'\n order by parent_id, order_num\n </select>\n \n <insert id=\"insertMarketCategory\" parameterType=\"MarketCategory\" useGeneratedKeys=\"true\" keyProperty=\"categoryId\">\n insert into market_category\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"categoryName != null and categoryName != ''\">category_name,</if>\n <if test=\"parentId != null\">parent_id,</if>\n <if test=\"orderNum != null\">order_num,</if>\n <if test=\"icon != null\">icon,</if>\n <if test=\"status != null\">status,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"categoryName != null and categoryName != ''\">#{categoryName},</if>\n <if test=\"parentId != null\">#{parentId},</if>\n <if test=\"orderNum != null\">#{orderNum},</if>\n <if test=\"icon != null\">#{icon},</if>\n <if test=\"status != null\">#{status},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketCategory\" parameterType=\"MarketCategory\">\n update market_category\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"categoryName != null and categoryName != ''\">category_name = #{categoryName},</if>\n <if test=\"parentId != null\">parent_id = #{parentId},</if>\n <if test=\"orderNum != null\">order_num = #{orderNum},</if>\n <if test=\"icon != null\">icon = #{icon},</if>\n <if test=\"status != null\">status = #{status},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n </trim>\n where category_id = #{categoryId}\n </update>\n\n <delete id=\"deleteMarketCategoryById\" parameterType=\"Long\">\n update market_category set del_flag = '2' where category_id = #{categoryId}\n </delete>\n\n <delete id=\"deleteMarketCategoryByIds\" parameterType=\"String\">\n update market_category set del_flag = '2' where category_id in \n <foreach item=\"categoryId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{categoryId}\n </foreach>\n </delete>\n</mapper>\n\n"}}, "CampusReuse-system/src/main/resources/mapper/course/CourseMapper.xml": {"aad89f34a248f2fc6e71de60ac31790b1c6a2efa": {"t": 1785599293.8209302, "n": 4261, "h": "06b067acb642fd18", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.course.mapper.CourseMapper\">\n \n <resultMap type=\"Course\" id=\"CourseResult\">\n <result property=\"id\" column=\"id\" />\n <result property=\"code\" column=\"code\" />\n <result property=\"subject\" column=\"subject\" />\n <result property=\"name\" column=\"name\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"applicablePerson\" column=\"applicable_person\" />\n <result property=\"info\" column=\"info\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateTime\" column=\"update_time\" />\n </resultMap>\n\n <sql id=\"selectCourseVo\">\n select id, code, subject, name, price, applicable_person, info, create_time, update_time from tb_course\n </sql>\n\n <select id=\"selectCourseList\" parameterType=\"Course\" resultMap=\"CourseResult\">\n <include refid=\"selectCourseVo\"/>\n <where> \n <if test=\"code != null and code != ''\"> and code = #{code}</if>\n <if test=\"subject != null and subject != ''\"> and subject = #{subject}</if>\n <if test=\"name != null and name != ''\"> and name like concat('%', #{name}, '%')</if>\n <if test=\"applicablePerson != null and applicablePerson != ''\"> and applicable_person = #{applicablePerson}</if>\n </where>\n </select>\n \n <select id=\"selectCourseById\" parameterType=\"Long\" resultMap=\"CourseResult\">\n <include refid=\"selectCourseVo\"/>\n where id = #{id}\n </select>\n\n <insert id=\"insertCourse\" parameterType=\"Course\" useGeneratedKeys=\"true\" keyProperty=\"id\">\n insert into tb_course\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"code != null and code != ''\">code,</if>\n <if test=\"subject != null and subject != ''\">subject,</if>\n <if test=\"name != null and name != ''\">name,</if>\n <if test=\"price != null\">price,</if>\n <if test=\"applicablePerson != null and applicablePerson != ''\">applicable_person,</if>\n <if test=\"info != null and info != ''\">info,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateTime != null\">update_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"code != null and code != ''\">#{code},</if>\n <if test=\"subject != null and subject != ''\">#{subject},</if>\n <if test=\"name != null and name != ''\">#{name},</if>\n <if test=\"price != null\">#{price},</if>\n <if test=\"applicablePerson != null and applicablePerson != ''\">#{applicablePerson},</if>\n <if test=\"info != null and info != ''\">#{info},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateCourse\" parameterType=\"Course\">\n update tb_course\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"code != null and code != ''\">code = #{code},</if>\n <if test=\"subject != null and subject != ''\">subject = #{subject},</if>\n <if test=\"name != null and name != ''\">name = #{name},</if>\n <if test=\"price != null\">price = #{price},</if>\n <if test=\"applicablePerson != null and applicablePerson != ''\">applicable_person = #{applicablePerson},</if>\n <if test=\"info != null and info != ''\">info = #{info},</if>\n <if test=\"createTime != null\">create_time = #{createTime},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n </trim>\n where id = #{id}\n </update>\n\n <delete id=\"deleteCourseById\" parameterType=\"Long\">\n delete from tb_course where id = #{id}\n </delete>\n\n <delete id=\"deleteCourseByIds\" parameterType=\"String\">\n delete from tb_course where id in \n <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{id}\n </foreach>\n </delete>\n</mapper>"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketHistoryMapper.xml": {"5c3d94bd3827405037937a6f584d97617bd4590a": {"t": 1785599294.483541, "n": 3994, "h": "a960747ecd1312fb", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketHistoryMapper\">\n \n <resultMap type=\"MarketHistory\" id=\"MarketHistoryResult\">\n <result property=\"historyId\" column=\"history_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"viewTime\" column=\"view_time\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"images\" column=\"images\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"goodsStatus\" column=\"goods_status\" />\n </resultMap>\n\n <sql id=\"selectMarketHistoryVo\">\n select h.history_id, h.user_id, h.goods_id, h.view_time,\n g.goods_title, g.images, g.price, g.goods_status\n from market_history h\n left join market_goods g on h.goods_id = g.goods_id\n </sql>\n\n <select id=\"selectMarketHistoryList\" parameterType=\"MarketHistory\" resultMap=\"MarketHistoryResult\">\n <include refid=\"selectMarketHistoryVo\"/>\n <where> \n <if test=\"userId != null \"> and h.user_id = #{userId}</if>\n </where>\n order by h.view_time desc\n </select>\n \n <select id=\"selectMarketHistoryByHistoryId\" parameterType=\"Long\" resultMap=\"MarketHistoryResult\">\n <include refid=\"selectMarketHistoryVo\"/>\n where h.history_id = #{historyId}\n </select>\n \n <insert id=\"insertMarketHistory\" parameterType=\"MarketHistory\" useGeneratedKeys=\"true\" keyProperty=\"historyId\">\n insert into market_history\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"goodsId != null\">goods_id,</if>\n <if test=\"viewTime != null\">view_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"goodsId != null\">#{goodsId},</if>\n <if test=\"viewTime != null\">#{viewTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketHistory\" parameterType=\"MarketHistory\">\n update market_history\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"viewTime != null\">view_time = #{viewTime},</if>\n </trim>\n where history_id = #{historyId}\n </update>\n\n <delete id=\"deleteMarketHistoryByHistoryId\" parameterType=\"Long\">\n delete from market_history where history_id = #{historyId}\n </delete>\n\n <delete id=\"deleteMarketHistoryByHistoryIds\" parameterType=\"String\">\n delete from market_history where history_id in \n <foreach item=\"historyId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{historyId}\n </foreach>\n </delete>\n \n <select id=\"checkHistoryExists\" resultType=\"Long\">\n select history_id from market_history where user_id = #{userId} and goods_id = #{goodsId} limit 1\n </select>\n \n <update id=\"updateViewTime\">\n update market_history set view_time = sysdate() where history_id = #{historyId}\n </update>\n \n <select id=\"countUserHistory\" resultType=\"int\">\n select count(1) from market_history where user_id = #{userId}\n </select>\n \n <!-- 删除除最近N条之外的记录 -->\n <delete id=\"deleteOldestHistory\">\n delete from market_history \n where user_id = #{userId} \n and history_id not in (\n select t.history_id from (\n select history_id \n from market_history \n where user_id = #{userId} \n order by view_time desc \n limit #{limit}\n ) t\n )\n </delete>\n \n <delete id=\"cleanUserHistory\">\n delete from market_history where user_id = #{userId}\n </delete>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketGoodsMapper.xml": {"6397bf288b472d51615ccc9b291bbe7bf75eb7f0": {"t": 1785599294.4983726, "n": 13583, "h": "3cdc7fc630666abf", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketGoodsMapper\">\n \n <resultMap type=\"MarketGoods\" id=\"MarketGoodsResult\">\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"goodsDesc\" column=\"goods_desc\" />\n <result property=\"categoryId\" column=\"category_id\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"originalPrice\" column=\"original_price\" />\n <result property=\"images\" column=\"images\" />\n <result property=\"sellerId\" column=\"seller_id\" />\n <result property=\"goodsStatus\" column=\"goods_status\" />\n <result property=\"viewCount\" column=\"view_count\" />\n <result property=\"favoriteCount\" column=\"favorite_count\" />\n <result property=\"contactWay\" column=\"contact_way\" />\n <result property=\"location\" column=\"location\" />\n <result property=\"isNew\" column=\"is_new\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"auditStatus\" column=\"audit_status\" />\n <result property=\"auditRemark\" column=\"audit_remark\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n <result property=\"sellerNickName\" column=\"seller_nick_name\" />\n <result property=\"categoryName\" column=\"category_name\" />\n <result property=\"sellerAvatar\" column=\"avatar\" />\n </resultMap>\n\n <sql id=\"selectMarketGoodsVo\">\n select g.goods_id, g.goods_title, g.goods_desc, g.category_id, g.price, g.original_price, \n g.images, g.seller_id, g.goods_status, g.view_count, g.favorite_count, \n g.contact_way, g.location, g.is_new, g.del_flag, g.audit_status, g.audit_remark,\n g.create_by, g.create_time, g.update_by, g.update_time, g.remark,\n u.nick_name as seller_nick_name, u.avatar,\n c.category_name\n from market_goods g\n left join sys_user u on g.seller_id = u.user_id\n left join market_category c on g.category_id = c.category_id\n </sql>\n\n <select id=\"selectMarketGoodsList\" parameterType=\"MarketGoods\" resultMap=\"MarketGoodsResult\">\n <include refid=\"selectMarketGoodsVo\"/>\n <where> \n g.del_flag = '0'\n <if test=\"goodsTitle != null and goodsTitle != ''\"> and g.goods_title like concat('%', #{goodsTitle}, '%')</if>\n <if test=\"categoryId != null \"> and g.category_id = #{categoryId}</if>\n <if test=\"sellerId != null \"> and g.seller_id = #{sellerId}</if>\n <if test=\"goodsStatus != null and goodsStatus != ''\"> and g.goods_status = #{goodsStatus}</if>\n <if test=\"auditStatus != null and auditStatus != ''\"> and g.audit_status = #{auditStatus}</if>\n <if test=\"isNew != null and isNew != ''\"> and g.is_new = #{isNew}</if>\n <if test=\"params.beginPrice != null and params.beginPrice != ''\">\n and g.price &gt;= #{params.beginPrice}\n </if>\n <if test=\"params.endPrice != null and params.endPrice != ''\">\n and g.price &lt;= #{params.endPrice}\n </if>\n </where>\n order by g.create_time desc\n </select>\n \n <select id=\"selectMarketGoodsById\" parameterType=\"Long\" resultMap=\"MarketGoodsResult\">\n <include refid=\"selectMarketGoodsVo\"/>\n where g.goods_id = #{goodsId} and g.del_flag = '0'\n </select>\n \n <insert id=\"insertMarketGoods\" parameterType=\"MarketGoods\" useGeneratedKeys=\"true\" keyProperty=\"goodsId\">\n insert into market_goods\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"goodsTitle != null and goodsTitle != ''\">goods_title,</if>\n <if test=\"goodsDesc != null\">goods_desc,</if>\n <if test=\"categoryId != null\">category_id,</if>\n <if test=\"price != null\">price,</if>\n <if test=\"originalPrice != null\">original_price,</if>\n <if test=\"images != null\">images,</if>\n <if test=\"sellerId != null\">seller_id,</if>\n <if test=\"goodsStatus != null\">goods_status,</if>\n <if test=\"viewCount != null\">view_count,</if>\n <if test=\"favoriteCount != null\">favorite_count,</if>\n <if test=\"contactWay != null\">contact_way,</if>\n <if test=\"location != null\">location,</if>\n <if test=\"isNew != null\">is_new,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"auditStatus != null\">audit_status,</if>\n <if test=\"auditRemark != null\">audit_remark,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"goodsTitle != null and goodsTitle != ''\">#{goodsTitle},</if>\n <if test=\"goodsDesc != null\">#{goodsDesc},</if>\n <if test=\"categoryId != null\">#{categoryId},</if>\n <if test=\"price != null\">#{price},</if>\n <if test=\"originalPrice != null\">#{originalPrice},</if>\n <if test=\"images != null\">#{images},</if>\n <if test=\"sellerId != null\">#{sellerId},</if>\n <if test=\"goodsStatus != null\">#{goodsStatus},</if>\n <if test=\"viewCount != null\">#{viewCount},</if>\n <if test=\"favoriteCount != null\">#{favoriteCount},</if>\n <if test=\"contactWay != null\">#{contactWay},</if>\n <if test=\"location != null\">#{location},</if>\n <if test=\"isNew != null\">#{isNew},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"auditStatus != null\">#{auditStatus},</if>\n <if test=\"auditRemark != null\">#{auditRemark},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketGoods\" parameterType=\"MarketGoods\">\n update market_goods\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"goodsTitle != null and goodsTitle != ''\">goods_title = #{goodsTitle},</if>\n <if test=\"goodsDesc != null\">goods_desc = #{goodsDesc},</if>\n <if test=\"categoryId != null\">category_id = #{categoryId},</if>\n <if test=\"price != null\">price = #{price},</if>\n <if test=\"originalPrice != null\">original_price = #{originalPrice},</if>\n <if test=\"images != null\">images = #{images},</if>\n <if test=\"goodsStatus != null\">goods_status = #{goodsStatus},</if>\n <if test=\"contactWay != null\">contact_way = #{contactWay},</if>\n <if test=\"location != null\">location = #{location},</if>\n <if test=\"isNew != null\">is_new = #{isNew},</if>\n <if test=\"auditStatus != null\">audit_status = #{auditStatus},</if>\n <if test=\"auditRemark != null\">audit_remark = #{auditRemark},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n </trim>\n where goods_id = #{goodsId}\n </update>\n\n <delete id=\"deleteMarketGoodsById\" parameterType=\"Long\">\n update market_goods set del_flag = '2' where goods_id = #{goodsId}\n </delete>\n\n <delete id=\"deleteMarketGoodsByIds\" parameterType=\"String\">\n update market_goods set del_flag = '2' where goods_id in \n <foreach item=\"goodsId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{goodsId}\n </foreach>\n </delete>\n\n <update id=\"updateViewCount\" parameterType=\"Long\">\n update market_goods set view_count = view_count + 1 where goods_id = #{goodsId}\n </update>\n\n <update id=\"updateFavoriteCount\">\n update market_goods set favorite_count = favorite_count + #{count} where goods_id = #{goodsId}\n </update>\n\n <update id=\"updateGoodsStatus\">\n update market_goods set goods_status = #{goodsStatus} where goods_id = #{goodsId}\n </update>\n\n <update id=\"reduceStock\">\n update market_goods \n set stock = stock - 1 \n where goods_id = #{goodsId} and stock &gt; 0\n </update>\n\n <!-- 商品大厅VO映射 -->\n <resultMap type=\"com.campusreuse.market.domain.vo.GoodsMallVO\" id=\"GoodsMallVOResult\">\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"goodsDesc\" column=\"goods_desc\" />\n <result property=\"categoryId\" column=\"category_id\" />\n <result property=\"categoryName\" column=\"category_name\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"originalPrice\" column=\"original_price\" />\n <result property=\"images\" column=\"images\" />\n <result property=\"sellerNickName\" column=\"seller_nick_name\"/>\n <result property=\"avatar\" column=\"avatar\" />\n <result property=\"viewCount\" column=\"view_count\" />\n <result property=\"favoriteCount\" column=\"favorite_count\" />\n <result property=\"contactWay\" column=\"contact_way\" />\n <result property=\"location\" column=\"location\" />\n <result property=\"createTime\" column=\"create_time\" />\n </resultMap>\n\n <!-- 商品大厅列表查询(仅已上架已审核的商品) -->\n <select id=\"selectGoodsMallList\" parameterType=\"com.campusreuse.market.domain.dto.GoodsMallQuery\" resultMap=\"GoodsMallVOResult\">\n select g.goods_id, g.goods_title, g.goods_desc, g.category_id, g.price, g.original_price, \n g.images, g.view_count, g.favorite_count, g.contact_way, g.location, g.create_time,\n u.nick_name as seller_nick_name, u.avatar,\n c.category_name\n from market_goods g\n left join sys_user u on g.seller_id = u.user_id\n left join market_category c on g.category_id = c.category_id\n where g.del_flag = '0' and g.goods_status = '0' and g.audit_status = '1'\n <if test=\"goodsTitle != null and goodsTitle != ''\">\n and g.goods_title like concat('%', #{goodsTitle}, '%')\n </if>\n <if test=\"categoryId != null\">\n and g.category_id = #{categoryId}\n </if>\n <if test=\"minPrice != null\">\n and g.price &gt;= #{minPrice}\n </if>\n <if test=\"maxPrice != null\">\n and g.price &lt;= #{maxPrice}\n </if>\n <choose>\n <when test=\"orderByColumn != null and orderByColumn != ''\">\n <if test=\"orderByColumn == 'price'\">\n order by g.price <if test=\"isAsc == 'asc'\">asc</if><if test=\"isAsc == 'desc'\">desc</if>\n </if>\n <if test=\"orderByColumn == 'create_time'\">\n order by g.create_time desc\n </if>\n <if test=\"orderByColumn == 'view_count'\">\n order by g.view_count desc\n </if>\n </when>\n <otherwise>\n order by g.create_time desc\n </otherwise>\n </choose>\n </select>\n\n <!-- 商品大厅详情查询(仅已上架已审核的商品) -->\n <select id=\"selectGoodsMallById\" parameterType=\"Long\" resultMap=\"GoodsMallVOResult\">\n select g.goods_id, g.goods_title, g.goods_desc, g.category_id, g.price, g.original_price, \n g.images, g.view_count, g.favorite_count, g.contact_way, g.location, g.create_time,\n u.nick_name as seller_nick_name, u.avatar,\n c.category_name\n from market_goods g\n left join sys_user u on g.seller_id = u.user_id\n left join market_category c on g.category_id = c.category_id\n where g.goods_id = #{goodsId} and g.del_flag = '0' and g.goods_status = '0' and g.audit_status = '1'\n </select>\n <select id=\"selectMarketGoodsCount\" parameterType=\"MarketGoods\" resultType=\"int\">\n select count(1) from market_goods\n <where>\n del_flag = '0'\n <if test=\"auditStatus != null and auditStatus != ''\"> and audit_status = #{auditStatus}</if>\n <if test=\"goodsStatus != null and goodsStatus != ''\"> and goods_status = #{goodsStatus}</if>\n </where>\n </select>\n\n <select id=\"selectCategoryStatistical\" resultType=\"map\">\n select c.category_name as name, count(1) as value\n from market_goods g\n left join market_category c on g.category_id = c.category_id\n where g.del_flag = '0'\n group by c.category_name\n </select>\n</mapper>\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketMessageMapper.xml": {"b4aa07cfda9b9d6370ea51115c13d12ae7989dbe": {"t": 1785599294.5653327, "n": 4868, "h": "e3ea3d07adda19eb", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketMessageMapper\">\n \n <resultMap type=\"MarketMessage\" id=\"MarketMessageResult\">\n <result property=\"messageId\" column=\"message_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"senderId\" column=\"sender_id\" />\n <result property=\"messageType\" column=\"message_type\" />\n <result property=\"title\" column=\"title\" />\n <result property=\"content\" column=\"content\" />\n <result property=\"targetId\" column=\"target_id\" />\n <result property=\"isRead\" column=\"is_read\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createTime\" column=\"create_time\" />\n </resultMap>\n\n <sql id=\"selectMarketMessageVo\">\n select message_id, user_id, sender_id, message_type, title, content, target_id, is_read, del_flag, create_time from market_message\n </sql>\n\n <select id=\"selectMarketMessageList\" parameterType=\"MarketMessage\" resultMap=\"MarketMessageResult\">\n <include refid=\"selectMarketMessageVo\"/>\n <where> \n del_flag = '0'\n <if test=\"userId != null \"> and user_id = #{userId}</if>\n <if test=\"senderId != null \"> and sender_id = #{senderId}</if>\n <if test=\"messageType != null and messageType != ''\"> and message_type = #{messageType}</if>\n <if test=\"isRead != null and isRead != ''\"> and is_read = #{isRead}</if>\n </where>\n order by create_time desc\n </select>\n \n <select id=\"selectMarketMessageByMessageId\" parameterType=\"Long\" resultMap=\"MarketMessageResult\">\n <include refid=\"selectMarketMessageVo\"/>\n where message_id = #{messageId}\n </select>\n \n <insert id=\"insertMarketMessage\" parameterType=\"MarketMessage\" useGeneratedKeys=\"true\" keyProperty=\"messageId\">\n insert into market_message\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"senderId != null\">sender_id,</if>\n <if test=\"messageType != null\">message_type,</if>\n <if test=\"title != null\">title,</if>\n <if test=\"content != null\">content,</if>\n <if test=\"targetId != null\">target_id,</if>\n <if test=\"isRead != null\">is_read,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createTime != null\">create_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"senderId != null\">#{senderId},</if>\n <if test=\"messageType != null\">#{messageType},</if>\n <if test=\"title != null\">#{title},</if>\n <if test=\"content != null\">#{content},</if>\n <if test=\"targetId != null\">#{targetId},</if>\n <if test=\"isRead != null\">#{isRead},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketMessage\" parameterType=\"MarketMessage\">\n update market_message\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id = #{userId},</if>\n <if test=\"senderId != null\">sender_id = #{senderId},</if>\n <if test=\"messageType != null\">message_type = #{messageType},</if>\n <if test=\"title != null\">title = #{title},</if>\n <if test=\"content != null\">content = #{content},</if>\n <if test=\"targetId != null\">target_id = #{targetId},</if>\n <if test=\"isRead != null\">is_read = #{isRead},</if>\n <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\n <if test=\"createTime != null\">create_time = #{createTime},</if>\n </trim>\n where message_id = #{messageId}\n </update>\n\n <delete id=\"deleteMarketMessageByMessageIds\" parameterType=\"String\">\n update market_message set del_flag = '2' where message_id in \n <foreach item=\"messageId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{messageId}\n </foreach>\n </delete>\n\n <update id=\"readMarketMessageByMessageIds\" parameterType=\"String\">\n update market_message set is_read = '1' where message_id in \n <foreach item=\"messageId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{messageId}\n </foreach>\n </update>\n \n <select id=\"countUnreadMessage\" resultType=\"int\">\n select count(1) from market_message where user_id = #{userId} and is_read = '0' and del_flag = '0'\n </select>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketDemandMapper.xml": {"86a2ed7cb25f30cc0888ae0be88f4d947fa6a045": {"t": 1785599294.7245908, "n": 5585, "h": "2d9ba46cbee3175b", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketDemandMapper\">\n \n <resultMap type=\"MarketDemand\" id=\"MarketDemandResult\">\n <result property=\"demandId\" column=\"demand_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"title\" column=\"title\" />\n <result property=\"budget\" column=\"budget\" />\n <result property=\"description\" column=\"description\" />\n <result property=\"contactWay\" column=\"contact_way\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n <result property=\"nickName\" column=\"nick_name\" />\n <result property=\"avatar\" column=\"avatar\" />\n </resultMap>\n\n <sql id=\"selectMarketDemandVo\">\n select d.demand_id, d.user_id, d.title, d.budget, d.description, d.contact_way, d.status, d.del_flag, d.create_by, d.create_time, d.update_by, d.update_time, d.remark,\n u.nick_name, u.avatar\n from market_demand d\n left join sys_user u on d.user_id = u.user_id\n </sql>\n\n <select id=\"selectMarketDemandList\" parameterType=\"MarketDemand\" resultMap=\"MarketDemandResult\">\n <include refid=\"selectMarketDemandVo\"/>\n <where> \n <if test=\"userId != null \"> and d.user_id = #{userId}</if>\n <if test=\"title != null and title != ''\"> and d.title like concat('%', #{title}, '%')</if>\n <if test=\"budget != null \"> and d.budget = #{budget}</if>\n <if test=\"status != null and status != ''\"> and d.status = #{status}</if>\n and d.del_flag = '0'\n </where>\n order by d.create_time desc\n </select>\n \n <select id=\"selectMarketDemandById\" parameterType=\"Long\" resultMap=\"MarketDemandResult\">\n <include refid=\"selectMarketDemandVo\"/>\n where d.demand_id = #{demandId}\n </select>\n \n <insert id=\"insertMarketDemand\" parameterType=\"MarketDemand\" useGeneratedKeys=\"true\" keyProperty=\"demandId\">\n insert into market_demand\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"title != null and title != ''\">title,</if>\n <if test=\"budget != null\">budget,</if>\n <if test=\"description != null\">description,</if>\n <if test=\"contactWay != null\">contact_way,</if>\n <if test=\"status != null\">status,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"title != null and title != ''\">#{title},</if>\n <if test=\"budget != null\">#{budget},</if>\n <if test=\"description != null\">#{description},</if>\n <if test=\"contactWay != null\">#{contactWay},</if>\n <if test=\"status != null\">#{status},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketDemand\" parameterType=\"MarketDemand\">\n update market_demand\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id = #{userId},</if>\n <if test=\"title != null and title != ''\">title = #{title},</if>\n <if test=\"budget != null\">budget = #{budget},</if>\n <if test=\"description != null\">description = #{description},</if>\n <if test=\"contactWay != null\">contact_way = #{contactWay},</if>\n <if test=\"status != null\">status = #{status},</if>\n <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\n <if test=\"createBy != null\">create_by = #{createBy},</if>\n <if test=\"createTime != null\">create_time = #{createTime},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n </trim>\n where demand_id = #{demandId}\n </update>\n\n <delete id=\"deleteMarketDemandById\" parameterType=\"Long\">\n update market_demand set del_flag = '2' where demand_id = #{demandId}\n </delete>\n\n <delete id=\"deleteMarketDemandByIds\" parameterType=\"String\">\n update market_demand set del_flag = '2' where demand_id in \n <foreach item=\"demandId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{demandId}\n </foreach>\n </delete>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketNoticeMapper.xml": {"b5a73f3aafa363dcceb5d9a1509bca0ed28abf43": {"t": 1785599294.8043025, "n": 5852, "h": "499d13fba91b16df", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketNoticeMapper\">\n \n <resultMap type=\"MarketNotice\" id=\"MarketNoticeResult\">\n <result property=\"noticeId\" column=\"notice_id\" />\n <result property=\"noticeTitle\" column=\"notice_title\" />\n <result property=\"noticeContent\" column=\"notice_content\" />\n <result property=\"noticeType\" column=\"notice_type\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"viewCount\" column=\"view_count\" />\n <result property=\"isTop\" column=\"is_top\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n </resultMap>\n\n <sql id=\"selectMarketNoticeVo\">\n select notice_id, notice_title, cast(notice_content as char) as notice_content, notice_type, \n status, view_count, is_top, del_flag, create_by, create_time, update_by, update_time, remark\n from market_notice\n </sql>\n\n <select id=\"selectMarketNoticeList\" parameterType=\"MarketNotice\" resultMap=\"MarketNoticeResult\">\n <include refid=\"selectMarketNoticeVo\"/>\n <where> \n del_flag = '0'\n <if test=\"noticeTitle != null and noticeTitle != ''\"> and notice_title like concat('%', #{noticeTitle}, '%')</if>\n <if test=\"noticeType != null and noticeType != ''\"> and notice_type = #{noticeType}</if>\n <if test=\"status != null and status != ''\"> and status = #{status}</if>\n <if test=\"isTop != null and isTop != ''\"> and is_top = #{isTop}</if>\n </where>\n order by is_top desc, create_time desc\n </select>\n \n <select id=\"selectMarketNoticeById\" parameterType=\"Long\" resultMap=\"MarketNoticeResult\">\n <include refid=\"selectMarketNoticeVo\"/>\n where notice_id = #{noticeId} and del_flag = '0'\n </select>\n\n <select id=\"selectTopNoticeList\" resultMap=\"MarketNoticeResult\">\n <include refid=\"selectMarketNoticeVo\"/>\n where del_flag = '0' and status = '0' and is_top = '1'\n order by create_time desc\n limit 5\n </select>\n \n <insert id=\"insertMarketNotice\" parameterType=\"MarketNotice\" useGeneratedKeys=\"true\" keyProperty=\"noticeId\">\n insert into market_notice\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"noticeTitle != null and noticeTitle != ''\">notice_title,</if>\n <if test=\"noticeContent != null\">notice_content,</if>\n <if test=\"noticeType != null\">notice_type,</if>\n <if test=\"status != null\">status,</if>\n <if test=\"viewCount != null\">view_count,</if>\n <if test=\"isTop != null\">is_top,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"noticeTitle != null and noticeTitle != ''\">#{noticeTitle},</if>\n <if test=\"noticeContent != null\">#{noticeContent},</if>\n <if test=\"noticeType != null\">#{noticeType},</if>\n <if test=\"status != null\">#{status},</if>\n <if test=\"viewCount != null\">#{viewCount},</if>\n <if test=\"isTop != null\">#{isTop},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketNotice\" parameterType=\"MarketNotice\">\n update market_notice\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"noticeTitle != null and noticeTitle != ''\">notice_title = #{noticeTitle},</if>\n <if test=\"noticeContent != null\">notice_content = #{noticeContent},</if>\n <if test=\"noticeType != null\">notice_type = #{noticeType},</if>\n <if test=\"status != null\">status = #{status},</if>\n <if test=\"isTop != null\">is_top = #{isTop},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n </trim>\n where notice_id = #{noticeId}\n </update>\n\n <update id=\"incrementViewCount\" parameterType=\"Long\">\n update market_notice set view_count = view_count + 1 where notice_id = #{noticeId}\n </update>\n\n <delete id=\"deleteMarketNoticeById\" parameterType=\"Long\">\n update market_notice set del_flag = '2' where notice_id = #{noticeId}\n </delete>\n\n <delete id=\"deleteMarketNoticeByIds\" parameterType=\"String\">\n update market_notice set del_flag = '2' where notice_id in \n <foreach item=\"noticeId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{noticeId}\n </foreach>\n </delete>\n</mapper>\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysChatMsgMapper.xml": {"a4eb350562b7d74ff17321d9999931991b2c92de": {"t": 1785599294.9227614, "n": 6785, "h": "bf334bb44f195ec2", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysChatMsgMapper\">\n \n <resultMap type=\"SysChatMsg\" id=\"SysChatMsgResult\">\n <result property=\"msgId\" column=\"msg_id\" />\n <result property=\"senderId\" column=\"sender_id\" />\n <result property=\"receiverId\" column=\"receiver_id\" />\n <result property=\"content\" column=\"content\" />\n <result property=\"msgType\" column=\"msg_type\" />\n <result property=\"isRead\" column=\"is_read\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createTime\" column=\"create_time\" />\n \n <result property=\"senderAvatar\" column=\"sender_avatar\" />\n <result property=\"senderNickName\" column=\"sender_nick_name\" />\n <result property=\"receiverAvatar\" column=\"receiver_avatar\" />\n <result property=\"receiverNickName\" column=\"receiver_nick_name\" />\n <result property=\"unreadCount\" column=\"unread_count\" />\n </resultMap>\n\n <sql id=\"selectSysChatMsgVo\">\n select msg_id, sender_id, receiver_id, content, msg_type, is_read, del_flag, create_time from sys_chat_msg\n </sql>\n\n <select id=\"selectSysChatMsgList\" parameterType=\"SysChatMsg\" resultMap=\"SysChatMsgResult\">\n <include refid=\"selectSysChatMsgVo\"/>\n <where> \n <if test=\"senderId != null \"> and sender_id = #{senderId}</if>\n <if test=\"receiverId != null \"> and receiver_id = #{receiverId}</if>\n <if test=\"content != null and content != ''\"> and content = #{content}</if>\n <if test=\"msgType != null and msgType != ''\"> and msg_type = #{msgType}</if>\n <if test=\"isRead != null and isRead != ''\"> and is_read = #{isRead}</if>\n </where>\n </select>\n \n <select id=\"selectSysChatMsgByMsgId\" parameterType=\"Long\" resultMap=\"SysChatMsgResult\">\n <include refid=\"selectSysChatMsgVo\"/>\n where msg_id = #{msgId}\n </select>\n \n <insert id=\"insertSysChatMsg\" parameterType=\"SysChatMsg\" useGeneratedKeys=\"true\" keyProperty=\"msgId\">\n insert into sys_chat_msg\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"senderId != null\">sender_id,</if>\n <if test=\"receiverId != null\">receiver_id,</if>\n <if test=\"content != null\">content,</if>\n <if test=\"msgType != null\">msg_type,</if>\n <if test=\"isRead != null\">is_read,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createTime != null\">create_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"senderId != null\">#{senderId},</if>\n <if test=\"receiverId != null\">#{receiverId},</if>\n <if test=\"content != null\">#{content},</if>\n <if test=\"msgType != null\">#{msgType},</if>\n <if test=\"isRead != null\">#{isRead},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n </trim>\n </insert>\n\n <update id=\"updateSysChatMsg\" parameterType=\"SysChatMsg\">\n update sys_chat_msg\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"senderId != null\">sender_id = #{senderId},</if>\n <if test=\"receiverId != null\">receiver_id = #{receiverId},</if>\n <if test=\"content != null\">content = #{content},</if>\n <if test=\"msgType != null\">msg_type = #{msgType},</if>\n <if test=\"isRead != null\">is_read = #{isRead},</if>\n <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\n <if test=\"createTime != null\">create_time = #{createTime},</if>\n </trim>\n where msg_id = #{msgId}\n </update>\n\n <delete id=\"deleteSysChatMsgByMsgId\" parameterType=\"Long\">\n delete from sys_chat_msg where msg_id = #{msgId}\n </delete>\n\n <delete id=\"deleteSysChatMsgByMsgIds\" parameterType=\"String\">\n delete from sys_chat_msg where msg_id in \n <foreach item=\"msgId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{msgId}\n </foreach>\n </delete>\n \n <!-- 查询两人聊天记录 -->\n <select id=\"selectChatHistory\" resultMap=\"SysChatMsgResult\">\n select m.msg_id, m.sender_id, m.receiver_id, m.content, m.msg_type, m.is_read, m.create_time,\n su1.nick_name as sender_nick_name, su1.avatar as sender_avatar,\n su2.nick_name as receiver_nick_name, su2.avatar as receiver_avatar\n from sys_chat_msg m\n left join sys_user su1 on m.sender_id = su1.user_id\n left join sys_user su2 on m.receiver_id = su2.user_id\n where (m.sender_id = #{userId} and m.receiver_id = #{friendId})\n or (m.sender_id = #{friendId} and m.receiver_id = #{userId})\n order by m.create_time asc\n </select>\n \n <!-- 查询联系人列表 -->\n <select id=\"selectContactList\" resultMap=\"SysChatMsgResult\">\n SELECT \n m.msg_id, m.content, m.msg_type, m.is_read, m.create_time,\n conv.friend_id as sender_id,\n u.nick_name as sender_nick_name,\n u.avatar as sender_avatar,\n (SELECT COUNT(*) FROM sys_chat_msg cm WHERE cm.sender_id = conv.friend_id AND cm.receiver_id = #{userId} AND cm.is_read = '0') as unread_count\n FROM (\n <!-- 找出所有与当前用户有过对话的好友ID及最新消息ID -->\n SELECT \n IF(sender_id = #{userId}, receiver_id, sender_id) AS friend_id,\n MAX(msg_id) as last_msg_id\n FROM sys_chat_msg\n WHERE (sender_id = #{userId} AND receiver_id != #{userId})\n OR (receiver_id = #{userId} AND sender_id != #{userId})\n GROUP BY friend_id\n ) conv\n JOIN sys_chat_msg m ON m.msg_id = conv.last_msg_id\n JOIN sys_user u ON u.user_id = conv.friend_id\n WHERE conv.friend_id != #{userId}\n ORDER BY m.create_time DESC\n </select>\n \n <!-- 删除对话 -->\n <delete id=\"deleteConversation\">\n delete from sys_chat_msg \n where (sender_id = #{userId} and receiver_id = #{friendId})\n or (sender_id = #{friendId} and receiver_id = #{userId})\n </delete>\n \n <!-- 标记消息已读 -->\n <update id=\"markAsRead\">\n update sys_chat_msg \n set is_read = '1'\n where sender_id = #{friendId} \n and receiver_id = #{userId} \n and is_read = '0'\n </update>\n \n <!-- 获取私聊未读消息数 -->\n <select id=\"getUnreadCount\" resultType=\"int\">\n select count(*) from sys_chat_msg\n where receiver_id = #{userId} and is_read = '0'\n </select>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketSensitiveWordMapper.xml": {"6e429d032d3025720ffda8cfdabbca043424b09c": {"t": 1785599294.9870293, "n": 4688, "h": "0916a990266f2594", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketSensitiveWordMapper\">\n \n <resultMap type=\"MarketSensitiveWord\" id=\"MarketSensitiveWordResult\">\n <result property=\"wordId\" column=\"word_id\" />\n <result property=\"word\" column=\"word\" />\n <result property=\"wordType\" column=\"word_type\" />\n <result property=\"replaceChar\" column=\"replace_char\" />\n <result property=\"isEnabled\" column=\"is_enabled\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n </resultMap>\n\n <sql id=\"selectMarketSensitiveWordVo\">\n select word_id, word, word_type, replace_char, is_enabled, create_by, create_time, update_by, update_time, remark \n from market_sensitive_word\n </sql>\n\n <select id=\"selectMarketSensitiveWordList\" parameterType=\"MarketSensitiveWord\" resultMap=\"MarketSensitiveWordResult\">\n <include refid=\"selectMarketSensitiveWordVo\"/>\n <where>\n <if test=\"word != null and word != ''\"> and word like concat('%', #{word}, '%')</if>\n <if test=\"wordType != null and wordType != ''\"> and word_type = #{wordType}</if>\n <if test=\"isEnabled != null and isEnabled != ''\"> and is_enabled = #{isEnabled}</if>\n </where>\n order by create_time desc\n </select>\n \n <select id=\"selectMarketSensitiveWordById\" parameterType=\"Long\" resultMap=\"MarketSensitiveWordResult\">\n <include refid=\"selectMarketSensitiveWordVo\"/>\n where word_id = #{wordId}\n </select>\n\n <select id=\"selectAllEnabledWords\" resultMap=\"MarketSensitiveWordResult\">\n <include refid=\"selectMarketSensitiveWordVo\"/>\n where is_enabled = '0'\n </select>\n \n <insert id=\"insertMarketSensitiveWord\" parameterType=\"MarketSensitiveWord\" useGeneratedKeys=\"true\" keyProperty=\"wordId\">\n insert into market_sensitive_word\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"word != null and word != ''\">word,</if>\n <if test=\"wordType != null\">word_type,</if>\n <if test=\"replaceChar != null\">replace_char,</if>\n <if test=\"isEnabled != null\">is_enabled,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"word != null and word != ''\">#{word},</if>\n <if test=\"wordType != null\">#{wordType},</if>\n <if test=\"replaceChar != null\">#{replaceChar},</if>\n <if test=\"isEnabled != null\">#{isEnabled},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketSensitiveWord\" parameterType=\"MarketSensitiveWord\">\n update market_sensitive_word\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"word != null and word != ''\">word = #{word},</if>\n <if test=\"wordType != null\">word_type = #{wordType},</if>\n <if test=\"replaceChar != null\">replace_char = #{replaceChar},</if>\n <if test=\"isEnabled != null\">is_enabled = #{isEnabled},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n </trim>\n where word_id = #{wordId}\n </update>\n\n <delete id=\"deleteMarketSensitiveWordById\" parameterType=\"Long\">\n delete from market_sensitive_word where word_id = #{wordId}\n </delete>\n\n <delete id=\"deleteMarketSensitiveWordByIds\" parameterType=\"String\">\n delete from market_sensitive_word where word_id in \n <foreach item=\"wordId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{wordId}\n </foreach>\n </delete>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysConfigMapper.xml": {"f47076f52b46c6361fba9740a9528c79b72b96ab": {"t": 1785599295.0146542, "n": 4921, "h": "b3894f0b5cf07d6d", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysConfigMapper\">\n \n <resultMap type=\"SysConfig\" id=\"SysConfigResult\">\n \t<id property=\"configId\" column=\"config_id\" />\n <result property=\"configName\" column=\"config_name\" />\n <result property=\"configKey\" column=\"config_key\" />\n <result property=\"configValue\" column=\"config_value\" />\n <result property=\"configType\" column=\"config_type\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n </resultMap>\n \n <sql id=\"selectConfigVo\">\n select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark \n\t\tfrom sys_config\n </sql>\n \n <!-- 查询条件 -->\n\t<sql id=\"sqlwhereSearch\">\n\t\t<where>\n\t\t\t<if test=\"configId !=null\">\n\t\t\t\tand config_id = #{configId}\n\t\t\t</if>\n\t\t\t<if test=\"configKey !=null and configKey != ''\">\n\t\t\t\tand config_key = #{configKey}\n\t\t\t</if>\n\t\t</where>\n\t</sql>\n \n <select id=\"selectConfig\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\n <include refid=\"selectConfigVo\"/>\n <include refid=\"sqlwhereSearch\"/>\n </select>\n \n <select id=\"selectConfigList\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\n <include refid=\"selectConfigVo\"/>\n <where>\n\t\t\t<if test=\"configName != null and configName != ''\">\n\t\t\t\tAND config_name like concat('%', #{configName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"configType != null and configType != ''\">\n\t\t\t\tAND config_type = #{configType}\n\t\t\t</if>\n\t\t\t<if test=\"configKey != null and configKey != ''\">\n\t\t\t\tAND config_key like concat('%', #{configKey}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t\t</if>\n\t\t</where>\n </select>\n \n <select id=\"selectConfigById\" parameterType=\"Long\" resultMap=\"SysConfigResult\">\n <include refid=\"selectConfigVo\"/>\n where config_id = #{configId}\n </select>\n\t\n <select id=\"checkConfigKeyUnique\" parameterType=\"String\" resultMap=\"SysConfigResult\">\n <include refid=\"selectConfigVo\"/>\n where config_key = #{configKey} limit 1\n </select>\n \n <insert id=\"insertConfig\" parameterType=\"SysConfig\">\n insert into sys_config (\n\t\t\t<if test=\"configName != null and configName != '' \">config_name,</if>\n\t\t\t<if test=\"configKey != null and configKey != '' \">config_key,</if>\n\t\t\t<if test=\"configValue != null and configValue != '' \">config_value,</if>\n\t\t\t<if test=\"configType != null and configType != '' \">config_type,</if>\n\t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n\t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\tcreate_time\n )values(\n\t\t\t<if test=\"configName != null and configName != ''\">#{configName},</if>\n\t\t\t<if test=\"configKey != null and configKey != ''\">#{configKey},</if>\n\t\t\t<if test=\"configValue != null and configValue != ''\">#{configValue},</if>\n\t\t\t<if test=\"configType != null and configType != ''\">#{configType},</if>\n\t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n\t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\tsysdate()\n\t\t)\n </insert>\n\t \n <update id=\"updateConfig\" parameterType=\"SysConfig\">\n update sys_config \n <set>\n <if test=\"configName != null and configName != ''\">config_name = #{configName},</if>\n <if test=\"configKey != null and configKey != ''\">config_key = #{configKey},</if>\n <if test=\"configValue != null and configValue != ''\">config_value = #{configValue},</if>\n <if test=\"configType != null and configType != ''\">config_type = #{configType},</if>\n <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n \t\t\tupdate_time = sysdate()\n </set>\n where config_id = #{configId}\n </update>\n\t\n <delete id=\"deleteConfigById\" parameterType=\"Long\">\n delete from sys_config where config_id = #{configId}\n </delete>\n \n <delete id=\"deleteConfigByIds\" parameterType=\"Long\">\n delete from sys_config where config_id in \n <foreach item=\"configId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n \t#{configId}\n </foreach>\n </delete>\n \n</mapper>"}}, "CampusReuse-system/src/main/resources/mapper/system/SysDeptMapper.xml": {"ac9f9c6356bc7aee82b9785e38ace40f241f898b": {"t": 1785599295.1649706, "n": 6617, "h": "9cc43574f5854338", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysDeptMapper\">\n\n\t<resultMap type=\"SysDept\" id=\"SysDeptResult\">\n\t\t<id property=\"deptId\" column=\"dept_id\" />\n\t\t<result property=\"parentId\" column=\"parent_id\" />\n\t\t<result property=\"ancestors\" column=\"ancestors\" />\n\t\t<result property=\"deptName\" column=\"dept_name\" />\n\t\t<result property=\"orderNum\" column=\"order_num\" />\n\t\t<result property=\"leader\" column=\"leader\" />\n\t\t<result property=\"phone\" column=\"phone\" />\n\t\t<result property=\"email\" column=\"email\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"delFlag\" column=\"del_flag\" />\n\t\t<result property=\"parentName\" column=\"parent_name\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectDeptVo\">\n select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time \n from sys_dept d\n </sql>\n \n\t<select id=\"selectDeptList\" parameterType=\"SysDept\" resultMap=\"SysDeptResult\">\n <include refid=\"selectDeptVo\"/>\n where d.del_flag = '0'\n\t\t<if test=\"deptId != null and deptId != 0\">\n\t\t\tAND dept_id = #{deptId}\n\t\t</if>\n <if test=\"parentId != null and parentId != 0\">\n\t\t\tAND parent_id = #{parentId}\n\t\t</if>\n\t\t<if test=\"deptName != null and deptName != ''\">\n\t\t\tAND dept_name like concat('%', #{deptName}, '%')\n\t\t</if>\n\t\t<if test=\"status != null and status != ''\">\n\t\t\tAND status = #{status}\n\t\t</if>\n\t\t<!-- 数据范围过滤 -->\n\t\t${params.dataScope}\n\t\torder by d.parent_id, d.order_num\n </select>\n \n <select id=\"selectDeptListByRoleId\" resultType=\"Long\">\n\t\tselect d.dept_id\n\t\tfrom sys_dept d\n left join sys_role_dept rd on d.dept_id = rd.dept_id\n where rd.role_id = #{roleId}\n <if test=\"deptCheckStrictly\">\n and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId})\n </if>\n\t\torder by d.parent_id, d.order_num\n\t</select>\n \n <select id=\"selectDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\n\t\tselect d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,\n\t\t\t(select dept_name from sys_dept where dept_id = d.parent_id) parent_name\n\t\tfrom sys_dept d\n\t\twhere d.dept_id = #{deptId}\n\t</select>\n \n <select id=\"checkDeptExistUser\" parameterType=\"Long\" resultType=\"int\">\n\t\tselect count(1) from sys_user where dept_id = #{deptId} and del_flag = '0'\n\t</select>\n\t\n\t<select id=\"hasChildByDeptId\" parameterType=\"Long\" resultType=\"int\">\n\t\tselect count(1) from sys_dept\n\t\twhere del_flag = '0' and parent_id = #{deptId} limit 1\n\t</select>\n\t\n\t<select id=\"selectChildrenDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\n\t\tselect * from sys_dept where find_in_set(#{deptId}, ancestors)\n\t</select>\n\t\n\t<select id=\"selectNormalChildrenDeptById\" parameterType=\"Long\" resultType=\"int\">\n\t\tselect count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors)\n\t</select>\n\t\n\t<select id=\"checkDeptNameUnique\" resultMap=\"SysDeptResult\">\n\t <include refid=\"selectDeptVo\"/>\n\t\twhere dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1\n\t</select>\n \n <insert id=\"insertDept\" parameterType=\"SysDept\">\n \t\tinsert into sys_dept(\n \t\t\t<if test=\"deptId != null and deptId != 0\">dept_id,</if>\n \t\t\t<if test=\"parentId != null and parentId != 0\">parent_id,</if>\n \t\t\t<if test=\"deptName != null and deptName != ''\">dept_name,</if>\n \t\t\t<if test=\"ancestors != null and ancestors != ''\">ancestors,</if>\n \t\t\t<if test=\"orderNum != null\">order_num,</if>\n \t\t\t<if test=\"leader != null and leader != ''\">leader,</if>\n \t\t\t<if test=\"phone != null and phone != ''\">phone,</if>\n \t\t\t<if test=\"email != null and email != ''\">email,</if>\n \t\t\t<if test=\"status != null\">status,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"deptId != null and deptId != 0\">#{deptId},</if>\n \t\t\t<if test=\"parentId != null and parentId != 0\">#{parentId},</if>\n \t\t\t<if test=\"deptName != null and deptName != ''\">#{deptName},</if>\n \t\t\t<if test=\"ancestors != null and ancestors != ''\">#{ancestors},</if>\n \t\t\t<if test=\"orderNum != null\">#{orderNum},</if>\n \t\t\t<if test=\"leader != null and leader != ''\">#{leader},</if>\n \t\t\t<if test=\"phone != null and phone != ''\">#{phone},</if>\n \t\t\t<if test=\"email != null and email != ''\">#{email},</if>\n \t\t\t<if test=\"status != null\">#{status},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n\t<update id=\"updateDept\" parameterType=\"SysDept\">\n \t\tupdate sys_dept\n \t\t<set>\n \t\t\t<if test=\"parentId != null and parentId != 0\">parent_id = #{parentId},</if>\n \t\t\t<if test=\"deptName != null and deptName != ''\">dept_name = #{deptName},</if>\n \t\t\t<if test=\"ancestors != null and ancestors != ''\">ancestors = #{ancestors},</if>\n \t\t\t<if test=\"orderNum != null\">order_num = #{orderNum},</if>\n \t\t\t<if test=\"leader != null\">leader = #{leader},</if>\n \t\t\t<if test=\"phone != null\">phone = #{phone},</if>\n \t\t\t<if test=\"email != null\">email = #{email},</if>\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere dept_id = #{deptId}\n\t</update>\n\t\n\t<update id=\"updateDeptChildren\" parameterType=\"java.util.List\">\n\t update sys_dept set ancestors =\n\t <foreach collection=\"depts\" item=\"item\" index=\"index\"\n\t separator=\" \" open=\"case dept_id\" close=\"end\">\n\t when #{item.deptId} then #{item.ancestors}\n\t </foreach>\n\t where dept_id in\n\t <foreach collection=\"depts\" item=\"item\" index=\"index\"\n\t separator=\",\" open=\"(\" close=\")\">\n\t #{item.deptId}\n\t </foreach>\n\t</update>\n\t \n\t<update id=\"updateDeptStatusNormal\" parameterType=\"Long\">\n \t update sys_dept set status = '0' where dept_id in \n \t <foreach collection=\"array\" item=\"deptId\" open=\"(\" separator=\",\" close=\")\">\n \t#{deptId}\n </foreach>\n\t</update>\n\t\n\t<delete id=\"deleteDeptById\" parameterType=\"Long\">\n\t\tupdate sys_dept set del_flag = '2' where dept_id = #{deptId}\n\t</delete>\n\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysCreditLogMapper.xml": {"e9cc9801b64ab0ad672150ca997844399c4e7c14": {"t": 1785599295.3835812, "n": 2441, "h": "eff8824837bc186b", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysCreditLogMapper\">\n \n <resultMap type=\"SysCreditLog\" id=\"SysCreditLogResult\">\n <result property=\"logId\" column=\"log_id\" />\n <result property=\"userId\" column=\"user_id\" />\n <result property=\"type\" column=\"type\" />\n <result property=\"scoreChange\" column=\"score_change\" />\n <result property=\"reason\" column=\"reason\" />\n <result property=\"refId\" column=\"ref_id\" />\n <result property=\"createTime\" column=\"create_time\" />\n </resultMap>\n\n <sql id=\"selectSysCreditLogVo\">\n select log_id, user_id, type, score_change, reason, ref_id, create_time from sys_credit_log\n </sql>\n\n <select id=\"selectSysCreditLogList\" parameterType=\"SysCreditLog\" resultMap=\"SysCreditLogResult\">\n <include refid=\"selectSysCreditLogVo\"/>\n <where> \n <if test=\"userId != null \"> and user_id = #{userId}</if>\n <if test=\"type != null and type != ''\"> and type = #{type}</if>\n </where>\n order by create_time desc\n </select>\n \n <select id=\"selectSysCreditLogByLogId\" parameterType=\"Long\" resultMap=\"SysCreditLogResult\">\n <include refid=\"selectSysCreditLogVo\"/>\n where log_id = #{logId}\n </select>\n \n <insert id=\"insertSysCreditLog\" parameterType=\"SysCreditLog\" useGeneratedKeys=\"true\" keyProperty=\"logId\">\n insert into sys_credit_log\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">user_id,</if>\n <if test=\"type != null\">type,</if>\n <if test=\"scoreChange != null\">score_change,</if>\n <if test=\"reason != null\">reason,</if>\n <if test=\"refId != null\">ref_id,</if>\n <if test=\"createTime != null\">create_time,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"userId != null\">#{userId},</if>\n <if test=\"type != null\">#{type},</if>\n <if test=\"scoreChange != null\">#{scoreChange},</if>\n <if test=\"reason != null\">#{reason},</if>\n <if test=\"refId != null\">#{refId},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n </trim>\n </insert>\n</mapper>\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysDictTypeMapper.xml": {"09338bd59fdb972c57473983d0f4c6571726cafc": {"t": 1785599295.4860272, "n": 4011, "h": "416d8af4053fa161", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysDictTypeMapper\">\n\n\t<resultMap type=\"SysDictType\" id=\"SysDictTypeResult\">\n\t\t<id property=\"dictId\" column=\"dict_id\" />\n\t\t<result property=\"dictName\" column=\"dict_name\" />\n\t\t<result property=\"dictType\" column=\"dict_type\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectDictTypeVo\">\n select dict_id, dict_name, dict_type, status, create_by, create_time, remark \n\t\tfrom sys_dict_type\n </sql>\n\n\t<select id=\"selectDictTypeList\" parameterType=\"SysDictType\" resultMap=\"SysDictTypeResult\">\n\t <include refid=\"selectDictTypeVo\"/>\n\t\t<where>\n\t\t <if test=\"dictName != null and dictName != ''\">\n\t\t\t\tAND dict_name like concat('%', #{dictName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"dictType != null and dictType != ''\">\n\t\t\t\tAND dict_type like concat('%', #{dictType}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tand date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t\t</if>\n\t </where>\n\t</select>\n\t\n\t<select id=\"selectDictTypeAll\" resultMap=\"SysDictTypeResult\">\n\t\t<include refid=\"selectDictTypeVo\"/>\n\t</select>\n\t\n\t<select id=\"selectDictTypeById\" parameterType=\"Long\" resultMap=\"SysDictTypeResult\">\n\t\t<include refid=\"selectDictTypeVo\"/>\n\t\twhere dict_id = #{dictId}\n\t</select>\n\t\n\t<select id=\"selectDictTypeByType\" parameterType=\"String\" resultMap=\"SysDictTypeResult\">\n\t\t<include refid=\"selectDictTypeVo\"/>\n\t\twhere dict_type = #{dictType}\n\t</select>\n\t\n\t<select id=\"checkDictTypeUnique\" parameterType=\"String\" resultMap=\"SysDictTypeResult\">\n\t\t<include refid=\"selectDictTypeVo\"/>\n\t\twhere dict_type = #{dictType} limit 1\n\t</select>\n\t\n\t<delete id=\"deleteDictTypeById\" parameterType=\"Long\">\n \t\tdelete from sys_dict_type where dict_id = #{dictId}\n \t</delete>\n \t\n \t<delete id=\"deleteDictTypeByIds\" parameterType=\"Long\">\n \t\tdelete from sys_dict_type where dict_id in\n \t\t<foreach collection=\"array\" item=\"dictId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{dictId}\n </foreach> \n \t</delete>\n\n \t<update id=\"updateDictType\" parameterType=\"SysDictType\">\n \t\tupdate sys_dict_type\n \t\t<set>\n \t\t\t<if test=\"dictName != null and dictName != ''\">dict_name = #{dictName},</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">dict_type = #{dictType},</if>\n \t\t\t<if test=\"status != null\">status = #{status},</if>\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere dict_id = #{dictId}\n\t</update>\n \t\n \t<insert id=\"insertDictType\" parameterType=\"SysDictType\">\n \t\tinsert into sys_dict_type(\n \t\t\t<if test=\"dictName != null and dictName != ''\">dict_name,</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">dict_type,</if>\n \t\t\t<if test=\"status != null\">status,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"dictName != null and dictName != ''\">#{dictName},</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">#{dictType},</if>\n \t\t\t<if test=\"status != null\">#{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/market/MarketOrderMapper.xml": {"a82e276d4042275c14993b6a1b502b532144bea3": {"t": 1785599295.4923236, "n": 11774, "h": "823eb99331ff8704", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.market.mapper.MarketOrderMapper\">\n \n <resultMap type=\"MarketOrder\" id=\"MarketOrderResult\">\n <result property=\"orderId\" column=\"order_id\" />\n <result property=\"orderNo\" column=\"order_no\" />\n <result property=\"buyerId\" column=\"buyer_id\" />\n <result property=\"sellerId\" column=\"seller_id\" />\n <result property=\"tradeType\" column=\"trade_type\" />\n <result property=\"goodsId\" column=\"goods_id\" />\n <result property=\"goodsTitle\" column=\"goods_title\" />\n <result property=\"goodsImage\" column=\"goods_image\" />\n <result property=\"price\" column=\"price\" />\n <result property=\"quantity\" column=\"quantity\" />\n <result property=\"totalAmount\" column=\"total_amount\" />\n <result property=\"orderStatus\" column=\"order_status\" />\n <result property=\"payStatus\" column=\"pay_status\" />\n <result property=\"payTime\" column=\"pay_time\" />\n <result property=\"payWay\" column=\"pay_way\" />\n <result property=\"receiverName\" column=\"receiver_name\" />\n <result property=\"receiverPhone\" column=\"receiver_phone\" />\n <result property=\"receiverAddress\" column=\"receiver_address\" />\n <result property=\"meetLocation\" column=\"meet_location\" />\n <result property=\"shipTime\" column=\"ship_time\" />\n <result property=\"receiveTime\" column=\"receive_time\" />\n <result property=\"cancelReason\" column=\"cancel_reason\" />\n <result property=\"refundReason\" column=\"refund_reason\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n <result property=\"buyerNickName\" column=\"buyer_nick_name\" />\n <result property=\"sellerNickName\" column=\"seller_nick_name\" />\n <result property=\"buyerAvatar\" column=\"buyer_avatar\" />\n <result property=\"sellerAvatar\" column=\"seller_avatar\" />\n <result property=\"isCommented\" column=\"is_commented\" />\n </resultMap>\n\n <sql id=\"selectMarketOrderVo\">\n select o.order_id, o.order_no, o.buyer_id, o.seller_id, o.trade_type, o.goods_id, o.goods_title, o.goods_image, o.price, o.quantity, o.total_amount, o.order_status, o.pay_status, o.pay_time, o.pay_way, o.receiver_name, o.receiver_phone, o.receiver_address, o.meet_location, o.ship_time, o.receive_time, o.cancel_reason, o.refund_reason, o.del_flag, o.create_by, o.create_time, o.update_by, o.update_time, o.remark, o.is_commented, bu.nick_name as buyer_nick_name, bu.avatar as buyer_avatar, su.nick_name as seller_nick_name, su.avatar as seller_avatar from market_order o left join sys_user bu on o.buyer_id = bu.user_id left join sys_user su on o.seller_id = su.user_id\n </sql>\n\n <select id=\"selectMarketOrderList\" parameterType=\"MarketOrder\" resultMap=\"MarketOrderResult\">\n <include refid=\"selectMarketOrderVo\"/>\n <where> \n o.del_flag = '0'\n <if test=\"orderNo != null and orderNo != ''\"> and o.order_no = #{orderNo}</if>\n <if test=\"buyerId != null and sellerId == null\"> and o.buyer_id = #{buyerId}</if>\n <if test=\"sellerId != null and buyerId == null\"> and o.seller_id = #{sellerId}</if>\n <!-- 当同时传入buyerId和sellerId时,使用OR查询(查询用户作为买家或卖家的所有订单) -->\n <if test=\"buyerId != null and sellerId != null and buyerId.equals(sellerId)\">\n and (o.buyer_id = #{buyerId} or o.seller_id = #{sellerId})\n </if>\n <if test=\"goodsId != null \"> and o.goods_id = #{goodsId}</if>\n <if test=\"orderStatus != null and orderStatus != ''\"> and o.order_status = #{orderStatus}</if>\n <if test=\"payStatus != null and payStatus != ''\"> and o.pay_status = #{payStatus}</if>\n <if test=\"params.beginTime != null and params.beginTime != ''\">\n and o.create_time &gt;= #{params.beginTime}\n </if>\n <if test=\"params.endTime != null and params.endTime != ''\">\n and o.create_time &lt;= #{params.endTime}\n </if>\n <!-- 新增:查询售后/退款订单 (状态为 5=退款中, 6=已退款) -->\n <if test=\"params.isRefundQuery != null and params.isRefundQuery\">\n and o.order_status in ('5', '6')\n </if>\n </where>\n order by o.create_time desc\n </select>\n \n <select id=\"selectMarketOrderById\" parameterType=\"Long\" resultMap=\"MarketOrderResult\">\n <include refid=\"selectMarketOrderVo\"/>\n where o.order_id = #{orderId} and o.del_flag = '0'\n </select>\n\n <select id=\"selectMarketOrderByOrderNo\" parameterType=\"String\" resultMap=\"MarketOrderResult\">\n <include refid=\"selectMarketOrderVo\"/>\n where o.order_no = #{orderNo} and o.del_flag = '0'\n </select>\n \n <insert id=\"insertMarketOrder\" parameterType=\"MarketOrder\" useGeneratedKeys=\"true\" keyProperty=\"orderId\">\n insert into market_order\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"orderNo != null and orderNo != ''\">order_no,</if>\n <if test=\"buyerId != null\">buyer_id,</if>\n <if test=\"sellerId != null\">seller_id,</if>\n <if test=\"goodsId != null\">goods_id,</if>\n <if test=\"goodsTitle != null\">goods_title,</if>\n <if test=\"goodsImage != null\">goods_image,</if>\n <if test=\"price != null\">price,</if>\n <if test=\"quantity != null\">quantity,</if>\n <if test=\"totalAmount != null\">total_amount,</if>\n <if test=\"orderStatus != null\">order_status,</if>\n <if test=\"payStatus != null\">pay_status,</if>\n <if test=\"payTime != null\">pay_time,</if>\n <if test=\"payWay != null\">pay_way,</if>\n <if test=\"receiverName != null\">receiver_name,</if>\n <if test=\"receiverPhone != null\">receiver_phone,</if>\n <if test=\"receiverAddress != null\">receiver_address,</if>\n <if test=\"shipTime != null\">ship_time,</if>\n <if test=\"receiveTime != null\">receive_time,</if>\n <if test=\"cancelReason != null\">cancel_reason,</if>\n <if test=\"refundReason != null\">refund_reason,</if>\n <if test=\"delFlag != null\">del_flag,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateBy != null\">update_by,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"remark != null\">remark,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"orderNo != null and orderNo != ''\">#{orderNo},</if>\n <if test=\"buyerId != null\">#{buyerId},</if>\n <if test=\"sellerId != null\">#{sellerId},</if>\n <if test=\"goodsId != null\">#{goodsId},</if>\n <if test=\"goodsTitle != null\">#{goodsTitle},</if>\n <if test=\"goodsImage != null\">#{goodsImage},</if>\n <if test=\"price != null\">#{price},</if>\n <if test=\"quantity != null\">#{quantity},</if>\n <if test=\"totalAmount != null\">#{totalAmount},</if>\n <if test=\"orderStatus != null\">#{orderStatus},</if>\n <if test=\"payStatus != null\">#{payStatus},</if>\n <if test=\"payTime != null\">#{payTime},</if>\n <if test=\"payWay != null\">#{payWay},</if>\n <if test=\"receiverName != null\">#{receiverName},</if>\n <if test=\"receiverPhone != null\">#{receiverPhone},</if>\n <if test=\"receiverAddress != null\">#{receiverAddress},</if>\n <if test=\"shipTime != null\">#{shipTime},</if>\n <if test=\"receiveTime != null\">#{receiveTime},</if>\n <if test=\"cancelReason != null\">#{cancelReason},</if>\n <if test=\"refundReason != null\">#{refundReason},</if>\n <if test=\"delFlag != null\">#{delFlag},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"remark != null\">#{remark},</if>\n </trim>\n </insert>\n\n <update id=\"updateMarketOrder\" parameterType=\"MarketOrder\">\n update market_order\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"goodsTitle != null\">goods_title = #{goodsTitle},</if>\n <if test=\"goodsImage != null\">goods_image = #{goodsImage},</if>\n <if test=\"orderStatus != null\">order_status = #{orderStatus},</if>\n <if test=\"payStatus != null\">pay_status = #{payStatus},</if>\n <if test=\"payTime != null\">pay_time = #{payTime},</if>\n <if test=\"payWay != null\">pay_way = #{payWay},</if>\n <if test=\"receiverName != null\">receiver_name = #{receiverName},</if>\n <if test=\"receiverPhone != null\">receiver_phone = #{receiverPhone},</if>\n <if test=\"receiverAddress != null\">receiver_address = #{receiverAddress},</if>\n <if test=\"shipTime != null\">ship_time = #{shipTime},</if>\n <if test=\"receiveTime != null\">receive_time = #{receiveTime},</if>\n <if test=\"cancelReason != null\">cancel_reason = #{cancelReason},</if>\n <if test=\"refundReason != null\">refund_reason = #{refundReason},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n <if test=\"isCommented != null\">is_commented = #{isCommented},</if>\n </trim>\n where order_id = #{orderId}\n </update>\n\n <delete id=\"deleteMarketOrderById\" parameterType=\"Long\">\n update market_order set del_flag = '2' where order_id = #{orderId}\n </delete>\n\n <delete id=\"deleteMarketOrderByIds\" parameterType=\"String\">\n update market_order set del_flag = '2' where order_id in \n <foreach item=\"orderId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{orderId}\n </foreach>\n </delete>\n\n <update id=\"updateOrderStatus\">\n update market_order set order_status = #{orderStatus}, update_time = sysdate() where order_id = #{orderId}\n </update>\n\n <update id=\"updatePayStatus\">\n update market_order set pay_status = #{payStatus}, update_time = sysdate() where order_id = #{orderId}\n </update>\n\t<select id=\"selectTotalTradeAmount\" resultType=\"BigDecimal\">\n\t\tselect coalesce(sum(total_amount), 0) from market_order where del_flag = '0' and pay_status = '1'\n\t</select>\n\n\t<select id=\"selectOrderTrendStatistical\" resultType=\"map\">\n\t\tselect \n\t\t\tdate_format(create_time, '%m-%d') as day,\n\t\t\tcount(1) as count,\n\t\t\tcoalesce(sum(total_amount), 0) as amount\n\t\tfrom market_order\n\t\twhere del_flag = '0' and pay_status = '1'\n\t\tand create_time >= date_sub(curdate(), interval 6 day)\n\t\tgroup by day\n\t\torder by day asc\n\t</select>\n</mapper>\n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysLogininforMapper.xml": {"2525203c5873dd7eba25cb3e8abe55a2a34b84e2": {"t": 1785599295.4992945, "n": 2326, "h": "ca080b579a32614f", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysLogininforMapper\">\n\n\t<resultMap type=\"SysLogininfor\" id=\"SysLogininforResult\">\n\t\t<id property=\"infoId\" column=\"info_id\" />\n\t\t<result property=\"userName\" column=\"user_name\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"ipaddr\" column=\"ipaddr\" />\n\t\t<result property=\"loginLocation\" column=\"login_location\" />\n\t\t<result property=\"browser\" column=\"browser\" />\n\t\t<result property=\"os\" column=\"os\" />\n\t\t<result property=\"msg\" column=\"msg\" />\n\t\t<result property=\"loginTime\" column=\"login_time\" />\n\t</resultMap>\n\n\t<insert id=\"insertLogininfor\" parameterType=\"SysLogininfor\">\n\t\tinsert into sys_logininfor (user_name, status, ipaddr, login_location, browser, os, msg, login_time)\n\t\tvalues (#{userName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate())\n\t</insert>\n\t\n\t<select id=\"selectLogininforList\" parameterType=\"SysLogininfor\" resultMap=\"SysLogininforResult\">\n\t\tselect info_id, user_name, ipaddr, login_location, browser, os, status, msg, login_time from sys_logininfor\n\t\t<where>\n\t\t\t<if test=\"ipaddr != null and ipaddr != ''\">\n\t\t\t\tAND ipaddr like concat('%', #{ipaddr}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"userName != null and userName != ''\">\n\t\t\t\tAND user_name like concat('%', #{userName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tAND login_time &gt;= #{params.beginTime}\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tAND login_time &lt;= #{params.endTime}\n\t\t\t</if>\n\t\t</where>\n\t\torder by info_id desc\n\t</select>\n\t\n\t<delete id=\"deleteLogininforByIds\" parameterType=\"Long\">\n \t\tdelete from sys_logininfor where info_id in\n \t\t<foreach collection=\"array\" item=\"infoId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{infoId}\n </foreach> \n \t</delete>\n \n <update id=\"cleanLogininfor\">\n truncate table sys_logininfor\n </update>\n \n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysDictDataMapper.xml": {"5b71faf4ee5b19dfdfb6ae84cb69ac6224b97d82": {"t": 1785599295.5826132, "n": 5264, "h": "28fe10c554d99ec3", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysDictDataMapper\">\n\t\n\t<resultMap type=\"SysDictData\" id=\"SysDictDataResult\">\n\t\t<id property=\"dictCode\" column=\"dict_code\" />\n\t\t<result property=\"dictSort\" column=\"dict_sort\" />\n\t\t<result property=\"dictLabel\" column=\"dict_label\" />\n\t\t<result property=\"dictValue\" column=\"dict_value\" />\n\t\t<result property=\"dictType\" column=\"dict_type\" />\n\t\t<result property=\"cssClass\" column=\"css_class\" />\n\t\t<result property=\"listClass\" column=\"list_class\" />\n\t\t<result property=\"isDefault\" column=\"is_default\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectDictDataVo\">\n select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark \n\t\tfrom sys_dict_data\n </sql>\n\n\t<select id=\"selectDictDataList\" parameterType=\"SysDictData\" resultMap=\"SysDictDataResult\">\n\t <include refid=\"selectDictDataVo\"/>\n\t\t<where>\n\t\t <if test=\"dictType != null and dictType != ''\">\n\t\t\t\tAND dict_type = #{dictType}\n\t\t\t</if>\n\t\t\t<if test=\"dictLabel != null and dictLabel != ''\">\n\t\t\t\tAND dict_label like concat('%', #{dictLabel}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t</where>\n\t\torder by dict_sort asc\n\t</select>\n\t\n\t<select id=\"selectDictDataByType\" parameterType=\"String\" resultMap=\"SysDictDataResult\">\n\t\t<include refid=\"selectDictDataVo\"/>\n\t\twhere status = '0' and dict_type = #{dictType} order by dict_sort asc\n\t</select>\n\t\n\t<select id=\"selectDictLabel\" resultType=\"String\">\n\t\tselect dict_label from sys_dict_data\n\t\twhere dict_type = #{dictType} and dict_value = #{dictValue}\n\t</select>\n\t\n\t<select id=\"selectDictDataById\" parameterType=\"Long\" resultMap=\"SysDictDataResult\">\n\t\t<include refid=\"selectDictDataVo\"/>\n\t\twhere dict_code = #{dictCode}\n\t</select>\n\t\n\t<select id=\"countDictDataByType\" resultType=\"Integer\">\n\t select count(1) from sys_dict_data where dict_type=#{dictType} \n\t</select>\n\t\n\t<delete id=\"deleteDictDataById\" parameterType=\"Long\">\n \t\tdelete from sys_dict_data where dict_code = #{dictCode}\n \t</delete>\n \t\n \t<delete id=\"deleteDictDataByIds\" parameterType=\"Long\">\n \t\tdelete from sys_dict_data where dict_code in\n \t\t<foreach collection=\"array\" item=\"dictCode\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{dictCode}\n </foreach> \n \t</delete>\n\t\n\t<update id=\"updateDictData\" parameterType=\"SysDictData\">\n \t\tupdate sys_dict_data\n \t\t<set>\n \t\t\t<if test=\"dictSort != null\">dict_sort = #{dictSort},</if>\n \t\t\t<if test=\"dictLabel != null and dictLabel != ''\">dict_label = #{dictLabel},</if>\n \t\t\t<if test=\"dictValue != null and dictValue != ''\">dict_value = #{dictValue},</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">dict_type = #{dictType},</if>\n \t\t\t<if test=\"cssClass != null\">css_class = #{cssClass},</if>\n \t\t\t<if test=\"listClass != null\">list_class = #{listClass},</if>\n \t\t\t<if test=\"isDefault != null and isDefault != ''\">is_default = #{isDefault},</if>\n \t\t\t<if test=\"status != null\">status = #{status},</if>\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere dict_code = #{dictCode}\n\t</update>\n\t\n\t<update id=\"updateDictDataType\" parameterType=\"String\">\n \t\tupdate sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType}\n\t</update>\n \t\n \t<insert id=\"insertDictData\" parameterType=\"SysDictData\">\n \t\tinsert into sys_dict_data(\n \t\t\t<if test=\"dictSort != null\">dict_sort,</if>\n \t\t\t<if test=\"dictLabel != null and dictLabel != ''\">dict_label,</if>\n \t\t\t<if test=\"dictValue != null and dictValue != ''\">dict_value,</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">dict_type,</if>\n \t\t\t<if test=\"cssClass != null and cssClass != ''\">css_class,</if>\n \t\t\t<if test=\"listClass != null and listClass != ''\">list_class,</if>\n \t\t\t<if test=\"isDefault != null and isDefault != ''\">is_default,</if>\n \t\t\t<if test=\"status != null\">status,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t <if test=\"dictSort != null\">#{dictSort},</if>\n \t\t <if test=\"dictLabel != null and dictLabel != ''\">#{dictLabel},</if>\n \t\t\t<if test=\"dictValue != null and dictValue != ''\">#{dictValue},</if>\n \t\t\t<if test=\"dictType != null and dictType != ''\">#{dictType},</if>\n \t\t\t<if test=\"cssClass != null and cssClass != ''\">#{cssClass},</if>\n \t\t\t<if test=\"listClass != null and listClass != ''\">#{listClass},</if>\n \t\t\t<if test=\"isDefault != null and isDefault != ''\">#{isDefault},</if>\n \t\t\t<if test=\"status != null\">#{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysMenuMapper.xml": {"87b2036fae2e1908c6e20422268aa7a1794faa12": {"t": 1785599295.6745224, "n": 9484, "h": "525c70c1b1b16a75", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\n\t\tPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\t\t\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysMenuMapper\">\n\n\t<resultMap type=\"SysMenu\" id=\"SysMenuResult\">\n\t\t<id property=\"menuId\" column=\"menu_id\" />\n\t\t<result property=\"menuName\" column=\"menu_name\" />\n\t\t<result property=\"parentName\" column=\"parent_name\" />\n\t\t<result property=\"parentId\" column=\"parent_id\" />\n\t\t<result property=\"orderNum\" column=\"order_num\" />\n\t\t<result property=\"path\" column=\"path\" />\n\t\t<result property=\"component\" column=\"component\" />\n\t\t<result property=\"query\" column=\"query\" />\n\t\t<result property=\"routeName\" column=\"route_name\" />\n\t\t<result property=\"isFrame\" column=\"is_frame\" />\n\t\t<result property=\"isCache\" column=\"is_cache\" />\n\t\t<result property=\"menuType\" column=\"menu_type\" />\n\t\t<result property=\"visible\" column=\"visible\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"perms\" column=\"perms\" />\n\t\t<result property=\"icon\" column=\"icon\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"remark\" column=\"remark\" />\n\t</resultMap>\n\n\t<sql id=\"selectMenuVo\">\n select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time \n\t\tfrom sys_menu\n </sql>\n \n <select id=\"selectMenuList\" parameterType=\"SysMenu\" resultMap=\"SysMenuResult\">\n\t\t<include refid=\"selectMenuVo\"/>\n\t\t<where>\n\t\t\t<if test=\"menuName != null and menuName != ''\">\n\t\t\t\tAND menu_name like concat('%', #{menuName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"visible != null and visible != ''\">\n\t\t\t\tAND visible = #{visible}\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t</where>\n\t\torder by parent_id, order_num\n\t</select>\n\t\n\t<select id=\"selectMenuTreeAll\" resultMap=\"SysMenuResult\">\n\t\tselect distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time\n\t\tfrom sys_menu m where m.menu_type in ('M', 'C') and m.status = 0\n\t\torder by m.parent_id, m.order_num\n\t</select>\n\t\n\t<select id=\"selectMenuListByUserId\" parameterType=\"SysMenu\" resultMap=\"SysMenuResult\">\n\t\tselect distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time\n\t\tfrom sys_menu m\n\t\tleft join sys_role_menu rm on m.menu_id = rm.menu_id\n\t\tleft join sys_user_role ur on rm.role_id = ur.role_id\n\t\tleft join sys_role ro on ur.role_id = ro.role_id\n\t\twhere ur.user_id = #{params.userId}\n\t\t<if test=\"menuName != null and menuName != ''\">\n AND m.menu_name like concat('%', #{menuName}, '%')\n\t\t</if>\n\t\t<if test=\"visible != null and visible != ''\">\n AND m.visible = #{visible}\n\t\t</if>\n\t\t<if test=\"status != null and status != ''\">\n AND m.status = #{status}\n\t\t</if>\n\t\torder by m.parent_id, m.order_num\n\t</select>\n \n <select id=\"selectMenuTreeByUserId\" parameterType=\"Long\" resultMap=\"SysMenuResult\">\n\t\tselect distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time\n\t\tfrom sys_menu m\n\t\t\t left join sys_role_menu rm on m.menu_id = rm.menu_id\n\t\t\t left join sys_user_role ur on rm.role_id = ur.role_id\n\t\t\t left join sys_role ro on ur.role_id = ro.role_id\n\t\t\t left join sys_user u on ur.user_id = u.user_id\n\t\twhere u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0 AND ro.status = 0\n\t\torder by m.parent_id, m.order_num\n\t</select>\n\t\n\t<select id=\"selectMenuListByRoleId\" resultType=\"Long\">\n\t\tselect m.menu_id\n\t\tfrom sys_menu m\n left join sys_role_menu rm on m.menu_id = rm.menu_id\n where rm.role_id = #{roleId}\n <if test=\"menuCheckStrictly\">\n and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId})\n </if>\n\t\torder by m.parent_id, m.order_num\n\t</select>\n\t\n\t<select id=\"selectMenuPerms\" resultType=\"String\">\n\t\tselect distinct m.perms\n\t\tfrom sys_menu m\n\t\t\t left join sys_role_menu rm on m.menu_id = rm.menu_id\n\t\t\t left join sys_user_role ur on rm.role_id = ur.role_id\n\t</select>\n\n\t<select id=\"selectMenuPermsByUserId\" parameterType=\"Long\" resultType=\"String\">\n\t\tselect distinct m.perms\n\t\tfrom sys_menu m\n\t\t\t left join sys_role_menu rm on m.menu_id = rm.menu_id\n\t\t\t left join sys_user_role ur on rm.role_id = ur.role_id\n\t\t\t left join sys_role r on r.role_id = ur.role_id\n\t\twhere m.status = '0' and r.status = '0' and ur.user_id = #{userId}\n\t</select>\n\t\n\t<select id=\"selectMenuPermsByRoleId\" parameterType=\"Long\" resultType=\"String\">\n\t\tselect distinct m.perms\n\t\tfrom sys_menu m\n\t\t\t left join sys_role_menu rm on m.menu_id = rm.menu_id\n\t\twhere m.status = '0' and rm.role_id = #{roleId}\n\t</select>\n\t\n\t<select id=\"selectMenuById\" parameterType=\"Long\" resultMap=\"SysMenuResult\">\n\t\t<include refid=\"selectMenuVo\"/>\n\t\twhere menu_id = #{menuId}\n\t</select>\n\t\n\t<select id=\"hasChildByMenuId\" resultType=\"Integer\">\n\t select count(1) from sys_menu where parent_id = #{menuId} \n\t</select>\n\t\n\t<select id=\"checkMenuNameUnique\" parameterType=\"SysMenu\" resultMap=\"SysMenuResult\">\n\t\t<include refid=\"selectMenuVo\"/>\n\t\twhere menu_name=#{menuName} and parent_id = #{parentId} limit 1\n\t</select>\n\t\n\t<update id=\"updateMenu\" parameterType=\"SysMenu\">\n\t\tupdate sys_menu\n\t\t<set>\n\t\t\t<if test=\"menuName != null and menuName != ''\">menu_name = #{menuName},</if>\n\t\t\t<if test=\"parentId != null\">parent_id = #{parentId},</if>\n\t\t\t<if test=\"orderNum != null\">order_num = #{orderNum},</if>\n\t\t\t<if test=\"path != null and path != ''\">path = #{path},</if>\n\t\t\t<if test=\"component != null\">component = #{component},</if>\n\t\t\t<if test=\"query != null\">`query` = #{query},</if>\n\t\t\t<if test=\"routeName != null\">route_name = #{routeName},</if>\n\t\t\t<if test=\"isFrame != null and isFrame != ''\">is_frame = #{isFrame},</if>\n\t\t\t<if test=\"isCache != null and isCache != ''\">is_cache = #{isCache},</if>\n\t\t\t<if test=\"menuType != null and menuType != ''\">menu_type = #{menuType},</if>\n\t\t\t<if test=\"visible != null\">visible = #{visible},</if>\n\t\t\t<if test=\"status != null\">status = #{status},</if>\n\t\t\t<if test=\"perms !=null\">perms = #{perms},</if>\n\t\t\t<if test=\"icon !=null and icon != ''\">icon = #{icon},</if>\n\t\t\t<if test=\"remark != null and remark != ''\">remark = #{remark},</if>\n\t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n\t\t\tupdate_time = sysdate()\n\t\t</set>\n\t\twhere menu_id = #{menuId}\n\t</update>\n\n\t<insert id=\"insertMenu\" parameterType=\"SysMenu\">\n\t\tinsert into sys_menu(\n\t\t<if test=\"menuId != null and menuId != 0\">menu_id,</if>\n\t\t<if test=\"parentId != null and parentId != 0\">parent_id,</if>\n\t\t<if test=\"menuName != null and menuName != ''\">menu_name,</if>\n\t\t<if test=\"orderNum != null\">order_num,</if>\n\t\t<if test=\"path != null and path != ''\">path,</if>\n\t\t<if test=\"component != null and component != ''\">component,</if>\n\t\t<if test=\"query != null and query != ''\">`query`,</if>\n\t\t<if test=\"routeName != null\">route_name,</if>\n\t\t<if test=\"isFrame != null and isFrame != ''\">is_frame,</if>\n\t\t<if test=\"isCache != null and isCache != ''\">is_cache,</if>\n\t\t<if test=\"menuType != null and menuType != ''\">menu_type,</if>\n\t\t<if test=\"visible != null\">visible,</if>\n\t\t<if test=\"status != null\">status,</if>\n\t\t<if test=\"perms !=null and perms != ''\">perms,</if>\n\t\t<if test=\"icon != null and icon != ''\">icon,</if>\n\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n\t\tcreate_time\n\t\t)values(\n\t\t<if test=\"menuId != null and menuId != 0\">#{menuId},</if>\n\t\t<if test=\"parentId != null and parentId != 0\">#{parentId},</if>\n\t\t<if test=\"menuName != null and menuName != ''\">#{menuName},</if>\n\t\t<if test=\"orderNum != null\">#{orderNum},</if>\n\t\t<if test=\"path != null and path != ''\">#{path},</if>\n\t\t<if test=\"component != null and component != ''\">#{component},</if>\n\t\t<if test=\"query != null and query != ''\">#{query},</if>\n\t\t<if test=\"routeName != null\">#{routeName},</if>\n\t\t<if test=\"isFrame != null and isFrame != ''\">#{isFrame},</if>\n\t\t<if test=\"isCache != null and isCache != ''\">#{isCache},</if>\n\t\t<if test=\"menuType != null and menuType != ''\">#{menuType},</if>\n\t\t<if test=\"visible != null\">#{visible},</if>\n\t\t<if test=\"status != null\">#{status},</if>\n\t\t<if test=\"perms !=null and perms != ''\">#{perms},</if>\n\t\t<if test=\"icon != null and icon != ''\">#{icon},</if>\n\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n\t\tsysdate()\n\t\t)\n\t</insert>\n\t\n\t<delete id=\"deleteMenuById\" parameterType=\"Long\">\n\t delete from sys_menu where menu_id = #{menuId}\n\t</delete>\n\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysPostMapper.xml": {"26a22165211da7d429ce4486f7c8fc00fc83f1f8": {"t": 1785599296.5115628, "n": 4668, "h": "b043d005fb82a2a6", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysPostMapper\">\n\n\t<resultMap type=\"SysPost\" id=\"SysPostResult\">\n\t\t<id property=\"postId\" column=\"post_id\" />\n\t\t<result property=\"postCode\" column=\"post_code\" />\n\t\t<result property=\"postName\" column=\"post_name\" />\n\t\t<result property=\"postSort\" column=\"post_sort\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t\t<result property=\"remark\" column=\"remark\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectPostVo\">\n select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark \n\t\tfrom sys_post\n </sql>\n\t\n\t<select id=\"selectPostList\" parameterType=\"SysPost\" resultMap=\"SysPostResult\">\n\t <include refid=\"selectPostVo\"/>\n\t\t<where>\n\t\t\t<if test=\"postCode != null and postCode != ''\">\n\t\t\t\tAND post_code like concat('%', #{postCode}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"status != null and status != ''\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"postName != null and postName != ''\">\n\t\t\t\tAND post_name like concat('%', #{postName}, '%')\n\t\t\t</if>\n\t\t</where>\n\t</select>\n\t\n\t<select id=\"selectPostAll\" resultMap=\"SysPostResult\">\n\t\t<include refid=\"selectPostVo\"/>\n\t</select>\n\t\n\t<select id=\"selectPostById\" parameterType=\"Long\" resultMap=\"SysPostResult\">\n\t\t<include refid=\"selectPostVo\"/>\n\t\twhere post_id = #{postId}\n\t</select>\n\t\n\t<select id=\"selectPostListByUserId\" parameterType=\"Long\" resultType=\"Long\">\n\t\tselect p.post_id\n from sys_post p\n\t left join sys_user_post up on up.post_id = p.post_id\n\t left join sys_user u on u.user_id = up.user_id\n\t where u.user_id = #{userId}\n\t</select>\n\t\n\t<select id=\"selectPostsByUserName\" parameterType=\"String\" resultMap=\"SysPostResult\">\n\t\tselect p.post_id, p.post_name, p.post_code\n\t\tfrom sys_post p\n\t\t\t left join sys_user_post up on up.post_id = p.post_id\n\t\t\t left join sys_user u on u.user_id = up.user_id\n\t\twhere u.user_name = #{userName}\n\t</select>\n\t\n\t<select id=\"checkPostNameUnique\" parameterType=\"String\" resultMap=\"SysPostResult\">\n\t\t<include refid=\"selectPostVo\"/>\n\t\t where post_name=#{postName} limit 1\n\t</select>\n\t\n\t<select id=\"checkPostCodeUnique\" parameterType=\"String\" resultMap=\"SysPostResult\">\n\t\t<include refid=\"selectPostVo\"/>\n\t\t where post_code=#{postCode} limit 1\n\t</select>\n\t\n\t<update id=\"updatePost\" parameterType=\"SysPost\">\n \t\tupdate sys_post\n \t\t<set>\n \t\t\t<if test=\"postCode != null and postCode != ''\">post_code = #{postCode},</if>\n \t\t\t<if test=\"postName != null and postName != ''\">post_name = #{postName},</if>\n \t\t\t<if test=\"postSort != null\">post_sort = #{postSort},</if>\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere post_id = #{postId}\n\t</update>\n \t\n \t<insert id=\"insertPost\" parameterType=\"SysPost\" useGeneratedKeys=\"true\" keyProperty=\"postId\">\n \t\tinsert into sys_post(\n \t\t\t<if test=\"postId != null and postId != 0\">post_id,</if>\n \t\t\t<if test=\"postCode != null and postCode != ''\">post_code,</if>\n \t\t\t<if test=\"postName != null and postName != ''\">post_name,</if>\n \t\t\t<if test=\"postSort != null\">post_sort,</if>\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"postId != null and postId != 0\">#{postId},</if>\n \t\t\t<if test=\"postCode != null and postCode != ''\">#{postCode},</if>\n \t\t\t<if test=\"postName != null and postName != ''\">#{postName},</if>\n \t\t\t<if test=\"postSort != null\">#{postSort},</if>\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n\t<delete id=\"deletePostById\" parameterType=\"Long\">\n\t\tdelete from sys_post where post_id = #{postId}\n\t</delete>\n\t\n\t<delete id=\"deletePostByIds\" parameterType=\"Long\">\n \t\tdelete from sys_post where post_id in\n \t\t<foreach collection=\"array\" item=\"postId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{postId}\n </foreach> \n \t</delete>\n\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysNoticeMapper.xml": {"0411c60d844a9c79a40a3e79f6c5e8d2e1bfb1f1": {"t": 1785599296.5229464, "n": 3980, "h": "27e837bfefeef102", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysNoticeMapper\">\n \n <resultMap type=\"SysNotice\" id=\"SysNoticeResult\">\n <result property=\"noticeId\" column=\"notice_id\" />\n <result property=\"noticeTitle\" column=\"notice_title\" />\n <result property=\"noticeType\" column=\"notice_type\" />\n <result property=\"noticeContent\" column=\"notice_content\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n </resultMap>\n \n <sql id=\"selectNoticeVo\">\n select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark \n\t\tfrom sys_notice\n </sql>\n \n <select id=\"selectNoticeById\" parameterType=\"Long\" resultMap=\"SysNoticeResult\">\n <include refid=\"selectNoticeVo\"/>\n where notice_id = #{noticeId}\n </select>\n \n <select id=\"selectNoticeList\" parameterType=\"SysNotice\" resultMap=\"SysNoticeResult\">\n <include refid=\"selectNoticeVo\"/>\n <where>\n\t\t\t<if test=\"noticeTitle != null and noticeTitle != ''\">\n\t\t\t\tAND notice_title like concat('%', #{noticeTitle}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"noticeType != null and noticeType != ''\">\n\t\t\t\tAND notice_type = #{noticeType}\n\t\t\t</if>\n\t\t\t<if test=\"createBy != null and createBy != ''\">\n\t\t\t\tAND create_by like concat('%', #{createBy}, '%')\n\t\t\t</if>\n\t\t</where>\n </select>\n \n <insert id=\"insertNotice\" parameterType=\"SysNotice\">\n insert into sys_notice (\n\t\t\t<if test=\"noticeTitle != null and noticeTitle != '' \">notice_title, </if>\n\t\t\t<if test=\"noticeType != null and noticeType != '' \">notice_type, </if>\n\t\t\t<if test=\"noticeContent != null and noticeContent != '' \">notice_content, </if>\n\t\t\t<if test=\"status != null and status != '' \">status, </if>\n\t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n\t\t\t<if test=\"noticeTitle != null and noticeTitle != ''\">#{noticeTitle}, </if>\n\t\t\t<if test=\"noticeType != null and noticeType != ''\">#{noticeType}, </if>\n\t\t\t<if test=\"noticeContent != null and noticeContent != ''\">#{noticeContent}, </if>\n\t\t\t<if test=\"status != null and status != ''\">#{status}, </if>\n\t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n\t\t)\n </insert>\n\t \n <update id=\"updateNotice\" parameterType=\"SysNotice\">\n update sys_notice \n <set>\n <if test=\"noticeTitle != null and noticeTitle != ''\">notice_title = #{noticeTitle}, </if>\n <if test=\"noticeType != null and noticeType != ''\">notice_type = #{noticeType}, </if>\n <if test=\"noticeContent != null\">notice_content = #{noticeContent}, </if>\n <if test=\"status != null and status != ''\">status = #{status}, </if>\n <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n </set>\n where notice_id = #{noticeId}\n </update>\n\t\n <delete id=\"deleteNoticeById\" parameterType=\"Long\">\n delete from sys_notice where notice_id = #{noticeId}\n </delete>\n \n <delete id=\"deleteNoticeByIds\" parameterType=\"Long\">\n delete from sys_notice where notice_id in \n <foreach item=\"noticeId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{noticeId}\n </foreach>\n </delete>\n \n</mapper>"}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml": {"daa25f4c2015c683315ba9a20821e46532b51342": {"t": 1785599296.590843, "n": 1114, "h": "4a7ba2fb5b0640b3", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysRoleDeptMapper\">\n\n\t<resultMap type=\"SysRoleDept\" id=\"SysRoleDeptResult\">\n\t\t<result property=\"roleId\" column=\"role_id\" />\n\t\t<result property=\"deptId\" column=\"dept_id\" />\n\t</resultMap>\n\n\t<delete id=\"deleteRoleDeptByRoleId\" parameterType=\"Long\">\n\t\tdelete from sys_role_dept where role_id=#{roleId}\n\t</delete>\n\t\n\t<select id=\"selectCountRoleDeptByDeptId\" resultType=\"Integer\">\n\t select count(1) from sys_role_dept where dept_id=#{deptId}\n\t</select>\n\t\n\t<delete id=\"deleteRoleDept\" parameterType=\"Long\">\n \t\tdelete from sys_role_dept where role_id in\n \t\t<foreach collection=\"array\" item=\"roleId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{roleId}\n </foreach> \n \t</delete>\n\t\n\t<insert id=\"batchRoleDept\">\n\t\tinsert into sys_role_dept(role_id, dept_id) values\n\t\t<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\n\t\t\t(#{item.roleId},#{item.deptId})\n\t\t</foreach>\n\t</insert>\n\t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml": {"40ce7bf3e2b96a3d4063a5d43c2238e035f4157b": {"t": 1785599296.6160069, "n": 1107, "h": "ff056667093d4024", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysRoleMenuMapper\">\n\n\t<resultMap type=\"SysRoleMenu\" id=\"SysRoleMenuResult\">\n\t\t<result property=\"roleId\" column=\"role_id\" />\n\t\t<result property=\"menuId\" column=\"menu_id\" />\n\t</resultMap>\n\t\n\t<select id=\"checkMenuExistRole\" resultType=\"Integer\">\n\t select count(1) from sys_role_menu where menu_id = #{menuId}\n\t</select>\n\n\t<delete id=\"deleteRoleMenuByRoleId\" parameterType=\"Long\">\n\t\tdelete from sys_role_menu where role_id=#{roleId}\n\t</delete>\n\t\n\t<delete id=\"deleteRoleMenu\" parameterType=\"Long\">\n \t\tdelete from sys_role_menu where role_id in\n \t\t<foreach collection=\"array\" item=\"roleId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{roleId}\n </foreach> \n \t</delete>\n\t\n\t<insert id=\"batchRoleMenu\">\n\t\tinsert into sys_role_menu(role_id, menu_id) values\n\t\t<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\n\t\t\t(#{item.roleId},#{item.menuId})\n\t\t</foreach>\n\t</insert>\n\t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleMapper.xml": {"3b83604d19fcdeccfcd11db1e3e877a5410e8605": {"t": 1785599296.6397974, "n": 6636, "h": "34e2848dc163e11a", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysRoleMapper\">\n\n\t<resultMap type=\"SysRole\" id=\"SysRoleResult\">\n\t\t<id property=\"roleId\" column=\"role_id\" />\n\t\t<result property=\"roleName\" column=\"role_name\" />\n\t\t<result property=\"roleKey\" column=\"role_key\" />\n\t\t<result property=\"roleSort\" column=\"role_sort\" />\n\t\t<result property=\"dataScope\" column=\"data_scope\" />\n\t\t<result property=\"menuCheckStrictly\" column=\"menu_check_strictly\" />\n\t\t<result property=\"deptCheckStrictly\" column=\"dept_check_strictly\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"delFlag\" column=\"del_flag\" />\n\t\t<result property=\"createBy\" column=\"create_by\" />\n\t\t<result property=\"createTime\" column=\"create_time\" />\n\t\t<result property=\"updateBy\" column=\"update_by\" />\n\t\t<result property=\"updateTime\" column=\"update_time\" />\n\t\t<result property=\"remark\" column=\"remark\" />\n\t</resultMap>\n\t\n\t<sql id=\"selectRoleVo\">\n\t select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,\n r.status, r.del_flag, r.create_time, r.remark \n from sys_role r\n\t left join sys_user_role ur on ur.role_id = r.role_id\n\t left join sys_user u on u.user_id = ur.user_id\n </sql>\n \n <select id=\"selectRoleList\" parameterType=\"SysRole\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\twhere r.del_flag = '0'\n\t\t<if test=\"roleId != null and roleId != 0\">\n\t\t\tAND r.role_id = #{roleId}\n\t\t</if>\n\t\t<if test=\"roleName != null and roleName != ''\">\n\t\t\tAND r.role_name like concat('%', #{roleName}, '%')\n\t\t</if>\n\t\t<if test=\"status != null and status != ''\">\n\t\t\tAND r.status = #{status}\n\t\t</if>\n\t\t<if test=\"roleKey != null and roleKey != ''\">\n\t\t\tAND r.role_key like concat('%', #{roleKey}, '%')\n\t\t</if>\n\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\tand date_format(r.create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t</if>\n\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\tand date_format(r.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t</if>\n\t\t<!-- 数据范围过滤 -->\n\t\t${params.dataScope}\n\t\torder by r.role_sort\n\t</select>\n \n\t<select id=\"selectRolePermissionByUserId\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\tWHERE r.del_flag = '0' and ur.user_id = #{userId}\n\t</select>\n\t\n\t<select id=\"selectRoleAll\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t</select>\n\t\n\t<select id=\"selectRoleListByUserId\" parameterType=\"Long\" resultType=\"Long\">\n\t\tselect r.role_id\n from sys_role r\n\t left join sys_user_role ur on ur.role_id = r.role_id\n\t left join sys_user u on u.user_id = ur.user_id\n\t where u.user_id = #{userId}\n\t</select>\n\t\n\t<select id=\"selectRoleById\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\twhere r.role_id = #{roleId}\n\t</select>\n\t\n\t<select id=\"selectRolesByUserName\" parameterType=\"String\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\tWHERE r.del_flag = '0' and u.user_name = #{userName}\n\t</select>\n\t\n\t<select id=\"checkRoleNameUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\t where r.role_name=#{roleName} and r.del_flag = '0' limit 1\n\t</select>\n\t\n\t<select id=\"checkRoleKeyUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\n\t\t<include refid=\"selectRoleVo\"/>\n\t\t where r.role_key=#{roleKey} and r.del_flag = '0' limit 1\n\t</select>\n\t\n \t<insert id=\"insertRole\" parameterType=\"SysRole\" useGeneratedKeys=\"true\" keyProperty=\"roleId\">\n \t\tinsert into sys_role(\n \t\t\t<if test=\"roleId != null and roleId != 0\">role_id,</if>\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name,</if>\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key,</if>\n \t\t\t<if test=\"roleSort != null\">role_sort,</if>\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope,</if>\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly,</if>\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly,</if>\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"roleId != null and roleId != 0\">#{roleId},</if>\n \t\t\t<if test=\"roleName != null and roleName != ''\">#{roleName},</if>\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">#{roleKey},</if>\n \t\t\t<if test=\"roleSort != null\">#{roleSort},</if>\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">#{dataScope},</if>\n \t\t\t<if test=\"menuCheckStrictly != null\">#{menuCheckStrictly},</if>\n \t\t\t<if test=\"deptCheckStrictly != null\">#{deptCheckStrictly},</if>\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n\t<update id=\"updateRole\" parameterType=\"SysRole\">\n \t\tupdate sys_role\n \t\t<set>\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name = #{roleName},</if>\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key = #{roleKey},</if>\n \t\t\t<if test=\"roleSort != null\">role_sort = #{roleSort},</if>\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope = #{dataScope},</if>\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly = #{menuCheckStrictly},</if>\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly = #{deptCheckStrictly},</if>\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere role_id = #{roleId}\n\t</update>\n\t\n\t<delete id=\"deleteRoleById\" parameterType=\"Long\">\n \t\tupdate sys_role set del_flag = '2' where role_id = #{roleId}\n \t</delete>\n \t\n \t<delete id=\"deleteRoleByIds\" parameterType=\"Long\">\n \t update sys_role set del_flag = '2' where role_id in\n \t\t<foreach collection=\"array\" item=\"roleId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{roleId}\n </foreach> \n \t</delete>\n \t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysOperLogMapper.xml": {"6a0cd759490f00c5c3fb1fdbdc728e43d1ae92b5": {"t": 1785599296.914498, "n": 3783, "h": "7b2a85b167d2724c", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysOperLogMapper\">\n\n\t<resultMap type=\"SysOperLog\" id=\"SysOperLogResult\">\n\t\t<id property=\"operId\" column=\"oper_id\" />\n\t\t<result property=\"title\" column=\"title\" />\n\t\t<result property=\"businessType\" column=\"business_type\" />\n\t\t<result property=\"method\" column=\"method\" />\n\t\t<result property=\"requestMethod\" column=\"request_method\" />\n\t\t<result property=\"operatorType\" column=\"operator_type\" />\n\t\t<result property=\"operName\" column=\"oper_name\" />\n\t\t<result property=\"deptName\" column=\"dept_name\" />\n\t\t<result property=\"operUrl\" column=\"oper_url\" />\n\t\t<result property=\"operIp\" column=\"oper_ip\" />\n\t\t<result property=\"operLocation\" column=\"oper_location\" />\n\t\t<result property=\"operParam\" column=\"oper_param\" />\n\t\t<result property=\"jsonResult\" column=\"json_result\" />\n\t\t<result property=\"status\" column=\"status\" />\n\t\t<result property=\"errorMsg\" column=\"error_msg\" />\n\t\t<result property=\"operTime\" column=\"oper_time\" />\n\t\t<result property=\"costTime\" column=\"cost_time\" />\n\t</resultMap>\n\n\t<sql id=\"selectOperLogVo\">\n select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time\n from sys_oper_log\n </sql>\n \n\t<insert id=\"insertOperlog\" parameterType=\"SysOperLog\">\n\t\tinsert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time)\n values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate())\n\t</insert>\n\t\n\t<select id=\"selectOperLogList\" parameterType=\"SysOperLog\" resultMap=\"SysOperLogResult\">\n\t\t<include refid=\"selectOperLogVo\"/>\n\t\t<where>\n\t\t\t<if test=\"operIp != null and operIp != ''\">\n\t\t\t\tAND oper_ip like concat('%', #{operIp}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"title != null and title != ''\">\n\t\t\t\tAND title like concat('%', #{title}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"businessType != null\">\n\t\t\t\tAND business_type = #{businessType}\n\t\t\t</if>\n\t\t\t<if test=\"businessTypes != null and businessTypes.length > 0\">\n\t\t\t AND business_type in\n\t\t\t <foreach collection=\"businessTypes\" item=\"businessType\" open=\"(\" separator=\",\" close=\")\">\n\t\t \t\t\t#{businessType}\n\t\t </foreach> \n\t\t\t</if>\n\t\t\t<if test=\"status != null\">\n\t\t\t\tAND status = #{status}\n\t\t\t</if>\n\t\t\t<if test=\"operName != null and operName != ''\">\n\t\t\t\tAND oper_name like concat('%', #{operName}, '%')\n\t\t\t</if>\n\t\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\t\tAND oper_time &gt;= #{params.beginTime}\n\t\t\t</if>\n\t\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\t\tAND oper_time &lt;= #{params.endTime}\n\t\t\t</if>\n\t\t</where>\n\t\torder by oper_id desc\n\t</select>\n\t\n\t<delete id=\"deleteOperLogByIds\" parameterType=\"Long\">\n \t\tdelete from sys_oper_log where oper_id in\n \t\t<foreach collection=\"array\" item=\"operId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{operId}\n </foreach> \n \t</delete>\n \t\n \t<select id=\"selectOperLogById\" parameterType=\"Long\" resultMap=\"SysOperLogResult\">\n\t\t<include refid=\"selectOperLogVo\"/>\n\t\twhere oper_id = #{operId}\n\t</select>\n\t\n\t<update id=\"cleanOperLog\">\n truncate table sys_oper_log\n </update>\n\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/TestDemoMapper.xml": {"86eb5bb7892485a40b5e8e352d2fd54708138be0": {"t": 1785599297.1118188, "n": 3873, "h": "b89761bd6774fed3", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.TestDemoMapper\">\n \n <resultMap type=\"TestDemo\" id=\"TestDemoResult\">\n <result property=\"id\" column=\"id\" />\n <result property=\"name\" column=\"name\" />\n <result property=\"value\" column=\"value\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"remark\" column=\"remark\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"updateBy\" column=\"update_by\" />\n </resultMap>\n\n <sql id=\"selectTestDemoVo\">\n select id, name, value, status, remark, create_time, update_time, create_by, update_by from test_demo\n </sql>\n\n <select id=\"selectTestDemoList\" parameterType=\"TestDemo\" resultMap=\"TestDemoResult\">\n <include refid=\"selectTestDemoVo\"/>\n <where> \n <if test=\"name != null and name != ''\"> and name like concat('%', #{name}, '%')</if>\n <if test=\"value != null and value != ''\"> and value = #{value}</if>\n <if test=\"status != null and status != ''\"> and status = #{status}</if>\n </where>\n </select>\n \n <select id=\"selectTestDemoById\" parameterType=\"Long\" resultMap=\"TestDemoResult\">\n <include refid=\"selectTestDemoVo\"/>\n where id = #{id}\n </select>\n\n <insert id=\"insertTestDemo\" parameterType=\"TestDemo\" useGeneratedKeys=\"true\" keyProperty=\"id\">\n insert into test_demo\n <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"name != null\">name,</if>\n <if test=\"value != null\">value,</if>\n <if test=\"status != null\">status,</if>\n <if test=\"remark != null\">remark,</if>\n <if test=\"createTime != null\">create_time,</if>\n <if test=\"updateTime != null\">update_time,</if>\n <if test=\"createBy != null\">create_by,</if>\n <if test=\"updateBy != null\">update_by,</if>\n </trim>\n <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n <if test=\"name != null\">#{name},</if>\n <if test=\"value != null\">#{value},</if>\n <if test=\"status != null\">#{status},</if>\n <if test=\"remark != null\">#{remark},</if>\n <if test=\"createTime != null\">#{createTime},</if>\n <if test=\"updateTime != null\">#{updateTime},</if>\n <if test=\"createBy != null\">#{createBy},</if>\n <if test=\"updateBy != null\">#{updateBy},</if>\n </trim>\n </insert>\n\n <update id=\"updateTestDemo\" parameterType=\"TestDemo\">\n update test_demo\n <trim prefix=\"SET\" suffixOverrides=\",\">\n <if test=\"name != null\">name = #{name},</if>\n <if test=\"value != null\">value = #{value},</if>\n <if test=\"status != null\">status = #{status},</if>\n <if test=\"remark != null\">remark = #{remark},</if>\n <if test=\"createTime != null\">create_time = #{createTime},</if>\n <if test=\"updateTime != null\">update_time = #{updateTime},</if>\n <if test=\"createBy != null\">create_by = #{createBy},</if>\n <if test=\"updateBy != null\">update_by = #{updateBy},</if>\n </trim>\n where id = #{id}\n </update>\n\n <delete id=\"deleteTestDemoById\" parameterType=\"Long\">\n delete from test_demo where id = #{id}\n </delete>\n\n <delete id=\"deleteTestDemoByIds\" parameterType=\"String\">\n delete from test_demo where id in \n <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\n #{id}\n </foreach>\n </delete>\n</mapper>"}}, "CampusReuse-ui/.editorconfig": {"7034f9bf32aa33d5009acc956bde9663e93ae848": {"t": 1785599297.1260107, "n": 354, "h": "54f44d5759d3dda4", "c": "# 告诉EditorConfig插件,这是根文件,不用继续往上查找\nroot = true\n\n# 匹配全部文件\n[*]\n# 设置字符集\ncharset = utf-8\n# 缩进风格,可选space、tab\nindent_style = space\n# 缩进的空格数\nindent_size = 2\n# 结尾换行符,可选lf、cr、crlf\nend_of_line = lf\n# 在文件结尾插入新行\ninsert_final_newline = true\n# 删除一行中的前后空格\ntrim_trailing_whitespace = true\n\n# 匹配md结尾的文件\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"}}, "CampusReuse-ui/src/App.vue": {"31839f20f3e3b013113b07728a0563da3f28daec": {"t": 1785599297.2267456, "n": 280, "h": "3352dfea7ed7c5be", "c": "<template>\n <router-view />\n</template>\n\n<script setup>\nimport useSettingsStore from '@/store/modules/settings'\nimport { handleThemeStyle } from '@/utils/theme'\n\nonMounted(() => {\n nextTick(() => {\n // 初始化主题样式\n handleThemeStyle(useSettingsStore().theme)\n })\n})\n</script>\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserRoleMapper.xml": {"0970be108c677dddb21a37f55a2ccaae946841ac": {"t": 1785599297.2568197, "n": 1503, "h": "e5e926fef686890d", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysUserRoleMapper\">\n\n\t<resultMap type=\"SysUserRole\" id=\"SysUserRoleResult\">\n\t\t<result property=\"userId\" column=\"user_id\" />\n\t\t<result property=\"roleId\" column=\"role_id\" />\n\t</resultMap>\n\n\t<delete id=\"deleteUserRoleByUserId\" parameterType=\"Long\">\n\t\tdelete from sys_user_role where user_id=#{userId}\n\t</delete>\n\t\n\t<select id=\"countUserRoleByRoleId\" resultType=\"Integer\">\n\t select count(1) from sys_user_role where role_id=#{roleId} \n\t</select>\n\t\n\t<delete id=\"deleteUserRole\" parameterType=\"Long\">\n \t\tdelete from sys_user_role where user_id in\n \t\t<foreach collection=\"array\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{userId}\n </foreach> \n \t</delete>\n\t\n\t<insert id=\"batchUserRole\">\n\t\tinsert into sys_user_role(user_id, role_id) values\n\t\t<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\n\t\t\t(#{item.userId},#{item.roleId})\n\t\t</foreach>\n\t</insert>\n\t\n\t<delete id=\"deleteUserRoleInfo\" parameterType=\"SysUserRole\">\n\t\tdelete from sys_user_role where user_id=#{userId} and role_id=#{roleId}\n\t</delete>\n\t\n\t<delete id=\"deleteUserRoleInfos\">\n\t delete from sys_user_role where role_id=#{roleId} and user_id in\n \t <foreach collection=\"userIds\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\n \t #{userId}\n </foreach> \n\t</delete>\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserPostMapper.xml": {"c39e219e1f859d67a198b118ce2f27a0f6dd974e": {"t": 1785599298.1650538, "n": 1106, "h": "024d6b583d395a17", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysUserPostMapper\">\n\n\t<resultMap type=\"SysUserPost\" id=\"SysUserPostResult\">\n\t\t<result property=\"userId\" column=\"user_id\" />\n\t\t<result property=\"postId\" column=\"post_id\" />\n\t</resultMap>\n\n\t<delete id=\"deleteUserPostByUserId\" parameterType=\"Long\">\n\t\tdelete from sys_user_post where user_id=#{userId}\n\t</delete>\n\t\n\t<select id=\"countUserPostById\" resultType=\"Integer\">\n\t select count(1) from sys_user_post where post_id=#{postId} \n\t</select>\n\t\n\t<delete id=\"deleteUserPost\" parameterType=\"Long\">\n \t\tdelete from sys_user_post where user_id in\n \t\t<foreach collection=\"array\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{userId}\n </foreach> \n \t</delete>\n\t\n\t<insert id=\"batchUserPost\">\n\t\tinsert into sys_user_post(user_id, post_id) values\n\t\t<foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\n\t\t\t(#{item.userId},#{item.postId})\n\t\t</foreach>\n\t</insert>\n\t\n</mapper> "}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserMapper.xml": {"6527b9ab8d31c57a8a95e2ac21132bd7eed3cfb9": {"t": 1785599298.3647575, "n": 10703, "h": "f188984511d643af", "c": "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"com.campusreuse.system.mapper.SysUserMapper\">\n\n <resultMap type=\"SysUser\" id=\"SysUserResult\">\n <id property=\"userId\" column=\"user_id\" />\n <result property=\"deptId\" column=\"dept_id\" />\n <result property=\"userName\" column=\"user_name\" />\n <result property=\"nickName\" column=\"nick_name\" />\n <result property=\"email\" column=\"email\" />\n <result property=\"phonenumber\" column=\"phonenumber\" />\n <result property=\"sex\" column=\"sex\" />\n <result property=\"avatar\" column=\"avatar\" />\n <result property=\"password\" column=\"password\" />\n <result property=\"status\" column=\"status\" />\n <result property=\"delFlag\" column=\"del_flag\" />\n <result property=\"loginIp\" column=\"login_ip\" />\n <result property=\"loginDate\" column=\"login_date\" />\n <result property=\"pwdUpdateDate\" column=\"pwd_update_date\" />\n <result property=\"createBy\" column=\"create_by\" />\n <result property=\"createTime\" column=\"create_time\" />\n <result property=\"updateBy\" column=\"update_by\" />\n <result property=\"updateTime\" column=\"update_time\" />\n <result property=\"remark\" column=\"remark\" />\n <result property=\"creditScore\" column=\"credit_score\" />\n <association property=\"dept\" javaType=\"SysDept\" resultMap=\"deptResult\" />\n <collection property=\"roles\" javaType=\"java.util.List\" resultMap=\"RoleResult\" />\n </resultMap>\n\t\n <resultMap id=\"deptResult\" type=\"SysDept\">\n <id property=\"deptId\" column=\"dept_id\" />\n <result property=\"parentId\" column=\"parent_id\" />\n <result property=\"deptName\" column=\"dept_name\" />\n <result property=\"ancestors\" column=\"ancestors\" />\n <result property=\"orderNum\" column=\"order_num\" />\n <result property=\"leader\" column=\"leader\" />\n <result property=\"status\" column=\"dept_status\" />\n </resultMap>\n\t\n <resultMap id=\"RoleResult\" type=\"SysRole\">\n <id property=\"roleId\" column=\"role_id\" />\n <result property=\"roleName\" column=\"role_name\" />\n <result property=\"roleKey\" column=\"role_key\" />\n <result property=\"roleSort\" column=\"role_sort\" />\n <result property=\"dataScope\" column=\"data_scope\" />\n <result property=\"status\" column=\"role_status\" />\n </resultMap>\n\t\n\t<sql id=\"selectUserVo\">\n select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark, u.credit_score, \n r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status\n from sys_user u\n\t\t left join sys_user_role ur on u.user_id = ur.user_id\n\t\t left join sys_role r on r.role_id = ur.role_id\n </sql>\n \n <select id=\"selectUserList\" parameterType=\"SysUser\" resultMap=\"SysUserResult\">\n\t\tselect u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark from sys_user u\n\t\twhere u.del_flag = '0'\n\t\t<if test=\"userId != null and userId != 0\">\n\t\t\tAND u.user_id = #{userId}\n\t\t</if>\n\t\t<if test=\"userName != null and userName != ''\">\n\t\t\tAND u.user_name like concat('%', #{userName}, '%')\n\t\t</if>\n\t\t<if test=\"status != null and status != ''\">\n\t\t\tAND u.status = #{status}\n\t\t</if>\n\t\t<if test=\"phonenumber != null and phonenumber != ''\">\n\t\t\tAND u.phonenumber like concat('%', #{phonenumber}, '%')\n\t\t</if>\n\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 开始时间检索 -->\n\t\t\tAND date_format(u.create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')\n\t\t</if>\n\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 结束时间检索 -->\n\t\t\tAND date_format(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')\n\t\t</if>\n\t\t<!-- 数据范围过滤 -->\n\t\t${params.dataScope}\n\t</select>\n\t\n\t<select id=\"selectAllocatedList\" parameterType=\"SysUser\" resultMap=\"SysUserResult\">\n\t select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time\n\t from sys_user u\n\t\t\t left join sys_user_role ur on u.user_id = ur.user_id\n\t\t\t left join sys_role r on r.role_id = ur.role_id\n\t where u.del_flag = '0' and r.role_id = #{roleId}\n\t <if test=\"userName != null and userName != ''\">\n\t\t\tAND u.user_name like concat('%', #{userName}, '%')\n\t\t</if>\n\t\t<if test=\"phonenumber != null and phonenumber != ''\">\n\t\t\tAND u.phonenumber like concat('%', #{phonenumber}, '%')\n\t\t</if>\n\t\t<!-- 数据范围过滤 -->\n\t\t${params.dataScope}\n\t</select>\n\t\n\t<select id=\"selectUnallocatedList\" parameterType=\"SysUser\" resultMap=\"SysUserResult\">\n\t select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time\n\t from sys_user u\n\t\t\t left join sys_user_role ur on u.user_id = ur.user_id\n\t\t\t left join sys_role r on r.role_id = ur.role_id\n\t where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)\n\t and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})\n\t <if test=\"userName != null and userName != ''\">\n\t\t\tAND u.user_name like concat('%', #{userName}, '%')\n\t\t</if>\n\t\t<if test=\"phonenumber != null and phonenumber != ''\">\n\t\t\tAND u.phonenumber like concat('%', #{phonenumber}, '%')\n\t\t</if>\n\t\t<!-- 数据范围过滤 -->\n\t\t${params.dataScope}\n\t</select>\n\t\n\t<select id=\"selectUserByUserName\" parameterType=\"String\" resultMap=\"SysUserResult\">\n\t <include refid=\"selectUserVo\"/>\n\t\twhere u.user_name = #{userName} and u.del_flag = '0'\n\t</select>\n\t\n\t<select id=\"selectUserById\" parameterType=\"Long\" resultMap=\"SysUserResult\">\n\t\t<include refid=\"selectUserVo\"/>\n\t\twhere u.user_id = #{userId}\n\t</select>\n\t\n\t<select id=\"checkUserNameUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\n\t\tselect user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1\n\t</select>\n\t\n\t<select id=\"checkPhoneUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\n\t\tselect user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1\n\t</select>\n\t\n\t<select id=\"checkEmailUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\n\t\tselect user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1\n\t</select>\n\t\n\t<insert id=\"insertUser\" parameterType=\"SysUser\" useGeneratedKeys=\"true\" keyProperty=\"userId\">\n \t\tinsert into sys_user(\n \t\t\t<if test=\"userId != null and userId != 0\">user_id,</if>\n \t\t\t<if test=\"deptId != null and deptId != 0\">dept_id,</if>\n \t\t\t<if test=\"userName != null and userName != ''\">user_name,</if>\n \t\t\t<if test=\"nickName != null and nickName != ''\">nick_name,</if>\n \t\t\t<if test=\"email != null and email != ''\">email,</if>\n \t\t\t<if test=\"avatar != null and avatar != ''\">avatar,</if>\n \t\t\t<if test=\"phonenumber != null and phonenumber != ''\">phonenumber,</if>\n \t\t\t<if test=\"sex != null and sex != ''\">sex,</if>\n \t\t\t<if test=\"password != null and password != ''\">password,</if>\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\n \t\t\t<if test=\"pwdUpdateDate != null\">pwd_update_date,</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t<if test=\"userId != null and userId != ''\">#{userId},</if>\n \t\t\t<if test=\"deptId != null and deptId != ''\">#{deptId},</if>\n \t\t\t<if test=\"userName != null and userName != ''\">#{userName},</if>\n \t\t\t<if test=\"nickName != null and nickName != ''\">#{nickName},</if>\n \t\t\t<if test=\"email != null and email != ''\">#{email},</if>\n \t\t\t<if test=\"avatar != null and avatar != ''\">#{avatar},</if>\n \t\t\t<if test=\"phonenumber != null and phonenumber != ''\">#{phonenumber},</if>\n \t\t\t<if test=\"sex != null and sex != ''\">#{sex},</if>\n \t\t\t<if test=\"password != null and password != ''\">#{password},</if>\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\n \t\t\t<if test=\"pwdUpdateDate != null\">#{pwdUpdateDate},</if>\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\n \t\t\tsysdate()\n \t\t)\n\t</insert>\n\t\n\t<update id=\"updateUser\" parameterType=\"SysUser\">\n \t\tupdate sys_user\n \t\t<set>\n \t\t\t<if test=\"deptId != null and deptId != 0\">dept_id = #{deptId},</if>\n \t\t\t<if test=\"nickName != null and nickName != ''\">nick_name = #{nickName},</if>\n \t\t\t<if test=\"email != null \">email = #{email},</if>\n \t\t\t<if test=\"phonenumber != null \">phonenumber = #{phonenumber},</if>\n \t\t\t<if test=\"sex != null and sex != ''\">sex = #{sex},</if>\n \t\t\t<if test=\"avatar != null and avatar != ''\">avatar = #{avatar},</if>\n \t\t\t<if test=\"password != null and password != ''\">password = #{password},</if>\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\n \t\t\t<if test=\"loginIp != null and loginIp != ''\">login_ip = #{loginIp},</if>\n \t\t\t<if test=\"loginDate != null\">login_date = #{loginDate},</if>\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\n\t\t\t<if test=\"creditScore != null\">credit_score = #{creditScore},</if>\n \t\t\tupdate_time = sysdate()\n \t\t</set>\n \t\twhere user_id = #{userId}\n\t</update>\n\t\n\t<update id=\"updateUserStatus\" parameterType=\"SysUser\">\n \t\tupdate sys_user set status = #{status} where user_id = #{userId}\n\t</update>\n\t\n\t<update id=\"updateUserAvatar\" parameterType=\"SysUser\">\n \t\tupdate sys_user set avatar = #{avatar} where user_id = #{userId}\n\t</update>\n\t\n\t<update id=\"resetUserPwd\" parameterType=\"SysUser\">\n \t\tupdate sys_user set pwd_update_date = sysdate(), password = #{password} where user_id = #{userId}\n\t</update>\n\t\n\t<delete id=\"deleteUserById\" parameterType=\"Long\">\n \t\tupdate sys_user set del_flag = '2' where user_id = #{userId}\n \t</delete>\n \t\n \t<delete id=\"deleteUserByIds\" parameterType=\"Long\">\n \t\tupdate sys_user set del_flag = '2' where user_id in\n \t\t<foreach collection=\"array\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\n \t\t\t#{userId}\n </foreach> \n \t</delete>\n\t\n\t<select id=\"selectUserCount\" resultType=\"int\">\n\t\tselect count(1) from sys_user where del_flag = '0'\n\t</select>\n</mapper> "}}}}