1 line
414 KiB
JSON
1 line
414 KiB
JSON
{"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') >= 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') <= 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') >= 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') <= 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 > #{$javaField}</if>\n#elseif($queryType == \"GTE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName >= #{$javaField}</if>\n#elseif($queryType == \"LT\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName < #{$javaField}</if>\n#elseif($queryType == \"LTE\")\n <if test=\"$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end\"> and $columnName <= #{$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') >= 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') <= 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 >= #{params.beginPrice}\n </if>\n <if test=\"params.endPrice != null and params.endPrice != ''\">\n and g.price <= #{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 > 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 >= #{minPrice}\n </if>\n <if test=\"maxPrice != null\">\n and g.price <= #{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') >= 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') <= 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') >= 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') <= 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 >= #{params.beginTime}\n </if>\n <if test=\"params.endTime != null and params.endTime != ''\">\n and o.create_time <= #{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 >= #{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 <= #{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') >= 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') <= 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 >= #{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 <= #{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') >= 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') <= 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> "}}}} |