{"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": "\n\n\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 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 list = configService.selectConfigList(config);\n ExcelUtil util = new ExcelUtil(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 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\n\n\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 securitySchemes()\n {\n List apiKeyList = new ArrayList();\n apiKeyList.add(new ApiKey(\"Authorization\", \"Authorization\", In.HEADER.toValue()));\n return apiKeyList;\n }\n\n /**\n * 安全上下文\n */\n private List securityContexts()\n {\n List 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 defaultAuth()\n {\n AuthorizationScope authorizationScope = new AuthorizationScope(\"global\", \"accessEverything\");\n AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];\n authorizationScopes[0] = authorizationScope;\n List 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": "\n\n\n \n \n \n \n \n \n \n \n\t\t\n \n \n\t\t\n\t\n\t\n\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=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{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 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 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(\"
\", \"\");\n text = text.replaceAll(\"powered.*?shrek.wang\", \"\");\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 initParameters = new HashMap();\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 allResult = new ArrayList();\n try\n {\n for (String aliasesPackage : typeAliasesPackage.split(\",\"))\n {\n List result = new ArrayList();\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 hashResult = new HashSet(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 resources = new ArrayList();\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 selectDbTableColumnsByName(String tableName);\n\n /**\n * 查询业务字段列表\n * \n * @param tableId 业务字段编号\n * @return 业务字段集合\n */\n public List 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 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 redisTemplate(RedisConnectionFactory connectionFactory)\n {\n RedisTemplate 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 limitScript()\n {\n DefaultRedisScript 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": "\n\n\n\n\t\n\t \n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t\n\t\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 \n \n \n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n insert into gen_table (\n\t\t\ttable_name,\n\t\t\ttable_comment,\n\t\t\tclass_name,\n\t\t\ttpl_category,\n\t\t\ttpl_web_type,\n\t\t\tpackage_name,\n\t\t\tmodule_name,\n\t\t\tbusiness_name,\n\t\t\tfunction_name,\n\t\t\tfunction_author,\n\t\t\tgen_type,\n\t\t\tgen_path,\n\t\t\tremark,\n \t\t\tcreate_by,\n\t\t\tcreate_time\n )values(\n\t\t\t#{tableName},\n\t\t\t#{tableComment},\n\t\t\t#{className},\n\t\t\t#{tplCategory},\n\t\t\t#{tplWebType},\n\t\t\t#{packageName},\n\t\t\t#{moduleName},\n\t\t\t#{businessName},\n\t\t\t#{functionName},\n\t\t\t#{functionAuthor},\n\t\t\t#{genType},\n\t\t\t#{genPath},\n\t\t\t#{remark},\n \t\t\t#{createBy},\n\t\t\tsysdate()\n )\n \n \n \n ${sql}\n \n \n \n update gen_table\n \n table_name = #{tableName},\n table_comment = #{tableComment},\n sub_table_name = #{subTableName},\n sub_table_fk_name = #{subTableFkName},\n class_name = #{className},\n function_author = #{functionAuthor},\n gen_type = #{genType},\n gen_path = #{genPath},\n tpl_category = #{tplCategory},\n tpl_web_type = #{tplWebType},\n package_name = #{packageName},\n module_name = #{moduleName},\n business_name = #{businessName},\n function_name = #{functionName},\n options = #{options},\n update_by = #{updateBy},\n remark = #{remark},\n update_time = sysdate()\n \n where table_id = #{tableId}\n \n \n \n delete from gen_table where table_id in \n \n #{tableId}\n \n \n\n"}}, "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 selectGenTableList(GenTable genTable);\n\n /**\n * 查询据库列表\n * \n * @param genTable 业务信息\n * @return 数据库表集合\n */\n public List selectDbTableList(GenTable genTable);\n\n /**\n * 查询据库列表\n * \n * @param tableNames 表名称组\n * @return 数据库表集合\n */\n public List selectDbTableListByNames(String[] tableNames);\n\n /**\n * 查询所有表信息\n * \n * @return 表信息集合\n */\n public List 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": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\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 \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_job where job_id = #{jobId}\n \t\n \t\n \t\n \t\tdelete from sys_job where job_id in\n \t\t\n \t\t\t#{jobId}\n \n \t\n \t\n \t\n \t\tupdate sys_job\n \t\t\n \t\t\tjob_name = #{jobName},\n \t\t\tjob_group = #{jobGroup},\n \t\t\tinvoke_target = #{invokeTarget},\n \t\t\tcron_expression = #{cronExpression},\n \t\t\tmisfire_policy = #{misfirePolicy},\n \t\t\tconcurrent = #{concurrent},\n \t\t\tstatus = #{status},\n \t\t\tremark = #{remark},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere job_id = #{jobId}\n\t\n \t\n \t\n \t\tinsert into sys_job(\n \t\t\tjob_id,\n \t\t\tjob_name,\n \t\t\tjob_group,\n \t\t\tinvoke_target,\n \t\t\tcron_expression,\n \t\t\tmisfire_policy,\n \t\t\tconcurrent,\n \t\t\tstatus,\n \t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{jobId},\n \t\t\t#{jobName},\n \t\t\t#{jobGroup},\n \t\t\t#{invokeTarget},\n \t\t\t#{cronExpression},\n \t\t\t#{misfirePolicy},\n \t\t\t#{concurrent},\n \t\t\t#{status},\n \t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\n "}}, "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 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": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\t\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 \n\n \n\n \n\n \n insert into gen_table_column (\n\t\t\ttable_id,\n\t\t\tcolumn_name,\n\t\t\tcolumn_comment,\n\t\t\tcolumn_type,\n\t\t\tjava_type,\n\t\t\tjava_field,\n\t\t\tis_pk,\n\t\t\tis_increment,\n\t\t\tis_required,\n\t\t\tis_insert,\n\t\t\tis_edit,\n\t\t\tis_list,\n\t\t\tis_query,\n\t\t\tquery_type,\n\t\t\thtml_type,\n\t\t\tdict_type,\n\t\t\tsort,\n\t\t\tcreate_by,\n\t\t\tcreate_time\n )values(\n\t\t\t#{tableId},\n\t\t\t#{columnName},\n\t\t\t#{columnComment},\n\t\t\t#{columnType},\n\t\t\t#{javaType},\n\t\t\t#{javaField},\n\t\t\t#{isPk},\n\t\t\t#{isIncrement},\n\t\t\t#{isRequired},\n\t\t\t#{isInsert},\n\t\t\t#{isEdit},\n\t\t\t#{isList},\n\t\t\t#{isQuery},\n\t\t\t#{queryType},\n\t\t\t#{htmlType},\n\t\t\t#{dictType},\n\t\t\t#{sort},\n\t\t\t#{createBy},\n\t\t\tsysdate()\n )\n \n\n \n update gen_table_column\n \n column_comment = #{columnComment},\n java_type = #{javaType},\n java_field = #{javaField},\n is_insert = #{isInsert},\n is_edit = #{isEdit},\n is_list = #{isList},\n is_query = #{isQuery},\n is_required = #{isRequired},\n query_type = #{queryType},\n html_type = #{htmlType},\n dict_type = #{dictType},\n sort = #{sort},\n update_by = #{updateBy},\n update_time = sysdate()\n \n where column_id = #{columnId}\n \n\n \n delete from gen_table_column where table_id in\n \n #{tableId}\n \n \n\n \n delete from gen_table_column where column_id in\n \n #{item.columnId}\n \n \n\n"}}, "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 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": "\n\n\n \n \n#foreach ($column in $columns)\n \n#end\n \n#if($table.sub)\n\n \n \n \n\n \n#foreach ($column in $subTable.columns)\n \n#end\n \n#end\n\n \n select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}\n \n\n \n \n \n#if($table.sub)\n\n \n#end\n\n \n insert into ${tableName}\n \n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)\n $column.columnName,\n#end\n#end\n \n \n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)\n #{$column.javaField},\n#end\n#end\n \n \n\n \n update ${tableName}\n \n#foreach($column in $columns)\n#if($column.columnName != $pkColumn.columnName)\n $column.columnName = #{$column.javaField},\n#end\n#end\n \n where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n \n\n \n delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}\n \n\n \n delete from ${tableName} where ${pkColumn.columnName} in \n \n #{${pkColumn.javaField}}\n \n \n#if($table.sub)\n \n \n delete from ${subTableName} where ${subTableFkName} in \n \n #{${subTableFkclassName}}\n \n \n\n \n delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}\n \n\n \n insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values\n \n (#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)\n \n \n#end\n"}}, "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 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 selectCommentsByGoodsId(Long goodsId);\n\n /**\n * 查询求购的所有评论(包含回复)\n * \n * @param demandId 求购ID\n * @return 评论集合\n */\n public List selectCommentsByDemandId(Long demandId);\n\n /**\n * 查询主评论列表(parent_id = 0),带回复数量统计\n * \n * @param marketComment 查询条件\n * @return 主评论集合\n */\n public List selectMainCommentList(MarketComment marketComment);\n\n /**\n * 根据父评论ID查询子回复列表\n * \n * @param parentId 父评论ID\n * @return 子回复集合\n */\n public List 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 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 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 selectJobList(SysJob job);\n\n /**\n * 查询所有调度任务\n * \n * @return 调度任务列表\n */\n public List 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 selectJobLogList(SysJobLog jobLog);\n\n /**\n * 查询所有调度任务日志\n *\n * @return 调度任务日志列表\n */\n public List 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": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\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 \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_job_log where job_log_id = #{jobLogId}\n \t\n \t\n \t\n \t\tdelete from sys_job_log where job_log_id in\n \t\t\n \t\t\t#{jobLogId}\n \n \t\n \t\n \t\n truncate table sys_job_log\n \n \t\n \t\n \t\tinsert into sys_job_log(\n \t\t\tjob_log_id,\n \t\t\tjob_name,\n \t\t\tjob_group,\n \t\t\tinvoke_target,\n \t\t\tjob_message,\n \t\t\tstatus,\n \t\t\texception_info,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{jobLogId},\n \t\t\t#{jobName},\n \t\t\t#{jobGroup},\n \t\t\t#{invokeTarget},\n \t\t\t#{jobMessage},\n \t\t\t#{status},\n \t\t\t#{exceptionInfo},\n \t\t\tsysdate()\n \t\t)\n\t\n\n "}}, "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 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 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 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 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 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> 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 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 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> 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 selectMarketSensitiveWordList(MarketSensitiveWord marketSensitiveWord);\n\n /**\n * 查询所有启用的敏感词\n * \n * @return 敏感词集合\n */\n public List 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 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 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 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 selectDictDataList(SysDictData dictData);\n\n /**\n * 根据字典类型查询字典数据\n * \n * @param dictType 字典类型\n * @return 字典数据集合信息\n */\n public List 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 selectDeptList(SysDept dept);\n\n /**\n * 根据角色ID查询部门树信息\n * \n * @param roleId 角色ID\n * @param deptCheckStrictly 部门树选择项是否关联显示\n * @return 选中部门列表\n */\n public List 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 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 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 selectDictTypeList(SysDictType dictType);\n\n /**\n * 根据所有字典类型\n * \n * @return 字典类型集合信息\n */\n public List 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 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 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 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 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 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 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 selectMenuList(SysMenu menu);\n\n /**\n * 根据用户所有权限\n *\n * @return 权限列表\n */\n public List selectMenuPerms();\n\n /**\n * 根据用户查询系统菜单列表\n *\n * @param menu 菜单信息\n * @return 菜单列表\n */\n public List selectMenuListByUserId(SysMenu menu);\n\n /**\n * 根据角色ID查询权限\n * \n * @param roleId 角色ID\n * @return 权限列表\n */\n public List selectMenuPermsByRoleId(Long roleId);\n\n /**\n * 根据用户ID查询权限\n *\n * @param userId 用户ID\n * @return 权限列表\n */\n public List selectMenuPermsByUserId(Long userId);\n\n /**\n * 根据用户ID查询菜单\n *\n * @return 菜单列表\n */\n public List selectMenuTreeAll();\n\n /**\n * 根据用户ID查询菜单\n *\n * @param userId 用户ID\n * @return 菜单列表\n */\n public List selectMenuTreeByUserId(Long userId);\n\n /**\n * 根据角色ID查询菜单树信息\n * \n * @param roleId 角色ID\n * @param menuCheckStrictly 菜单树选择项是否关联显示\n * @return 选中菜单列表\n */\n public List 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 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 selectPostList(SysPost post);\n\n /**\n * 查询所有岗位\n * \n * @return 岗位列表\n */\n public List 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 selectPostListByUserId(Long userId);\n\n /**\n * 查询用户所属岗位组\n * \n * @param userName 用户名\n * @return 结果\n */\n public List 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 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 selectRoleList(SysRole role);\n\n /**\n * 根据用户ID查询角色\n * \n * @param userId 用户ID\n * @return 角色列表\n */\n public List selectRolePermissionByUserId(Long userId);\n\n /**\n * 查询所有角色\n * \n * @return 角色列表\n */\n public List selectRoleAll();\n\n /**\n * 根据用户ID获取角色选择框列表\n * \n * @param userId 用户ID\n * @return 选中角色ID列表\n */\n public List 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 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 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 selectUserList(SysUser sysUser);\n\n /**\n * 根据条件分页查询已配用户角色列表\n * \n * @param user 用户信息\n * @return 用户信息集合信息\n */\n public List selectAllocatedList(SysUser user);\n\n /**\n * 根据条件分页查询未分配用户角色列表\n * \n * @param user 用户信息\n * @return 用户信息集合信息\n */\n public List 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 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 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 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 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 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 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 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": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n\n \n \n \n insert into market_comment\n \n goods_id,\n demand_id,\n user_id,\n parent_id,\n content,\n rating,\n images,\n like_count,\n status,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n \n \n #{goodsId},\n #{demandId},\n #{userId},\n #{parentId},\n #{content},\n #{rating},\n #{images},\n #{likeCount},\n #{status},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n \n \n\n \n update market_comment\n \n content = #{content},\n rating = #{rating},\n images = #{images},\n status = #{status},\n update_by = #{updateBy},\n update_time = #{updateTime},\n audit_user_id = #{auditUserId},\n audit_time = #{auditTime},\n audit_remark = #{auditRemark},\n hit_words = #{hitWords},\n \n where comment_id = #{commentId}\n \n\n \n update market_comment set del_flag = '2' where comment_id = #{commentId}\n \n\n \n update market_comment set del_flag = '2' where comment_id in \n \n #{commentId}\n \n \n\n \n \n\n \n \n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketCartMapper.xml": {"3d36bb747b9bd4e728e48aa24d9f8ca950a1fc92": {"t": 1785599293.5622249, "n": 5148, "h": "cd2fcb570b9d482e", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_cart\n \n user_id,\n goods_id,\n quantity,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n \n \n #{userId},\n #{goodsId},\n #{quantity},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n \n \n\n \n update market_cart\n \n quantity = #{quantity},\n update_by = #{updateBy},\n update_time = #{updateTime},\n \n where cart_id = #{cartId}\n \n\n \n update market_cart set quantity = #{quantity}, update_time = sysdate() where cart_id = #{cartId}\n \n\n \n update market_cart set del_flag = '2' where cart_id = #{cartId}\n \n\n \n update market_cart set del_flag = '2' where cart_id in \n \n #{cartId}\n \n \n\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketFavoriteMapper.xml": {"b24aa158181295422d9043e3c04971cae9424b0a": {"t": 1785599293.6228104, "n": 4426, "h": "cc5ee5e309738c5e", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_favorite\n \n user_id,\n goods_id,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n \n \n #{userId},\n #{goodsId},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n \n \n\n \n update market_favorite\n \n update_by = #{updateBy},\n update_time = #{updateTime},\n \n where favorite_id = #{favoriteId}\n \n\n \n delete from market_favorite where favorite_id = #{favoriteId}\n \n\n \n delete from market_favorite where favorite_id in \n \n #{favoriteId}\n \n \n\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketCategoryMapper.xml": {"ec081a7f3ef2a9d2792a5158709f00fa1f5a4bee": {"t": 1785599293.691941, "n": 5256, "h": "bd9667d8b906a6de", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_category\n \n category_name,\n parent_id,\n order_num,\n icon,\n status,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{categoryName},\n #{parentId},\n #{orderNum},\n #{icon},\n #{status},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_category\n \n category_name = #{categoryName},\n parent_id = #{parentId},\n order_num = #{orderNum},\n icon = #{icon},\n status = #{status},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n \n where category_id = #{categoryId}\n \n\n \n update market_category set del_flag = '2' where category_id = #{categoryId}\n \n\n \n update market_category set del_flag = '2' where category_id in \n \n #{categoryId}\n \n \n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/course/CourseMapper.xml": {"aad89f34a248f2fc6e71de60ac31790b1c6a2efa": {"t": 1785599293.8209302, "n": 4261, "h": "06b067acb642fd18", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n select id, code, subject, name, price, applicable_person, info, create_time, update_time from tb_course\n \n\n \n \n \n\n \n insert into tb_course\n \n code,\n subject,\n name,\n price,\n applicable_person,\n info,\n create_time,\n update_time,\n \n \n #{code},\n #{subject},\n #{name},\n #{price},\n #{applicablePerson},\n #{info},\n #{createTime},\n #{updateTime},\n \n \n\n \n update tb_course\n \n code = #{code},\n subject = #{subject},\n name = #{name},\n price = #{price},\n applicable_person = #{applicablePerson},\n info = #{info},\n create_time = #{createTime},\n update_time = #{updateTime},\n \n where id = #{id}\n \n\n \n delete from tb_course where id = #{id}\n \n\n \n delete from tb_course where id in \n \n #{id}\n \n \n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketHistoryMapper.xml": {"5c3d94bd3827405037937a6f584d97617bd4590a": {"t": 1785599294.483541, "n": 3994, "h": "a960747ecd1312fb", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n \n \n insert into market_history\n \n user_id,\n goods_id,\n view_time,\n \n \n #{userId},\n #{goodsId},\n #{viewTime},\n \n \n\n \n update market_history\n \n view_time = #{viewTime},\n \n where history_id = #{historyId}\n \n\n \n delete from market_history where history_id = #{historyId}\n \n\n \n delete from market_history where history_id in \n \n #{historyId}\n \n \n \n \n \n \n update market_history set view_time = sysdate() where history_id = #{historyId}\n \n \n \n \n \n \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 \n \n \n delete from market_history where user_id = #{userId}\n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketGoodsMapper.xml": {"6397bf288b472d51615ccc9b291bbe7bf75eb7f0": {"t": 1785599294.4983726, "n": 13583, "h": "3cdc7fc630666abf", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n \n \n insert into market_goods\n \n goods_title,\n goods_desc,\n category_id,\n price,\n original_price,\n images,\n seller_id,\n goods_status,\n view_count,\n favorite_count,\n contact_way,\n location,\n is_new,\n del_flag,\n audit_status,\n audit_remark,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{goodsTitle},\n #{goodsDesc},\n #{categoryId},\n #{price},\n #{originalPrice},\n #{images},\n #{sellerId},\n #{goodsStatus},\n #{viewCount},\n #{favoriteCount},\n #{contactWay},\n #{location},\n #{isNew},\n #{delFlag},\n #{auditStatus},\n #{auditRemark},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_goods\n \n goods_title = #{goodsTitle},\n goods_desc = #{goodsDesc},\n category_id = #{categoryId},\n price = #{price},\n original_price = #{originalPrice},\n images = #{images},\n goods_status = #{goodsStatus},\n contact_way = #{contactWay},\n location = #{location},\n is_new = #{isNew},\n audit_status = #{auditStatus},\n audit_remark = #{auditRemark},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n \n where goods_id = #{goodsId}\n \n\n \n update market_goods set del_flag = '2' where goods_id = #{goodsId}\n \n\n \n update market_goods set del_flag = '2' where goods_id in \n \n #{goodsId}\n \n \n\n \n update market_goods set view_count = view_count + 1 where goods_id = #{goodsId}\n \n\n \n update market_goods set favorite_count = favorite_count + #{count} where goods_id = #{goodsId}\n \n\n \n update market_goods set goods_status = #{goodsStatus} where goods_id = #{goodsId}\n \n\n \n update market_goods \n set stock = stock - 1 \n where goods_id = #{goodsId} and stock > 0\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n\n \n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketMessageMapper.xml": {"b4aa07cfda9b9d6370ea51115c13d12ae7989dbe": {"t": 1785599294.5653327, "n": 4868, "h": "e3ea3d07adda19eb", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n select message_id, user_id, sender_id, message_type, title, content, target_id, is_read, del_flag, create_time from market_message\n \n\n \n \n \n \n \n insert into market_message\n \n user_id,\n sender_id,\n message_type,\n title,\n content,\n target_id,\n is_read,\n del_flag,\n create_time,\n \n \n #{userId},\n #{senderId},\n #{messageType},\n #{title},\n #{content},\n #{targetId},\n #{isRead},\n #{delFlag},\n #{createTime},\n \n \n\n \n update market_message\n \n user_id = #{userId},\n sender_id = #{senderId},\n message_type = #{messageType},\n title = #{title},\n content = #{content},\n target_id = #{targetId},\n is_read = #{isRead},\n del_flag = #{delFlag},\n create_time = #{createTime},\n \n where message_id = #{messageId}\n \n\n \n update market_message set del_flag = '2' where message_id in \n \n #{messageId}\n \n \n\n \n update market_message set is_read = '1' where message_id in \n \n #{messageId}\n \n \n \n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketDemandMapper.xml": {"86a2ed7cb25f30cc0888ae0be88f4d947fa6a045": {"t": 1785599294.7245908, "n": 5585, "h": "2d9ba46cbee3175b", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n \n \n insert into market_demand\n \n user_id,\n title,\n budget,\n description,\n contact_way,\n status,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{userId},\n #{title},\n #{budget},\n #{description},\n #{contactWay},\n #{status},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_demand\n \n user_id = #{userId},\n title = #{title},\n budget = #{budget},\n description = #{description},\n contact_way = #{contactWay},\n status = #{status},\n del_flag = #{delFlag},\n create_by = #{createBy},\n create_time = #{createTime},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n \n where demand_id = #{demandId}\n \n\n \n update market_demand set del_flag = '2' where demand_id = #{demandId}\n \n\n \n update market_demand set del_flag = '2' where demand_id in \n \n #{demandId}\n \n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketNoticeMapper.xml": {"b5a73f3aafa363dcceb5d9a1509bca0ed28abf43": {"t": 1785599294.8043025, "n": 5852, "h": "499d13fba91b16df", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_notice\n \n notice_title,\n notice_content,\n notice_type,\n status,\n view_count,\n is_top,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{noticeTitle},\n #{noticeContent},\n #{noticeType},\n #{status},\n #{viewCount},\n #{isTop},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_notice\n \n notice_title = #{noticeTitle},\n notice_content = #{noticeContent},\n notice_type = #{noticeType},\n status = #{status},\n is_top = #{isTop},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n \n where notice_id = #{noticeId}\n \n\n \n update market_notice set view_count = view_count + 1 where notice_id = #{noticeId}\n \n\n \n update market_notice set del_flag = '2' where notice_id = #{noticeId}\n \n\n \n update market_notice set del_flag = '2' where notice_id in \n \n #{noticeId}\n \n \n\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysChatMsgMapper.xml": {"a4eb350562b7d74ff17321d9999931991b2c92de": {"t": 1785599294.9227614, "n": 6785, "h": "bf334bb44f195ec2", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n select msg_id, sender_id, receiver_id, content, msg_type, is_read, del_flag, create_time from sys_chat_msg\n \n\n \n \n \n \n \n insert into sys_chat_msg\n \n sender_id,\n receiver_id,\n content,\n msg_type,\n is_read,\n del_flag,\n create_time,\n \n \n #{senderId},\n #{receiverId},\n #{content},\n #{msgType},\n #{isRead},\n #{delFlag},\n #{createTime},\n \n \n\n \n update sys_chat_msg\n \n sender_id = #{senderId},\n receiver_id = #{receiverId},\n content = #{content},\n msg_type = #{msgType},\n is_read = #{isRead},\n del_flag = #{delFlag},\n create_time = #{createTime},\n \n where msg_id = #{msgId}\n \n\n \n delete from sys_chat_msg where msg_id = #{msgId}\n \n\n \n delete from sys_chat_msg where msg_id in \n \n #{msgId}\n \n \n \n \n \n \n \n \n \n \n \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 \n \n \n \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 \n \n \n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/market/MarketSensitiveWordMapper.xml": {"6e429d032d3025720ffda8cfdabbca043424b09c": {"t": 1785599294.9870293, "n": 4688, "h": "0916a990266f2594", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_sensitive_word\n \n word,\n word_type,\n replace_char,\n is_enabled,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{word},\n #{wordType},\n #{replaceChar},\n #{isEnabled},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_sensitive_word\n \n word = #{word},\n word_type = #{wordType},\n replace_char = #{replaceChar},\n is_enabled = #{isEnabled},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n \n where word_id = #{wordId}\n \n\n \n delete from market_sensitive_word where word_id = #{wordId}\n \n\n \n delete from market_sensitive_word where word_id in \n \n #{wordId}\n \n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysConfigMapper.xml": {"f47076f52b46c6361fba9740a9528c79b72b96ab": {"t": 1785599295.0146542, "n": 4921, "h": "b3894f0b5cf07d6d", "c": "\n\n\n \n \n \t\n \n \n \n \n \n \n \n \n \n \n \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 \n \n \n\t\n\t\t\n\t\t\t\n\t\t\t\tand config_id = #{configId}\n\t\t\t\n\t\t\t\n\t\t\t\tand config_key = #{configKey}\n\t\t\t\n\t\t\n\t\n \n \n \n \n \n \n\t\n \n \n \n insert into sys_config (\n\t\t\tconfig_name,\n\t\t\tconfig_key,\n\t\t\tconfig_value,\n\t\t\tconfig_type,\n\t\t\tcreate_by,\n\t\t\tremark,\n \t\t\tcreate_time\n )values(\n\t\t\t#{configName},\n\t\t\t#{configKey},\n\t\t\t#{configValue},\n\t\t\t#{configType},\n\t\t\t#{createBy},\n\t\t\t#{remark},\n \t\t\tsysdate()\n\t\t)\n \n\t \n \n update sys_config \n \n config_name = #{configName},\n config_key = #{configKey},\n config_value = #{configValue},\n config_type = #{configType},\n update_by = #{updateBy},\n remark = #{remark},\n \t\t\tupdate_time = sysdate()\n \n where config_id = #{configId}\n \n\t\n \n delete from sys_config where config_id = #{configId}\n \n \n \n delete from sys_config where config_id in \n \n \t#{configId}\n \n \n \n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysDeptMapper.xml": {"ac9f9c6356bc7aee82b9785e38ace40f241f898b": {"t": 1785599295.1649706, "n": 6617, "h": "9cc43574f5854338", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\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 \n \n\t\n \n \n \n \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \n \n \t\tinsert into sys_dept(\n \t\t\tdept_id,\n \t\t\tparent_id,\n \t\t\tdept_name,\n \t\t\tancestors,\n \t\t\torder_num,\n \t\t\tleader,\n \t\t\tphone,\n \t\t\temail,\n \t\t\tstatus,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{deptId},\n \t\t\t#{parentId},\n \t\t\t#{deptName},\n \t\t\t#{ancestors},\n \t\t\t#{orderNum},\n \t\t\t#{leader},\n \t\t\t#{phone},\n \t\t\t#{email},\n \t\t\t#{status},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n\t\n \t\tupdate sys_dept\n \t\t\n \t\t\tparent_id = #{parentId},\n \t\t\tdept_name = #{deptName},\n \t\t\tancestors = #{ancestors},\n \t\t\torder_num = #{orderNum},\n \t\t\tleader = #{leader},\n \t\t\tphone = #{phone},\n \t\t\temail = #{email},\n \t\t\tstatus = #{status},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere dept_id = #{deptId}\n\t\n\t\n\t\n\t update sys_dept set ancestors =\n\t \n\t when #{item.deptId} then #{item.ancestors}\n\t \n\t where dept_id in\n\t \n\t #{item.deptId}\n\t \n\t\n\t \n\t\n \t update sys_dept set status = '0' where dept_id in \n \t \n \t#{deptId}\n \n\t\n\t\n\t\n\t\tupdate sys_dept set del_flag = '2' where dept_id = #{deptId}\n\t\n\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysCreditLogMapper.xml": {"e9cc9801b64ab0ad672150ca997844399c4e7c14": {"t": 1785599295.3835812, "n": 2441, "h": "eff8824837bc186b", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n\n \n select log_id, user_id, type, score_change, reason, ref_id, create_time from sys_credit_log\n \n\n \n \n \n \n \n insert into sys_credit_log\n \n user_id,\n type,\n score_change,\n reason,\n ref_id,\n create_time,\n \n \n #{userId},\n #{type},\n #{scoreChange},\n #{reason},\n #{refId},\n #{createTime},\n \n \n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysDictTypeMapper.xml": {"09338bd59fdb972c57473983d0f4c6571726cafc": {"t": 1785599295.4860272, "n": 4011, "h": "416d8af4053fa161", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\n select dict_id, dict_name, dict_type, status, create_by, create_time, remark \n\t\tfrom sys_dict_type\n \n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_dict_type where dict_id = #{dictId}\n \t\n \t\n \t\n \t\tdelete from sys_dict_type where dict_id in\n \t\t\n \t\t\t#{dictId}\n \n \t\n\n \t\n \t\tupdate sys_dict_type\n \t\t\n \t\t\tdict_name = #{dictName},\n \t\t\tdict_type = #{dictType},\n \t\t\tstatus = #{status},\n \t\t\tremark = #{remark},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere dict_id = #{dictId}\n\t\n \t\n \t\n \t\tinsert into sys_dict_type(\n \t\t\tdict_name,\n \t\t\tdict_type,\n \t\t\tstatus,\n \t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{dictName},\n \t\t\t#{dictType},\n \t\t\t#{status},\n \t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/market/MarketOrderMapper.xml": {"a82e276d4042275c14993b6a1b502b532144bea3": {"t": 1785599295.4923236, "n": 11774, "h": "823eb99331ff8704", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \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 \n\n \n \n \n\n \n \n \n insert into market_order\n \n order_no,\n buyer_id,\n seller_id,\n goods_id,\n goods_title,\n goods_image,\n price,\n quantity,\n total_amount,\n order_status,\n pay_status,\n pay_time,\n pay_way,\n receiver_name,\n receiver_phone,\n receiver_address,\n ship_time,\n receive_time,\n cancel_reason,\n refund_reason,\n del_flag,\n create_by,\n create_time,\n update_by,\n update_time,\n remark,\n \n \n #{orderNo},\n #{buyerId},\n #{sellerId},\n #{goodsId},\n #{goodsTitle},\n #{goodsImage},\n #{price},\n #{quantity},\n #{totalAmount},\n #{orderStatus},\n #{payStatus},\n #{payTime},\n #{payWay},\n #{receiverName},\n #{receiverPhone},\n #{receiverAddress},\n #{shipTime},\n #{receiveTime},\n #{cancelReason},\n #{refundReason},\n #{delFlag},\n #{createBy},\n #{createTime},\n #{updateBy},\n #{updateTime},\n #{remark},\n \n \n\n \n update market_order\n \n goods_title = #{goodsTitle},\n goods_image = #{goodsImage},\n order_status = #{orderStatus},\n pay_status = #{payStatus},\n pay_time = #{payTime},\n pay_way = #{payWay},\n receiver_name = #{receiverName},\n receiver_phone = #{receiverPhone},\n receiver_address = #{receiverAddress},\n ship_time = #{shipTime},\n receive_time = #{receiveTime},\n cancel_reason = #{cancelReason},\n refund_reason = #{refundReason},\n update_by = #{updateBy},\n update_time = #{updateTime},\n remark = #{remark},\n is_commented = #{isCommented},\n \n where order_id = #{orderId}\n \n\n \n update market_order set del_flag = '2' where order_id = #{orderId}\n \n\n \n update market_order set del_flag = '2' where order_id in \n \n #{orderId}\n \n \n\n \n update market_order set order_status = #{orderStatus}, update_time = sysdate() where order_id = #{orderId}\n \n\n \n update market_order set pay_status = #{payStatus}, update_time = sysdate() where order_id = #{orderId}\n \n\t\n\n\t\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysLogininforMapper.xml": {"2525203c5873dd7eba25cb3e8abe55a2a34b84e2": {"t": 1785599295.4992945, "n": 2326, "h": "ca080b579a32614f", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\n\t\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\n\t\n\t\n\t\n\t\n \t\tdelete from sys_logininfor where info_id in\n \t\t\n \t\t\t#{infoId}\n \n \t\n \n \n truncate table sys_logininfor\n \n \n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysDictDataMapper.xml": {"5b71faf4ee5b19dfdfb6ae84cb69ac6224b97d82": {"t": 1785599295.5826132, "n": 5264, "h": "28fe10c554d99ec3", "c": "\n\n\n\t\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\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 \n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_dict_data where dict_code = #{dictCode}\n \t\n \t\n \t\n \t\tdelete from sys_dict_data where dict_code in\n \t\t\n \t\t\t#{dictCode}\n \n \t\n\t\n\t\n \t\tupdate sys_dict_data\n \t\t\n \t\t\tdict_sort = #{dictSort},\n \t\t\tdict_label = #{dictLabel},\n \t\t\tdict_value = #{dictValue},\n \t\t\tdict_type = #{dictType},\n \t\t\tcss_class = #{cssClass},\n \t\t\tlist_class = #{listClass},\n \t\t\tis_default = #{isDefault},\n \t\t\tstatus = #{status},\n \t\t\tremark = #{remark},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere dict_code = #{dictCode}\n\t\n\t\n\t\n \t\tupdate sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType}\n\t\n \t\n \t\n \t\tinsert into sys_dict_data(\n \t\t\tdict_sort,\n \t\t\tdict_label,\n \t\t\tdict_value,\n \t\t\tdict_type,\n \t\t\tcss_class,\n \t\t\tlist_class,\n \t\t\tis_default,\n \t\t\tstatus,\n \t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t #{dictSort},\n \t\t #{dictLabel},\n \t\t\t#{dictValue},\n \t\t\t#{dictType},\n \t\t\t#{cssClass},\n \t\t\t#{listClass},\n \t\t\t#{isDefault},\n \t\t\t#{status},\n \t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysMenuMapper.xml": {"87b2036fae2e1908c6e20422268aa7a1794faa12": {"t": 1785599295.6745224, "n": 9484, "h": "525c70c1b1b16a75", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\n\t\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 \n \n \n\t\n\t\n\t\n\t\n \n \n\t\n\t\n\t\n\t\n\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\tupdate sys_menu\n\t\t\n\t\t\tmenu_name = #{menuName},\n\t\t\tparent_id = #{parentId},\n\t\t\torder_num = #{orderNum},\n\t\t\tpath = #{path},\n\t\t\tcomponent = #{component},\n\t\t\t`query` = #{query},\n\t\t\troute_name = #{routeName},\n\t\t\tis_frame = #{isFrame},\n\t\t\tis_cache = #{isCache},\n\t\t\tmenu_type = #{menuType},\n\t\t\tvisible = #{visible},\n\t\t\tstatus = #{status},\n\t\t\tperms = #{perms},\n\t\t\ticon = #{icon},\n\t\t\tremark = #{remark},\n\t\t\tupdate_by = #{updateBy},\n\t\t\tupdate_time = sysdate()\n\t\t\n\t\twhere menu_id = #{menuId}\n\t\n\n\t\n\t\tinsert into sys_menu(\n\t\tmenu_id,\n\t\tparent_id,\n\t\tmenu_name,\n\t\torder_num,\n\t\tpath,\n\t\tcomponent,\n\t\t`query`,\n\t\troute_name,\n\t\tis_frame,\n\t\tis_cache,\n\t\tmenu_type,\n\t\tvisible,\n\t\tstatus,\n\t\tperms,\n\t\ticon,\n\t\tremark,\n\t\tcreate_by,\n\t\tcreate_time\n\t\t)values(\n\t\t#{menuId},\n\t\t#{parentId},\n\t\t#{menuName},\n\t\t#{orderNum},\n\t\t#{path},\n\t\t#{component},\n\t\t#{query},\n\t\t#{routeName},\n\t\t#{isFrame},\n\t\t#{isCache},\n\t\t#{menuType},\n\t\t#{visible},\n\t\t#{status},\n\t\t#{perms},\n\t\t#{icon},\n\t\t#{remark},\n\t\t#{createBy},\n\t\tsysdate()\n\t\t)\n\t\n\t\n\t\n\t delete from sys_menu where menu_id = #{menuId}\n\t\n\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysPostMapper.xml": {"26a22165211da7d429ce4486f7c8fc00fc83f1f8": {"t": 1785599296.5115628, "n": 4668, "h": "b043d005fb82a2a6", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\n select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark \n\t\tfrom sys_post\n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tupdate sys_post\n \t\t\n \t\t\tpost_code = #{postCode},\n \t\t\tpost_name = #{postName},\n \t\t\tpost_sort = #{postSort},\n \t\t\tstatus = #{status},\n \t\t\tremark = #{remark},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere post_id = #{postId}\n\t\n \t\n \t\n \t\tinsert into sys_post(\n \t\t\tpost_id,\n \t\t\tpost_code,\n \t\t\tpost_name,\n \t\t\tpost_sort,\n \t\t\tstatus,\n \t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{postId},\n \t\t\t#{postCode},\n \t\t\t#{postName},\n \t\t\t#{postSort},\n \t\t\t#{status},\n \t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n\t\n\t\tdelete from sys_post where post_id = #{postId}\n\t\n\t\n\t\n \t\tdelete from sys_post where post_id in\n \t\t\n \t\t\t#{postId}\n \n \t\n\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysNoticeMapper.xml": {"0411c60d844a9c79a40a3e79f6c5e8d2e1bfb1f1": {"t": 1785599296.5229464, "n": 3980, "h": "27e837bfefeef102", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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 \n \n \n \n \n \n \n insert into sys_notice (\n\t\t\tnotice_title, \n\t\t\tnotice_type, \n\t\t\tnotice_content, \n\t\t\tstatus, \n\t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n\t\t\t#{noticeTitle}, \n\t\t\t#{noticeType}, \n\t\t\t#{noticeContent}, \n\t\t\t#{status}, \n\t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n\t\t)\n \n\t \n \n update sys_notice \n \n notice_title = #{noticeTitle}, \n notice_type = #{noticeType}, \n notice_content = #{noticeContent}, \n status = #{status}, \n update_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \n where notice_id = #{noticeId}\n \n\t\n \n delete from sys_notice where notice_id = #{noticeId}\n \n \n \n delete from sys_notice where notice_id in \n \n #{noticeId}\n \n \n \n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml": {"daa25f4c2015c683315ba9a20821e46532b51342": {"t": 1785599296.590843, "n": 1114, "h": "4a7ba2fb5b0640b3", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\n\n\t\n\t\tdelete from sys_role_dept where role_id=#{roleId}\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_role_dept where role_id in\n \t\t\n \t\t\t#{roleId}\n \n \t\n\t\n\t\n\t\tinsert into sys_role_dept(role_id, dept_id) values\n\t\t\n\t\t\t(#{item.roleId},#{item.deptId})\n\t\t\n\t\n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml": {"40ce7bf3e2b96a3d4063a5d43c2238e035f4157b": {"t": 1785599296.6160069, "n": 1107, "h": "ff056667093d4024", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\n\t\n\t\n\n\t\n\t\tdelete from sys_role_menu where role_id=#{roleId}\n\t\n\t\n\t\n \t\tdelete from sys_role_menu where role_id in\n \t\t\n \t\t\t#{roleId}\n \n \t\n\t\n\t\n\t\tinsert into sys_role_menu(role_id, menu_id) values\n\t\t\n\t\t\t(#{item.roleId},#{item.menuId})\n\t\t\n\t\n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysRoleMapper.xml": {"3b83604d19fcdeccfcd11db1e3e877a5410e8605": {"t": 1785599296.6397974, "n": 6636, "h": "34e2848dc163e11a", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\t\n\t\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 \n \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\n \t\tinsert into sys_role(\n \t\t\trole_id,\n \t\t\trole_name,\n \t\t\trole_key,\n \t\t\trole_sort,\n \t\t\tdata_scope,\n \t\t\tmenu_check_strictly,\n \t\t\tdept_check_strictly,\n \t\t\tstatus,\n \t\t\tremark,\n \t\t\tcreate_by,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{roleId},\n \t\t\t#{roleName},\n \t\t\t#{roleKey},\n \t\t\t#{roleSort},\n \t\t\t#{dataScope},\n \t\t\t#{menuCheckStrictly},\n \t\t\t#{deptCheckStrictly},\n \t\t\t#{status},\n \t\t\t#{remark},\n \t\t\t#{createBy},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n\t\n \t\tupdate sys_role\n \t\t\n \t\t\trole_name = #{roleName},\n \t\t\trole_key = #{roleKey},\n \t\t\trole_sort = #{roleSort},\n \t\t\tdata_scope = #{dataScope},\n \t\t\tmenu_check_strictly = #{menuCheckStrictly},\n \t\t\tdept_check_strictly = #{deptCheckStrictly},\n \t\t\tstatus = #{status},\n \t\t\tremark = #{remark},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere role_id = #{roleId}\n\t\n\t\n\t\n \t\tupdate sys_role set del_flag = '2' where role_id = #{roleId}\n \t\n \t\n \t\n \t update sys_role set del_flag = '2' where role_id in\n \t\t\n \t\t\t#{roleId}\n \n \t\n \t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysOperLogMapper.xml": {"6a0cd759490f00c5c3fb1fdbdc728e43d1ae92b5": {"t": 1785599296.914498, "n": 3783, "h": "7b2a85b167d2724c", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n\n\t\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 \n \n\t\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\n\t\n\t\n\t\n\t\n \t\tdelete from sys_oper_log where oper_id in\n \t\t\n \t\t\t#{operId}\n \n \t\n \t\n \t\n\t\n\t\n truncate table sys_oper_log\n \n\n "}}, "CampusReuse-system/src/main/resources/mapper/system/TestDemoMapper.xml": {"86eb5bb7892485a40b5e8e352d2fd54708138be0": {"t": 1785599297.1118188, "n": 3873, "h": "b89761bd6774fed3", "c": "\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n select id, name, value, status, remark, create_time, update_time, create_by, update_by from test_demo\n \n\n \n \n \n\n \n insert into test_demo\n \n name,\n value,\n status,\n remark,\n create_time,\n update_time,\n create_by,\n update_by,\n \n \n #{name},\n #{value},\n #{status},\n #{remark},\n #{createTime},\n #{updateTime},\n #{createBy},\n #{updateBy},\n \n \n\n \n update test_demo\n \n name = #{name},\n value = #{value},\n status = #{status},\n remark = #{remark},\n create_time = #{createTime},\n update_time = #{updateTime},\n create_by = #{createBy},\n update_by = #{updateBy},\n \n where id = #{id}\n \n\n \n delete from test_demo where id = #{id}\n \n\n \n delete from test_demo where id in \n \n #{id}\n \n \n"}}, "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": "\n\n\n"}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserRoleMapper.xml": {"0970be108c677dddb21a37f55a2ccaae946841ac": {"t": 1785599297.2568197, "n": 1503, "h": "e5e926fef686890d", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\n\n\t\n\t\tdelete from sys_user_role where user_id=#{userId}\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_user_role where user_id in\n \t\t\n \t\t\t#{userId}\n \n \t\n\t\n\t\n\t\tinsert into sys_user_role(user_id, role_id) values\n\t\t\n\t\t\t(#{item.userId},#{item.roleId})\n\t\t\n\t\n\t\n\t\n\t\tdelete from sys_user_role where user_id=#{userId} and role_id=#{roleId}\n\t\n\t\n\t\n\t delete from sys_user_role where role_id=#{roleId} and user_id in\n \t \n \t #{userId}\n \n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserPostMapper.xml": {"c39e219e1f859d67a198b118ce2f27a0f6dd974e": {"t": 1785599298.1650538, "n": 1106, "h": "024d6b583d395a17", "c": "\n\n\n\n\t\n\t\t\n\t\t\n\t\n\n\t\n\t\tdelete from sys_user_post where user_id=#{userId}\n\t\n\t\n\t\n\t\n\t\n \t\tdelete from sys_user_post where user_id in\n \t\t\n \t\t\t#{userId}\n \n \t\n\t\n\t\n\t\tinsert into sys_user_post(user_id, post_id) values\n\t\t\n\t\t\t(#{item.userId},#{item.postId})\n\t\t\n\t\n\t\n "}}, "CampusReuse-system/src/main/resources/mapper/system/SysUserMapper.xml": {"6527b9ab8d31c57a8a95e2ac21132bd7eed3cfb9": {"t": 1785599298.3647575, "n": 10703, "h": "f188984511d643af", "c": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t\n \n \n \n \n \n \n \n \n \n\t\n \n \n \n \n \n \n \n \n\t\n\t\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 \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \t\tinsert into sys_user(\n \t\t\tuser_id,\n \t\t\tdept_id,\n \t\t\tuser_name,\n \t\t\tnick_name,\n \t\t\temail,\n \t\t\tavatar,\n \t\t\tphonenumber,\n \t\t\tsex,\n \t\t\tpassword,\n \t\t\tstatus,\n \t\t\tpwd_update_date,\n \t\t\tcreate_by,\n \t\t\tremark,\n \t\t\tcreate_time\n \t\t)values(\n \t\t\t#{userId},\n \t\t\t#{deptId},\n \t\t\t#{userName},\n \t\t\t#{nickName},\n \t\t\t#{email},\n \t\t\t#{avatar},\n \t\t\t#{phonenumber},\n \t\t\t#{sex},\n \t\t\t#{password},\n \t\t\t#{status},\n \t\t\t#{pwdUpdateDate},\n \t\t\t#{createBy},\n \t\t\t#{remark},\n \t\t\tsysdate()\n \t\t)\n\t\n\t\n\t\n \t\tupdate sys_user\n \t\t\n \t\t\tdept_id = #{deptId},\n \t\t\tnick_name = #{nickName},\n \t\t\temail = #{email},\n \t\t\tphonenumber = #{phonenumber},\n \t\t\tsex = #{sex},\n \t\t\tavatar = #{avatar},\n \t\t\tpassword = #{password},\n \t\t\tstatus = #{status},\n \t\t\tlogin_ip = #{loginIp},\n \t\t\tlogin_date = #{loginDate},\n \t\t\tupdate_by = #{updateBy},\n \t\t\tremark = #{remark},\n\t\t\tcredit_score = #{creditScore},\n \t\t\tupdate_time = sysdate()\n \t\t\n \t\twhere user_id = #{userId}\n\t\n\t\n\t\n \t\tupdate sys_user set status = #{status} where user_id = #{userId}\n\t\n\t\n\t\n \t\tupdate sys_user set avatar = #{avatar} where user_id = #{userId}\n\t\n\t\n\t\n \t\tupdate sys_user set pwd_update_date = sysdate(), password = #{password} where user_id = #{userId}\n\t\n\t\n\t\n \t\tupdate sys_user set del_flag = '2' where user_id = #{userId}\n \t\n \t\n \t\n \t\tupdate sys_user set del_flag = '2' where user_id in\n \t\t\n \t\t\t#{userId}\n \n \t\n\t\n\t\n "}}}}