commit f986f3fbd8ad2558139d8a140d8e83f1422d6291 Author: 赵忠林 <170083662@qq.com> Date: Thu Jul 24 01:21:41 2025 +0800 2.0版本分离 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2374b22 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ +/cert/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..7d05e99 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# 依赖于环境的 Maven 主目录路径 +/mavenHomeManager.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..f407202 --- /dev/null +++ b/pom.xml @@ -0,0 +1,391 @@ + + + 4.0.0 + + com.gxwebsoft + com-gxwebsoft-modules + 1.5.0 + + com-gxwebsoft-api + WebSoftApi project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.5.4 + + + + + 1.8 + UTF-8 + UTF-8 + + + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + org.projectlombok + lombok + true + + + + + mysql + mysql-connector-java + runtime + + + + + com.alibaba + druid-spring-boot-starter + 1.2.6 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.4.3.3 + + + + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.4.5 + + + + + com.baomidou + mybatis-plus-generator + 3.4.1 + + + + + cn.hutool + hutool-core + 5.8.11 + + + cn.hutool + hutool-extra + 5.8.11 + + + cn.hutool + hutool-http + 5.8.11 + + + cn.hutool + hutool-crypto + 5.8.11 + + + + + cn.afterturn + easypoi-base + 4.4.0 + + + + + org.apache.tika + tika-core + 2.1.0 + + + + + com.github.livesense + jodconverter-core + 1.0.5 + + + + + org.springframework.boot + spring-boot-starter-mail + + + + + com.ibeetl + beetl + 3.6.1.RELEASE + + + + + io.springfox + springfox-boot-starter + 3.0.0 + + + + + org.springframework.boot + spring-boot-starter-security + + + + + io.jsonwebtoken + jjwt-impl + 0.11.2 + + + io.jsonwebtoken + jjwt-jackson + 0.11.2 + + + + + com.github.whvcse + easy-captcha + 1.6.2 + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + + com.aliyun + aliyun-java-sdk-core + 4.4.3 + + + + com.alipay.sdk + alipay-sdk-java + 4.35.0.ALL + + + + org.bouncycastle + bcprov-jdk15on + 1.70 + + + + commons-logging + commons-logging + 1.2 + + + + com.alibaba + fastjson + 2.0.20 + + + + + com.google.zxing + core + 3.3.3 + + + + com.google.code.gson + gson + 2.8.0 + + + + com.vaadin.external.google + android-json + 0.0.20131108.vaadin1 + compile + + + + + com.corundumstudio.socketio + netty-socketio + 2.0.2 + + + + + com.github.wechatpay-apiv3 + wechatpay-java + 0.2.17 + + + + + org.springframework.integration + spring-integration-mqtt + + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + 1.2.0 + + + + com.github.binarywang + weixin-java-miniapp + 4.6.0 + + + + com.github.binarywang + weixin-java-mp + 4.6.0 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.17.0 + + + + com.github.kuaidi100-api + sdk + 1.0.13 + + + + + com.nuonuo + open-sdk + 1.0.5.2 + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.3 + + + + com.belerweb + pinyin4j + 2.5.1 + + + + + com.aliyun + alimt20181012 + 1.0.3 + + + com.aliyun + tea-openapi + 0.2.5 + + + + com.freewayso + image-combiner + 2.6.9 + + + + org.springframework.boot + spring-boot-starter-websocket + + + + + + + + + src/main/java + + **/*Mapper.xml + + + + src/main/resources + + ** + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.5.4 + + + + org.projectlombok + lombok + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 16 + 16 + + + + + + + + aliYunMaven + https://maven.aliyun.com/repository/public + + + + diff --git a/src/main/java/com/gxwebsoft/WebSoftApplication.java b/src/main/java/com/gxwebsoft/WebSoftApplication.java new file mode 100644 index 0000000..1a7fa35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/WebSoftApplication.java @@ -0,0 +1,31 @@ +package com.gxwebsoft; + +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.config.MqttProperties; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.socket.config.annotation.EnableWebSocket; + +/** + * 启动类 + * Created by WebSoft on 2018-02-22 11:29:03 + */ +@EnableAsync +@EnableTransactionManagement +@MapperScan("com.gxwebsoft.**.mapper") +@EnableConfigurationProperties({ConfigProperties.class, MqttProperties.class}) +@SpringBootApplication +@EnableScheduling +@EnableWebSocket +public class WebSoftApplication { + + public static void main(String[] args) { + SpringApplication.run(WebSoftApplication.class, args); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxBmController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxBmController.java new file mode 100644 index 0000000..269a7e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxBmController.java @@ -0,0 +1,164 @@ +package com.gxwebsoft.bszx.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxBmService; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.param.BszxBmParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 百色中学-报名记录控制器 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-报名记录管理") +@RestController +@RequestMapping("/api/bszx/bszx-bm") +public class BszxBmController extends BaseController { + @Resource + private BszxBmService bszxBmService; + @Resource + private CmsArticleService cmsArticleService; + + @PreAuthorize("hasAuthority('bszx:bszxBm:list')") + @ApiOperation("分页查询百色中学-报名记录") + @GetMapping("/page") + public ApiResult> page(BszxBmParam param) { + // 使用关联查询 + return success(bszxBmService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:list')") + @ApiOperation("查询全部百色中学-报名记录") + @GetMapping() + public ApiResult> list(BszxBmParam param) { + // 使用关联查询 + return success(bszxBmService.listRel(param)); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:list')") + @ApiOperation("根据id查询百色中学-报名记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxBmService.getByIdRel(id)); + } + + @OperationLog + @ApiOperation("申请报名生成邀请函") + @PostMapping() + public ApiResult save(@RequestBody BszxBm bszxBm) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (bszxBm.getName() == null) { + return fail("请填写姓名"); + } + if (loginUser != null) { + bszxBm.setUserId(loginUser.getUserId()); + if (bszxBmService.count(new LambdaQueryWrapper().eq(BszxBm::getUserId,loginUser.getUserId())) > 0) { + return fail("您已经报名过了",null); + } + if (bszxBmService.save(bszxBm)) { + cmsArticleService.saveInc(bszxBm.getFormId()); + return success("报名成功"); + } + } + return fail("添加失败"); + } + + @OperationLog + @ApiOperation("修改报名信息") + @PutMapping() + public ApiResult update(@RequestBody BszxBm bszxBm) { + final User loginUser = getLoginUser(); + if(loginUser == null){ + return fail("请先登录"); + } + if (bszxBmService.updateById(bszxBm)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:remove')") + @OperationLog + @ApiOperation("删除报名记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxBmService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:save')") + @OperationLog + @ApiOperation("批量添加百色中学-报名记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxBmService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:update')") + @OperationLog + @ApiOperation("批量修改百色中学-报名记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxBmService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBm:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-报名记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxBmService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查询我的报名记录") + @GetMapping("/myPage") + public ApiResult> myPage(BszxBmParam param) { + // 使用关联查询 + if (getLoginUser() != null) { + param.setUserId(getLoginUserId()); + return success(bszxBmService.pageRel(param)); + } + return fail("请先登录",null); + } + + @ApiOperation("获取海报地址") + @GetMapping("/generatePoster") + public ApiResult generatePoster() throws Exception { + if (getLoginUser() == null) { + return fail("请先登录",null); + } + final BszxBm bm = bszxBmService.getOne(new LambdaQueryWrapper().eq(BszxBm::getUserId, getLoginUser().getUserId()).last("limit 1")); + return success("生成宣传海报",bszxBmService.generatePoster(bm)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxBranchController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxBranchController.java new file mode 100644 index 0000000..8699de3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxBranchController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.bszx.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxBranchService; +import com.gxwebsoft.bszx.entity.BszxBranch; +import com.gxwebsoft.bszx.param.BszxBranchParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 百色中学-分部控制器 + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +@Api(tags = "百色中学-分部管理") +@RestController +@RequestMapping("/api/bszx/bszx-branch") +public class BszxBranchController extends BaseController { + @Resource + private BszxBranchService bszxBranchService; + + @ApiOperation("分页查询百色中学-分部") + @GetMapping("/page") + public ApiResult> page(BszxBranchParam param) { + // 使用关联查询 + return success(bszxBranchService.pageRel(param)); + } + + @ApiOperation("查询全部百色中学-分部") + @GetMapping() + public ApiResult> list(BszxBranchParam param) { + // 使用关联查询 + return success(bszxBranchService.listRel(param)); + } + + @ApiOperation("根据id查询百色中学-分部") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxBranchService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:save')") + @OperationLog + @ApiOperation("添加百色中学-分部") + @PostMapping() + public ApiResult save(@RequestBody BszxBranch bszxBranch) { + if (bszxBranchService.save(bszxBranch)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:update')") + @OperationLog + @ApiOperation("修改百色中学-分部") + @PutMapping() + public ApiResult update(@RequestBody BszxBranch bszxBranch) { + if (bszxBranchService.updateById(bszxBranch)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:remove')") + @OperationLog + @ApiOperation("删除百色中学-分部") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxBranchService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:save')") + @OperationLog + @ApiOperation("批量添加百色中学-分部") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxBranchService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:update')") + @OperationLog + @ApiOperation("批量修改百色中学-分部") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxBranchService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxBranch:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-分部") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxBranchService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxClassController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxClassController.java new file mode 100644 index 0000000..09ad307 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxClassController.java @@ -0,0 +1,156 @@ +package com.gxwebsoft.bszx.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxBranch; +import com.gxwebsoft.bszx.entity.BszxEra; +import com.gxwebsoft.bszx.entity.BszxGrade; +import com.gxwebsoft.bszx.param.BszxGradeParam; +import com.gxwebsoft.bszx.service.BszxBranchService; +import com.gxwebsoft.bszx.service.BszxEraService; +import com.gxwebsoft.bszx.service.BszxGradeService; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxClassService; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.param.BszxClassParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 百色中学-班级控制器 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-班级管理") +@RestController +@RequestMapping("/api/bszx/bszx-class") +public class BszxClassController extends BaseController { + @Resource + private BszxClassService bszxClassService; + @Resource + private BszxGradeService bszxGradeService; + @Resource + private BszxBranchService bszxBranchService; + + @ApiOperation("分页查询百色中学-班级") + @GetMapping("/page") + public ApiResult> page(BszxClassParam param) { + // 使用关联查询 + return success(bszxClassService.pageRel(param)); + } + + @ApiOperation("查询全部百色中学-班级") + @GetMapping() + public ApiResult> list(BszxClassParam param) { + // 使用关联查询 + return success(bszxClassService.listRel(param)); + } + + @ApiOperation("根据id查询百色中学-班级") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxClassService.getByIdRel(id)); + } + + @ApiOperation("百色中学-年级班级数据") + @GetMapping("/tree") + public ApiResult> tree() { + final List list = bszxBranchService.list(); + final BszxGradeParam bszxGradeParam = new BszxGradeParam(); + final List gradeList = bszxGradeService.listRel(bszxGradeParam); + final BszxClassParam bszxClassParam = new BszxClassParam(); + final List bszxClasseList = bszxClassService.listRel(bszxClassParam); + final Map> collectClass = bszxClasseList.stream().collect(Collectors.groupingBy(BszxClass::getGradeId)); + gradeList.forEach(d -> { + d.setChildren(collectClass.get(d.getId())); + }); + final Map> collectGrade = gradeList.stream().collect(Collectors.groupingBy(BszxGrade::getBranch)); + + list.forEach(d -> { + d.setChildren(collectGrade.get(d.getId())); + }); + + return success(list); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:save')") + @OperationLog + @ApiOperation("添加百色中学-班级") + @PostMapping() + public ApiResult save(@RequestBody BszxClass bszxClass) { + if (bszxClassService.save(bszxClass)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:update')") + @OperationLog + @ApiOperation("修改百色中学-班级") + @PutMapping() + public ApiResult update(@RequestBody BszxClass bszxClass) { + if (bszxClassService.updateById(bszxClass)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:remove')") + @OperationLog + @ApiOperation("删除百色中学-班级") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxClassService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:save')") + @OperationLog + @ApiOperation("批量添加百色中学-班级") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxClassService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:update')") + @OperationLog + @ApiOperation("批量修改百色中学-班级") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxClassService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxClass:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-班级") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxClassService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxEraController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxEraController.java new file mode 100644 index 0000000..b752874 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxEraController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.bszx.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxEraService; +import com.gxwebsoft.bszx.entity.BszxEra; +import com.gxwebsoft.bszx.param.BszxEraParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 百色中学-年代控制器 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-年代管理") +@RestController +@RequestMapping("/api/bszx/bszx-era") +public class BszxEraController extends BaseController { + @Resource + private BszxEraService bszxEraService; + + @ApiOperation("分页查询百色中学-年代") + @GetMapping("/page") + public ApiResult> page(BszxEraParam param) { + // 使用关联查询 + return success(bszxEraService.pageRel(param)); + } + + @ApiOperation("查询全部百色中学-年代") + @GetMapping() + public ApiResult> list(BszxEraParam param) { + // 使用关联查询 + return success(bszxEraService.listRel(param)); + } + + @ApiOperation("根据id查询百色中学-年代") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxEraService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:save')") + @OperationLog + @ApiOperation("添加百色中学-年代") + @PostMapping() + public ApiResult save(@RequestBody BszxEra bszxEra) { + if (bszxEraService.save(bszxEra)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:update')") + @OperationLog + @ApiOperation("修改百色中学-年代") + @PutMapping() + public ApiResult update(@RequestBody BszxEra bszxEra) { + if (bszxEraService.updateById(bszxEra)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:remove')") + @OperationLog + @ApiOperation("删除百色中学-年代") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxEraService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:save')") + @OperationLog + @ApiOperation("批量添加百色中学-年代") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxEraService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:update')") + @OperationLog + @ApiOperation("批量修改百色中学-年代") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxEraService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxEra:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-年代") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxEraService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxGradeController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxGradeController.java new file mode 100644 index 0000000..4c37a62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxGradeController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.bszx.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxGradeService; +import com.gxwebsoft.bszx.entity.BszxGrade; +import com.gxwebsoft.bszx.param.BszxGradeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 百色中学-年级控制器 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-年级管理") +@RestController +@RequestMapping("/api/bszx/bszx-grade") +public class BszxGradeController extends BaseController { + @Resource + private BszxGradeService bszxGradeService; + + @ApiOperation("分页查询百色中学-年级") + @GetMapping("/page") + public ApiResult> page(BszxGradeParam param) { + // 使用关联查询 + return success(bszxGradeService.pageRel(param)); + } + + @ApiOperation("查询全部百色中学-年级") + @GetMapping() + public ApiResult> list(BszxGradeParam param) { + // 使用关联查询 + return success(bszxGradeService.listRel(param)); + } + + @ApiOperation("根据id查询百色中学-年级") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxGradeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:save')") + @OperationLog + @ApiOperation("添加百色中学-年级") + @PostMapping() + public ApiResult save(@RequestBody BszxGrade bszxGrade) { + if (bszxGradeService.save(bszxGrade)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:update')") + @OperationLog + @ApiOperation("修改百色中学-年级") + @PutMapping() + public ApiResult update(@RequestBody BszxGrade bszxGrade) { + if (bszxGradeService.updateById(bszxGrade)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:remove')") + @OperationLog + @ApiOperation("删除百色中学-年级") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxGradeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:save')") + @OperationLog + @ApiOperation("批量添加百色中学-年级") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxGradeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:update')") + @OperationLog + @ApiOperation("批量修改百色中学-年级") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxGradeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxGrade:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-年级") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxGradeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxOrderController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxOrderController.java new file mode 100644 index 0000000..f59fb8b --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxOrderController.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.bszx.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxPayParam; +import com.gxwebsoft.bszx.service.BszxBmService; +import com.gxwebsoft.bszx.service.BszxPayService; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.param.ShopOrderParam; +import com.gxwebsoft.shop.service.ShopOrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 百色中学-订单管理 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-订单管理") +@RestController +@RequestMapping("/api/bszx/bszx-order") +public class BszxOrderController extends BaseController { + @Resource + private BszxPayService bszxPayService; + @Resource + private BszxBmService bszxBmService; + @Resource + private ShopOrderService shopOrderService; + + @ApiOperation("分页查询百色中学-订单列表") + @GetMapping("/page") + public ApiResult> page(ShopOrderParam param) { + // 使用关联查询 + final PageResult result = shopOrderService.pageRel(param); + if(!CollectionUtils.isEmpty(result.getList())){ + final Set userIds = result.getList().stream().map(ShopOrder::getUserId).collect(Collectors.toSet()); + final List bmList = bszxBmService.list(new LambdaQueryWrapper().in(BszxBm::getUserId, userIds).isNotNull(BszxBm::getName)); + final Map> collect = bmList.stream().collect(Collectors.groupingBy(BszxBm::getUserId)); + final Set orderNos = result.getList().stream().map(ShopOrder::getOrderNo).collect(Collectors.toSet()); + final BszxPayParam bszxPayParam = new BszxPayParam(); + bszxPayParam.setOrderNos(orderNos); + final List bszxPays = bszxPayService.listRel(bszxPayParam); + final Map> collectByOrderNo = bszxPays.stream().collect(Collectors.groupingBy(BszxPay::getOrderNo)); + + result.getList().forEach(d -> { + final List pays = collectByOrderNo.get(d.getOrderNo()); + if(!CollectionUtils.isEmpty(pays)){ + d.setDeliveryStatus(20); + } + final List bmList1 = collect.get(d.getUserId()); + if(!CollectionUtils.isEmpty(bmList1)){ + final BszxBm bm = bmList1.get(0); + d.setBm(bm); + d.setRealName(bm.getName()); + if(bm.getPhone() != null){ + d.setPhone(bm.getPhone()); + } + } + }); + } + return success(result); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java new file mode 100644 index 0000000..4332936 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayController.java @@ -0,0 +1,337 @@ +package com.gxwebsoft.bszx.controller; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.service.BszxBmService; +import com.wechat.pay.java.core.notification.*; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxPayService; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxPayParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.Payment; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.service.ShopOrderService; +import com.wechat.pay.java.core.notification.RequestParam; +import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiService; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.*; + +/** + * 百色中学-捐款记录控制器 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Api(tags = "百色中学-捐款记录管理") +@RestController +@RequestMapping("/api/bszx/bszx-pay") +public class BszxPayController extends BaseController { + public static JsapiService service; + @Resource + private BszxPayService bszxPayService; + @Resource + private BszxBmService bszxBmService; + @Resource + private RedisUtil redisUtil; + @Resource + private ShopOrderService shopOrderService; + @Resource + private ConfigProperties conf; + @Value("${spring.profiles.active}") + String active; + + @PreAuthorize("hasAuthority('bszx:bszxPay:list')") + @ApiOperation("分页查询百色中学-捐款记录") + @GetMapping("/page") + public ApiResult> page(BszxPayParam param) { + // 使用关联查询 + return success(bszxPayService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:list')") + @ApiOperation("查询全部百色中学-捐款记录") + @GetMapping() + public ApiResult> list(BszxPayParam param) { + // 使用关联查询 + return success(bszxPayService.listRel(param)); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:list')") + @ApiOperation("根据id查询百色中学-捐款记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxPayService.getByIdRel(id)); + } + + @OperationLog + @ApiOperation("活动捐款") + @PostMapping() + public ApiResult save(@RequestBody BszxPay bszxPay, HttpServletRequest request) { + if (bszxPay.getPrice().compareTo(BigDecimal.ZERO) == 0) { + return fail("金额不能为0"); + } + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + String access_token = JwtUtil.getAccessToken(request); + bszxPay.setUserId(loginUser.getUserId()); + // 微信openid(必填) + if (StrUtil.isBlank(loginUser.getOpenid())) { + return fail("微信openid(必填)"); + } + final BszxBm bmInfo = bszxBmService.getByUserId(loginUser.getUserId()); + bszxPay.setName(bmInfo.getName()); + bszxPay.setSex(bmInfo.getSex()); + bszxPay.setPhone(bmInfo.getPhone()); + bszxPay.setBranchName(bmInfo.getBranchName()); + bszxPay.setGradeName(bmInfo.getGradeName()); + bszxPay.setClassName(bmInfo.getClassName()); + bszxPay.setAddress(bmInfo.getAddress()); + bszxPay.setWorkUnit(bmInfo.getWorkUnit()); + bszxPay.setPosition(bmInfo.getPosition()); + bszxPay.setAge(bmInfo.getAge()); + bszxPay.setNumber(bmInfo.getNumber()); + } + if (bszxPayService.save(bszxPay)) { + // 调起支付 + return success("下单成功", bszxPay); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:update')") + @OperationLog + @ApiOperation("修改百色中学-捐款记录") + @PutMapping() + public ApiResult update(@RequestBody BszxPay bszxPay) { + if (bszxPayService.updateById(bszxPay)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:remove')") + @OperationLog + @ApiOperation("删除百色中学-捐款记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxPayService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:save')") + @OperationLog + @ApiOperation("批量添加百色中学-捐款记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxPayService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:update')") + @OperationLog + @ApiOperation("批量修改百色中学-捐款记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxPayService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPay:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-捐款记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxPayService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查询我的报名记录") + @GetMapping("/myPage") + public ApiResult> myPage(BszxPayParam param) { + // 使用关联查询 + if (getLoginUser() != null) { + param.setUserId(getLoginUserId()); + return success(bszxPayService.pageRel(param)); + } + return fail("请先登录", null); + } + + @ApiOperation("统计捐款总金额与人次") + @GetMapping("/getCount") + public ApiResult getCount() { + final HashMap map = new HashMap<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + final BigDecimal bigDecimal = bszxPayService.sumMoney(wrapper); + final int count = bszxPayService.count(new LambdaQueryWrapper()); + map.put("numbers", count); + map.put("totalMoney", bigDecimal); + return success(map); + } + + @ApiModelProperty("异步通知") + @PostMapping("/notify/{tenantId}") + public String wxNotify(@RequestHeader Map header, @RequestBody String body,HttpServletRequest request, @PathVariable("tenantId") Integer tenantId) { + // 获取支付配置信息用于解密 + String key = "Payment:1:".concat(tenantId.toString()); + Payment payment = redisUtil.get(key, Payment.class); + String uploadPath = conf.getUploadPath(); + + // 开发环境 + String mid = "1242289702"; + String apiV3Key = "0b2996803383c3e3391abd9183b54key"; + String serialNumber = "3B458EB14A28160DC094431A21C0508EFA712D1C"; + String privateKey = "/Users/gxwebsoft/JAVA/site-java/cert/bszx/apiclient_key.pem"; + String apiclientCert = "/Users/gxwebsoft/JAVA/site-java/cert/bszx/apiclient_cert.pem"; + String pubKey = "/Users/gxwebsoft/JAVA/site-java/cert/bszx/0f65a8517c284acb90aa83dd0c23e8f6.pem"; + String pubId = "PUB_KEY_ID_0112422897022025011300326200001208"; + // 生产环境 + if (ObjectUtil.isNotEmpty(payment)) { + // 检查 payment 字段是否为空,并避免直接解析为数字 + mid = payment.getMchId(); + apiV3Key = payment.getApiKey(); + serialNumber = payment.getMerchantSerialNumber(); + privateKey = payment.getApiclientKey(); + apiclientCert = conf.getUploadPath().concat("/file").concat(payment.getApiclientCert()); + pubKey = uploadPath.concat("file").concat(payment.getPubKey()); + pubId = payment.getPubKeyId(); + } + RequestParam requestParam = new RequestParam.Builder() + .serialNumber(header.get("wechatpay-serial")) + .nonce(header.get("wechatpay-nonce")) + .signature(header.get("wechatpay-signature")) + .timestamp(header.get("wechatpay-timestamp")) + .body(body) + .build(); + + +// NotificationConfig config = new RSAPublicKeyConfig.Builder() +// .merchantId(mid) +// .publicKeyFromPath(pubKey) +// .publicKeyId(pubId) +// .privateKeyFromPath(privateKey) +// .merchantSerialNumber(serialNumber) +// .apiV3Key(apiV3Key) +// .build(); + + NotificationConfig config = new RSAPublicKeyNotificationConfig.Builder() + .publicKeyFromPath(pubKey) + .publicKeyId(pubId) + .apiV3Key(apiV3Key) + .build(); + + + // 初始化 NotificationParser + NotificationParser parser = new NotificationParser(config); + + // 以支付通知回调为例,验签、解密并转换成 Transaction + try { + Transaction transaction = parser.parse(requestParam, Transaction.class); + final String outTradeNo = transaction.getOutTradeNo(); + final String transactionId = transaction.getTransactionId(); + final Integer total = transaction.getAmount().getTotal(); + final String tradeStateDesc = transaction.getTradeStateDesc(); + final Transaction.TradeStateEnum tradeState = transaction.getTradeState(); + final Transaction.TradeTypeEnum tradeType = transaction.getTradeType(); + System.out.println("transaction = " + transaction); + System.out.println("tradeStateDesc = " + tradeStateDesc); + System.out.println("tradeType = " + tradeType); + System.out.println("tradeState = " + tradeState); + System.out.println("outTradeNo = " + outTradeNo); + System.out.println("amount = " + total); + + if (StrUtil.equals("支付成功", tradeStateDesc)) { + // 1. 查询要处理的订单 + ShopOrder order = shopOrderService.getByOutTradeNo(outTradeNo); + // 2. 已支付则跳过 + if (order.getPayStatus().equals(true)) { + return "SUCCESS"; + } + // 2. 未支付则处理更新订单状态 + if (order.getPayStatus().equals(false)) { + // 5. TODO 处理订单状态 + order.setPayTime(DateUtil.date()); + order.setPayStatus(true); + order.setTransactionId(transactionId); + order.setPayPrice(new BigDecimal(NumberUtil.decimalFormat("0.00", total * 0.01))); + order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); + System.out.println("实际付款金额 = " + order.getPayPrice()); + return "SUCCESS"; + } + } + } catch (Exception $e) { + System.out.println($e.getMessage()); + System.out.println(Arrays.toString($e.getStackTrace())); + } + + return "fail"; + } + + + @PreAuthorize("hasAuthority('shop:shopOrder:update')") + @ApiOperation("修复订单") + @PutMapping("/repair") + public ApiResult repair(@RequestBody ShopOrder shopOrder) { + if (shopOrderService.queryOrderByOutTradeNo(shopOrder)) { + if (bszxPayService.count(new LambdaQueryWrapper().eq(BszxPay::getOrderNo, shopOrder.getOrderNo())) == 0) { + final BszxPay bszxPay = new BszxPay(); + final BszxBm bm = shopOrder.getBm(); + if (ObjectUtil.isNotEmpty(bm)) { + bszxPay.setName(bm.getName()); + bszxPay.setSex(bm.getSex()); + bszxPay.setClassName(bm.getClassName()); + bszxPay.setGradeName(bm.getGradeName()); + bszxPay.setAddress(bm.getAddress()); + bszxPay.setWorkUnit(bm.getWorkUnit()); + bszxPay.setPosition(bm.getPosition()); + bszxPay.setPrice(shopOrder.getPayPrice()); + bszxPay.setOrderNo(shopOrder.getOrderNo()); + bszxPay.setUserId(shopOrder.getUserId()); + bszxPay.setFormId(shopOrder.getFormId()); + bszxPay.setComments(shopOrder.getComments()); + bszxPayService.save(bszxPay); + } + } + return success("修复成功"); + } + return fail("修复失败"); + } + + @ApiOperation("获取捐款证书") + @GetMapping("/generatePayCert/{id}") + public ApiResult generatePayCert(@PathVariable("id") Integer id) throws Exception { + return success("获取捐款证书", bszxPayService.generatePayCert(id)); + } +} diff --git a/src/main/java/com/gxwebsoft/bszx/controller/BszxPayRankingController.java b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayRankingController.java new file mode 100644 index 0000000..f948aa5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/controller/BszxPayRankingController.java @@ -0,0 +1,199 @@ +package com.gxwebsoft.bszx.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxClassParam; +import com.gxwebsoft.bszx.service.BszxClassService; +import com.gxwebsoft.bszx.service.BszxPayService; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.bszx.service.BszxPayRankingService; +import com.gxwebsoft.bszx.entity.BszxPayRanking; +import com.gxwebsoft.bszx.param.BszxPayRankingParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * 百色中学-捐款排行控制器 + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +@Api(tags = "百色中学-捐款排行管理") +@RestController +@RequestMapping("/api/bszx/bszx-pay-ranking") +public class BszxPayRankingController extends BaseController { + @Resource + private BszxPayRankingService bszxPayRankingService; + @Resource + private CmsArticleService cmsArticleService; + @Resource + private BszxPayService bszxPayService; + @Resource + private BszxClassService bszxClassService; + @Resource + private RedisUtil redisUtil; + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:list')") + @ApiOperation("分页查询百色中学-捐款排行") + @GetMapping("/page") + public ApiResult> page(BszxPayRankingParam param) { + // 使用关联查询 + return success(bszxPayRankingService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:list')") + @ApiOperation("查询全部百色中学-捐款排行") + @GetMapping() + public ApiResult> list(BszxPayRankingParam param) { + // 使用关联查询 + return success(bszxPayRankingService.listRel(param)); + } + + @ApiOperation("查询全部百色中学-捐款排行榜") + @GetMapping("/ranking") + public ApiResult> ranking(BszxPayRankingParam param) { + final ArrayList rankings = new ArrayList<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + final List list = cmsArticleService.list(new LambdaQueryWrapper().eq(CmsArticle::getCategoryId, 2444)); + + list.forEach(item -> { + final BszxPayRanking ranking = new BszxPayRanking(); + wrapper.clear(); + // 按时间段查询 + if(param.getCreateTimeStart() != null && param.getCreateTimeEnd() != null){ + final String timeStart = param.getCreateTimeStart(); + final String timeEnd = param.getCreateTimeEnd(); + wrapper.ge(BszxPay::getCreateTime, timeStart); + wrapper.le(BszxPay::getCreateTime, timeEnd); + } + wrapper.eq(BszxPay::getFormId, item.getArticleId()); + ranking.setFormId(item.getArticleId()); + ranking.setFormName(item.getTitle()); + ranking.setNumber(bszxPayService.count(wrapper)); + ranking.setTotalPrice(bszxPayService.sumMoney(wrapper)); + rankings.add(ranking); + }); + // totalPrice按大到小排序 + rankings.sort((o1, o2) -> o2.getTotalPrice().compareTo(o1.getTotalPrice())); + return success(rankings); + } + + + @ApiOperation("查询全部百色中学-千班万元") + @GetMapping("/ranking2") + public ApiResult> ranking2(BszxClassParam param) { + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + final List list = bszxClassService.listRel(param); + + String key = "BSZX:UpdateRanking2"; + final String isTimeOut = redisUtil.get(key); + if(StrUtil.isNotBlank(isTimeOut)){ + list.sort((o1, o2) -> o2.getTotalMoney().compareTo(o1.getTotalMoney())); + return success(list); + } + list.forEach(item -> { + System.out.println("item = " + item); + wrapper.clear(); + wrapper.eq(BszxPay::getGradeName,item.getGradeName()); + wrapper.eq(BszxPay::getClassName, item.getName()); + item.setTotalMoney(bszxPayService.sumMoney(wrapper)); + bszxClassService.updateById(item); + }); + // totalPrice按大到小排序 + list.sort((o1, o2) -> o2.getTotalMoney().compareTo(o1.getTotalMoney())); + redisUtil.set(key, 1,1L, TimeUnit.DAYS); + return success(list); + } + + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:list')") + @ApiOperation("根据id查询百色中学-捐款排行") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bszxPayRankingService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:save')") + @OperationLog + @ApiOperation("添加百色中学-捐款排行") + @PostMapping() + public ApiResult save(@RequestBody BszxPayRanking bszxPayRanking) { + if (bszxPayRankingService.save(bszxPayRanking)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:update')") + @OperationLog + @ApiOperation("修改百色中学-捐款排行") + @PutMapping() + public ApiResult update(@RequestBody BszxPayRanking bszxPayRanking) { + if (bszxPayRankingService.updateById(bszxPayRanking)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:remove')") + @OperationLog + @ApiOperation("删除百色中学-捐款排行") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bszxPayRankingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:save')") + @OperationLog + @ApiOperation("批量添加百色中学-捐款排行") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bszxPayRankingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:update')") + @OperationLog + @ApiOperation("批量修改百色中学-捐款排行") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bszxPayRankingService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('bszx:bszxPayRanking:remove')") + @OperationLog + @ApiOperation("批量删除百色中学-捐款排行") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bszxPayRankingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxBm.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxBm.java new file mode 100644 index 0000000..b8af9e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxBm.java @@ -0,0 +1,149 @@ +package com.gxwebsoft.bszx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.cms.entity.CmsArticle; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-报名记录 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxBm对象", description = "百色中学-报名记录") +public class BszxBm implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "类型 0校友 1单位 2爱心人士") + private Integer type; + + @ApiModelProperty(value = "性别 1男 2女") + private String sex; + + @ApiModelProperty(value = "性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty(value = "班级ID") + private Integer classId; + + @ApiModelProperty(value = "班级") + private String className; + + @ApiModelProperty(value = "年级") + private String gradeName; + + @ApiModelProperty(value = "分部ID") + private Integer branchId; + + @ApiModelProperty(value = "分部名称") + @TableField(exist = false) + private String branchName; + + @ApiModelProperty(value = "居住地址") + private String address; + + @ApiModelProperty(value = "工作单位") + private String workUnit; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "是否能到场") + private String present; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty(value = "人数") + private Integer number; + + @ApiModelProperty(value = "额外信息") + private String extra; + + @ApiModelProperty(value = "生成的邀请函存放路径") + private String certificate; + + @ApiModelProperty(value = "预定日期") + private LocalDate dateTime; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "表单ID") + private Integer formId; + + @ApiModelProperty(value = "活动名称") + @TableField(exist = false) + private String formName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "文章对象") + @TableField(exist = false) + private CmsArticle article; + + public String getSexName() { + if (this.sex == null) { + return ""; + } + return this.sex.equals("1") ? "男" : "女"; + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxBranch.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxBranch.java new file mode 100644 index 0000000..d0262af --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxBranch.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.bszx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-分部 + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxBranch对象", description = "百色中学-分部") +public class BszxBranch implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "分部名称 ") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "子分类") + @TableField(exist = false) + private List children; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxClass.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxClass.java new file mode 100644 index 0000000..ebf7a99 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxClass.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.bszx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-班级 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxClass对象", description = "百色中学-班级") +public class BszxClass implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "时代ID") + private Integer eraId; + + @ApiModelProperty(value = "时代名称") + @TableField(exist = false) + private String eraName; + + @ApiModelProperty(value = "年级ID") + private Integer gradeId; + + @ApiModelProperty(value = "年级名称") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "班级") + private String name; + + @ApiModelProperty(value = "累计捐款金额") + private BigDecimal totalMoney; + + @ApiModelProperty(value = "分部") + private Integer branch; + + @ApiModelProperty(value = "分部名称") + @TableField(exist = false) + private String branchName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty("子分类") + @TableField(exist = false) + private List children; +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxEra.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxEra.java new file mode 100644 index 0000000..b9d6ce6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxEra.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.bszx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-年代 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxEra对象", description = "百色中学-年代") +public class BszxEra implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "年代") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "子分类") + @TableField(exist = false) + private List children; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxGrade.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxGrade.java new file mode 100644 index 0000000..07a2b64 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxGrade.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.bszx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-年级 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxGrade对象", description = "百色中学-年级") +public class BszxGrade implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "年级") + private String name; + + @ApiModelProperty(value = "年代") + private Integer eraId; + + @ApiModelProperty(value = "分部") + private Integer branch; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty("子分类") + @TableField(exist = false) + private List children; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxPay.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxPay.java new file mode 100644 index 0000000..be26eda --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxPay.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.bszx.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.shop.entity.ShopOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-捐款记录 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxPay对象", description = "百色中学-捐款记录") +public class BszxPay implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "性别 1男 2女") + private String sex; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty(value = "分部") + private String branchName; + + @ApiModelProperty(value = "班级") + private String className; + + @ApiModelProperty(value = "年级") + private String gradeName; + + @ApiModelProperty(value = "居住地址") + private String address; + + @ApiModelProperty(value = "工作单位") + private String workUnit; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "数量") + private Integer number; + + @ApiModelProperty(value = "付费金额") + private BigDecimal price; + + @ApiModelProperty(value = "额外信息") + private String extra; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "预定日期") + private LocalDate dateTime; + + @ApiModelProperty(value = "捐赠证书") + private String certificate; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "来源表ID") + private Integer formId; + + @ApiModelProperty(value = "活动名称") + @TableField(exist = false) + private String formName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "文章") + @TableField(exist = false) + private CmsArticle article; + + @ApiModelProperty(value = "订单") + @TableField(exist = false) + private ShopOrder shopOrder; + + public String getSexName() { + return this.sex.equals("1") ? "男" : "女"; + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/entity/BszxPayRanking.java b/src/main/java/com/gxwebsoft/bszx/entity/BszxPayRanking.java new file mode 100644 index 0000000..ba8c020 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/entity/BszxPayRanking.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.bszx.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-捐款排行 + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BszxPayRanking对象", description = "百色中学-捐款排行") +public class BszxPayRanking implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "来源表ID(文章ID)") + private Integer formId; + + @ApiModelProperty(value = "项目名称") + @TableField(exist = false) + private String formName; + + @ApiModelProperty(value = "数量") + private Integer number; + + @ApiModelProperty(value = "获得捐款总金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxBmMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxBmMapper.java new file mode 100644 index 0000000..7c63575 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxBmMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.param.BszxBmParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-报名记录Mapper + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxBmMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxBmParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxBmParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxBranchMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxBranchMapper.java new file mode 100644 index 0000000..d94fd0b --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxBranchMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxBranch; +import com.gxwebsoft.bszx.param.BszxBranchParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-分部Mapper + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +public interface BszxBranchMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxBranchParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxBranchParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxClassMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxClassMapper.java new file mode 100644 index 0000000..81d251f --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxClassMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.param.BszxClassParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-班级Mapper + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxClassMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxClassParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxClassParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxEraMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxEraMapper.java new file mode 100644 index 0000000..17d83c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxEraMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxEra; +import com.gxwebsoft.bszx.param.BszxEraParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-年代Mapper + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxEraMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxEraParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxEraParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxGradeMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxGradeMapper.java new file mode 100644 index 0000000..1e566bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxGradeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxGrade; +import com.gxwebsoft.bszx.param.BszxGradeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-年级Mapper + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxGradeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxGradeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxGradeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayMapper.java new file mode 100644 index 0000000..020c7ea --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayMapper.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxPayParam; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 百色中学-捐款记录Mapper + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxPayMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxPayParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxPayParam param); + + BigDecimal selectSumMoney(@Param("ew") Wrapper wrapper); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayRankingMapper.java b/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayRankingMapper.java new file mode 100644 index 0000000..c6e14b0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/BszxPayRankingMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.bszx.entity.BszxPayRanking; +import com.gxwebsoft.bszx.param.BszxPayRankingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 百色中学-捐款排行Mapper + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +public interface BszxPayRankingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BszxPayRankingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BszxPayRankingParam param); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBmMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBmMapper.xml new file mode 100644 index 0000000..74d0099 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBmMapper.xml @@ -0,0 +1,113 @@ + + + + + + + SELECT a.*,b.title as formName, c.name as branchName, u.phone as mobile,u.avatar,u.nickname + FROM bszx_bm a + LEFT JOIN cms_article b ON a.form_id = b.article_id + LEFT JOIN bszx_branch c ON a.branch_id = c.id + LEFT JOIN gxwebsoft_core.sys_user u ON a.user_id = u.user_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.type = #{param.type} + + + AND a.sex = #{param.sex} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.branch_id = #{param.branchId} + + + AND a.class_name LIKE CONCAT('%', #{param.className}, '%') + + + AND a.grade_name LIKE CONCAT('%', #{param.gradeName}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.work_unit LIKE CONCAT('%', #{param.workUnit}, '%') + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.present = #{param.present} + + + AND a.age = #{param.age} + + + AND a.number = #{param.number} + + + AND a.extra LIKE CONCAT('%', #{param.extra}, '%') + + + AND a.certificate LIKE CONCAT('%', #{param.certificate}, '%') + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.form_data LIKE CONCAT('%', #{param.formData}, '%') + + + AND a.form_id = #{param.formId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.phone = #{param.keywords} + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBranchMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBranchMapper.xml new file mode 100644 index 0000000..c9c7fa0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxBranchMapper.xml @@ -0,0 +1,36 @@ + + + + + + + SELECT a.* + FROM bszx_branch a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxClassMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxClassMapper.xml new file mode 100644 index 0000000..8f07436 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxClassMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.*,b.name as gradeName, c.name as eraName, d.name as branchName + FROM bszx_class a + LEFT JOIN bszx_grade b ON a.grade_id = b.id + LEFT JOIN bszx_era c ON a.era_id = c.id + LEFT JOIN bszx_branch d ON a.branch = d.id + + + AND a.id = #{param.id} + + + AND a.era_id = #{param.eraId} + + + AND a.grade_id = #{param.gradeId} + + + AND b.name = #{param.gradeName} + + + AND a.name = #{param.name} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.branch = #{param.branch} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxEraMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxEraMapper.xml new file mode 100644 index 0000000..867fdf4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxEraMapper.xml @@ -0,0 +1,36 @@ + + + + + + + SELECT a.* + FROM bszx_era a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxGradeMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxGradeMapper.xml new file mode 100644 index 0000000..df9419e --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxGradeMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.* + FROM bszx_grade a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.era_id = #{param.eraId} + + + AND a.branch = #{param.branch} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayMapper.xml new file mode 100644 index 0000000..fde31b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayMapper.xml @@ -0,0 +1,126 @@ + + + + + + + SELECT a.*,b.title as formName,u.phone as mobile,u.avatar,u.nickname + FROM bszx_pay a + LEFT JOIN cms_article b ON a.form_id = b.article_id + LEFT JOIN gxwebsoft_core.sys_user u ON a.user_id = u.user_id + + + AND a.id = #{param.id} + + + AND a.age = #{param.age} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sex = #{param.sex} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.class_name = #{param.className} + + + AND a.grade_name LIKE CONCAT('%', #{param.gradeName}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.work_unit LIKE CONCAT('%', #{param.workUnit}, '%') + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.number = #{param.number} + + + AND a.price = #{param.price} + + + AND a.extra LIKE CONCAT('%', #{param.extra}, '%') + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.certificate LIKE CONCAT('%', #{param.certificate}, '%') + + + AND a.form_data LIKE CONCAT('%', #{param.formData}, '%') + + + AND a.form_id = #{param.formId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.order_no IN + + #{item} + + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR u.phone = #{param.keywords} + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.order_no = #{param.keywords} + ) + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayRankingMapper.xml b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayRankingMapper.xml new file mode 100644 index 0000000..806e26f --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/mapper/xml/BszxPayRankingMapper.xml @@ -0,0 +1,61 @@ + + + + + + + SELECT a.*,b.title as formName + FROM bszx_pay_ranking a + LEFT JOIN cms_article b ON a.form_id = b.article_id + + + AND a.id = #{param.id} + + + AND a.form_id = #{param.formId} + + + AND a.number = #{param.number} + + + AND a.total_price = #{param.totalPrice} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxBmParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxBmParam.java new file mode 100644 index 0000000..a6a41ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxBmParam.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-报名记录查询参数 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxBmParam对象", description = "百色中学-报名记录查询参数") +public class BszxBmParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "类型 0校友 1单位") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "性别 1男 2女") + @QueryField(type = QueryType.EQ) + private Integer sex; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "班级") + private String className; + + @ApiModelProperty(value = "年级") + private String gradeName; + + @ApiModelProperty(value = "分部ID") + @QueryField(type = QueryType.EQ) + private Integer branchId; + + @ApiModelProperty(value = "居住地址") + private String address; + + @ApiModelProperty(value = "工作单位") + private String workUnit; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "是否能到场") + @QueryField(type = QueryType.EQ) + private Boolean present; + + @ApiModelProperty(value = "年龄") + @QueryField(type = QueryType.EQ) + private Integer age; + + @ApiModelProperty(value = "人数") + @QueryField(type = QueryType.EQ) + private Integer number; + + @ApiModelProperty(value = "额外信息") + private String extra; + + @ApiModelProperty(value = "生成的邀请函存放路径") + private String certificate; + + @ApiModelProperty(value = "预定日期") + private String dateTime; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "表单ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.LIKE) + private String orderNo; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxBranchParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxBranchParam.java new file mode 100644 index 0000000..c1f3cbd --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxBranchParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-分部查询参数 + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxBranchParam对象", description = "百色中学-分部查询参数") +public class BszxBranchParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "分部名称 ") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxClassParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxClassParam.java new file mode 100644 index 0000000..1fa764a --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxClassParam.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-班级查询参数 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxClassParam对象", description = "百色中学-班级查询参数") +public class BszxClassParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "时代ID") + @QueryField(type = QueryType.EQ) + private Integer eraId; + + @ApiModelProperty(value = "年级ID") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "年级") + @QueryField(type = QueryType.EQ) + private String gradeName; + + @ApiModelProperty(value = "累计捐款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalMoney; + + @ApiModelProperty(value = "班级") + private String name; + + @ApiModelProperty(value = "分部") + @QueryField(type = QueryType.EQ) + private Integer branch; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxEraParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxEraParam.java new file mode 100644 index 0000000..58ca68e --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxEraParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-年代查询参数 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxEraParam对象", description = "百色中学-年代查询参数") +public class BszxEraParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "年代") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxGradeParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxGradeParam.java new file mode 100644 index 0000000..930b927 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxGradeParam.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-年级查询参数 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxGradeParam对象", description = "百色中学-年级查询参数") +public class BszxGradeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "年级") + private String name; + + @ApiModelProperty(value = "年代") + @QueryField(type = QueryType.EQ) + private Integer eraId; + + @ApiModelProperty(value = "分部") + @QueryField(type = QueryType.EQ) + private Integer branch; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxPayParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxPayParam.java new file mode 100644 index 0000000..7786997 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxPayParam.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import java.util.Set; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-捐款记录查询参数 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxPayParam对象", description = "百色中学-捐款记录查询参数") +public class BszxPayParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "年龄") + @QueryField(type = QueryType.EQ) + private Integer age; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "性别 1男 2女") + @QueryField(type = QueryType.EQ) + private Integer sex; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "班级") + private String className; + + @ApiModelProperty(value = "年级") + private String gradeName; + + @ApiModelProperty(value = "居住地址") + private String address; + + @ApiModelProperty(value = "工作单位") + private String workUnit; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "数量") + @QueryField(type = QueryType.EQ) + private Integer number; + + @ApiModelProperty(value = "付费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "额外信息") + private String extra; + + @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.EQ) + private String orderNo; + + @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.IN) + private Set orderNos; + + @ApiModelProperty(value = "预定日期") + private String dateTime; + + @ApiModelProperty(value = "捐赠证书") + private String certificate; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "来源表ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "登录用户") + @TableField(exist = false) + private User loginUser; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/param/BszxPayRankingParam.java b/src/main/java/com/gxwebsoft/bszx/param/BszxPayRankingParam.java new file mode 100644 index 0000000..8739fe9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/param/BszxPayRankingParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.bszx.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 百色中学-捐款排行查询参数 + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BszxPayRankingParam对象", description = "百色中学-捐款排行查询参数") +public class BszxPayRankingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "来源表ID(项目名称)") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "数量") + @QueryField(type = QueryType.EQ) + private Integer number; + + @ApiModelProperty(value = "获得捐款总金额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxBmService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxBmService.java new file mode 100644 index 0000000..f8caaa3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxBmService.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.param.BszxBmParam; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 百色中学-报名记录Service + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxBmService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxBmParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxBmParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return BszxBm + */ + BszxBm getByIdRel(Integer id); + + /** + * 生成海报 + */ + String generatePoster(BszxBm bm) throws Exception; + + BszxBm getByUserId(Integer userId); +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxBranchService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxBranchService.java new file mode 100644 index 0000000..c7fe0ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxBranchService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxBranch; +import com.gxwebsoft.bszx.param.BszxBranchParam; + +import java.util.List; + +/** + * 百色中学-分部Service + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +public interface BszxBranchService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxBranchParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxBranchParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxBranch + */ + BszxBranch getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxClassService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxClassService.java new file mode 100644 index 0000000..7871918 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxClassService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.param.BszxClassParam; + +import java.util.List; + +/** + * 百色中学-班级Service + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxClassService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxClassParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxClassParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxClass + */ + BszxClass getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxEraService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxEraService.java new file mode 100644 index 0000000..efff9da --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxEraService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxEra; +import com.gxwebsoft.bszx.param.BszxEraParam; + +import java.util.List; + +/** + * 百色中学-年代Service + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxEraService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxEraParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxEraParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxEra + */ + BszxEra getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxGradeService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxGradeService.java new file mode 100644 index 0000000..17b5dfd --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxGradeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxGrade; +import com.gxwebsoft.bszx.param.BszxGradeParam; + +import java.util.List; + +/** + * 百色中学-年级Service + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxGradeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxGradeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxGradeParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxGrade + */ + BszxGrade getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxPayRankingService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxPayRankingService.java new file mode 100644 index 0000000..962ff2b --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxPayRankingService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxPayRanking; +import com.gxwebsoft.bszx.param.BszxPayRankingParam; + +import java.util.List; + +/** + * 百色中学-捐款排行Service + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +public interface BszxPayRankingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxPayRankingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxPayRankingParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxPayRanking + */ + BszxPayRanking getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/BszxPayService.java b/src/main/java/com/gxwebsoft/bszx/service/BszxPayService.java new file mode 100644 index 0000000..760128b --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/BszxPayService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.bszx.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxPayParam; +import com.gxwebsoft.project.entity.Project; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 百色中学-捐款记录Service + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +public interface BszxPayService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BszxPayParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BszxPayParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return BszxPay + */ + BszxPay getByIdRel(Integer id); + + /** + * 生成捐款证书 + */ + String generatePayCert(Integer id) throws Exception; + + BigDecimal sumMoney(LambdaQueryWrapper between); +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBmServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBmServiceImpl.java new file mode 100644 index 0000000..fe8d146 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBmServiceImpl.java @@ -0,0 +1,160 @@ +package com.gxwebsoft.bszx.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.freewayso.image.combiner.ImageCombiner; +import com.freewayso.image.combiner.enums.OutputFormat; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.mapper.BszxBmMapper; +import com.gxwebsoft.bszx.param.BszxClassParam; +import com.gxwebsoft.bszx.service.BszxBmService; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.param.BszxBmParam; +import com.gxwebsoft.bszx.service.BszxClassService; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.utils.ImageUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.Date; +import java.util.List; + +/** + * 百色中学-报名记录Service实现 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Service +public class BszxBmServiceImpl extends ServiceImpl implements BszxBmService { + @Value("${config.upload-path}") + private String uploadPath; + @Value("${config.file-server}") + private String fileServer; + @Resource + private ConfigProperties config; + @Resource + private CmsArticleService cmsArticleService; + @Resource + private BszxClassService bszxClassService; + + @Override + public PageResult pageRel(BszxBmParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("id desc"); + List list = baseMapper.selectPageRel(page, param); + list.forEach(d -> { + if(d.getClassId().equals(0)){ + final BszxClassParam classParam = new BszxClassParam(); + classParam.setGradeName(d.getGradeName()); + classParam.setName(d.getClassName()); + final List bszxClasses = bszxClassService.listRel(classParam); + if (!CollectionUtils.isEmpty(bszxClasses)) { + BszxClass bszxClass = bszxClasses.get(0); + System.out.println("bszxClass = " + bszxClass); + d.setClassId(bszxClass.getId()); + d.setBranchId(bszxClass.getBranch()); + updateById(d); + } + } + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxBmParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("id desc"); + return page.sortRecords(list); + } + + @Override + public BszxBm getByIdRel(Integer id) { + BszxBmParam param = new BszxBmParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + + /** + * 生成捐款证书 ... + * + * @return + * @throws Exception + */ + @Override + public String generatePoster(BszxBm item) throws Exception { + final CmsArticle article = cmsArticleService.getById(7859); + if (ObjectUtil.isEmpty(article)) { + return null; + } + if (ObjectUtil.isNotEmpty(item)) { + // Font font = new Font("阿里巴巴普惠体", Font.PLAIN, 40); + //合成器(指定背景图和输出格式,整个图片的宽高和相关计算依赖于背景图,所以背景图的大小是个基准) + ImageCombiner combiner = new ImageCombiner(article.getAddress(), OutputFormat.JPG); + //加文本元素:姓名 +// if (item.getType().equals(0)) { +// combiner.addTextElement(item.getName().concat(" 校友"), 40, 220, 540); +// } else { +// combiner.addTextElement(item.getName(), 40, 220, 540); +// } + +// combiner.addTextElement(DateUtil.format(DateUtil.date(), "yyyy年MM月"), 28,650, 1566); + //加图片元素:盖章 +// combiner.addImageElement("https://oss.wsdns.cn/20250304/6936b109b09b4919a3498ac5027e728b.png", 600, 1420); + + + if (item.getType().equals(0)) { + combiner.addTextElement(item.getName().concat(" 校友"), 30, 160, 1008); + } else { + combiner.addTextElement(item.getName(), 30, 160, 1008); + } + +// combiner.addTextElement(DateUtil.format(DateUtil.date(), "yyyy年MM月"), 28,650, 1566); + //加图片元素:盖章 +// combiner.addImageElement("https://oss.wsdns.cn/20250304/6936b109b09b4919a3498ac5027e728b.png", 600, 1420); + //执行图片合并 + combiner.combine(); + + if (!FileUtil.exist(uploadPath + "file/poster/" + item.getTenantId() + "/bm")) { + FileUtil.mkdir(uploadPath + "file/poster/" + item.getTenantId() + "/bm"); + } + String basePath = "/poster/" + item.getTenantId() + "/bm/big-" + item.getId() + ".jpg"; + String smallPath = "/poster/" + item.getTenantId() + "/bm/" + item.getId() + ".jpg"; + String filename = uploadPath + "file" + basePath; + String smallFileName = uploadPath + "file" + smallPath; + combiner.save(filename); + + File input = new File(filename); + File output = new File(smallFileName); + ImageUtil.adjustQuality(input, output, 0.8f); + if(input.exists()){ + input.delete(); + } + return fileServer + smallPath + "?r=" + RandomUtil.randomNumbers(4); + } + return null; + } + + @Override + public BszxBm getByUserId(Integer userId) { + return getOne(new LambdaQueryWrapper().eq(BszxBm::getUserId, userId).last("limit 1")); + } +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBranchServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBranchServiceImpl.java new file mode 100644 index 0000000..7e12499 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxBranchServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.bszx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.bszx.mapper.BszxBranchMapper; +import com.gxwebsoft.bszx.service.BszxBranchService; +import com.gxwebsoft.bszx.entity.BszxBranch; +import com.gxwebsoft.bszx.param.BszxBranchParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 百色中学-分部Service实现 + * + * @author 科技小王子 + * @since 2025-03-17 17:18:22 + */ +@Service +public class BszxBranchServiceImpl extends ServiceImpl implements BszxBranchService { + + @Override + public PageResult pageRel(BszxBranchParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxBranchParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public BszxBranch getByIdRel(Integer id) { + BszxBranchParam param = new BszxBranchParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxClassServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxClassServiceImpl.java new file mode 100644 index 0000000..20ea2f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxClassServiceImpl.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.bszx.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.mapper.BszxClassMapper; +import com.gxwebsoft.bszx.service.BszxClassService; +import com.gxwebsoft.bszx.entity.BszxClass; +import com.gxwebsoft.bszx.param.BszxClassParam; +import com.gxwebsoft.bszx.service.BszxPayService; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 百色中学-班级Service实现 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Service +public class BszxClassServiceImpl extends ServiceImpl implements BszxClassService { + @Resource + private RedisUtil redisUtil; + @Resource + private BszxPayService bszxPayService; + + @Override + public PageResult pageRel(BszxClassParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, id asc"); + List list = baseMapper.selectPageRel(page, param); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (param.getLimit() == null) { + list.forEach(item -> { + wrapper.clear(); +// wrapper.eq(BszxPay::getBranchName,item.getBranchName()); + wrapper.eq(BszxPay::getGradeName,item.getGradeName()); + wrapper.eq(BszxPay::getClassName, item.getName()); + item.setTotalMoney(bszxPayService.sumMoney(wrapper)); + updateById(item); + }); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxClassParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, id asc"); + return page.sortRecords(list); + } + + @Override + public BszxClass getByIdRel(Integer id) { + BszxClassParam param = new BszxClassParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxEraServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxEraServiceImpl.java new file mode 100644 index 0000000..ad39481 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxEraServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.bszx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.bszx.mapper.BszxEraMapper; +import com.gxwebsoft.bszx.service.BszxEraService; +import com.gxwebsoft.bszx.entity.BszxEra; +import com.gxwebsoft.bszx.param.BszxEraParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 百色中学-年代Service实现 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Service +public class BszxEraServiceImpl extends ServiceImpl implements BszxEraService { + + @Override + public PageResult pageRel(BszxEraParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxEraParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public BszxEra getByIdRel(Integer id) { + BszxEraParam param = new BszxEraParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxGradeServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxGradeServiceImpl.java new file mode 100644 index 0000000..1dded74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxGradeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.bszx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.bszx.mapper.BszxGradeMapper; +import com.gxwebsoft.bszx.service.BszxGradeService; +import com.gxwebsoft.bszx.entity.BszxGrade; +import com.gxwebsoft.bszx.param.BszxGradeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 百色中学-年级Service实现 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Service +public class BszxGradeServiceImpl extends ServiceImpl implements BszxGradeService { + + @Override + public PageResult pageRel(BszxGradeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, id asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxGradeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, id asc"); + return page.sortRecords(list); + } + + @Override + public BszxGrade getByIdRel(Integer id) { + BszxGradeParam param = new BszxGradeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayRankingServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayRankingServiceImpl.java new file mode 100644 index 0000000..22cee64 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayRankingServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.bszx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.bszx.mapper.BszxPayRankingMapper; +import com.gxwebsoft.bszx.service.BszxPayRankingService; +import com.gxwebsoft.bszx.entity.BszxPayRanking; +import com.gxwebsoft.bszx.param.BszxPayRankingParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 百色中学-捐款排行Service实现 + * + * @author 科技小王子 + * @since 2025-03-25 08:54:09 + */ +@Service +public class BszxPayRankingServiceImpl extends ServiceImpl implements BszxPayRankingService { + + @Override + public PageResult pageRel(BszxPayRankingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxPayRankingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public BszxPayRanking getByIdRel(Integer id) { + BszxPayRankingParam param = new BszxPayRankingParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayServiceImpl.java b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayServiceImpl.java new file mode 100644 index 0000000..e827035 --- /dev/null +++ b/src/main/java/com/gxwebsoft/bszx/service/impl/BszxPayServiceImpl.java @@ -0,0 +1,150 @@ +package com.gxwebsoft.bszx.service.impl; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.freewayso.image.combiner.ImageCombiner; +import com.freewayso.image.combiner.enums.OutputFormat; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.mapper.BszxPayMapper; +import com.gxwebsoft.bszx.service.BszxBmService; +import com.gxwebsoft.bszx.service.BszxPayService; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.bszx.param.BszxPayParam; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.common.core.utils.ImageUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.File; +import java.math.BigDecimal; +import java.util.List; + +/** + * 百色中学-捐款记录Service实现 + * + * @author 科技小王子 + * @since 2025-03-06 22:50:25 + */ +@Service +public class BszxPayServiceImpl extends ServiceImpl implements BszxPayService { + @Value("${config.upload-path}") + private String uploadPath; + @Value("${config.file-server}") + private String fileServer; + + @Resource + private CmsArticleService cmsArticleService; + @Resource + public BszxBmService bszxBmService; + @Resource + private BszxPayService bszxPayService; + + @Override + public PageResult pageRel(BszxPayParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("price desc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + list.forEach(item -> { + if(item.getId().equals(2088)){ + item.setFormName("捐款用于设立阙里校友奖学金"); + } + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BszxPayParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("id desc"); + return page.sortRecords(list); + } + + @Override + public BszxPay getByIdRel(Integer id) { + BszxPayParam param = new BszxPayParam(); + param.setId(id); + final BszxPay item = param.getOne(baseMapper.selectListRel(param)); + final CmsArticle article = cmsArticleService.getById(item.getFormId()); + if (ObjectUtil.isNotEmpty(article)) { + item.setArticle(article); + } + return item; + } + + /** + * 生成捐款证书 ... + */ + @Override + public String generatePayCert(Integer id) throws Exception { + final BszxPay payCert = getByIdRel(id); + final CmsArticle item = cmsArticleService.getById(payCert.getFormId()); + final BszxBm bm = bszxBmService.getOne(new LambdaQueryWrapper().eq(BszxBm::getUserId, payCert.getUserId()).last("limit 1")); + final BigDecimal totalMoney = bszxPayService.sumMoney(new LambdaQueryWrapper().eq(BszxPay::getUserId, payCert.getUserId())); + if (StrUtil.isBlank(item.getAddress())) { + return null; + } + if (ObjectUtil.isNotEmpty(payCert)) { + //合成器(指定背景图和输出格式,整个图片的宽高和相关计算依赖于背景图,所以背景图的大小是个基准) + ImageCombiner combiner = new ImageCombiner("https://oss.wsdns.cn/20250420/811a380e8e124097aa0940a7c68a1f72.jpeg", OutputFormat.JPG); + //加图片元素:盖章 +// combiner.addImageElement("https://oss.wsdns.cn/20250304/6936b109b09b4919a3498ac5027e728b.png", 550, 926); + //加文本元素:姓名 + String str; + if (bm.getType().equals(0)) { + str = bm.getName().concat(" 校友"); + combiner.addTextElement(str, 32, 930, 450); + } else { + str = bm.getName(); + combiner.addTextElement(str, 22, 880, 450); + } +// combiner.addTextElement(bm.getName(), 32,900, 450); + //加文本元素:捐款证书内容 +// combiner.addTextElement(" 承您慷慨解囊,襄助百色市百色中学", 32,200, 650); +// combiner.addTextElement("百廿校庆“" + item.getTitle() + "”项目,捐赠人民币", 32,200, 700); + combiner.addTextElement(totalMoney + "", 32, 1330, 600); +// combiner.addTextElement(" 您对学校的支持,为我们共同教育理", 32,200, 800); +// combiner.addTextElement("想的实现增添了一份动力。", 32,200, 850); +// combiner.addTextElement(" 承蒙惠赠,隆情铭感,特颁此证,以资谢旌!", 32, 200, 900); +// combiner.addTextElement("百色市百色中学", 32,560, 1015); +// final Date createTime = payCert.getCreateTime(); +// combiner.addTextElement(DateUtil.format(createTime, "yyyy年MM月"), 28,586, 1060); +// combiner.addTextElement("2025年4月15日", 28,580, 1060); + + //执行图片合并 + combiner.combine(); + + if (!FileUtil.exist(uploadPath + "file/poster/" + payCert.getTenantId() + "/pay")) { + FileUtil.mkdir(uploadPath + "file/poster/" + payCert.getTenantId() + "/pay"); + } + String basePath = "/poster/" + payCert.getTenantId() + "/pay/big-" + id + ".jpg"; + String smallPath = "/poster/" + payCert.getTenantId() + "/pay/" + id + ".jpg"; + String filename = uploadPath + "file" + basePath; + String smallFileName = uploadPath + "file" + smallPath; + combiner.save(filename); + + File input = new File(filename); + File output = new File(smallFileName); + ImageUtil.adjustQuality(input, output, 0.8f); + if (input.exists()) { + input.delete(); + } + return fileServer + smallPath + "?r=" + RandomUtil.randomNumbers(4); + } + return null; + } + + @Override + public BigDecimal sumMoney(LambdaQueryWrapper wrapper) { + return baseMapper.selectSumMoney(wrapper); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsAdController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsAdController.java new file mode 100644 index 0000000..fe11866 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsAdController.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsAdService; +import com.gxwebsoft.cms.entity.CmsAd; +import com.gxwebsoft.cms.param.CmsAdParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 广告位控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "广告位管理") +@RestController +@RequestMapping("/api/cms/cms-ad") +public class CmsAdController extends BaseController { + @Resource + private CmsAdService cmsAdService; + + @ApiOperation("分页查询广告位") + @GetMapping("/page") + public ApiResult> page(CmsAdParam param) { + // 使用关联查询 + return success(cmsAdService.pageRel(param)); + } + + @ApiOperation("查询全部广告位") + @GetMapping() + public ApiResult> list(CmsAdParam param) { + // 使用关联查询 + return success(cmsAdService.listRel(param)); + } + + @ApiOperation("根据id查询广告位") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + final CmsAd ad = cmsAdService.getByIdRel(id); + return success(ad); + } + + @ApiOperation("添加广告位") + @PostMapping() + public ApiResult save(@RequestBody CmsAd cmsAd) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsAd.setUserId(loginUser.getUserId()); + } + if (cmsAdService.save(cmsAd)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改广告位") + @PutMapping() + public ApiResult update(@RequestBody CmsAd cmsAd) { + if (cmsAdService.updateById(cmsAd)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除广告位") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsAdService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加广告位") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsAdService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改广告位") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsAdService, "ad_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除广告位") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsAdService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsAdRecordController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsAdRecordController.java new file mode 100644 index 0000000..a57eda4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsAdRecordController.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsAdRecordService; +import com.gxwebsoft.cms.entity.CmsAdRecord; +import com.gxwebsoft.cms.param.CmsAdRecordParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 广告图片控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "广告图片管理") +@RestController +@RequestMapping("/api/cms/cms-ad-record") +public class CmsAdRecordController extends BaseController { + @Resource + private CmsAdRecordService cmsAdRecordService; + + @ApiOperation("分页查询广告图片") + @GetMapping("/page") + public ApiResult> page(CmsAdRecordParam param) { + // 使用关联查询 + return success(cmsAdRecordService.pageRel(param)); + } + + @ApiOperation("查询全部广告图片") + @GetMapping() + public ApiResult> list(CmsAdRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsAdRecordService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsAdRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsAdRecord:list')") + @OperationLog + @ApiOperation("根据id查询广告图片") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsAdRecordService.getById(id)); + // 使用关联查询 + //return success(cmsAdRecordService.getByIdRel(id)); + } + + @ApiOperation("添加广告图片") + @PostMapping() + public ApiResult save(@RequestBody CmsAdRecord cmsAdRecord) { + if (cmsAdRecordService.save(cmsAdRecord)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改广告图片") + @PutMapping() + public ApiResult update(@RequestBody CmsAdRecord cmsAdRecord) { + if (cmsAdRecordService.updateById(cmsAdRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除广告图片") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsAdRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加广告图片") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsAdRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改广告图片") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsAdRecordService, "ad_record_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除广告图片") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsAdRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCategoryController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCategoryController.java new file mode 100644 index 0000000..d3422f8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCategoryController.java @@ -0,0 +1,111 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsArticleCategoryService; +import com.gxwebsoft.cms.entity.CmsArticleCategory; +import com.gxwebsoft.cms.param.CmsArticleCategoryParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 文章分类表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "文章分类表管理") +@RestController +@RequestMapping("/api/cms/cms-article-category") +public class CmsArticleCategoryController extends BaseController { + @Resource + private CmsArticleCategoryService cmsArticleCategoryService; + + @ApiOperation("分页查询文章分类表") + @GetMapping("/page") + public ApiResult> page(CmsArticleCategoryParam param) { + // 使用关联查询 + return success(cmsArticleCategoryService.pageRel(param)); + } + + @ApiOperation("查询全部文章分类表") + @GetMapping() + public ApiResult> list(CmsArticleCategoryParam param) { + // 使用关联查询 + return success(cmsArticleCategoryService.listRel(param)); + } + + @ApiOperation("根据id查询文章分类表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsArticleCategoryService.getByIdRel(id)); + } + + @ApiOperation("添加文章分类表") + @PostMapping() + public ApiResult save(@RequestBody CmsArticleCategory cmsArticleCategory) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsArticleCategory.setUserId(loginUser.getUserId()); + } + if (cmsArticleCategoryService.save(cmsArticleCategory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改文章分类表") + @PutMapping() + public ApiResult update(@RequestBody CmsArticleCategory cmsArticleCategory) { + if (cmsArticleCategoryService.updateById(cmsArticleCategory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除文章分类表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleCategoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加文章分类表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleCategoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改文章分类表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleCategoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除文章分类表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleCategoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCommentController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCommentController.java new file mode 100644 index 0000000..f2b4338 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCommentController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsArticleCommentService; +import com.gxwebsoft.cms.entity.CmsArticleComment; +import com.gxwebsoft.cms.param.CmsArticleCommentParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 文章评论表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "文章评论表管理") +@RestController +@RequestMapping("/api/cms/cms-article-comment") +public class CmsArticleCommentController extends BaseController { + @Resource + private CmsArticleCommentService cmsArticleCommentService; + + @ApiOperation("分页查询文章评论表") + @GetMapping("/page") + public ApiResult> page(CmsArticleCommentParam param) { + // 使用关联查询 + return success(cmsArticleCommentService.pageRel(param)); + } + + @ApiOperation("查询全部文章评论表") + @GetMapping() + public ApiResult> list(CmsArticleCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsArticleCommentService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsArticleCommentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsArticleComment:list')") + @OperationLog + @ApiOperation("根据id查询文章评论表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsArticleCommentService.getById(id)); + // 使用关联查询 + //return success(cmsArticleCommentService.getByIdRel(id)); + } + + @ApiOperation("添加文章评论表") + @PostMapping() + public ApiResult save(@RequestBody CmsArticleComment cmsArticleComment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsArticleComment.setUserId(loginUser.getUserId()); + } + if (cmsArticleCommentService.save(cmsArticleComment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改文章评论表") + @PutMapping() + public ApiResult update(@RequestBody CmsArticleComment cmsArticleComment) { + if (cmsArticleCommentService.updateById(cmsArticleComment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除文章评论表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleCommentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加文章评论表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleCommentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改文章评论表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleCommentService, "comment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除文章评论表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleCommentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleContentController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleContentController.java new file mode 100644 index 0000000..d3c2da3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleContentController.java @@ -0,0 +1,113 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsArticleContentService; +import com.gxwebsoft.cms.entity.CmsArticleContent; +import com.gxwebsoft.cms.param.CmsArticleContentParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 文章记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "文章记录表管理") +@RestController +@RequestMapping("/api/cms/cms-article-content") +public class CmsArticleContentController extends BaseController { + @Resource + private CmsArticleContentService cmsArticleContentService; + + @ApiOperation("分页查询文章记录表") + @GetMapping("/page") + public ApiResult> page(CmsArticleContentParam param) { + // 使用关联查询 + return success(cmsArticleContentService.pageRel(param)); + } + + @ApiOperation("查询全部文章记录表") + @GetMapping() + public ApiResult> list(CmsArticleContentParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(cmsArticleContentService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(cmsArticleContentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsArticleContent:list')") + @OperationLog + @ApiOperation("根据id查询文章记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(cmsArticleContentService.getById(id)); + // 使用关联查询 + return success(cmsArticleContentService.getByIdRel(id)); + } + + @ApiOperation("添加文章记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsArticleContent cmsArticleContent) { + if (cmsArticleContentService.save(cmsArticleContent)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改文章记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsArticleContent cmsArticleContent) { + if (cmsArticleContentService.updateById(cmsArticleContent)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除文章记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleContentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加文章记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleContentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改文章记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleContentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除文章记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleContentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleController.java new file mode 100644 index 0000000..5d501c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleController.java @@ -0,0 +1,360 @@ +package com.gxwebsoft.cms.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.gxwebsoft.cms.entity.*; +import com.gxwebsoft.cms.param.CmsArticleImportParam; +import com.gxwebsoft.cms.service.*; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.param.CmsArticleParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.*; + +import static com.gxwebsoft.common.core.constants.ArticleConstants.CACHE_KEY_ARTICLE; + +/** + * 文章控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Slf4j +@Validated +@Api(tags = "文章管理") +@RestController +@RequestMapping("/api/cms/cms-article") +public class CmsArticleController extends BaseController { + @Resource + private CmsArticleService cmsArticleService; + @Resource + private CmsArticleContentService articleContentService; + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsModelService cmsModelService; + @Resource + private UserService userService; + @Resource + private RedisUtil redisUtil; + + private static final long CACHE_MINUTES = 30L; + + @ApiOperation("分页查询文章") + @GetMapping("/page") + public ApiResult> page(CmsArticleParam param) { + // 使用关联查询 + return success(cmsArticleService.pageRel(param)); + } + + @ApiOperation("查询全部文章") + @GetMapping() + public ApiResult> list(CmsArticleParam param) { + // 使用关联查询 + return success(cmsArticleService.listRel(param)); + } + + @ApiOperation("根据id查询文章") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") @NotNull Integer id) { + final CmsArticle article = cmsArticleService.getByIdRel(id); + if (ObjectUtil.isNotEmpty(article)) { + return success(article); + } + return fail("文章ID不存在",null); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:save')") + @ApiOperation("添加文章") + @PostMapping() + public ApiResult save(@RequestBody @Valid CmsArticle article) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + article.setUserId(loginUser.getUserId()); + article.setAuthor(loginUser.getNickname()); + article.setMerchantId(loginUser.getMerchantId()); + if (cmsArticleService.saveRel(article)) { + return success("添加成功"); + } + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:update')") + @ApiOperation("修改文章") + @PutMapping() + public ApiResult update(@RequestBody CmsArticle article) { + if (cmsArticleService.updateByIdRel(article)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:remove')") + @ApiOperation("删除文章") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleService.removeById(id)) { + redisUtil.delete(CACHE_KEY_ARTICLE + id); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:save')") + @ApiOperation("批量添加文章") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:update')") + @ApiOperation("批量修改文章") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleService, "article_id")) { + // 删除缓存 + final List ids = batchParam.getIds(); + ids.forEach(id -> { + redisUtil.delete(CACHE_KEY_ARTICLE + id); + }); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsArticle:remove')") + @ApiOperation("批量删除文章") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleService.removeByIds(ids)) { + // 删除缓存 + ids.forEach(id -> { + redisUtil.delete(CACHE_KEY_ARTICLE + id); + }); + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("读取上一篇") + @GetMapping("/getPrevious/{id}") + public ApiResult getPrevious(@PathVariable("id") Integer id) { + final CmsArticle item = cmsArticleService.getById(id); + if (ObjectUtil.isEmpty(item)) { + return success("没有找到上一篇文章",null); + } + CmsArticle article; + // TODO 按排序号规则 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.lt(CmsArticle::getSortNumber, item.getSortNumber()); + wrapper.eq(CmsArticle::getStatus, 0); + wrapper.eq(CmsArticle::getType, 0); + wrapper.eq(CmsArticle::getCategoryId, item.getCategoryId()); + wrapper.orderByDesc(CmsArticle::getSortNumber); + wrapper.last("limit 1"); + article = cmsArticleService.getOne(wrapper); + if (ObjectUtil.isNotEmpty(article)) { + return success(article); + } + // TODO 按ID排序 + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.lt(CmsArticle::getArticleId, item.getArticleId()); + wrapper2.eq(CmsArticle::getStatus, 0); + wrapper2.eq(CmsArticle::getCategoryId, item.getCategoryId()); + wrapper2.last("limit 1"); + wrapper2.orderByDesc(CmsArticle::getArticleId); + article = cmsArticleService.getOne(wrapper2); + return success(article); + } + + @ApiOperation("读取下一篇") + @GetMapping("/getNext/{id}") + public ApiResult getNext(@PathVariable("id") Integer id) { + CmsArticle item = cmsArticleService.getById(id); + if (ObjectUtil.isEmpty(item)) { + return success("没有找到下一篇文章",null); + } + CmsArticle article; + // TODO 按排序号规则 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.gt(CmsArticle::getSortNumber, item.getSortNumber()); + wrapper.eq(CmsArticle::getStatus, 0); + wrapper.eq(CmsArticle::getType, 0); + wrapper.eq(CmsArticle::getCategoryId, item.getCategoryId()); + wrapper.orderByAsc(CmsArticle::getSortNumber); + wrapper.last("limit 1"); + article = cmsArticleService.getOne(wrapper); + if (ObjectUtil.isNotEmpty(article)) { + return success(article); + } + // TODO 按ID排序 + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.gt(CmsArticle::getArticleId, item.getArticleId()); + wrapper2.eq(CmsArticle::getStatus, 0); + wrapper2.eq(CmsArticle::getCategoryId, item.getCategoryId()); + wrapper2.last("limit 1"); + wrapper2.orderByAsc(CmsArticle::getArticleId); + article = cmsArticleService.getOne(wrapper2); + return success(article); + } + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data(CmsArticleParam param) { + Map data = new HashMap<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (param.getMerchantId() != null) { + wrapper.eq(CmsArticle::getMerchantId, param.getMerchantId()); + } + + Integer totalNum = cmsArticleService.count( + wrapper.eq(CmsArticle::getDeleted, 0).eq(CmsArticle::getStatus, 0) + ); + data.put("totalNum", totalNum); + + Integer totalNum2 = cmsArticleService.count( + wrapper.eq(CmsArticle::getStatus, 1) + ); + data.put("totalNum2", totalNum2); + + Integer totalNum3 = cmsArticleService.count( + wrapper.gt(CmsArticle::getStatus, 1) + ); + data.put("totalNum3", totalNum3); + + return success(data); + } + + @ApiOperation("密码校验") + @GetMapping("/checkArticlePassword") + public ApiResult checkArticlePassword(CmsArticle param) { + if (!userService.comparePassword(param.getPassword(), param.getPassword2())) { + return fail("密码不正确"); + } + return success("密码正确"); + } + + /** + * excel批量导入文章 + */ + @PreAuthorize("hasAuthority('cms:cmsArticle:save')") + @ApiOperation("批量导入文章") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/import") + public ApiResult> importBatch(MultipartFile file) { + ImportParams importParams = new ImportParams(); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), CmsArticleImportParam.class, importParams); + list.forEach(d -> { + CmsArticle item = JSONUtil.parseObject(JSONUtil.toJSONString(d), CmsArticle.class); + assert item != null; + if (ObjectUtil.isNotEmpty(item)) { + if (item.getStatus() == null) { + item.setStatus(1); + } + if (cmsArticleService.save(item)) { + CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(item.getArticleId()); + content.setContent(item.getContent()); + articleContentService.save(content); + } + } + }); + return success("成功导入" + list.size() + "条", null); + } catch (Exception e) { + e.printStackTrace(); + } + return fail("导入失败", null); + } + + @ApiOperation("按标签分页查询") + @GetMapping("/findTags") + public ApiResult> findTags(CmsArticleParam param) { + final String tags = param.getTags(); + if (StringUtils.isNotBlank(tags)) { + final String[] split = tags.split(","); + final List list = Arrays.asList(split); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + if (StrUtil.isNotBlank(tags)) { + for (String s : list) { + queryWrapper.or().like(CmsArticle::getTags, s); +// queryWrapper.or().apply("LOCATE(" + "'" + s + "'," + "tags" + ") > 0"); + } + } + if (param.getCategoryId() != null) { + queryWrapper.eq(CmsArticle::getCategoryId, param.getCategoryId()); + } + if (param.getDetail() != null) { + queryWrapper.eq(CmsArticle::getDetail, param.getDetail()); + } + queryWrapper.last("limit 8"); + List articles = cmsArticleService.list(queryWrapper); + return success(articles); + } + return success("", null); + } + + @ApiOperation("按标签分页查询") + @GetMapping("/pageTags") + public ApiResult> pageTags(CmsArticleParam param) { + final String tags = param.getTags(); + if (StringUtils.isNotBlank(tags)) { + final String[] split = tags.split(","); + final List list = Arrays.asList(split); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + for (String s : list) { + queryWrapper.or().like(CmsArticle::getTags, s); + } + queryWrapper.orderByDesc(CmsArticle::getCreateTime); + queryWrapper.last("limit 100"); + List articles = cmsArticleService.list(queryWrapper); + if (!articles.isEmpty()) { + List navigationList = cmsNavigationService.listByIds(articles.stream().map(CmsArticle::getCategoryId).toList()); + for (CmsArticle article : articles) { + for (CmsNavigation navigation : navigationList) { + if (article.getCategoryId().equals(navigation.getNavigationId())) { + article.setCategoryName(navigation.getTitle()); + } + } + } + } + return success(articles); + } + return success("", null); + } + + @ApiOperation("按IDS查询") + @GetMapping("/getByIds") + public ApiResult> getByIds(CmsArticleParam param) { + // 使用关联查询 + return success(cmsArticleService.list(new LambdaQueryWrapper().in(CmsArticle::getArticleId, param.getArticleIds()))); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCountController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCountController.java new file mode 100644 index 0000000..8e9ba7a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleCountController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsArticleCountService; +import com.gxwebsoft.cms.entity.CmsArticleCount; +import com.gxwebsoft.cms.param.CmsArticleCountParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 点赞文章控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "点赞文章管理") +@RestController +@RequestMapping("/api/cms/cms-article-count") +public class CmsArticleCountController extends BaseController { + @Resource + private CmsArticleCountService cmsArticleCountService; + + @ApiOperation("分页查询点赞文章") + @GetMapping("/page") + public ApiResult> page(CmsArticleCountParam param) { + // 使用关联查询 + return success(cmsArticleCountService.pageRel(param)); + } + + @ApiOperation("查询全部点赞文章") + @GetMapping() + public ApiResult> list(CmsArticleCountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsArticleCountService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsArticleCountService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsArticleCount:list')") + @OperationLog + @ApiOperation("根据id查询点赞文章") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsArticleCountService.getById(id)); + // 使用关联查询 + //return success(cmsArticleCountService.getByIdRel(id)); + } + + @ApiOperation("添加点赞文章") + @PostMapping() + public ApiResult save(@RequestBody CmsArticleCount cmsArticleCount) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsArticleCount.setUserId(loginUser.getUserId()); + } + if (cmsArticleCountService.save(cmsArticleCount)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改点赞文章") + @PutMapping() + public ApiResult update(@RequestBody CmsArticleCount cmsArticleCount) { + if (cmsArticleCountService.updateById(cmsArticleCount)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除点赞文章") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleCountService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加点赞文章") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleCountService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改点赞文章") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleCountService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除点赞文章") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleCountService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsArticleLikeController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleLikeController.java new file mode 100644 index 0000000..9f73631 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsArticleLikeController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsArticleLikeService; +import com.gxwebsoft.cms.entity.CmsArticleLike; +import com.gxwebsoft.cms.param.CmsArticleLikeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 点赞文章控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "点赞文章管理") +@RestController +@RequestMapping("/api/cms/cms-article-like") +public class CmsArticleLikeController extends BaseController { + @Resource + private CmsArticleLikeService cmsArticleLikeService; + + @ApiOperation("分页查询点赞文章") + @GetMapping("/page") + public ApiResult> page(CmsArticleLikeParam param) { + // 使用关联查询 + return success(cmsArticleLikeService.pageRel(param)); + } + + @ApiOperation("查询全部点赞文章") + @GetMapping() + public ApiResult> list(CmsArticleLikeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsArticleLikeService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsArticleLikeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsArticleLike:list')") + @OperationLog + @ApiOperation("根据id查询点赞文章") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsArticleLikeService.getById(id)); + // 使用关联查询 + //return success(cmsArticleLikeService.getByIdRel(id)); + } + + @ApiOperation("添加点赞文章") + @PostMapping() + public ApiResult save(@RequestBody CmsArticleLike cmsArticleLike) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsArticleLike.setUserId(loginUser.getUserId()); + } + if (cmsArticleLikeService.save(cmsArticleLike)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改点赞文章") + @PutMapping() + public ApiResult update(@RequestBody CmsArticleLike cmsArticleLike) { + if (cmsArticleLikeService.updateById(cmsArticleLike)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除点赞文章") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsArticleLikeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加点赞文章") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsArticleLikeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改点赞文章") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsArticleLikeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除点赞文章") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsArticleLikeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsComponentsController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsComponentsController.java new file mode 100644 index 0000000..878702a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsComponentsController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsComponentsService; +import com.gxwebsoft.cms.entity.CmsComponents; +import com.gxwebsoft.cms.param.CmsComponentsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 组件控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "组件管理") +@RestController +@RequestMapping("/api/cms/cms-components") +public class CmsComponentsController extends BaseController { + @Resource + private CmsComponentsService cmsComponentsService; + + @ApiOperation("分页查询组件") + @GetMapping("/page") + public ApiResult> page(CmsComponentsParam param) { + // 使用关联查询 + return success(cmsComponentsService.pageRel(param)); + } + + @ApiOperation("查询全部组件") + @GetMapping() + public ApiResult> list(CmsComponentsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsComponentsService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsComponentsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsComponents:list')") + @OperationLog + @ApiOperation("根据id查询组件") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsComponentsService.getById(id)); + // 使用关联查询 + //return success(cmsComponentsService.getByIdRel(id)); + } + + @ApiOperation("添加组件") + @PostMapping() + public ApiResult save(@RequestBody CmsComponents cmsComponents) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsComponents.setUserId(loginUser.getUserId()); + } + if (cmsComponentsService.save(cmsComponents)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改组件") + @PutMapping() + public ApiResult update(@RequestBody CmsComponents cmsComponents) { + if (cmsComponentsService.updateById(cmsComponents)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除组件") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsComponentsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加组件") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsComponentsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改组件") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsComponentsService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除组件") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsComponentsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsDesignController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsDesignController.java new file mode 100644 index 0000000..26e85c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsDesignController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.cms.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsDesignService; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.param.CmsDesignParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 页面管理记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "页面管理记录表管理") +@RestController +@RequestMapping("/api/cms/cms-design") +public class CmsDesignController extends BaseController { + @Resource + private CmsDesignService cmsDesignService; + @Resource + private CmsNavigationService cmsNavigationService; + + @ApiOperation("分页查询页面管理记录表") + @GetMapping("/page") + public ApiResult> page(CmsDesignParam param) { + // 使用关联查询 + return success(cmsDesignService.pageRel(param)); + } + + @ApiOperation("查询全部页面管理记录表") + @GetMapping() + public ApiResult> list(CmsDesignParam param) { + // 使用关联查询 + return success(cmsDesignService.listRel(param)); + } + + @ApiOperation("根据id查询页面管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsDesignService.getByIdRel(id)); + } + + @ApiOperation("添加页面管理记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsDesign cmsDesign) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsDesign.setUserId(loginUser.getUserId()); + } + if (cmsDesignService.save(cmsDesign)) { + try { + cmsNavigationService.update(new LambdaUpdateWrapper().set(CmsNavigation::getBanner, cmsDesign.getPhoto()).eq(CmsNavigation::getNavigationId,cmsDesign.getCategoryId())); + // 同步翻译英文版 + cmsDesignService.translate(cmsDesign); + return success("添加成功"); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return fail("添加失败"); + } + + @ApiOperation("修改页面管理记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsDesign cmsDesign) { + if (cmsDesignService.updateById(cmsDesign)) { + // 同步翻译英文版 + cmsDesignService.translate(cmsDesign); + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除页面管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsDesignService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加页面管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsDesignService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改页面管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsDesignService, "page_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除页面管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsDesignService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsDesignRecordController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsDesignRecordController.java new file mode 100644 index 0000000..ef2ac46 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsDesignRecordController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsDesignRecordService; +import com.gxwebsoft.cms.entity.CmsDesignRecord; +import com.gxwebsoft.cms.param.CmsDesignRecordParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 页面组件表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "页面组件表管理") +@RestController +@RequestMapping("/api/cms/cms-design-record") +public class CmsDesignRecordController extends BaseController { + @Resource + private CmsDesignRecordService cmsDesignRecordService; + + @ApiOperation("分页查询页面组件表") + @GetMapping("/page") + public ApiResult> page(CmsDesignRecordParam param) { + // 使用关联查询 + return success(cmsDesignRecordService.pageRel(param)); + } + + @ApiOperation("查询全部页面组件表") + @GetMapping() + public ApiResult> list(CmsDesignRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsDesignRecordService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsDesignRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsDesignRecord:list')") + @OperationLog + @ApiOperation("根据id查询页面组件表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsDesignRecordService.getById(id)); + // 使用关联查询 + //return success(cmsDesignRecordService.getByIdRel(id)); + } + + @ApiOperation("添加页面组件表") + @PostMapping() + public ApiResult save(@RequestBody CmsDesignRecord cmsDesignRecord) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsDesignRecord.setUserId(loginUser.getUserId()); + } + if (cmsDesignRecordService.save(cmsDesignRecord)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改页面组件表") + @PutMapping() + public ApiResult update(@RequestBody CmsDesignRecord cmsDesignRecord) { + if (cmsDesignRecordService.updateById(cmsDesignRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除页面组件表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsDesignRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加页面组件表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsDesignRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改页面组件表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsDesignRecordService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除页面组件表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsDesignRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsDomainController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsDomainController.java new file mode 100644 index 0000000..f83c359 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsDomainController.java @@ -0,0 +1,166 @@ +package com.gxwebsoft.cms.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.mapper.CmsDomainMapper; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsDomainService; +import com.gxwebsoft.cms.entity.CmsDomain; +import com.gxwebsoft.cms.param.CmsDomainParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 网站域名记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Api(tags = "网站域名记录表管理") +@RestController +@RequestMapping("/api/cms/cms-domain") +public class CmsDomainController extends BaseController { + @Resource + private CmsDomainService cmsDomainService; + @Resource + private CmsDomainMapper cmsDomainMapper; + @Resource + private RedisUtil redisUtil; + + @ApiOperation("分页查询网站域名记录表") + @GetMapping("/page") + public ApiResult> page(CmsDomainParam param) { + // 使用关联查询 + return success(cmsDomainService.pageRel(param)); + } + + @ApiOperation("查询全部网站域名记录表") + @GetMapping() + public ApiResult> list(CmsDomainParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsDomainService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsDomainService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsDomain:list')") + @OperationLog + @ApiOperation("根据id查询网站域名记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsDomainService.getById(id)); + // 使用关联查询 + //return success(cmsDomainService.getByIdRel(id)); + } + + @ApiOperation("添加网站域名记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsDomain cmsDomain) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsDomain.setUserId(loginUser.getUserId()); + } + if (cmsDomainService.save(cmsDomain)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改网站域名记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsDomain cmsDomain) { + if (cmsDomainService.updateById(cmsDomain)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除网站域名记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsDomainService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加网站域名记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsDomainService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改网站域名记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsDomainService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除网站域名记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsDomainService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查询授权域名信息") + @GetMapping("/getTenantIdByDomain") + public ApiResult getTenantIdByDomain(CmsDomainParam param) { + final CmsDomain domain = cmsDomainService.getOne(new LambdaQueryWrapper().eq(CmsDomain::getDomain, param.getDomain()).last("limit 1")); + return success(domain); + } + + @ApiOperation("授权二级域名") + @PostMapping("/domain") + public ApiResult domain(@RequestBody CmsDomain cmsDomain) { + final User loginUser = getLoginUser(); + String key = "Domain:" + cmsDomain.getDomain(); + final Integer tenantId = loginUser.getTenantId(); + final CmsDomain domain = cmsDomainService.getOne(new LambdaQueryWrapper() + .eq(CmsDomain::getWebsiteId, cmsDomain.getWebsiteId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(domain)) { + // 重写缓存 + redisUtil.set(key,tenantId); + domain.setDomain(cmsDomain.getDomain()); + cmsDomainService.updateById(domain); + return success("授权成功"); + } + if(ObjectUtil.isEmpty(domain)){ + cmsDomain.setUserId(loginUser.getUserId()); + cmsDomain.setSortNumber(100); + cmsDomain.setStatus(1); + cmsDomain.setHostName("@"); + cmsDomain.setWebsiteId(cmsDomain.getWebsiteId()); + cmsDomain.setTenantId(tenantId); + if(cmsDomainService.save(cmsDomain)){ + // 重写缓存 + redisUtil.set(key,tenantId); + return success("授权成功"); + } + } + return fail("授权失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsFormController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsFormController.java new file mode 100644 index 0000000..98d6af9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsFormController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsFormService; +import com.gxwebsoft.cms.entity.CmsForm; +import com.gxwebsoft.cms.param.CmsFormParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 表单设计表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "表单设计表管理") +@RestController +@RequestMapping("/api/cms/cms-form") +public class CmsFormController extends BaseController { + @Resource + private CmsFormService cmsFormService; + + @ApiOperation("分页查询表单设计表") + @GetMapping("/page") + public ApiResult> page(CmsFormParam param) { + // 使用关联查询 + return success(cmsFormService.pageRel(param)); + } + + @ApiOperation("查询全部表单设计表") + @GetMapping() + public ApiResult> list(CmsFormParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsFormService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsFormService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsForm:list')") + @OperationLog + @ApiOperation("根据id查询表单设计表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsFormService.getById(id)); + // 使用关联查询 + //return success(cmsFormService.getByIdRel(id)); + } + + @ApiOperation("添加表单设计表") + @PostMapping() + public ApiResult save(@RequestBody CmsForm cmsForm) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsForm.setUserId(loginUser.getUserId()); + } + if (cmsFormService.save(cmsForm)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改表单设计表") + @PutMapping() + public ApiResult update(@RequestBody CmsForm cmsForm) { + if (cmsFormService.updateById(cmsForm)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除表单设计表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsFormService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加表单设计表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsFormService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改表单设计表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsFormService, "form_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除表单设计表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsFormService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsFormRecordController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsFormRecordController.java new file mode 100644 index 0000000..e0b4bdf --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsFormRecordController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsFormRecordService; +import com.gxwebsoft.cms.entity.CmsFormRecord; +import com.gxwebsoft.cms.param.CmsFormRecordParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 表单数据记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "表单数据记录表管理") +@RestController +@RequestMapping("/api/cms/cms-form-record") +public class CmsFormRecordController extends BaseController { + @Resource + private CmsFormRecordService cmsFormRecordService; + + @ApiOperation("分页查询表单数据记录表") + @GetMapping("/page") + public ApiResult> page(CmsFormRecordParam param) { + // 使用关联查询 + return success(cmsFormRecordService.pageRel(param)); + } + + @ApiOperation("查询全部表单数据记录表") + @GetMapping() + public ApiResult> list(CmsFormRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsFormRecordService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsFormRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsFormRecord:list')") + @OperationLog + @ApiOperation("根据id查询表单数据记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsFormRecordService.getById(id)); + // 使用关联查询 + //return success(cmsFormRecordService.getByIdRel(id)); + } + + @ApiOperation("添加表单数据记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsFormRecord cmsFormRecord) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsFormRecord.setUserId(loginUser.getUserId()); + } + if (cmsFormRecordService.save(cmsFormRecord)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改表单数据记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsFormRecord cmsFormRecord) { + if (cmsFormRecordService.updateById(cmsFormRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除表单数据记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsFormRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加表单数据记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsFormRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改表单数据记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsFormRecordService, "form_record_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除表单数据记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsFormRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsLangController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsLangController.java new file mode 100644 index 0000000..dd3f471 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsLangController.java @@ -0,0 +1,113 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsLangService; +import com.gxwebsoft.cms.entity.CmsLang; +import com.gxwebsoft.cms.param.CmsLangParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 国际化控制器 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Api(tags = "国际化管理") +@RestController +@RequestMapping("/api/cms/cms-lang") +public class CmsLangController extends BaseController { + @Resource + private CmsLangService cmsLangService; + + @ApiOperation("分页查询国际化") + @GetMapping("/page") + public ApiResult> page(CmsLangParam param) { + // 使用关联查询 + return success(cmsLangService.pageRel(param)); + } + + @ApiOperation("查询全部国际化") + @GetMapping() + public ApiResult> list(CmsLangParam param) { + // 使用关联查询 + return success(cmsLangService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:list')") + @ApiOperation("根据id查询国际化") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsLangService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:save')") + @ApiOperation("添加国际化") + @PostMapping() + public ApiResult save(@RequestBody CmsLang cmsLang) { + if (cmsLangService.save(cmsLang)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:update')") + @ApiOperation("修改国际化") + @PutMapping() + public ApiResult update(@RequestBody CmsLang cmsLang) { + if (cmsLangService.updateById(cmsLang)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:remove')") + @ApiOperation("删除国际化") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsLangService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:save')") + @ApiOperation("批量添加国际化") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsLangService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:update')") + @ApiOperation("批量修改国际化") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsLangService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLang:reomve')") + @ApiOperation("批量删除国际化") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsLangService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsLangLogController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsLangLogController.java new file mode 100644 index 0000000..921f5cd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsLangLogController.java @@ -0,0 +1,113 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsLangLogService; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 国际化记录启用控制器 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Api(tags = "国际化记录启用管理") +@RestController +@RequestMapping("/api/cms/cms-lang-log") +public class CmsLangLogController extends BaseController { + @Resource + private CmsLangLogService cmsLangLogService; + + @ApiOperation("分页查询国际化记录启用") + @GetMapping("/page") + public ApiResult> page(CmsLangLogParam param) { + // 使用关联查询 + return success(cmsLangLogService.pageRel(param)); + } + + @ApiOperation("查询全部国际化记录启用") + @GetMapping() + public ApiResult> list(CmsLangLogParam param) { + // 使用关联查询 + return success(cmsLangLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:list')") + @ApiOperation("根据id查询国际化记录启用") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsLangLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:save')") + @ApiOperation("添加国际化记录启用") + @PostMapping() + public ApiResult save(@RequestBody CmsLangLog cmsLangLog) { + if (cmsLangLogService.save(cmsLangLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:update')") + @ApiOperation("修改国际化记录启用") + @PutMapping() + public ApiResult update(@RequestBody CmsLangLog cmsLangLog) { + if (cmsLangLogService.updateById(cmsLangLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:remove')") + @ApiOperation("删除国际化记录启用") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsLangLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:save')") + @ApiOperation("批量添加国际化记录启用") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsLangLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:update')") + @ApiOperation("批量修改国际化记录启用") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsLangLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsLangLog:remove')") + @ApiOperation("批量删除国际化记录启用") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsLangLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsLinkController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsLinkController.java new file mode 100644 index 0000000..cac94eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsLinkController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsLinkService; +import com.gxwebsoft.cms.entity.CmsLink; +import com.gxwebsoft.cms.param.CmsLinkParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 常用链接控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "常用链接管理") +@RestController +@RequestMapping("/api/cms/cms-link") +public class CmsLinkController extends BaseController { + @Resource + private CmsLinkService cmsLinkService; + + @ApiOperation("分页查询常用链接") + @GetMapping("/page") + public ApiResult> page(CmsLinkParam param) { + // 使用关联查询 + return success(cmsLinkService.pageRel(param)); + } + + @ApiOperation("查询全部常用链接") + @GetMapping() + public ApiResult> list(CmsLinkParam param) { + // 使用关联查询 + return success(cmsLinkService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsLink:list')") + @OperationLog + @ApiOperation("根据id查询常用链接") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsLinkService.getByIdRel(id)); + } + + @ApiOperation("添加常用链接") + @PostMapping() + public ApiResult save(@RequestBody CmsLink cmsLink) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsLink.setUserId(loginUser.getUserId()); + } + if (cmsLinkService.save(cmsLink)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改常用链接") + @PutMapping() + public ApiResult update(@RequestBody CmsLink cmsLink) { + if (cmsLinkService.updateById(cmsLink)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除常用链接") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsLinkService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加常用链接") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsLinkService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改常用链接") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsLinkService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除常用链接") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsLinkService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsModelController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsModelController.java new file mode 100644 index 0000000..f6498a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsModelController.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsModelService; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.param.CmsModelParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 模型控制器 + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +@Api(tags = "模型管理") +@RestController +@RequestMapping("/api/cms/cms-model") +public class CmsModelController extends BaseController { + @Resource + private CmsModelService cmsModelService; + + @ApiOperation("分页查询模型") + @GetMapping("/page") + public ApiResult> page(CmsModelParam param) { + // 使用关联查询 + return success(cmsModelService.pageRel(param)); + } + + @ApiOperation("查询全部模型") + @GetMapping() + public ApiResult> list(CmsModelParam param) { + // 使用关联查询 + return success(cmsModelService.listRel(param)); + } + + @ApiOperation("根据id查询模型") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsModelService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:save')") + @ApiOperation("添加模型") + @PostMapping() + public ApiResult save(@RequestBody CmsModel cmsModel) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsModel.setUserId(loginUser.getUserId()); + } + if (cmsModelService.save(cmsModel)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:update')") + @ApiOperation("修改模型") + @PutMapping() + public ApiResult update(@RequestBody CmsModel cmsModel) { + if (cmsModelService.updateById(cmsModel)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:remove')") + @ApiOperation("删除模型") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsModelService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:save')") + @ApiOperation("批量添加模型") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsModelService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:update')") + @ApiOperation("批量修改模型") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsModelService, "model_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsModel:remvoe')") + @ApiOperation("批量删除模型") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsModelService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsMpAdController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsMpAdController.java new file mode 100644 index 0000000..910fa84 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsMpAdController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsMpAdService; +import com.gxwebsoft.cms.entity.CmsMpAd; +import com.gxwebsoft.cms.param.CmsMpAdParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序广告位控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "小程序广告位管理") +@RestController +@RequestMapping("/api/cms/cms-mp-ad") +public class CmsMpAdController extends BaseController { + @Resource + private CmsMpAdService cmsMpAdService; + + @ApiOperation("分页查询小程序广告位") + @GetMapping("/page") + public ApiResult> page(CmsMpAdParam param) { + // 使用关联查询 + return success(cmsMpAdService.pageRel(param)); + } + + @ApiOperation("查询全部小程序广告位") + @GetMapping() + public ApiResult> list(CmsMpAdParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsMpAdService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsMpAdService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsMpAd:list')") + @OperationLog + @ApiOperation("根据id查询小程序广告位") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsMpAdService.getById(id)); + // 使用关联查询 + //return success(cmsMpAdService.getByIdRel(id)); + } + + @ApiOperation("添加小程序广告位") + @PostMapping() + public ApiResult save(@RequestBody CmsMpAd cmsMpAd) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsMpAd.setUserId(loginUser.getUserId()); + } + if (cmsMpAdService.save(cmsMpAd)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改小程序广告位") + @PutMapping() + public ApiResult update(@RequestBody CmsMpAd cmsMpAd) { + if (cmsMpAdService.updateById(cmsMpAd)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序广告位") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsMpAdService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序广告位") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsMpAdService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序广告位") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsMpAdService, "ad_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除小程序广告位") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsMpAdService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsMpController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsMpController.java new file mode 100644 index 0000000..3558f47 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsMpController.java @@ -0,0 +1,283 @@ +package com.gxwebsoft.cms.controller; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.cms.entity.CmsMpField; +import com.gxwebsoft.cms.entity.CmsMpMenu; +import com.gxwebsoft.cms.entity.CmsMpPages; +import com.gxwebsoft.cms.service.CmsMpFieldService; +import com.gxwebsoft.cms.service.CmsMpMenuService; +import com.gxwebsoft.cms.service.CmsMpPagesService; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsMpService; +import com.gxwebsoft.cms.entity.CmsMp; +import com.gxwebsoft.cms.param.CmsMpParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * 小程序信息控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "小程序信息管理") +@RestController +@RequestMapping("/api/cms/cms-mp") +public class CmsMpController extends BaseController { + @Resource + private CmsMpService cmsMpService; + @Resource + private CmsMpPagesService cmsMpPagesService; + @Resource + private CmsMpFieldService mpFieldService; + @Resource + private CmsMpMenuService cmsMpMenuService; + @Resource + private RedisUtil redisUtil; + + @ApiOperation("分页查询小程序信息") + @GetMapping("/page") + public ApiResult> page(CmsMpParam param) { + // 使用关联查询 + return success(cmsMpService.pageRel(param)); + } + + @ApiOperation("查询全部小程序信息") + @GetMapping() + public ApiResult> list(CmsMpParam param) { + // 使用关联查询 + return success(cmsMpService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsMp:list')") + @OperationLog + @ApiOperation("根据id查询小程序信息") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsMpService.getByIdRel(id)); + } + + @ApiOperation("添加小程序信息") + @PostMapping() + public ApiResult save(@RequestBody CmsMp cmsMp) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsMp.setUserId(loginUser.getUserId()); + } + if (cmsMpService.save(cmsMp)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改小程序信息") + @PutMapping() + public ApiResult update(@RequestBody CmsMp cmsMp) { + if (cmsMpService.updateById(cmsMp)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序信息") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsMpService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序信息") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsMpService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序信息") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsMpService, "mp_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除小程序信息") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsMpService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("小程序基本信息") + @GetMapping("/getMpInfo") + public ApiResult getMpInfo() { + final Integer tenantId = getTenantId(); + String key = "MpInfo:" + tenantId; + System.out.println("key = " + key); + final String mpInfo = redisUtil.get(key); + + if (tenantId.equals(0)) { + return fail("租户ID不存在", null); + } + System.out.println("mpInfo = " + mpInfo); + // 从缓存读取信息 + if (StrUtil.isNotBlank(mpInfo)) { + final Object object = JSONUtil.parseObject(mpInfo, Object.class); + System.out.println("object = " + object); + return success(object); + } + + // 获取小程序 + if (cmsMpService.count(new LambdaUpdateWrapper().eq(CmsMp::getDeleted, 0)) == 0) { + // 创建小程序 + createMp(); + } + + HashMap map = new HashMap<>(); + + // 获取小程序 + final CmsMp mp = cmsMpService.getOne(new LambdaQueryWrapper().eq(CmsMp::getTenantId, tenantId).last("limit 1")); + mp.setAppSecret(null); + map.put("mp", mp); + + // 原生导航条 + final List tabBar = cmsMpPagesService.list(new LambdaQueryWrapper().eq(CmsMpPages::getSubpackage, "MainPackage").last("limit 5")); + map.put("tabBar", tabBar); + + // 配置信息 + HashMap config = new HashMap<>(); + config.put("LICENSE_CODE", ""); + config.put("MAP_KEY", ""); + final List fields = mpFieldService.list(); + fields.forEach(d -> { + config.put(d.getName(), d.getValue()); + }); + map.put("config", config); + + // 服务器时间 + HashMap serverTime = new HashMap<>(); + // 今天日期 + DateTime date = DateUtil.date(); + String today = DateUtil.today(); + // 明天日期 + final DateTime dateTime = DateUtil.tomorrow(); + String tomorrow = DateUtil.format(dateTime, "yyyy-MM-dd"); + // 后天日期 + final DateTime dateTime2 = DateUtil.offsetDay(date, 2); + final String afterDay = DateUtil.format(dateTime2, "yyyy-MM-dd"); + // 今天星期几 + final int week = DateUtil.thisDayOfWeek(); + final DateTime nextWeek = DateUtil.nextWeek(); + serverTime.put("now", DateUtil.now()); // 2024-07-18 22:06:36 + serverTime.put("today", today); // 2024-07-18 + serverTime.put("tomorrow", tomorrow); // 2024-07-19 + serverTime.put("afterDay", afterDay); // 2024-07-20 + serverTime.put("nextWeek", nextWeek); // 2024-07-25 22:06:36 + serverTime.put("week", week); // 5 + map.put("serverTime", serverTime); + redisUtil.set(key, map, 1L, TimeUnit.DAYS); + return success(map); + } + + private void createMp() { + System.out.println("创建小程序 = "); + final User loginUser = getLoginUser(); + final Integer tenantId = getTenantId(); + // 创建网站记录 + final CmsMp mp = new CmsMp(); + mp.setTenantId(tenantId); + mp.setAppId("小程序ID"); + mp.setMpName("小程序名称"); + mp.setMainPath("/pages/index"); + if (loginUser != null) { + mp.setUserId(getLoginUserId()); + } + mp.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 1)); + cmsMpService.save(mp); + + // 创建底部导航栏 + final CmsMpPages mpPages = new CmsMpPages(); + mpPages.setHome(1); + mpPages.setTitle("首页"); + mpPages.setPath("/pages/index"); + mpPages.setSubpackage("MainPackage"); + mpPages.setIcon("HomeOutlined"); + mpPages.setSortNumber(0); + mpPages.setTenantId(tenantId); + cmsMpPagesService.save(mpPages); + mpPages.setHome(0); + mpPages.setTitle("分类"); + mpPages.setPath("/pages/category"); + mpPages.setSubpackage("MainPackage"); + mpPages.setIcon("AppstoreOutlined"); + mpPages.setSortNumber(0); + cmsMpPagesService.save(mpPages); + mpPages.setTitle("购物车"); + mpPages.setPath("/pages/category"); + mpPages.setSubpackage("MainPackage"); + mpPages.setIcon("ShoppingCartOutlined"); + mpPages.setSortNumber(0); + cmsMpPagesService.save(mpPages); + mpPages.setTitle("我的"); + mpPages.setPath("/pages/user"); + mpPages.setSubpackage("MainPackage"); + mpPages.setIcon("UserOutlined"); + mpPages.setSortNumber(0); + cmsMpPagesService.save(mpPages); + + // 创建导航图标 + final CmsMpMenu mpMenu = new CmsMpMenu(); + mpMenu.setTenantId(tenantId); + mpMenu.setTitle("分类1"); + mpMenu.setIcon("PictureOutlined"); + mpMenu.setPath("/package/order"); + mpMenu.setTarget("uni.navigateTo"); + cmsMpMenuService.save(mpMenu); + mpMenu.setTitle("分类2"); + mpMenu.setIcon("PictureOutlined"); + mpMenu.setPath("/package/order"); + cmsMpMenuService.save(mpMenu); + mpMenu.setTitle("分类3"); + mpMenu.setIcon("PictureOutlined"); + mpMenu.setPath("/package/order"); + cmsMpMenuService.save(mpMenu); + mpMenu.setTitle("分类4"); + mpMenu.setIcon("PictureOutlined"); + mpMenu.setPath("/package/order"); + cmsMpMenuService.save(mpMenu); + + // 小程序配置信息 + CmsMpField field = new CmsMpField(); + field.setName("mpLogo"); + mpFieldService.save(field); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsMpFieldController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsMpFieldController.java new file mode 100644 index 0000000..f094630 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsMpFieldController.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsMpFieldService; +import com.gxwebsoft.cms.entity.CmsMpField; +import com.gxwebsoft.cms.param.CmsMpFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序配置控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "小程序配置管理") +@RestController +@RequestMapping("/api/cms/cms-mp-field") +public class CmsMpFieldController extends BaseController { + @Resource + private CmsMpFieldService cmsMpFieldService; + + @ApiOperation("分页查询小程序配置") + @GetMapping("/page") + public ApiResult> page(CmsMpFieldParam param) { + // 使用关联查询 + return success(cmsMpFieldService.pageRel(param)); + } + + @ApiOperation("查询全部小程序配置") + @GetMapping() + public ApiResult> list(CmsMpFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsMpFieldService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsMpFieldService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsMpField:list')") + @OperationLog + @ApiOperation("根据id查询小程序配置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsMpFieldService.getById(id)); + // 使用关联查询 + //return success(cmsMpFieldService.getByIdRel(id)); + } + + @ApiOperation("添加小程序配置") + @PostMapping() + public ApiResult save(@RequestBody CmsMpField cmsMpField) { + if (cmsMpFieldService.save(cmsMpField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改小程序配置") + @PutMapping() + public ApiResult update(@RequestBody CmsMpField cmsMpField) { + if (cmsMpFieldService.updateById(cmsMpField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序配置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsMpFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序配置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsMpFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序配置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsMpFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除小程序配置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsMpFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsMpMenuController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsMpMenuController.java new file mode 100644 index 0000000..3808582 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsMpMenuController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsMpMenuService; +import com.gxwebsoft.cms.entity.CmsMpMenu; +import com.gxwebsoft.cms.param.CmsMpMenuParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序端菜单控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "小程序端菜单管理") +@RestController +@RequestMapping("/api/cms/cms-mp-menu") +public class CmsMpMenuController extends BaseController { + @Resource + private CmsMpMenuService cmsMpMenuService; + + @ApiOperation("分页查询小程序端菜单") + @GetMapping("/page") + public ApiResult> page(CmsMpMenuParam param) { + // 使用关联查询 + return success(cmsMpMenuService.pageRel(param)); + } + + @ApiOperation("查询全部小程序端菜单") + @GetMapping() + public ApiResult> list(CmsMpMenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cmsMpMenuService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cmsMpMenuService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsMpMenu:list')") + @OperationLog + @ApiOperation("根据id查询小程序端菜单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cmsMpMenuService.getById(id)); + // 使用关联查询 + //return success(cmsMpMenuService.getByIdRel(id)); + } + + @ApiOperation("添加小程序端菜单") + @PostMapping() + public ApiResult save(@RequestBody CmsMpMenu cmsMpMenu) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsMpMenu.setUserId(loginUser.getUserId()); + } + if (cmsMpMenuService.save(cmsMpMenu)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改小程序端菜单") + @PutMapping() + public ApiResult update(@RequestBody CmsMpMenu cmsMpMenu) { + if (cmsMpMenuService.updateById(cmsMpMenu)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序端菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsMpMenuService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序端菜单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsMpMenuService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序端菜单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsMpMenuService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除小程序端菜单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsMpMenuService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsMpPagesController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsMpPagesController.java new file mode 100644 index 0000000..0ce4d19 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsMpPagesController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsMpPagesService; +import com.gxwebsoft.cms.entity.CmsMpPages; +import com.gxwebsoft.cms.param.CmsMpPagesParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序页面控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "小程序页面管理") +@RestController +@RequestMapping("/api/cms/cms-mp-pages") +public class CmsMpPagesController extends BaseController { + @Resource + private CmsMpPagesService cmsMpPagesService; + + @ApiOperation("分页查询小程序页面") + @GetMapping("/page") + public ApiResult> page(CmsMpPagesParam param) { + // 使用关联查询 + return success(cmsMpPagesService.pageRel(param)); + } + + @ApiOperation("查询全部小程序页面") + @GetMapping() + public ApiResult> list(CmsMpPagesParam param) { + // 使用关联查询 + return success(cmsMpPagesService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsMpPages:list')") + @OperationLog + @ApiOperation("根据id查询小程序页面") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsMpPagesService.getByIdRel(id)); + } + + @ApiOperation("添加小程序页面") + @PostMapping() + public ApiResult save(@RequestBody CmsMpPages cmsMpPages) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsMpPages.setUserId(loginUser.getUserId()); + } + if (cmsMpPagesService.save(cmsMpPages)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改小程序页面") + @PutMapping() + public ApiResult update(@RequestBody CmsMpPages cmsMpPages) { + if (cmsMpPagesService.updateById(cmsMpPages)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序页面") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsMpPagesService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序页面") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsMpPagesService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序页面") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsMpPagesService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除小程序页面") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsMpPagesService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsNavigationController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsNavigationController.java new file mode 100644 index 0000000..d81dffd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsNavigationController.java @@ -0,0 +1,190 @@ +package com.gxwebsoft.cms.controller; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.service.CmsDesignService; +import com.gxwebsoft.cms.service.CmsModelService; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.param.CmsNavigationParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.spring.web.plugins.Docket; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 网站导航记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Api(tags = "网站导航记录表管理") +@RestController +@RequestMapping("/api/cms/cms-navigation") +public class CmsNavigationController extends BaseController { + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsModelService cmsModelService; + @Resource + private CmsDesignService cmsDesignService; + @Resource + private UserService userService; + @Resource + private RedisUtil redisUtil; + + + private static final String SITE_INFO_KEY_PREFIX = "SiteInfo:"; + + @ApiOperation("分页查询网站导航记录表") + @GetMapping("/page") + public ApiResult> page(CmsNavigationParam param) { + // 使用关联查询 + return success(cmsNavigationService.pageRel(param)); + } + + @ApiOperation("查询全部网站导航记录表") + @GetMapping() + public ApiResult> list(CmsNavigationParam param) { + // 使用关联查询 + return success(cmsNavigationService.listRel(param)); + } + + @ApiOperation("根据id查询网站导航记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsNavigationService.getByIdRel(id)); + } + + @ApiOperation("添加网站导航记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsNavigation cmsNavigation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsNavigation.setUserId(loginUser.getUserId()); + cmsNavigation.setTenantId(loginUser.getTenantId()); + } + // 去除前面空格 + cmsNavigation.setTitle(StrUtil.trimStart(cmsNavigation.getTitle())); + if (cmsNavigationService.save(cmsNavigation)) { + // 添加成功事务处理 + cmsNavigationService.saveAsync(cmsNavigation); + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改网站导航记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsNavigation cmsNavigation) { + if (cmsNavigationService.updateById(cmsNavigation)) { + // 修改成功事务处理 + cmsNavigationService.saveAsync(cmsNavigation); + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除网站导航记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsNavigationService.removeById(id)) { + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加网站导航记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsNavigationService.saveBatch(list)) { + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改网站导航记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsNavigationService, "navigation_id")) { + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除网站导航记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsNavigationService.removeByIds(ids)) { + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("获取树形结构的网站导航数据") + @GetMapping("/tree") + public ApiResult> tree(CmsNavigationParam param) { + param.setHide(0); + final List navigations = cmsNavigationService.listRel(param); + return success(CommonUtil.toTreeData(navigations, 0, CmsNavigation::getParentId, CmsNavigation::getNavigationId, CmsNavigation::setChildren)); + } + + @ApiOperation("根据path获取导航") + @GetMapping("/getNavigationByPath") + public ApiResult getNavigationByPath(CmsNavigationParam param) { + final CmsNavigation navigation = cmsNavigationService.getOne(new LambdaUpdateWrapper().eq(CmsNavigation::getModel, param.getModel()).last("limit 1")); + if (ObjectUtil.isNotEmpty(navigation)) { + // 页面元素 + final CmsDesign design = cmsDesignService.getOne(new LambdaUpdateWrapper().eq(CmsDesign::getCategoryId, navigation.getNavigationId()).last("limit 1")); + // 模型信息 + final CmsModel model = cmsModelService.getOne(new LambdaQueryWrapper().eq(CmsModel::getModel, navigation.getModel()).last("limit 1")); + navigation.setBanner(model.getBanner()); + // 上级导航 + if (!navigation.getParentId().equals(0)) { + final CmsNavigation parent = cmsNavigationService.getById(navigation.getParentId()); + navigation.setParentPath(parent.getPath()); + navigation.setParentName(parent.getTitle()); + } + // 页面信息 + navigation.setDesign(design); + // 页面布局 + if (ObjectUtil.isNotEmpty(design)) { + navigation.setLayout(design.getLayout()); + } + } + return success(navigation); + } + + @ApiOperation("密码校验") + @GetMapping("/checkNavigationPassword") + public ApiResult checkNavigationPassword(CmsNavigationParam param) { + if (!userService.comparePassword(param.getPassword(), param.getPassword2())) { + return fail("密码不正确"); + } + return success("密码正确"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsOrderController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsOrderController.java new file mode 100644 index 0000000..a8445d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsOrderController.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsOrderService; +import com.gxwebsoft.cms.entity.CmsOrder; +import com.gxwebsoft.cms.param.CmsOrderParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 订单控制器 + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +@Api(tags = "订单管理") +@RestController +@RequestMapping("/api/cms/cms-order") +public class CmsOrderController extends BaseController { + @Resource + private CmsOrderService cmsOrderService; + + @PreAuthorize("hasAuthority('cms:cmsOrder:list')") + @ApiOperation("分页查询订单") + @GetMapping("/page") + public ApiResult> page(CmsOrderParam param) { + // 使用关联查询 + return success(cmsOrderService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:list')") + @ApiOperation("查询全部订单") + @GetMapping() + public ApiResult> list(CmsOrderParam param) { + // 使用关联查询 + return success(cmsOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:list')") + @ApiOperation("根据id查询订单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsOrderService.getByIdRel(id)); + } + + @ApiOperation("添加订单") + @PostMapping() + public ApiResult save(@RequestBody CmsOrder cmsOrder) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsOrder.setUserId(loginUser.getUserId()); + } + if(cmsOrder.getCode() == null){ + return fail("验证码不正确",null); + } + if(cmsOrder.getOrderNo() == null){ + cmsOrder.setOrderNo(CommonUtil.createOrderNo()); + } + // 默认语言 + if(cmsOrder.getLang() == null){ + cmsOrder.setLang("zh_CN"); + } + if (cmsOrderService.save(cmsOrder)) { + return success("提交成功"); + } + return fail("提交失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:update')") + @ApiOperation("修改订单") + @PutMapping() + public ApiResult update(@RequestBody CmsOrder cmsOrder) { + if (cmsOrderService.updateById(cmsOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:remove')") + @ApiOperation("删除订单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:save')") + @ApiOperation("批量添加订单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:update')") + @ApiOperation("批量修改订单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsOrderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsOrder:remove')") + @ApiOperation("批量删除订单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsProductController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsProductController.java new file mode 100644 index 0000000..b0b7499 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsProductController.java @@ -0,0 +1,150 @@ +package com.gxwebsoft.cms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.param.CmsProductSpecParam; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsProductService; +import com.gxwebsoft.cms.entity.CmsProduct; +import com.gxwebsoft.cms.param.CmsProductParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 产品控制器 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Api(tags = "产品管理") +@RestController +@RequestMapping("/api/cms/cms-product") +public class CmsProductController extends BaseController { + @Resource + private CmsProductService cmsProductService; + + @ApiOperation("分页查询产品") + @GetMapping("/page") + public ApiResult> page(CmsProductParam param) { + // 使用关联查询 + return success(cmsProductService.pageRel(param)); + } + + @ApiOperation("查询全部产品") + @GetMapping() + public ApiResult> list(CmsProductParam param) { + // 使用关联查询 + return success(cmsProductService.listRel(param)); + } + + @ApiOperation("根据id查询产品") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsProductService.getByIdRel(id)); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:save')") + @OperationLog + @ApiOperation("添加产品") + @PostMapping() + public ApiResult save(@RequestBody CmsProduct cmsProduct) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsProduct.setUserId(loginUser.getUserId()); + } + if (cmsProductService.save(cmsProduct)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:update')") + @OperationLog + @ApiOperation("修改产品") + @PutMapping() + public ApiResult update(@RequestBody CmsProduct cmsProduct) { + if (cmsProductService.updateById(cmsProduct)) { + return success("修改成功"); + } + return fail("修改失败"); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:remove')") + @OperationLog + @ApiOperation("删除产品") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsProductService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:save')") + @OperationLog + @ApiOperation("批量添加产品") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsProductService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:update')") + @OperationLog + @ApiOperation("批量修改产品") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsProductService, "product_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + @PreAuthorize("hasAuthority('cms:cmsProduct:remove')") + @OperationLog + @ApiOperation("批量删除产品") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsProductService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data(CmsProductSpecParam param) { + Map data = new HashMap<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if(param.getMerchantId() != null){ + wrapper.eq(CmsProduct::getMerchantId,param.getMerchantId()); + } + + Integer totalNum = cmsProductService.count( + wrapper.eq(CmsProduct::getDeleted,0).eq(CmsProduct::getStatus,0) + ); + data.put("totalNum", totalNum); + + Integer totalNum2 = cmsProductService.count( + wrapper.eq(CmsProduct::getStatus,1) + ); + data.put("totalNum2", totalNum2); + + Integer totalNum3 = cmsProductService.count( + wrapper.gt(CmsProduct::getStatus,1) + ); + data.put("totalNum3", totalNum3); + + return success(data); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecController.java new file mode 100644 index 0000000..8d6476c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsProductSpecService; +import com.gxwebsoft.cms.entity.CmsProductSpec; +import com.gxwebsoft.cms.param.CmsProductSpecParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 规格控制器 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Api(tags = "规格管理") +@RestController +@RequestMapping("/api/cms/cms-product-spec") +public class CmsProductSpecController extends BaseController { + @Resource + private CmsProductSpecService cmsProductSpecService; + + @ApiOperation("分页查询规格") + @GetMapping("/page") + public ApiResult> page(CmsProductSpecParam param) { + // 使用关联查询 + return success(cmsProductSpecService.pageRel(param)); + } + + @ApiOperation("查询全部规格") + @GetMapping() + public ApiResult> list(CmsProductSpecParam param) { + // 使用关联查询 + return success(cmsProductSpecService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsProductSpec:list')") + @OperationLog + @ApiOperation("根据id查询规格") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsProductSpecService.getByIdRel(id)); + } + + @ApiOperation("添加规格") + @PostMapping() + public ApiResult save(@RequestBody CmsProductSpec cmsProductSpec) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsProductSpec.setUserId(loginUser.getUserId()); + } + if (cmsProductSpecService.save(cmsProductSpec)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改规格") + @PutMapping() + public ApiResult update(@RequestBody CmsProductSpec cmsProductSpec) { + if (cmsProductSpecService.updateById(cmsProductSpec)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除规格") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsProductSpecService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加规格") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsProductSpecService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改规格") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsProductSpecService, "spec_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除规格") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsProductSpecService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecValueController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecValueController.java new file mode 100644 index 0000000..5f37bf6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsProductSpecValueController.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsProductSpecValueService; +import com.gxwebsoft.cms.entity.CmsProductSpecValue; +import com.gxwebsoft.cms.param.CmsProductSpecValueParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 规格值控制器 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Api(tags = "规格值管理") +@RestController +@RequestMapping("/api/cms/cms-product-spec-value") +public class CmsProductSpecValueController extends BaseController { + @Resource + private CmsProductSpecValueService cmsProductSpecValueService; + + @ApiOperation("分页查询规格值") + @GetMapping("/page") + public ApiResult> page(CmsProductSpecValueParam param) { + // 使用关联查询 + return success(cmsProductSpecValueService.pageRel(param)); + } + + @ApiOperation("查询全部规格值") + @GetMapping() + public ApiResult> list(CmsProductSpecValueParam param) { + // 使用关联查询 + return success(cmsProductSpecValueService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsProductSpecValue:list')") + @OperationLog + @ApiOperation("根据id查询规格值") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsProductSpecValueService.getByIdRel(id)); + } + + @ApiOperation("添加规格值") + @PostMapping() + public ApiResult save(@RequestBody CmsProductSpecValue cmsProductSpecValue) { + if (cmsProductSpecValueService.save(cmsProductSpecValue)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改规格值") + @PutMapping() + public ApiResult update(@RequestBody CmsProductSpecValue cmsProductSpecValue) { + if (cmsProductSpecValueService.updateById(cmsProductSpecValue)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除规格值") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsProductSpecValueService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加规格值") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsProductSpecValueService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改规格值") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsProductSpecValueService, "spec_value_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除规格值") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsProductSpecValueService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsProductUrlController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsProductUrlController.java new file mode 100644 index 0000000..9df4d0e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsProductUrlController.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsProductUrlService; +import com.gxwebsoft.cms.entity.CmsProductUrl; +import com.gxwebsoft.cms.param.CmsProductUrlParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 域名控制器 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Api(tags = "域名管理") +@RestController +@RequestMapping("/api/cms/cms-product-url") +public class CmsProductUrlController extends BaseController { + @Resource + private CmsProductUrlService cmsProductUrlService; + + @ApiOperation("分页查询域名") + @GetMapping("/page") + public ApiResult> page(CmsProductUrlParam param) { + // 使用关联查询 + return success(cmsProductUrlService.pageRel(param)); + } + + @ApiOperation("查询全部域名") + @GetMapping() + public ApiResult> list(CmsProductUrlParam param) { + // 使用关联查询 + return success(cmsProductUrlService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:cmsProductUrl:list')") + @OperationLog + @ApiOperation("根据id查询域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsProductUrlService.getByIdRel(id)); + } + + @ApiOperation("添加域名") + @PostMapping() + public ApiResult save(@RequestBody CmsProductUrl cmsProductUrl) { + if (cmsProductUrlService.save(cmsProductUrl)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改域名") + @PutMapping() + public ApiResult update(@RequestBody CmsProductUrl cmsProductUrl) { + if (cmsProductUrlService.updateById(cmsProductUrl)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsProductUrlService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsProductUrlService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsProductUrlService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsProductUrlService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsTemplateController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsTemplateController.java new file mode 100644 index 0000000..17f894f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsTemplateController.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsTemplateService; +import com.gxwebsoft.cms.entity.CmsTemplate; +import com.gxwebsoft.cms.param.CmsTemplateParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 网站模版控制器 + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +@Api(tags = "网站模版管理") +@RestController +@RequestMapping("/api/cms/cms-template") +public class CmsTemplateController extends BaseController { + @Resource + private CmsTemplateService cmsTemplateService; + + @ApiOperation("分页查询网站模版") + @GetMapping("/page") + public ApiResult> page(CmsTemplateParam param) { + // 使用关联查询 + return success(cmsTemplateService.pageRel(param)); + } + + @ApiOperation("查询全部网站模版") + @GetMapping() + public ApiResult> list(CmsTemplateParam param) { + // 使用关联查询 + return success(cmsTemplateService.listRel(param)); + } + + @ApiOperation("根据id查询网站模版") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsTemplateService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:save')") + @ApiOperation("添加网站模版") + @PostMapping() + public ApiResult save(@RequestBody CmsTemplate cmsTemplate) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsTemplate.setUserId(loginUser.getUserId()); + } + if (cmsTemplateService.save(cmsTemplate)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:update')") + @ApiOperation("修改网站模版") + @PutMapping() + public ApiResult update(@RequestBody CmsTemplate cmsTemplate) { + if (cmsTemplateService.updateById(cmsTemplate)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:remove')") + @ApiOperation("删除网站模版") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsTemplateService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:save')") + @ApiOperation("批量添加网站模版") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsTemplateService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:update')") + @ApiOperation("批量修改网站模版") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsTemplateService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsTemplate:remove')") + @ApiOperation("批量删除网站模版") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsTemplateService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java new file mode 100644 index 0000000..3ab55af --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteController.java @@ -0,0 +1,339 @@ +package com.gxwebsoft.cms.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.entity.*; +import com.gxwebsoft.cms.param.CmsNavigationParam; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.cms.service.CmsWebsiteFieldService; +import com.gxwebsoft.cms.service.CmsWebsiteSettingService; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsWebsiteService; +import com.gxwebsoft.cms.param.CmsWebsiteParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.*; + +import java.util.concurrent.TimeUnit; + +/** + * 网站信息记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Slf4j +@Api(tags = "网站信息记录表管理") +@RestController +@RequestMapping("/api/cms/cms-website") +public class CmsWebsiteController extends BaseController { + @Resource + private CmsWebsiteService cmsWebsiteService; + @Resource + private RedisUtil redisUtil; + @Resource + private CmsWebsiteFieldService cmsWebsiteFieldService; + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsWebsiteSettingService cmsWebsiteSettingService; + + private static final String SITE_INFO_KEY_PREFIX = "SiteInfo:"; + private static final String MP_INFO_KEY_PREFIX = "MpInfo:"; + private static final String SELECT_PAYMENT_KEY_PREFIX = "SelectPayment:"; + private static final String SYS_DOMAIN_SUFFIX = ".websoft.top"; + private static final String DOMAIN_SUFFIX = ".wsdns.cn"; + + @ApiOperation("分页查询网站信息记录表") + @GetMapping("/page") + public ApiResult> page(CmsWebsiteParam param) { + // 使用关联查询 + return success(cmsWebsiteService.pageRel(param)); + } + + @ApiOperation("查询全部网站信息记录表") + @GetMapping() + public ApiResult> list(CmsWebsiteParam param) { + // 使用关联查询 + return success(cmsWebsiteService.listRel(param)); + } + + @ApiOperation("分页查询网站信息记录表") + @GetMapping("/pageAll") + public ApiResult> pageAll(CmsWebsiteParam param) { + return success(cmsWebsiteService.pageRelAll(param)); + } + + @ApiOperation("根据id查询网站信息记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsWebsiteService.getByIdRel(id)); + } + + @ApiOperation("根据id查询网站信息记录表") + @GetMapping("/getAll/{id}") + public ApiResult getAll(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsWebsiteService.getByIdRelAll(id)); + } + + @PreAuthorize("hasAuthority('cms:website:save')") + @ApiOperation("添加网站信息记录表") + @PostMapping() + public ApiResult save(@RequestBody CmsWebsite cmsWebsite) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + cmsWebsite.setLoginUser(loginUser); + return success("创建成功", cmsWebsiteService.create(cmsWebsite)); + } + return fail("创建失败"); + } + + @PreAuthorize("hasAuthority('cms:website:update')") + @ApiOperation("修改网站信息记录表") + @PutMapping() + public ApiResult update(@RequestBody CmsWebsite cmsWebsite) { + if (cmsWebsiteService.updateById(cmsWebsite)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:website:update')") + @ApiOperation("修改网站信息记录表") + @PutMapping("/updateAll") + public ApiResult updateAll(@RequestBody CmsWebsite cmsWebsite) { + if (cmsWebsiteService.updateByIdAll(cmsWebsite)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:website:remove')") + @ApiOperation("删除网站信息记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsWebsiteService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:website:remove')") + @ApiOperation("删除网站信息记录表") + @DeleteMapping("/removeAll/{id}") + public ApiResult removeAll(@PathVariable("id") Integer id) { + if (cmsWebsiteService.removeByIdAll(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:website:save')") + @ApiOperation("批量添加网站信息记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsWebsiteService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:website:update')") + @ApiOperation("批量修改网站信息记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsWebsiteService, "website_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:website:remove')") + @ApiOperation("批量删除网站信息记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsWebsiteService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("网站基本信息") + @GetMapping("/getSiteInfo") + public ApiResult getSiteInfo() { + if (ObjectUtil.isEmpty(getTenantId())) { + return fail("参数不正确", null); + } + + String key = SITE_INFO_KEY_PREFIX + getTenantId(); + final String siteInfo = redisUtil.get(key); + if (StrUtil.isNotBlank(siteInfo)) { + log.info("从缓存获取网站信息: = {}", key); +// return success(JSONUtil.parseObject(siteInfo, CmsWebsite.class)); + } + + // 获取站点信息 + CmsWebsite website = cmsWebsiteService.getOne(new LambdaQueryWrapper().eq(CmsWebsite::getDeleted, 0).last("limit 1")); + + // 创建默认站点 + if (ObjectUtil.isEmpty(website)) { + return success("请先创建站点...", null); + } + + // 站点异常状态 + setWebsiteStatus(website); + + // 站点配置参数 + HashMap config = buildWebsiteConfig(website); + website.setConfig(config); + + // 网站导航 + setWebsiteNavigation(website); + + // 网站设置信息 + setWebsiteSetting(website); + + // 服务器时间 + HashMap serverTime = buildServerTime(); + website.setServerTime(serverTime); + + // 即将过期(一周内过期的) + website.setSoon(DateUtil.offsetDay(website.getExpirationTime(), -30).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + website.setExpired(website.getExpirationTime().compareTo(DateUtil.date())); + // 剩余天数 + website.setExpiredDays(DateUtil.betweenDay(website.getExpirationTime(), DateUtil.date(), false)); + + redisUtil.set(key, website, 1L, TimeUnit.DAYS); + return success(website); + } + + private void setWebsiteStatus(CmsWebsite website) { + if (!website.getRunning().equals(1)) { + // 未开通 + if (website.getRunning().equals(0)) { + website.setStatusIcon("error"); + website.setStatusText("该站点未开通"); + } + // 维护中 + if (website.getRunning().equals(2)) { + website.setStatusIcon("warning"); + } + // 已关闭 + if (website.getRunning().equals(3)) { + website.setStatusIcon("error"); + website.setStatusText("已关闭"); + } + // 已欠费停机 + if (website.getRunning().equals(4)) { + website.setStatusIcon("error"); + website.setStatusText("已欠费停机"); + } + // 违规关停 + if (website.getRunning().equals(5)) { + website.setStatusIcon("error"); + website.setStatusText("违规关停"); + } + } + } + + private HashMap buildWebsiteConfig(CmsWebsite website) { + HashMap config = new HashMap<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CmsWebsiteField::getDeleted, 0); + final List fields = cmsWebsiteFieldService.list(wrapper); + fields.forEach(d -> { + config.put(d.getName(), d.getValue()); + }); + config.put("SysDomain", getSysDomain(website)); + config.put("Domain", getDomain(website)); + return config; + } + + private String getSysDomain(CmsWebsite website) { + return StrUtil.isNotBlank(website.getWebsiteCode()) ? website.getWebsiteCode() + SYS_DOMAIN_SUFFIX : website.getTenantId() + SYS_DOMAIN_SUFFIX; + } + + private String getDomain(CmsWebsite website) { + return StrUtil.isNotBlank(website.getDomain()) ? website.getDomain() : website.getWebsiteCode() + DOMAIN_SUFFIX; + } + + private void setWebsiteNavigation(CmsWebsite website) { + final CmsNavigationParam navigationParam = new CmsNavigationParam(); + navigationParam.setHide(0); + navigationParam.setTop(0); + navigationParam.setBottom(null); + final List topNavs = cmsNavigationService.listRel(navigationParam); + // 顶部菜单 + website.setTopNavs(CommonUtil.toTreeData(topNavs, 0, CmsNavigation::getParentId, CmsNavigation::getNavigationId, CmsNavigation::setChildren)); + navigationParam.setTop(null); + navigationParam.setBottom(0); + final List bottomNavs = cmsNavigationService.listRel(navigationParam); + // 底部菜单 + website.setBottomNavs(CommonUtil.toTreeData(bottomNavs, 0, CmsNavigation::getParentId, CmsNavigation::getNavigationId, CmsNavigation::setChildren)); + } + + private void setWebsiteSetting(CmsWebsite website) { + final CmsWebsiteSetting setting = cmsWebsiteSettingService.getOne(new LambdaQueryWrapper().eq(CmsWebsiteSetting::getWebsiteId, website.getWebsiteId())); + if (ObjectUtil.isNotEmpty(setting)) { + website.setSetting(setting); + } + } + + private HashMap buildServerTime() { + HashMap serverTime = new HashMap<>(); + // 今天日期 + DateTime date = DateUtil.date(); + String today = DateUtil.today(); + // 明天日期 + final DateTime dateTime = DateUtil.tomorrow(); + String tomorrow = DateUtil.format(dateTime, "yyyy-MM-dd"); + // 后天日期 + final DateTime dateTime2 = DateUtil.offsetDay(date, 2); + final String afterDay = DateUtil.format(dateTime2, "yyyy-MM-dd"); + // 今天星期几 + final int week = DateUtil.thisDayOfWeek(); + final DateTime nextWeek = DateUtil.nextWeek(); + serverTime.put("now", DateUtil.now()); + serverTime.put("today", today); + serverTime.put("tomorrow", tomorrow); + serverTime.put("afterDay", afterDay); + serverTime.put("week", week); + serverTime.put("nextWeek", nextWeek); + return serverTime; + } + + @ApiOperation("清除缓存") + @DeleteMapping("/clearSiteInfo/{key}") + public ApiResult clearSiteInfo(@PathVariable("key") String key) { + // 清除指定key + redisUtil.delete(key); + // 清除缓存 + redisUtil.delete(SITE_INFO_KEY_PREFIX.concat(getTenantId().toString())); + // 清除小程序缓存 + redisUtil.delete(MP_INFO_KEY_PREFIX.concat(getTenantId().toString())); + // 选择支付方式 + redisUtil.delete(SELECT_PAYMENT_KEY_PREFIX.concat(getTenantId().toString())); + return success("清除成功"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteFieldController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteFieldController.java new file mode 100644 index 0000000..d93e3aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteFieldController.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsWebsiteFieldService; +import com.gxwebsoft.cms.entity.CmsWebsiteField; +import com.gxwebsoft.cms.param.CmsWebsiteFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; + +/** + * 应用参数控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Api(tags = "应用参数管理") +@RestController +@RequestMapping("/api/cms/cms-website-field") +public class CmsWebsiteFieldController extends BaseController { + @Resource + private CmsWebsiteFieldService cmsWebsiteFieldService; + + @ApiOperation("分页查询应用参数") + @GetMapping("/page") + public ApiResult> page(CmsWebsiteFieldParam param) { + // 使用关联查询 + return success(cmsWebsiteFieldService.pageRel(param)); + } + + @ApiOperation("查询全部应用参数") + @GetMapping() + public ApiResult> list(CmsWebsiteFieldParam param) { + // 使用关联查询 + return success(cmsWebsiteFieldService.listRel(param)); + } + + @ApiOperation("根据id查询应用参数") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(cmsWebsiteFieldService.getByIdRel(id)); + } + + @ApiOperation("添加应用参数") + @PostMapping() + public ApiResult save(@RequestBody CmsWebsiteField cmsWebsiteField) { + if (cmsWebsiteFieldService.save(cmsWebsiteField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改应用参数") + @PutMapping() + public ApiResult update(@RequestBody CmsWebsiteField cmsWebsiteField) { + if (cmsWebsiteFieldService.updateById(cmsWebsiteField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除应用参数") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsWebsiteFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加应用参数") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsWebsiteFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改应用参数") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsWebsiteFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除应用参数") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsWebsiteFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("获取网站配置参数-对象形式") + @GetMapping("/config") + public ApiResult getConfig(CmsWebsiteFieldParam param) { + // 使用关联查询 + final List fields = cmsWebsiteFieldService.listRel(param); + + HashMap config = new HashMap<>(); + fields.forEach(d -> { + config.put(d.getName(), d.getValue()); + }); + return success(config); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteSettingController.java b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteSettingController.java new file mode 100644 index 0000000..fe90cf6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/CmsWebsiteSettingController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.cms.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.CmsWebsiteSettingService; +import com.gxwebsoft.cms.entity.CmsWebsiteSetting; +import com.gxwebsoft.cms.param.CmsWebsiteSettingParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 网站设置控制器 + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +@Api(tags = "网站设置管理") +@RestController +@RequestMapping("/api/cms/cms-website-setting") +public class CmsWebsiteSettingController extends BaseController { + @Resource + private CmsWebsiteSettingService cmsWebsiteSettingService; + + @ApiOperation("分页查询网站设置") + @GetMapping("/page") + public ApiResult> page(CmsWebsiteSettingParam param) { + // 使用关联查询 + return success(cmsWebsiteSettingService.pageRel(param)); + } + + @ApiOperation("查询全部网站设置") + @GetMapping() + public ApiResult> list(CmsWebsiteSettingParam param) { + // 使用关联查询 + return success(cmsWebsiteSettingService.listRel(param)); + } + + @ApiOperation("根据id查询网站设置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + final CmsWebsiteSetting cmsWebsiteSetting = cmsWebsiteSettingService.getOne(new LambdaQueryWrapper().eq(CmsWebsiteSetting::getWebsiteId, id)); + if(ObjectUtil.isEmpty(cmsWebsiteSetting)){ + final CmsWebsiteSetting setting = new CmsWebsiteSetting(); + setting.setWebsiteId(id); + cmsWebsiteSettingService.save(setting); + return success(cmsWebsiteSettingService.getOne(new LambdaQueryWrapper().eq(CmsWebsiteSetting::getWebsiteId, id))); + } + return success(cmsWebsiteSetting); + } + + @PreAuthorize("hasAuthority('cms:cmsWebsiteSetting:save')") + @ApiOperation("添加网站设置") + @PostMapping() + public ApiResult save(@RequestBody CmsWebsiteSetting cmsWebsiteSetting) { + if (cmsWebsiteSettingService.save(cmsWebsiteSetting)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:website:update')") + @ApiOperation("修改网站设置") + @PutMapping() + public ApiResult update(@RequestBody CmsWebsiteSetting cmsWebsiteSetting) { + if (cmsWebsiteSettingService.updateById(cmsWebsiteSetting)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsWebsiteSetting:remove')") + @ApiOperation("删除网站设置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cmsWebsiteSettingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsWebsiteSetting:save')") + @ApiOperation("批量添加网站设置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cmsWebsiteSettingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsWebsiteSetting:update')") + @ApiOperation("批量修改网站设置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cmsWebsiteSettingService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:cmsWebsiteSetting:remove')") + @ApiOperation("批量删除网站设置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cmsWebsiteSettingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/dto/CmsWebsiteConstants.java b/src/main/java/com/gxwebsoft/cms/dto/CmsWebsiteConstants.java new file mode 100644 index 0000000..b60a995 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/dto/CmsWebsiteConstants.java @@ -0,0 +1,5 @@ +package com.gxwebsoft.cms.dto; + +public class CmsWebsiteConstants { + public static final String MP_APPID_KEY = "MpApp:"; +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsAd.java b/src/main/java/com/gxwebsoft/cms/entity/CmsAd.java new file mode 100644 index 0000000..71ad315 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsAd.java @@ -0,0 +1,102 @@ +package com.gxwebsoft.cms.entity; + +import cn.hutool.core.util.DesensitizedUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.gxwebsoft.common.core.utils.JSONUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 广告位 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsAd对象", description = "广告位") +public class CmsAd implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ad_id", type = IdType.AUTO) + private Integer adId; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "栏目ID") + private Integer categoryId; + + @ApiModelProperty(value = "栏目名称") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "边框") + private String border; + + @ApiModelProperty(value = "CSS样式") + private String style; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "广告图片") + @TableField(exist = false) + private JSONArray imageList; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + public JSONArray getImageList() { + return JSON.parseArray(this.images); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsAdRecord.java b/src/main/java/com/gxwebsoft/cms/entity/CmsAdRecord.java new file mode 100644 index 0000000..91962ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsAdRecord.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 广告图片 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsAdRecord对象", description = "广告图片") +public class CmsAdRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ad_record_id", type = IdType.AUTO) + private Integer adRecordId; + + @ApiModelProperty(value = "广告标题") + private String title; + + @ApiModelProperty(value = "图片地址") + private String path; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "广告位ID") + private Integer adId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsAdVo.java b/src/main/java/com/gxwebsoft/cms/entity/CmsAdVo.java new file mode 100644 index 0000000..d45c1e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsAdVo.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "图片DTO", description = "图片DTO") +public class CmsAdVo implements Serializable { + + @ApiModelProperty("ID") + @TableField(exist = false) + private Integer uid; + + @ApiModelProperty("名称") + @TableField(exist = false) + private String title; + + @ApiModelProperty("图片路径") + @TableField(exist = false) + private String url; + + @ApiModelProperty("视频地址") + @TableField(exist = false) + private String video; + + @ApiModelProperty("状态") + @TableField(exist = false) + private String status; + + @ApiModelProperty("图片宽") + @TableField(exist = false) + private Integer width; + + @ApiModelProperty("图片高") + @TableField(exist = false) + private Integer height; +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java new file mode 100644 index 0000000..3f88484 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java @@ -0,0 +1,260 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.math.BigDecimal; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticle对象", description = "文章") +public class CmsArticle implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章ID") + @TableId(value = "article_id", type = IdType.AUTO) + private Integer articleId; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章类型 0常规 1视频") + private Integer type; + + @ApiModelProperty(value = "文章模型") + private String model; + + @ApiModelProperty(value = "内容模板页面") + private String detail; + + @ApiModelProperty(value = "banner") + @TableField(exist = false) + private String banner; + + @ApiModelProperty(value = "访问路径") + @TableField(exist = false) + private String path; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + private Integer showType; + + @ApiModelProperty(value = "话题") + private String topic; + + @ApiModelProperty(value = "标签") + private String tags; + + @ApiModelProperty(value = "文章分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "当前分类") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "父级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "父级分类") + @TableField(exist = false) + private String parentName; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "封面图宽度") + private Integer imageWidth; + + @ApiModelProperty(value = "封面图高度") + private Integer imageHeight; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "来源") + private String source; + + @ApiModelProperty(value = "产品概述") + private String overview; + + @ApiModelProperty(value = "虚拟阅读量(仅用作展示)") + private Integer virtualViews; + + @ApiModelProperty(value = "实际阅读量") + private Integer actualViews; + + @ApiModelProperty(value = "评分") + private BigDecimal rate; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + private Integer permission; + + @ApiModelProperty(value = "访问密码") + private String password; + + @ApiModelProperty(value = "验证密码(前端回传)") + @TableField(exist = false) + private String password2; + + @ApiModelProperty(value = "发布来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "文章附件") + private String files; + + @ApiModelProperty(value = "视频地址") + private String video; + + @ApiModelProperty(value = "接受的文件类型") + private String accept; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "点赞数") + private Integer likes; + + @ApiModelProperty(value = "评论数") + private Integer commentNumbers; + + @ApiModelProperty(value = "提醒谁看") + private String toUsers; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "作者") + private String author; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "关联默认语言的文章ID,用于同步翻译更新") + private Integer langArticleId; + + @ApiModelProperty(value = "是否启用自动翻译") + private Boolean translation; + + @ApiModelProperty(value = "编辑器类型 1 富文本编辑器 2 Markdown编辑器") + private Integer editor; + + @ApiModelProperty(value = "PDF地址") + private String pdfUrl; + + @ApiModelProperty(value = "版本号") + private Integer version; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "项目ID") + private Long projectId; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantAvatar; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + private Integer status; + + @ApiModelProperty(value = "状态文本") + @TableField(exist = false) + private String statusText; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "是否更新") + @TableField(exist = false) + private Boolean isUpdate; + + @ApiModelProperty(value = "文章内容") + @TableField(exist = false) + private String content; + + @ApiModelProperty(value = "已报名人数") + private Integer bmUsers; + + public String getStatusText() { + if (this.status == 0) { + return "已发布"; + } + if (this.status == 1) { + return "待审核"; + } + if (this.status == 2) { + return "已驳回"; + } + if (this.status == 3) { + return "违规内容"; + } + return ""; + } +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCategory.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCategory.java new file mode 100644 index 0000000..c16de0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCategory.java @@ -0,0 +1,92 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章分类表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticleCategory对象", description = "文章分类表") +public class CmsArticleCategory implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章分类ID") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0列表 1单页 2外链") + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "文章数量") + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + private Integer showIndex; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticleComment.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleComment.java new file mode 100644 index 0000000..b724273 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleComment.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章评论表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticleComment对象", description = "文章评论表") +public class CmsArticleComment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @TableId(value = "comment_id", type = IdType.AUTO) + private Integer commentId; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + private Integer isPicture; + + @ApiModelProperty(value = "评论者ID") + private Integer userId; + + @ApiModelProperty(value = "被评价者ID") + private Integer toUserId; + + @ApiModelProperty(value = "回复的评论ID") + private Integer replyCommentId; + + @ApiModelProperty(value = "回复者ID") + private Integer replyUserId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticleContent.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleContent.java new file mode 100644 index 0000000..71f199c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleContent.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticleContent对象", description = "文章记录表") +public class CmsArticleContent implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCount.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCount.java new file mode 100644 index 0000000..1b9816d --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleCount.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 点赞文章 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticleCount对象", description = "点赞文章") +public class CmsArticleCount implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticleLike.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleLike.java new file mode 100644 index 0000000..71c57aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticleLike.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 点赞文章 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsArticleLike对象", description = "点赞文章") +public class CmsArticleLike implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsComponents.java b/src/main/java/com/gxwebsoft/cms/entity/CmsComponents.java new file mode 100644 index 0000000..8ea9a57 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsComponents.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 组件 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsComponents对象", description = "组件") +public class CmsComponents implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "组件标题") + private String title; + + @ApiModelProperty(value = "关联导航ID") + private Integer navigationId; + + @ApiModelProperty(value = "组件类型") + private String type; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "组件路径") + private String path; + + @ApiModelProperty(value = "组件图标") + private String icon; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsDesign.java b/src/main/java/com/gxwebsoft/cms/entity/CmsDesign.java new file mode 100644 index 0000000..5be331b --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsDesign.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 页面管理记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsDesign对象", description = "页面管理记录表") +public class CmsDesign implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "page_id", type = IdType.AUTO) + private Integer pageId; + + @ApiModelProperty(value = "页面标题") + private String name; + + @ApiModelProperty(value = "所属栏目ID") + private Integer categoryId; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "路由地址") + @TableField(exist = false) + private String path; + + @ApiModelProperty(value = "组件路径") + @TableField(exist = false) + private String component; + + @ApiModelProperty(value = "缩列图") + private String photo; + + @ApiModelProperty(value = "购买链接") + private String buyUrl; + + @ApiModelProperty(value = "页面样式") + private String style; + + @ApiModelProperty(value = "页面内容") + private String content; + + @ApiModelProperty(value = "是否开启布局") + private Boolean showLayout; + + @ApiModelProperty(value = "页面布局") + @TableField(exist = false) + private String layout; + + @ApiModelProperty(value = "是否显示banner") + private Boolean showBanner; + + @ApiModelProperty(value = "是否显示Button") + private Boolean showButton; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "用于同步翻译内容") + @TableField(exist = false) + private Integer langCategoryId; + + @ApiModelProperty(value = "是否启用自动翻译") + private Boolean translation; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsDesignRecord.java b/src/main/java/com/gxwebsoft/cms/entity/CmsDesignRecord.java new file mode 100644 index 0000000..168bc06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsDesignRecord.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 页面组件表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsDesignRecord对象", description = "页面组件表") +public class CmsDesignRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联导航ID") + private Integer navigationId; + + @ApiModelProperty(value = "组件") + private String title; + + @ApiModelProperty(value = "组件标识") + private String dictCode; + + @ApiModelProperty(value = "组件样式") + private String styles; + + @ApiModelProperty(value = "卡片阴影显示时机") + private String shadow; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "页面路由地址") + private String path; + + @ApiModelProperty(value = "缩列图") + private String photo; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsDomain.java b/src/main/java/com/gxwebsoft/cms/entity/CmsDomain.java new file mode 100644 index 0000000..7f88219 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsDomain.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站域名记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsDomain对象", description = "网站域名记录表") +public class CmsDomain implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型 0赠送域名 1绑定域名 ") + private Integer type; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "主机记录") + private String hostName; + + @ApiModelProperty(value = "记录值") + private String hostValue; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "网站ID") + private Integer websiteId; + + @ApiModelProperty(value = "租户ID") + private Integer appId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsForm.java b/src/main/java/com/gxwebsoft/cms/entity/CmsForm.java new file mode 100644 index 0000000..5260c66 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsForm.java @@ -0,0 +1,90 @@ +package com.gxwebsoft.cms.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 表单设计表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsForm对象", description = "表单设计表") +public class CmsForm implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "form_id", type = IdType.AUTO) + private Integer formId; + + @ApiModelProperty(value = "表单标题") + private String name; + + @ApiModelProperty(value = "顶部图片") + private String photo; + + @ApiModelProperty(value = "背景图片") + private String background; + + @ApiModelProperty(value = "视频文件") + private String video; + + @ApiModelProperty(value = "提交次数") + private Integer submitNumber; + + @ApiModelProperty(value = "页面布局") + private String layout; + + @ApiModelProperty(value = "是否隐藏顶部图片") + private Integer hidePhoto; + + @ApiModelProperty(value = "是否隐藏背景图片") + private Integer hideBackground; + + @ApiModelProperty(value = "是否隐藏视频") + private Integer hideVideo; + + @ApiModelProperty(value = "背景图片透明度") + private BigDecimal opacity; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsFormRecord.java b/src/main/java/com/gxwebsoft/cms/entity/CmsFormRecord.java new file mode 100644 index 0000000..c8a6d03 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsFormRecord.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 表单数据记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsFormRecord对象", description = "表单数据记录表") +public class CmsFormRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "form_record_id", type = IdType.AUTO) + private Integer formRecordId; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "表单ID") + private Integer formId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsLang.java b/src/main/java/com/gxwebsoft/cms/entity/CmsLang.java new file mode 100644 index 0000000..77444a3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsLang.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 国际化 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsLang对象", description = "国际化") +public class CmsLang implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "编码") + private String code; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsLangLog.java b/src/main/java/com/gxwebsoft/cms/entity/CmsLangLog.java new file mode 100644 index 0000000..3db30fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsLangLog.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 国际化记录启用 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsLangLog对象", description = "国际化记录启用") +public class CmsLangLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "名称") + private String lang; + + @ApiModelProperty(value = "关联ID") + private Integer langId; + + @ApiModelProperty(value = "编码") + private String code; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsLink.java b/src/main/java/com/gxwebsoft/cms/entity/CmsLink.java new file mode 100644 index 0000000..f84826c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsLink.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 常用链接 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsLink对象", description = "常用链接") +public class CmsLink implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "链接名称") + private String name; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "栏目ID") + private Integer categoryId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "栏目名称") + @TableField(exist = false) + private String categoryName; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsModel.java b/src/main/java/com/gxwebsoft/cms/entity/CmsModel.java new file mode 100644 index 0000000..42199a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsModel.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 模型 + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsModel对象", description = "模型") +public class CmsModel implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "model_id", type = IdType.AUTO) + private Integer modelId; + + @ApiModelProperty(value = "模型名称") + private String name; + + @ApiModelProperty(value = "唯一标识") + private String model; + + @ApiModelProperty(value = "列表页路径") + private String component; + + @ApiModelProperty(value = "详情页路径") + private String componentDetail; + + @ApiModelProperty(value = "模型banner图片") + private String banner; + + @ApiModelProperty(value = "文章后缀") + private String suffix; + + @ApiModelProperty(value = "拇指图片") + private String thumb; + + @ApiModelProperty(value = "封面图宽") + private String imageWidth; + + @ApiModelProperty(value = "封面图高") + private String imageHeight; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "Banner上的标题") + private String title; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + private Integer showType; + + @ApiModelProperty(value = "是否禁用") + private Boolean disabled; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsMp.java b/src/main/java/com/gxwebsoft/cms/entity/CmsMp.java new file mode 100644 index 0000000..8248fb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsMp.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序信息 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsMp对象", description = "小程序信息") +public class CmsMp implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "mp_id", type = IdType.AUTO) + private Integer mpId; + + @ApiModelProperty(value = "是否主账号") + private Integer type; + + @ApiModelProperty(value = "小程序ID") + private String appId; + + @ApiModelProperty(value = "小程序密钥") + private String appSecret; + + @ApiModelProperty(value = "小程序名称") + private String mpName; + + @ApiModelProperty(value = "小程序简称") + private String shortName; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "小程序码") + private String mpQrcode; + + @ApiModelProperty(value = "微信认证") + private Integer authentication; + + @ApiModelProperty(value = "主体信息") + private String companyName; + + @ApiModelProperty(value = "小程序备案") + private String icpNo; + + @ApiModelProperty(value = "登录邮箱") + private String email; + + @ApiModelProperty(value = "登录密码") + private String password; + + @ApiModelProperty(value = "原始ID") + private String ghId; + + @ApiModelProperty(value = "入口页面") + private String mainPath; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "介绍") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsMpAd.java b/src/main/java/com/gxwebsoft/cms/entity/CmsMpAd.java new file mode 100644 index 0000000..0684040 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsMpAd.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序广告位 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsMpAd对象", description = "小程序广告位") +public class CmsMpAd implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ad_id", type = IdType.AUTO) + private Integer adId; + + @ApiModelProperty(value = "页面ID") + private Integer pageId; + + @ApiModelProperty(value = "广告类型") + private String adType; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "页面名称") + private String pageName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsMpField.java b/src/main/java/com/gxwebsoft/cms/entity/CmsMpField.java new file mode 100644 index 0000000..8981fdc --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsMpField.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序配置 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsMpField对象", description = "小程序配置") +public class CmsMpField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "页面ID") + private Integer pageId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsMpMenu.java b/src/main/java/com/gxwebsoft/cms/entity/CmsMpMenu.java new file mode 100644 index 0000000..c59832a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsMpMenu.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序端菜单 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsMpMenu对象", description = "小程序端菜单") +public class CmsMpMenu implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "menu_id", type = IdType.AUTO) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标") + private Integer type; + + @ApiModelProperty(value = "是否微信小程序菜单") + private Boolean isMpWeixin; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String avatar; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "上传图标") + private String icon; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + private Integer position; + + @ApiModelProperty(value = "0 第一行 1第二行") + private Integer rows; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "绑定的页面") + private Integer pageId; + + @ApiModelProperty(value = "绑定的文章分类ID") + private Integer articleCategoryId; + + @ApiModelProperty(value = "绑定的文章ID") + private Integer articleId; + + @ApiModelProperty(value = "绑定的表单ID") + private Integer formId; + + @ApiModelProperty(value = "绑定的知识库标识") + private String bookCode; + + @ApiModelProperty(value = "绑定的商品分类ID") + private Integer goodsCategoryId; + + @ApiModelProperty(value = "绑定的商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否管理人员可见") + private Integer adminShow; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "分组名称") + private String groupName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsMpPages.java b/src/main/java/com/gxwebsoft/cms/entity/CmsMpPages.java new file mode 100644 index 0000000..36461c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsMpPages.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序页面 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsMpPages对象", description = "小程序页面") +public class CmsMpPages implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "页面名称") + private String title; + + @ApiModelProperty(value = "页面路径") + private String path; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "分包") + private String subpackage; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "未选中图标") + private String iconPath; + + @ApiModelProperty(value = "选中的图标") + private String selectedIconPath; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsNavigation.java b/src/main/java/com/gxwebsoft/cms/entity/CmsNavigation.java new file mode 100644 index 0000000..b3c2ce6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsNavigation.java @@ -0,0 +1,239 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站导航记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsNavigation对象", description = "网站导航记录表") +public class CmsNavigation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "navigation_id", type = IdType.AUTO) + private Integer navigationId; + + @ApiModelProperty(value = "类型, 0列表 1图文") + private Integer type; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "模型") + private String model; + + @ApiModelProperty(value = "标识") + private String code; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "文件后缀") + @TableField(exist = false) + private String suffix; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "banner") + @TableField(exist = false) + private String banner; + + @ApiModelProperty(value = "移动端banner") + @TableField(exist = false) + private String mpBanner; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + private Integer permission; + + @ApiModelProperty(value = "访问密码") + private String password; + + @ApiModelProperty(value = "验证密码(前端回传)") + @TableField(exist = false) + private String password2; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + private Integer position; + + @ApiModelProperty(value = "仅在顶部显示") + private Integer top; + + @ApiModelProperty(value = "仅在底部显示") + private Integer bottom; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "父级栏目路由") + private String parentPath; + + @ApiModelProperty(value = "父级栏目名称") + private String parentName; + + @ApiModelProperty(value = "父级栏目位置") + @TableField(exist = false) + private Integer parentPosition; + + @ApiModelProperty(value = "模型名称") + private String modelName; + + @ApiModelProperty(value = "绑定的页面(已废弃)") + private Integer pageId; + + @ApiModelProperty(value = "详情页ID") + private Integer itemId; + + @ApiModelProperty(value = "是否微信小程序菜单") + private Boolean isMpWeixin; + + @ApiModelProperty(value = "菜单间距") + private Integer gutter; + + @ApiModelProperty(value = "菜单宽度") + private Integer span; + + @ApiModelProperty(value = "阅读量") + private Integer readNum; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "用于同步翻译内容") + private Integer langCategoryId; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "是否推荐") + private Boolean recommend; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + + @ApiModelProperty(value = "页面名称") + @TableField(exist = false) + private String pageName; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty(value = "页面布局") + @TableField(exist = false) + private String layout; + + @ApiModelProperty(value = "关联的页面") + @TableField(exist = false) + private CmsDesign design; + + @ApiModelProperty(value = "所属模型") + @TableField(exist = false) + private CmsModel modelInfo; + + @ApiModelProperty(value = "父级栏目") + @TableField(exist = false) + private CmsNavigation parent; + + @ApiModelProperty(value = "当前栏目名称") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "当前栏目链接") + @TableField(exist = false) + private String categoryPath; + + @ApiModelProperty(value = "栏目图片") + @TableField(exist = false) + private String photo; + + @ApiModelProperty(value = "是否开启布局") + @TableField(exist = false) + private Boolean showLayout; + + @ApiModelProperty(value = "单页内容") + @TableField(exist = false) + private String content; + + @ApiModelProperty(value = "是否显示banner") + @TableField(exist = false) + private Boolean showBanner; + + @ApiModelProperty(value = "菜单标题") + @TableField(exist = false) + private String text; + + public String getCategoryName() { + return this.title; + } + + public String getCategoryPath() { + return this.path; + } + + public String getText() { + return this.title; + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsOrder.java b/src/main/java/com/gxwebsoft/cms/entity/CmsOrder.java new file mode 100644 index 0000000..38c7685 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsOrder.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.cms.entity; + +import java.math.BigDecimal; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单 + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsOrder对象", description = "订单") +public class CmsOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单号") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单标题") + private String title; + + @ApiModelProperty(value = "模型名称") + private String model; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单类型,0商城 1询价 2留言") + private Integer type; + + @ApiModelProperty(value = "关联文章ID") + private Integer articleId; + + @ApiModelProperty(value = "关联网站ID") + private Integer websiteId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "联系地址") + private String address; + + @ApiModelProperty(value = "订单内容") + private String content; + + @ApiModelProperty(value = "订单附件") + private String files; + + @ApiModelProperty(value = "订单总额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款") + private BigDecimal payPrice; + + @ApiModelProperty(value = "报价询价") + private BigDecimal price; + + @ApiModelProperty(value = "购买数量") + private Integer totalNum; + + @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") + private String qrcode; + + @ApiModelProperty(value = "下单渠道,0网站 1小程序 2其他") + private Integer channel; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Boolean isSettled; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "图像验证码") + @TableField(exist = false) + private String code; + + @ApiModelProperty(value = "栏目ID") + @TableField(exist = false) + private Integer categoryId; + + public String getLang() { + if(this.lang == null || this.lang.equals("zh")){ + return "zh_CN"; + } + return this.lang; + } +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsProduct.java b/src/main/java/com/gxwebsoft/cms/entity/CmsProduct.java new file mode 100644 index 0000000..c178ef5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsProduct.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.cms.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 产品 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsProduct对象", description = "产品") +public class CmsProduct implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "product_id", type = IdType.AUTO) + private Integer productId; + + @ApiModelProperty(value = "类型 0软件产品 1实物商品 2虚拟商品") + private Integer type; + + @ApiModelProperty(value = "产品编码") + private String code; + + @ApiModelProperty(value = "产品标题") + private String title; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "标签") + private String tag; + + @ApiModelProperty(value = "产品详情") + private String content; + + @ApiModelProperty(value = "父级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "产品分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "产品规格 0单规格 1多规格") + private Integer specs; + + @ApiModelProperty(value = "货架") + private String position; + + @ApiModelProperty(value = "单位名称 (个)") + private String unitName; + + @ApiModelProperty(value = "进货价格") + private BigDecimal price; + + @ApiModelProperty(value = "销售价格") + private BigDecimal salePrice; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + private Integer deductStockType; + + @ApiModelProperty(value = "轮播图") + private String files; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "消费赚取积分") + private BigDecimal gainIntegral; + + @ApiModelProperty(value = "推荐") + private Integer recommend; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "状态(0:未上架,1:上架)") + private Boolean isShow; + + @ApiModelProperty(value = "状态, 0上架 1待上架 2待审核 3审核不通过") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpec.java b/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpec.java new file mode 100644 index 0000000..b1678e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpec.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsProductSpec对象", description = "规格") +public class CmsProductSpec implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格ID") + @TableId(value = "spec_id", type = IdType.AUTO) + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "创建用户") + private Integer userId; + + @ApiModelProperty(value = "更新者") + private Integer updater; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1待修,2异常已修,3异常未修") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpecValue.java b/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpecValue.java new file mode 100644 index 0000000..d065e96 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsProductSpecValue.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格值 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsProductSpecValue对象", description = "规格值") +public class CmsProductSpecValue implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格值ID") + @TableId(value = "spec_value_id", type = IdType.AUTO) + private Integer specValueId; + + @ApiModelProperty(value = "规格组ID") + private Integer specId; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsProductUrl.java b/src/main/java/com/gxwebsoft/cms/entity/CmsProductUrl.java new file mode 100644 index 0000000..a180381 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsProductUrl.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 域名 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsProductUrl对象", description = "域名") +public class CmsProductUrl implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "产品ID") + private Integer productId; + + @ApiModelProperty(value = "域名类型") + private String type; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsTemplate.java b/src/main/java/com/gxwebsoft/cms/entity/CmsTemplate.java new file mode 100644 index 0000000..2cbb785 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsTemplate.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站模版 + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsTemplate对象", description = "网站模版") +public class CmsTemplate implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "模版名称") + private String name; + + @ApiModelProperty(value = "模版标识") + private String code; + + @ApiModelProperty(value = "缩列图") + private String image; + + @ApiModelProperty(value = "类型 1企业官网 2其他") + private Integer type; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "预览地址") + private String domain; + + @ApiModelProperty(value = "模版下载地址") + private String downUrl; + + @ApiModelProperty(value = "色系") + private String color; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + private Integer version; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否推荐") + private Boolean recommend; + + @ApiModelProperty(value = "是否共享模板") + private Boolean share; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java new file mode 100644 index 0000000..40ce507 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsite.java @@ -0,0 +1,314 @@ +package com.gxwebsoft.cms.entity; + +import cn.hutool.core.util.DesensitizedUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.math.BigDecimal; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站信息记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsWebsite对象", description = "网站信息记录表") +public class CmsWebsite implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "站点ID") + @TableId(value = "website_id", type = IdType.AUTO) + private Integer websiteId; + + @ApiModelProperty(value = "网站名称") + private String websiteName; + + @ApiModelProperty(value = "网站标识") + private String websiteCode; + + @ApiModelProperty(value = "网站LOGO") + private String websiteIcon; + + @ApiModelProperty(value = "网站LOGO") + private String websiteLogo; + + @ApiModelProperty(value = "网站LOGO(深色模式)") + private String websiteDarkLogo; + + @ApiModelProperty(value = "网站类型") + private String websiteType; + + @ApiModelProperty(value = "栏目ID") + private Integer categoryId; + + @ApiModelProperty(value = "应用ID") + @TableField(exist = false) + private Integer appId; + + @ApiModelProperty(value = "网站截图") + private String files; + + @ApiModelProperty(value = "网站类型 10企业官网 20微信小程序 30APP 40其他") + private Integer type; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "全局样式") + private String style; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + private Integer version; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "是否到期") + @TableField(exist = false) + private Integer expired; + + @ApiModelProperty(value = "剩余天数") + @TableField(exist = false) + private Long expiredDays; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "服务器ID") + private String assetsName; + + @ApiModelProperty(value = "模版ID(存克隆的租户UID)") + private Integer templateId; + + @ApiModelProperty(value = "模版名称") + @TableField(exist = false) + private String templateName; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "开发者名称") + private String developer; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "ICP备案号") + private String icpNo; + + @ApiModelProperty(value = "公安备案") + private String policeNo; + + @ApiModelProperty(value = "网站描述") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "管理员备注") + private String remarks; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否官方产品") + private Boolean official; + + @ApiModelProperty(value = "允许展示到插件市场") + private Boolean market; + + @ApiModelProperty(value = "是否插件类型 0应用 1插件") + private Boolean plugin; + + @ApiModelProperty(value = "允许被搜索") + private Boolean search; + + @ApiModelProperty(value = "主题色") + private String color; + + @ApiModelProperty(value = "运行状态 0运行中 1已关闭 2维护中") + private Integer running; + + @ApiModelProperty(value = "即将过期") + private Integer soon; + + @ApiModelProperty(value = "评分") + private BigDecimal rate; + + @ApiModelProperty(value = "点赞数量") + private Integer likes; + + @ApiModelProperty(value = "点击数量") + private Integer clicks; + + @ApiModelProperty(value = "购买数量") + private Integer buys; + + @ApiModelProperty(value = "下载数量") + private Integer downloads; + + @ApiModelProperty(value = "销售价格") + private BigDecimal price; + + @ApiModelProperty(value = "交付方式") + private Integer deliveryMethod; + + @ApiModelProperty(value = "计费方式") + private Integer chargingMethod; + + @ApiModelProperty(value = "状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停") + private Integer status; + + @ApiModelProperty(value = "状态图标") + @TableField(exist = false) + private String statusIcon; + + @ApiModelProperty(value = "维护说明") + private String statusText; + + @ApiModelProperty(value = "关闭说明") + private String statusClose; + + @ApiModelProperty(value = "全局样式") + private String styles; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "预设字段") + @TableField(exist = false) + private List fields; + + @ApiModelProperty(value = "小程序导航图标") + @TableField(exist = false) + private Map> mpMenus; + + @ApiModelProperty(value = "网站导航栏") + @TableField(exist = false) + private List navigations; + + @ApiModelProperty(value = "顶部菜单") + @TableField(exist = false) + private List topNavs; + + @ApiModelProperty(value = "底部菜单") + @TableField(exist = false) + private List bottomNavs; + + @ApiModelProperty(value = "幻灯片广告") + @TableField(exist = false) + private CmsAd slide; + + @ApiModelProperty(value = "站点广告") + @TableField(exist = false) + private List ads; + + @ApiModelProperty(value = "首页布局") + @TableField(exist = false) + private String layout; + + @ApiModelProperty(value = "友情链接") + @TableField(exist = false) + private List links; + + @ApiModelProperty(value = "配置信息") + @TableField(exist = false) + private Object config; + + @ApiModelProperty(value = "服务器时间") + @TableField(exist = false) + private HashMap serverTime; + + @ApiModelProperty(value = "当前登录用户") + @TableField(exist = false) + private User loginUser; + + @ApiModelProperty(value = "超管账号") + @TableField(exist = false) + private String superAdminPhone; + + @ApiModelProperty(value = "是否登录") + @TableField(exist = false) + private Boolean isLogin; + + @ApiModelProperty(value = "网站设置") + @TableField(exist = false) + private CmsWebsiteSetting setting; + + public String getPhone(){ + return DesensitizedUtil.mobilePhone(this.phone); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteField.java b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteField.java new file mode 100644 index 0000000..5ce0d85 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteField.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsWebsiteField对象", description = "应用参数") +public class CmsWebsiteField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "默认值") + private String defaultValue; + + @ApiModelProperty(value = "可修改的值 [on|off]") + private String modifyRange; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "国际化语言") + private String lang; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteSetting.java b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteSetting.java new file mode 100644 index 0000000..3cda67a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsWebsiteSetting.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站设置 + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CmsWebsiteSetting对象", description = "网站设置") +public class CmsWebsiteSetting implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联网站ID") + private Integer websiteId; + + @ApiModelProperty(value = "是否官方插件") + private Boolean official; + + @ApiModelProperty(value = "是否展示在插件市场") + private Boolean market; + + @ApiModelProperty(value = "是否允许被搜索") + private Boolean search; + + @ApiModelProperty(value = "是否共享") + private Boolean share; + + @ApiModelProperty(value = "文章是否需要审核") + private Boolean articleReview; + + @ApiModelProperty(value = "是否插件 0应用1 插件 ") + private Boolean plugin; + + @ApiModelProperty(value = "编辑器类型 1 富文本编辑器 2 Markdown编辑器") + private Integer editor; + + @ApiModelProperty(value = "显示站内搜索") + private Boolean searchBtn; + + @ApiModelProperty(value = "显示登录注册功能") + private Boolean loginBtn; + + @ApiModelProperty(value = "显示悬浮客服工具") + private Boolean floatTool; + + @ApiModelProperty(value = "显示版权链接") + private Boolean copyrightLink; + + @ApiModelProperty(value = "导航栏最多显示数量") + private Boolean maxMenuNum; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/TranslateDataVo.java b/src/main/java/com/gxwebsoft/cms/entity/TranslateDataVo.java new file mode 100644 index 0000000..00de075 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/TranslateDataVo.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "翻译结果", description = "翻译结果") +public class TranslateDataVo implements Serializable { + + @ApiModelProperty("文本格式") + private String FormatType; + + @ApiModelProperty("原文语言") + private String SourceLanguage; + + @ApiModelProperty("译文语言") + private String TargetLanguage; + + @ApiModelProperty("待翻译内容") + private String SourceText; + + @ApiModelProperty("场景可选取值:商品标题(title),商品描述(description),商品沟通(communication),医疗(medical),社交(social),金融(finance)") + private String Scene; + + @ApiModelProperty("上下文信息") + private String Context; + + @ApiModelProperty("翻译结果") + private String translated; + + @ApiModelProperty("总单词数") + private String wordCount; + + @ApiModelProperty("源语言传入 auto 时,语种识别后的源语言代码") + private String detectedLanguage; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/TranslateVo.java b/src/main/java/com/gxwebsoft/cms/entity/TranslateVo.java new file mode 100644 index 0000000..6143990 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/TranslateVo.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "阿里云机器翻译", description = "阿里云机器翻译") +public class TranslateVo implements Serializable { + + @ApiModelProperty("错误码") + private String Code; + + @ApiModelProperty("错误信息") + @JsonIgnoreProperties(ignoreUnknown = true) + private String Message; + + @ApiModelProperty("请求ID") + private String RequestId; + + @ApiModelProperty("返回数据") + private TranslateDataVo Data; + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsAdMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsAdMapper.java new file mode 100644 index 0000000..836fa83 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsAdMapper.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsAd; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsAdParam; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 广告位Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsAdMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsAdParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsAdParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsAdParam param); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsAdRecordMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsAdRecordMapper.java new file mode 100644 index 0000000..329956e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsAdRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsAdRecord; +import com.gxwebsoft.cms.param.CmsAdRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 广告图片Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsAdRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsAdRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsAdRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCategoryMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCategoryMapper.java new file mode 100644 index 0000000..d540f29 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticleCategory; +import com.gxwebsoft.cms.param.CmsArticleCategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章分类表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleCategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleCategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCommentMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCommentMapper.java new file mode 100644 index 0000000..ed20748 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCommentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticleComment; +import com.gxwebsoft.cms.param.CmsArticleCommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章评论表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleCommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleCommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleContentMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleContentMapper.java new file mode 100644 index 0000000..2a39ca9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleContentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticleContent; +import com.gxwebsoft.cms.param.CmsArticleContentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleContentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleContentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleContentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCountMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCountMapper.java new file mode 100644 index 0000000..596a640 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleCountMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticleCount; +import com.gxwebsoft.cms.param.CmsArticleCountParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 点赞文章Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCountMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleCountParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleCountParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleLikeMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleLikeMapper.java new file mode 100644 index 0000000..f6eba4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleLikeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticleLike; +import com.gxwebsoft.cms.param.CmsArticleLikeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 点赞文章Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleLikeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleLikeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleLikeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleMapper.java new file mode 100644 index 0000000..18c2506 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsArticleMapper.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsArticleParam; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsArticleParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsArticleParam param); + + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsArticleParam param); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsComponentsMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsComponentsMapper.java new file mode 100644 index 0000000..1b64edb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsComponentsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsComponents; +import com.gxwebsoft.cms.param.CmsComponentsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 组件Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsComponentsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsComponentsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsComponentsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignMapper.java new file mode 100644 index 0000000..5542ff7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.param.CmsDesignParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 页面管理记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsDesignMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsDesignParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsDesignParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignRecordMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignRecordMapper.java new file mode 100644 index 0000000..dd25171 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsDesignRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsDesignRecord; +import com.gxwebsoft.cms.param.CmsDesignRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 页面组件表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsDesignRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsDesignRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsDesignRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsDomainMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsDomainMapper.java new file mode 100644 index 0000000..e561b20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsDomainMapper.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsDomain; +import com.gxwebsoft.cms.param.CmsDomainParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站域名记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsDomainMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsDomainParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsDomainParam param); + + @InterceptorIgnore(tenantLine = "true") + CmsDomain getDomain(@Param("domain") String domain); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsFormMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsFormMapper.java new file mode 100644 index 0000000..ab12d1a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsFormMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsForm; +import com.gxwebsoft.cms.param.CmsFormParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 表单设计表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsFormMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsFormParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsFormParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsFormRecordMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsFormRecordMapper.java new file mode 100644 index 0000000..b766f7b --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsFormRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsFormRecord; +import com.gxwebsoft.cms.param.CmsFormRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 表单数据记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsFormRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsFormRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsFormRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsLangLogMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsLangLogMapper.java new file mode 100644 index 0000000..70c8678 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsLangLogMapper.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 国际化记录启用Mapper + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +public interface CmsLangLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsLangLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsLangLogParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsLangLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsLangMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsLangMapper.java new file mode 100644 index 0000000..b8705df --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsLangMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsLang; +import com.gxwebsoft.cms.param.CmsLangParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 国际化Mapper + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +public interface CmsLangMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsLangParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsLangParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsLinkMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsLinkMapper.java new file mode 100644 index 0000000..915b1f1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsLinkMapper.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.entity.CmsLink; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import com.gxwebsoft.cms.param.CmsLinkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 常用链接Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsLinkMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsLinkParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsLinkParam param); + + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsLinkParam param); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsModelMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsModelMapper.java new file mode 100644 index 0000000..6fe0a36 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsModelMapper.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.param.CmsModelParam; +import com.gxwebsoft.cms.param.CmsWebsiteFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 模型Mapper + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +public interface CmsModelMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsModelParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsModelParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsModelParam param); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsMpAdMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpAdMapper.java new file mode 100644 index 0000000..63e9029 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpAdMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsMpAd; +import com.gxwebsoft.cms.param.CmsMpAdParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序广告位Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpAdMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsMpAdParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsMpAdParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsMpFieldMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpFieldMapper.java new file mode 100644 index 0000000..68c141a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpFieldMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsMpField; +import com.gxwebsoft.cms.param.CmsMpFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序配置Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsMpFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsMpFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMapper.java new file mode 100644 index 0000000..1d6f315 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsMp; +import com.gxwebsoft.cms.param.CmsMpParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序信息Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsMpParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsMpParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMenuMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMenuMapper.java new file mode 100644 index 0000000..3d1b7cd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpMenuMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsMpMenu; +import com.gxwebsoft.cms.param.CmsMpMenuParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序端菜单Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpMenuMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsMpMenuParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsMpMenuParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsMpPagesMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpPagesMapper.java new file mode 100644 index 0000000..70995b5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsMpPagesMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsMpPages; +import com.gxwebsoft.cms.param.CmsMpPagesParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序页面Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpPagesMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsMpPagesParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsMpPagesParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsNavigationMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsNavigationMapper.java new file mode 100644 index 0000000..e0fcfac --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsNavigationMapper.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.param.CmsModelParam; +import com.gxwebsoft.cms.param.CmsNavigationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站导航记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsNavigationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsNavigationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsNavigationParam param); + + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsNavigationParam param); + + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsOrderMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsOrderMapper.java new file mode 100644 index 0000000..a4d0e9e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsOrderMapper.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.entity.CmsOrder; +import com.gxwebsoft.cms.param.CmsNavigationParam; +import com.gxwebsoft.cms.param.CmsOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 订单Mapper + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +public interface CmsOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsOrderParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsOrderParam param); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsProductMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductMapper.java new file mode 100644 index 0000000..5abc070 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsProduct; +import com.gxwebsoft.cms.param.CmsProductParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 产品Mapper + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsProductParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsProductParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecMapper.java new file mode 100644 index 0000000..ce73ad8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsProductSpec; +import com.gxwebsoft.cms.param.CmsProductSpecParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 规格Mapper + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductSpecMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsProductSpecParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsProductSpecParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecValueMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecValueMapper.java new file mode 100644 index 0000000..9885e18 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductSpecValueMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsProductSpecValue; +import com.gxwebsoft.cms.param.CmsProductSpecValueParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 规格值Mapper + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductSpecValueMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsProductSpecValueParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsProductSpecValueParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsProductUrlMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductUrlMapper.java new file mode 100644 index 0000000..5bd2486 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsProductUrlMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsProductUrl; +import com.gxwebsoft.cms.param.CmsProductUrlParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 域名Mapper + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductUrlMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsProductUrlParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsProductUrlParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsTemplateMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsTemplateMapper.java new file mode 100644 index 0000000..7cd4485 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsTemplateMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsTemplate; +import com.gxwebsoft.cms.param.CmsTemplateParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站模版Mapper + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +public interface CmsTemplateMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsTemplateParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsTemplateParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteFieldMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteFieldMapper.java new file mode 100644 index 0000000..e4c7e79 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteFieldMapper.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsWebsiteField; +import com.gxwebsoft.cms.param.CmsWebsiteFieldParam; +import org.apache.ibatis.annotations.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 应用参数Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsWebsiteFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsWebsiteFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsWebsiteFieldParam param); + + + @InterceptorIgnore(tenantLine = "true") + List selectListAllRel(@Param("param") CmsWebsiteFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteMapper.java new file mode 100644 index 0000000..c24e345 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteMapper.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.cms.param.CmsWebsiteParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站信息记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsWebsiteMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsWebsiteParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsWebsiteParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectPageRelAll(@Param("page") IPage page, + @Param("param") CmsWebsiteParam param); + + @InterceptorIgnore(tenantLine = "true") + CmsWebsite getByIdRelAll(@Param("websiteId") Integer id); + + @InterceptorIgnore(tenantLine = "true") + boolean updateByIdAll(@Param("param") CmsWebsite cmsWebsite); + + @InterceptorIgnore(tenantLine = "true") + boolean removeByIdAll(@Param("websiteId") Integer id); + + @InterceptorIgnore(tenantLine = "true") + CmsWebsite getByTenantId(@Param("tenantId") Integer tenantId); +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteSettingMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteSettingMapper.java new file mode 100644 index 0000000..dc468fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/CmsWebsiteSettingMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsWebsiteSetting; +import com.gxwebsoft.cms.param.CmsWebsiteSettingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站设置Mapper + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +public interface CmsWebsiteSettingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CmsWebsiteSettingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CmsWebsiteSettingParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdMapper.xml new file mode 100644 index 0000000..8fb5dea --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdMapper.xml @@ -0,0 +1,89 @@ + + + + + + + SELECT a.*, b.user_id as websiteUserId, c.title as categoryName + FROM cms_ad a + LEFT JOIN cms_website b ON a.tenant_id = b.tenant_id + LEFT JOIN cms_navigation c ON a.category_id = c.navigation_id + + + AND a.ad_id = #{param.adId} + + + AND a.type = #{param.type} + + + AND a.category_id = #{param.categoryId} + + + AND a.lang = #{param.lang} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.width LIKE CONCAT('%', #{param.width}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.user_id = #{param.userId} + + + AND b.user_id = #{param.websiteUserId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.ad_id = #{param.keywords} + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdRecordMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdRecordMapper.xml new file mode 100644 index 0000000..959667a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsAdRecordMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM cms_ad_record a + + + AND a.ad_record_id = #{param.adRecordId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.ad_id = #{param.adId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCategoryMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCategoryMapper.xml new file mode 100644 index 0000000..f548eb4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCategoryMapper.xml @@ -0,0 +1,86 @@ + + + + + + + SELECT a.* + FROM cms_article_category a + + + AND a.category_id = #{param.categoryId} + + + AND a.category_code LIKE CONCAT('%', #{param.categoryCode}, '%') + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.user_id = #{param.userId} + + + AND a.count = #{param.count} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.hide = #{param.hide} + + + AND a.recommend = #{param.recommend} + + + AND a.show_index = #{param.showIndex} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCommentMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCommentMapper.xml new file mode 100644 index 0000000..8d82a95 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCommentMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM cms_article_comment a + + + AND a.comment_id = #{param.commentId} + + + AND a.article_id = #{param.articleId} + + + AND a.score = #{param.score} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.is_picture = #{param.isPicture} + + + AND a.user_id = #{param.userId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.reply_comment_id = #{param.replyCommentId} + + + AND a.reply_user_id = #{param.replyUserId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleContentMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleContentMapper.xml new file mode 100644 index 0000000..de251b4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleContentMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM cms_article_content a + + + AND a.id = #{param.id} + + + AND a.article_id = #{param.articleId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCountMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCountMapper.xml new file mode 100644 index 0000000..d714ed3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleCountMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM cms_article_count a + + + AND a.id = #{param.id} + + + AND a.article_id = #{param.articleId} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleLikeMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleLikeMapper.xml new file mode 100644 index 0000000..b33ff0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleLikeMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM cms_article_like a + + + AND a.id = #{param.id} + + + AND a.article_id = #{param.articleId} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml new file mode 100644 index 0000000..8409288 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsArticleMapper.xml @@ -0,0 +1,184 @@ + + + + + + + SELECT a.*,b.title as categoryName,b.parent_Id as parentId, b.model,c.title as parentName,u.nickname,u.avatar + FROM cms_article a + LEFT JOIN cms_navigation b ON a.category_id = b.navigation_id + LEFT JOIN cms_navigation c ON b.parent_id = c.navigation_id + LEFT JOIN gxwebsoft_core.sys_user u ON a.user_id = u.user_id + + + AND a.article_id = #{param.articleId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.lang = #{param.lang} + + + AND a.model = #{param.model} + + + AND a.detail = #{param.detail} + + + AND a.show_type = #{param.showType} + + + AND a.topic LIKE CONCAT('%', #{param.topic}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.category_id IN + + #{item} + + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.image != '' + + + AND a.source LIKE CONCAT('%', #{param.source}, '%') + + + AND a.virtual_views = #{param.virtualViews} + + + AND a.actual_views = #{param.actualViews} + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.video LIKE CONCAT('%', #{param.video}, '%') + + + AND a.accept LIKE CONCAT('%', #{param.accept}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.likes = #{param.likes} + + + AND a.comment_numbers = #{param.commentNumbers} + + + AND a.to_users LIKE CONCAT('%', #{param.toUsers}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.project_id = #{param.projectId} + + + AND a.tags LIKE CONCAT('%', #{param.tags}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.recommend = #{param.recommend} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.article_id IN + + #{item} + + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.article_id = #{param.keywords} + OR a.detail = #{param.keywords} + OR a.title LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsComponentsMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsComponentsMapper.xml new file mode 100644 index 0000000..56c3e24 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsComponentsMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM cms_components a + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.navigation_id = #{param.navigationId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignMapper.xml new file mode 100644 index 0000000..afbee30 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignMapper.xml @@ -0,0 +1,90 @@ + + + + + + + SELECT a.*,b.lang_category_id + FROM cms_design a + LEFT JOIN cms_navigation b ON a.category_id = b.navigation_id + + + AND a.page_id = #{param.pageId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.lang = #{param.lang} + + + AND a.category_id = #{param.categoryId} + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.photo LIKE CONCAT('%', #{param.photo}, '%') + + + AND a.buy_url LIKE CONCAT('%', #{param.buyUrl}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.show_layout = #{param.showLayout} + + + AND a.layout LIKE CONCAT('%', #{param.layout}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.user_id = #{param.userId} + + + AND a.home = #{param.home} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignRecordMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignRecordMapper.xml new file mode 100644 index 0000000..0ff62ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDesignRecordMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM cms_design_record a + + + AND a.id = #{param.id} + + + AND a.navigation_id = #{param.navigationId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.dict_code LIKE CONCAT('%', #{param.dictCode}, '%') + + + AND a.styles LIKE CONCAT('%', #{param.styles}, '%') + + + AND a.shadow LIKE CONCAT('%', #{param.shadow}, '%') + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.photo LIKE CONCAT('%', #{param.photo}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDomainMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDomainMapper.xml new file mode 100644 index 0000000..dc39215 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsDomainMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM cms_domain a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.host_name LIKE CONCAT('%', #{param.hostName}, '%') + + + AND a.host_value LIKE CONCAT('%', #{param.hostValue}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.website_id = #{param.websiteId} + + + AND a.app_id = #{param.appId} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormMapper.xml new file mode 100644 index 0000000..5b2d2b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormMapper.xml @@ -0,0 +1,83 @@ + + + + + + + SELECT a.* + FROM cms_form a + + + AND a.form_id = #{param.formId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.photo LIKE CONCAT('%', #{param.photo}, '%') + + + AND a.background LIKE CONCAT('%', #{param.background}, '%') + + + AND a.video LIKE CONCAT('%', #{param.video}, '%') + + + AND a.submit_number = #{param.submitNumber} + + + AND a.layout LIKE CONCAT('%', #{param.layout}, '%') + + + AND a.hide_photo = #{param.hidePhoto} + + + AND a.hide_background = #{param.hideBackground} + + + AND a.hide_video = #{param.hideVideo} + + + AND a.opacity = #{param.opacity} + + + AND a.user_id = #{param.userId} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormRecordMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormRecordMapper.xml new file mode 100644 index 0000000..f646c1e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsFormRecordMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM cms_form_record a + + + AND a.form_record_id = #{param.formRecordId} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.form_data LIKE CONCAT('%', #{param.formData}, '%') + + + AND a.form_id = #{param.formId} + + + AND a.user_id = #{param.userId} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangLogMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangLogMapper.xml new file mode 100644 index 0000000..97d9bcb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangLogMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.*, b.user_id as websiteUserId + FROM cms_lang_log a + LEFT JOIN cms_website b ON a.tenant_id = b.tenant_id + + + AND a.id = #{param.id} + + + AND a.lang LIKE CONCAT('%', #{param.lang}, '%') + + + AND a.lang_id = #{param.langId} + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND b.user_id = #{param.websiteUserId} + + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangMapper.xml new file mode 100644 index 0000000..0dc0bed --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLangMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM cms_lang a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLinkMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLinkMapper.xml new file mode 100644 index 0000000..6102242 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsLinkMapper.xml @@ -0,0 +1,86 @@ + + + + + + + SELECT a.*, b.user_id as websiteUserId,c.title as categoryName + FROM cms_link a + LEFT JOIN cms_website b ON a.tenant_id = b.tenant_id + LEFT JOIN cms_navigation c ON a.category_id = c.navigation_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.lang = #{param.lang} + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.category_id LIKE CONCAT('%', #{param.categoryId}, '%') + + + AND a.app_id = #{param.appId} + + + AND a.user_id = #{param.userId} + + + AND b.user_id = #{param.websiteUserId} + + + AND a.recommend = #{param.recommend} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.id = #{param.keywords} + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsModelMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsModelMapper.xml new file mode 100644 index 0000000..a948d9c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsModelMapper.xml @@ -0,0 +1,89 @@ + + + + + + + SELECT a.*, b.user_id as websiteUserId + FROM cms_model a + LEFT JOIN cms_website b ON a.tenant_id = b.tenant_id + + + AND a.model_id = #{param.modelId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.model LIKE CONCAT('%', #{param.model}, '%') + + + AND a.component_detail LIKE CONCAT('%', #{param.componentDetail}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.banner LIKE CONCAT('%', #{param.banner}, '%') + + + AND a.image_width = #{param.imageWidth} + + + AND a.image_height = #{param.imageHeight} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.show_type = #{param.showType} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND b.user_id = #{param.websiteUserId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpAdMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpAdMapper.xml new file mode 100644 index 0000000..798715d --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpAdMapper.xml @@ -0,0 +1,74 @@ + + + + + + + SELECT a.* + FROM cms_mp_ad a + + + AND a.ad_id = #{param.adId} + + + AND a.page_id = #{param.pageId} + + + AND a.ad_type LIKE CONCAT('%', #{param.adType}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.width LIKE CONCAT('%', #{param.width}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.page_name LIKE CONCAT('%', #{param.pageName}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpFieldMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpFieldMapper.xml new file mode 100644 index 0000000..d7c0cda --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpFieldMapper.xml @@ -0,0 +1,56 @@ + + + + + + + SELECT a.* + FROM cms_mp_field a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.value LIKE CONCAT('%', #{param.value}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMapper.xml new file mode 100644 index 0000000..6cf57e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMapper.xml @@ -0,0 +1,95 @@ + + + + + + + SELECT a.* + FROM cms_mp a + + + AND a.mp_id = #{param.mpId} + + + AND a.type = #{param.type} + + + AND a.app_id LIKE CONCAT('%', #{param.appId}, '%') + + + AND a.app_secret LIKE CONCAT('%', #{param.appSecret}, '%') + + + AND a.mp_name LIKE CONCAT('%', #{param.mpName}, '%') + + + AND a.short_name LIKE CONCAT('%', #{param.shortName}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.mp_qrcode LIKE CONCAT('%', #{param.mpQrcode}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.icp_no LIKE CONCAT('%', #{param.icpNo}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.gh_id LIKE CONCAT('%', #{param.ghId}, '%') + + + AND a.main_path LIKE CONCAT('%', #{param.mainPath}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMenuMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMenuMapper.xml new file mode 100644 index 0000000..7ac324c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpMenuMapper.xml @@ -0,0 +1,119 @@ + + + + + + + SELECT a.* + FROM cms_mp_menu a + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.is_mp_weixin = #{param.isMpWeixin} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.hide = #{param.hide} + + + AND a.position = #{param.position} + + + AND a.rows = #{param.rows} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.article_category_id = #{param.articleCategoryId} + + + AND a.article_id = #{param.articleId} + + + AND a.form_id = #{param.formId} + + + AND a.book_code LIKE CONCAT('%', #{param.bookCode}, '%') + + + AND a.goods_category_id = #{param.goodsCategoryId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.user_id = #{param.userId} + + + AND a.admin_show = #{param.adminShow} + + + AND a.home = #{param.home} + + + AND a.group_name LIKE CONCAT('%', #{param.groupName}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpPagesMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpPagesMapper.xml new file mode 100644 index 0000000..08fcf49 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsMpPagesMapper.xml @@ -0,0 +1,74 @@ + + + + + + + SELECT a.* + FROM cms_mp_pages a + + + AND a.id = #{param.id} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.home = #{param.home} + + + AND a.subpackage LIKE CONCAT('%', #{param.subpackage}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.icon_path LIKE CONCAT('%', #{param.iconPath}, '%') + + + AND a.selected_icon_path LIKE CONCAT('%', #{param.selectedIconPath}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsNavigationMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsNavigationMapper.xml new file mode 100644 index 0000000..837a948 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsNavigationMapper.xml @@ -0,0 +1,161 @@ + + + + + + + SELECT a.*, b.title as parentName, b.position as parentPosition + FROM cms_navigation a + LEFT JOIN cms_navigation b ON a.parent_id = b.navigation_id + + + AND a.navigation_id = #{param.navigationId} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.model LIKE CONCAT('%', #{param.model}, '%') + + + AND a.lang = #{param.lang} + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.hide = #{param.hide} + + + AND a.permission = #{param.permission} + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.position = #{param.position} + + + AND a.top = #{param.top} + + + AND a.bottom = #{param.bottom} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.parent_path LIKE CONCAT('%', #{param.parentPath}, '%') + + + AND a.parent_name LIKE CONCAT('%', #{param.parentName}, '%') + + + AND a.model_name LIKE CONCAT('%', #{param.modelName}, '%') + + + AND a.type = #{param.type} + + + AND a.page_id = #{param.pageId} + + + AND a.is_mp_weixin = #{param.isMpWeixin} + + + AND a.user_id = #{param.userId} + + + AND a.home = #{param.home} + + + AND a.recommend = #{param.recommend} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.path LIKE CONCAT('%', #{param.keywords}, '%') + OR a.title LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsOrderMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsOrderMapper.xml new file mode 100644 index 0000000..e167b20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsOrderMapper.xml @@ -0,0 +1,120 @@ + + + + + + + SELECT a.*, b.category_id, c.user_id as websiteUserId + FROM cms_order a + LEFT JOIN cms_article b ON a.article_id = b.article_id + LEFT JOIN cms_website c ON a.tenant_id = c.tenant_id + + + AND a.order_id = #{param.orderId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.model = #{param.model} + + + AND a.lang = #{param.lang} + + + AND a.type = #{param.type} + + + AND a.article_id = #{param.articleId} + + + AND a.website_id = #{param.websiteId} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.total_price = #{param.totalPrice} + + + AND a.pay_price = #{param.payPrice} + + + AND a.price = #{param.price} + + + AND a.total_num = #{param.totalNum} + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.channel = #{param.channel} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.is_settled = #{param.isSettled} + + + AND a.user_id = #{param.userId} + + + AND c.user_id = #{param.websiteUserId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.content LIKE CONCAT('%', #{param.keywords}, '%') + OR a.phone = #{param.keywords} + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductMapper.xml new file mode 100644 index 0000000..dc2a719 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductMapper.xml @@ -0,0 +1,110 @@ + + + + + + + SELECT a.* + FROM cms_product a + + + AND a.product_id = #{param.productId} + + + AND a.type = #{param.type} + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.category_id = #{param.categoryId} + + + AND a.specs = #{param.specs} + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.unit_name LIKE CONCAT('%', #{param.unitName}, '%') + + + AND a.price = #{param.price} + + + AND a.sale_price = #{param.salePrice} + + + AND a.deduct_stock_type = #{param.deductStockType} + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.sales = #{param.sales} + + + AND a.stock = #{param.stock} + + + AND a.gain_integral = #{param.gainIntegral} + + + AND a.recommend = #{param.recommend} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.is_show = #{param.isShow} + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecMapper.xml new file mode 100644 index 0000000..08ee497 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM cms_product_spec a + + + AND a.spec_id = #{param.specId} + + + AND a.spec_name LIKE CONCAT('%', #{param.specName}, '%') + + + AND a.spec_value LIKE CONCAT('%', #{param.specValue}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.updater = #{param.updater} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecValueMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecValueMapper.xml new file mode 100644 index 0000000..acc1723 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductSpecValueMapper.xml @@ -0,0 +1,44 @@ + + + + + + + SELECT a.* + FROM cms_product_spec_value a + + + AND a.spec_value_id = #{param.specValueId} + + + AND a.spec_id = #{param.specId} + + + AND a.spec_value LIKE CONCAT('%', #{param.specValue}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductUrlMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductUrlMapper.xml new file mode 100644 index 0000000..fb42be5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsProductUrlMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM cms_product_url a + + + AND a.id = #{param.id} + + + AND a.product_id = #{param.productId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsTemplateMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsTemplateMapper.xml new file mode 100644 index 0000000..c7319c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsTemplateMapper.xml @@ -0,0 +1,93 @@ + + + + + + + SELECT a.* + FROM cms_template a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.type = #{param.type} + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.prefix LIKE CONCAT('%', #{param.prefix}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.down_url LIKE CONCAT('%', #{param.downUrl}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.version = #{param.version} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.recommend = #{param.recommend} + + + AND a.share = #{param.share} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteFieldMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteFieldMapper.xml new file mode 100644 index 0000000..529b688 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteFieldMapper.xml @@ -0,0 +1,76 @@ + + + + + + + SELECT a.*, b.user_id + FROM cms_website_field a + LEFT JOIN cms_website b ON a.tenant_id = b.tenant_id + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.lang = #{param.lang} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.default_value LIKE CONCAT('%', #{param.defaultValue}, '%') + + + AND a.modify_range LIKE CONCAT('%', #{param.modifyRange}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.value LIKE CONCAT('%', #{param.value}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND b.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteMapper.xml new file mode 100644 index 0000000..6f46a05 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteMapper.xml @@ -0,0 +1,452 @@ + + + + + + + SELECT a.* + FROM cms_website a + + + AND a.website_id = #{param.websiteId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.website_name LIKE CONCAT('%', #{param.websiteName}, '%') + + + AND a.website_code LIKE CONCAT('%', #{param.websiteCode}, '%') + + + AND a.website_icon LIKE CONCAT('%', #{param.websiteIcon}, '%') + + + AND a.website_logo LIKE CONCAT('%', #{param.websiteLogo}, '%') + + + AND a.website_dark_logo LIKE CONCAT('%', #{param.websiteDarkLogo}, '%') + + + AND a.website_type LIKE CONCAT('%', #{param.websiteType}, '%') + + + AND a.prefix LIKE CONCAT('%', #{param.prefix}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.version = #{param.version} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.template_id = #{param.templateId} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.company_id = #{param.companyId} + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.icp_no LIKE CONCAT('%', #{param.icpNo}, '%') + + + AND a.police_no LIKE CONCAT('%', #{param.policeNo}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.recommend = #{param.recommend} + + + AND a.official = #{param.official} + + + AND a.market = #{param.market} + + + AND a.plugin = #{param.plugin} + + + AND a.search = #{param.search} + + + AND a.color = #{param.color} + + + AND a.status = #{param.status} + + + AND a.status_text LIKE CONCAT('%', #{param.statusText}, '%') + + + AND a.status_close LIKE CONCAT('%', #{param.statusClose}, '%') + + + AND a.styles LIKE CONCAT('%', #{param.styles}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND (a.website_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.website_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.domain LIKE CONCAT('%', #{param.keywords}, '%') + OR a.tenant_id = #{param.keywords} + ) + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + + + + + + + UPDATE cms_website + + + type = #{param.type}, + + + website_name = #{param.websiteName}, + + + website_logo = #{param.websiteLogo}, + + + website_code = #{param.websiteCode}, + + + website_type = #{param.websiteType}, + + + template_id = #{param.templateId}, + + + company_id = #{param.companyId}, + + + admin_url = #{param.adminUrl}, + + + running = #{param.running}, + + + domain = #{param.domain}, + + + market = #{param.market}, + + + plugin = #{param.plugin}, + + + `search` = #{param.search}, + + + developer = #{param.developer}, + + + color = #{param.color}, + + + recommend = #{param.recommend}, + + + official = #{param.official}, + + + prefix = #{param.prefix}, + + + version = #{param.version}, + + + files = #{param.files}, + + + price = #{param.price}, + + + delivery_method = #{param.deliveryMethod}, + + + charging_method = #{param.chargingMethod}, + + + keywords = #{param.keywords}, + + + comments = #{param.comments}, + + + content = #{param.content}, + + + deleted = #{param.deleted}, + + + deleted = 0, + + + + website_id = #{param.websiteId} + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteSettingMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteSettingMapper.xml new file mode 100644 index 0000000..2164b44 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/CmsWebsiteSettingMapper.xml @@ -0,0 +1,81 @@ + + + + + + + SELECT a.* + FROM cms_website_setting a + + + AND a.id = #{param.id} + + + AND a.website_id = #{param.websiteId} + + + AND a.official = #{param.official} + + + AND a.market = #{param.market} + + + AND a.search = #{param.search} + + + AND a.share = #{param.share} + + + AND a.plugin = #{param.plugin} + + + AND a.editor = #{param.editor} + + + AND a.search_btn = #{param.searchBtn} + + + AND a.login_btn = #{param.loginBtn} + + + AND a.float_tool = #{param.floatTool} + + + AND a.copyright_link = #{param.copyrightLink} + + + AND a.max_menu_num = #{param.maxMenuNum} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsAdParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsAdParam.java new file mode 100644 index 0000000..ca2551f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsAdParam.java @@ -0,0 +1,88 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 广告位查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsAdParam对象", description = "广告位查询参数") +public class CmsAdParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer adId; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "栏目ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer designId; + + @ApiModelProperty(value = "广告类型(废弃)") + private String adType; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "页面名称") + private String pageName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "网站创建者ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsAdRecordParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsAdRecordParam.java new file mode 100644 index 0000000..83fafce --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsAdRecordParam.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 广告图片查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsAdRecordParam对象", description = "广告图片查询参数") +public class CmsAdRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer adRecordId; + + @ApiModelProperty(value = "广告标题") + private String title; + + @ApiModelProperty(value = "图片地址") + private String path; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "广告位ID") + @QueryField(type = QueryType.EQ) + private Integer adId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleCategoryParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCategoryParam.java new file mode 100644 index 0000000..495a8a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCategoryParam.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章分类表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleCategoryParam对象", description = "文章分类表查询参数") +public class CmsArticleCategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0列表 1单页 2外链") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "文章数量") + @QueryField(type = QueryType.EQ) + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + @QueryField(type = QueryType.EQ) + private Integer showIndex; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleCommentParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCommentParam.java new file mode 100644 index 0000000..4c45767 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCommentParam.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章评论表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleCommentParam对象", description = "文章评论表查询参数") +public class CmsArticleCommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @QueryField(type = QueryType.EQ) + private Integer commentId; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + @QueryField(type = QueryType.EQ) + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + @QueryField(type = QueryType.EQ) + private Integer isPicture; + + @ApiModelProperty(value = "评论者ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "被评价者ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "回复的评论ID") + @QueryField(type = QueryType.EQ) + private Integer replyCommentId; + + @ApiModelProperty(value = "回复者ID") + @QueryField(type = QueryType.EQ) + private Integer replyUserId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleContentParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleContentParam.java new file mode 100644 index 0000000..44970af --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleContentParam.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文章记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleContentParam对象", description = "文章记录表查询参数") +public class CmsArticleContentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "文章内容") + private String content; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleCountParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCountParam.java new file mode 100644 index 0000000..8598014 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleCountParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 点赞文章查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleCountParam对象", description = "点赞文章查询参数") +public class CmsArticleCountParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleImportParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleImportParam.java new file mode 100644 index 0000000..27852f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleImportParam.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.cms.param; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户导入参数 + * + * @author WebSoft + * @since 2011-10-15 17:33:34 + */ +@Data +public class CmsArticleImportParam implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "文章ID") + private Integer articleId; + + @Excel(name = "文章标题") + private String title; + + @Excel(name = "封面图片") + private String image; + + @Excel(name = "所属栏目") + @TableField(exist = false) + private String categoryName; + + @Excel(name = "栏目ID") + private String categoryId; + + @Excel(name = "父级栏目名称") + private String parentName; + + @Excel(name = "父级栏目ID") + private Integer parentId; + + @Excel(name = "文章内容") + private String content; + + @Excel(name = "摘要") + private String comments; + + @Excel(name = "文章来源") + private String source; + + @Excel(name = "实际阅读量") + private String actualViews; + + @Excel(name = "作者") + private String author; + + @Excel(name = "发布时间") + private Date createTime; + + @Excel(name = "类型") + private Integer type; + + @Excel(name = "模型") + private String model; + + @Excel(name = "详情页模板") + private String detail; + + @Excel(name = "话题") + private String topic; + + @Excel(name = "关键词") + private String tags; + + @Excel(name = "产品概述") + private String overview; + + @Excel(name = "显示方式") + private Integer showType; + + @Excel(name = "客户端") + private String platform; + + @Excel(name = "文件列表") + private String files; + + @Excel(name = "视频地址") + private String video; + + @Excel(name = "点赞数") + private Integer likes; + + @Excel(name = "评论数") + private Integer commentNumbers; + + @Excel(name = "推荐") + private Integer recommend; + + @Excel(name = "查看密码") + private String password; + + @Excel(name = "权限") + private Integer permission; + + @Excel(name = "用户ID") + private Integer userId; + + @Excel(name = "商户ID") + private Long merchantId; + + @Excel(name = "语言") + private String lang; + + @Excel(name = "排序") + private Integer sortNumber; + + @Excel(name = "状态") + private Integer status; + + @Excel(name = "租户ID") + private Integer tenantId; +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleLikeParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleLikeParam.java new file mode 100644 index 0000000..5f82991 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleLikeParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 点赞文章查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleLikeParam对象", description = "点赞文章查询参数") +public class CmsArticleLikeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java new file mode 100644 index 0000000..5a4fe88 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsArticleParam.java @@ -0,0 +1,185 @@ +package com.gxwebsoft.cms.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Set; + +/** + * 文章查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsArticleParam对象", description = "文章查询参数") +public class CmsArticleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "父级栏目ID") + @TableField(exist = false) + private Set categoryIds; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "文章类型 0常规 1视频") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "文章模型") + @QueryField(type = QueryType.EQ) + private String model; + + @ApiModelProperty(value = "详情页标识") + @QueryField(type = QueryType.EQ) + private String detail; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + @QueryField(type = QueryType.EQ) + private Integer showType; + + @ApiModelProperty(value = "话题") + @QueryField(type = QueryType.LIKE) + private String topic; + + @ApiModelProperty(value = "标签") + @QueryField(type = QueryType.EQ) + private String tags; + + @ApiModelProperty(value = "栏目ID") + @QueryField(type = QueryType.EQ) + private Integer navigationId; + + @ApiModelProperty(value = "文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "父级栏目ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "是否包含封面图") + @QueryField(type = QueryType.EQ) + private Boolean hasImage; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "来源") + private String source; + + @ApiModelProperty(value = "虚拟阅读量(仅用作展示)") + @QueryField(type = QueryType.EQ) + private Integer virtualViews; + + @ApiModelProperty(value = "实际阅读量") + @QueryField(type = QueryType.EQ) + private Integer actualViews; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + @QueryField(type = QueryType.EQ) + private Integer permission; + + @ApiModelProperty(value = "访问密码") + @QueryField(type = QueryType.EQ) + private String password; + + @ApiModelProperty(value = "访问密码") + @QueryField(type = QueryType.EQ) + private String password2; + + @ApiModelProperty(value = "发布来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "文章附件") + private String files; + + @ApiModelProperty(value = "视频地址") + private String video; + + @ApiModelProperty(value = "接受的文件类型") + private String accept; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "点赞数") + @QueryField(type = QueryType.EQ) + private Integer likes; + + @ApiModelProperty(value = "评论数") + @QueryField(type = QueryType.EQ) + private Integer commentNumbers; + + @ApiModelProperty(value = "提醒谁看") + private String toUsers; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Long projectId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "文章ID集查询") + @TableField(exist = false) + private Set articleIds; + + @ApiModelProperty(value = "网站创建者ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsComponentsParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsComponentsParam.java new file mode 100644 index 0000000..b8286e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsComponentsParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 组件查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsComponentsParam对象", description = "组件查询参数") +public class CmsComponentsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "组件标题") + private String title; + + @ApiModelProperty(value = "关联导航ID") + @QueryField(type = QueryType.EQ) + private Integer navigationId; + + @ApiModelProperty(value = "组件类型") + private String type; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "组件路径") + private String path; + + @ApiModelProperty(value = "组件图标") + private String icon; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsDesignParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsDesignParam.java new file mode 100644 index 0000000..e16bf00 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsDesignParam.java @@ -0,0 +1,88 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 页面管理记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsDesignParam对象", description = "页面管理记录表查询参数") +public class CmsDesignParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "页面标题") + private String name; + + @ApiModelProperty(value = "所属栏目ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "缩列图") + private String photo; + + @ApiModelProperty(value = "购买链接") + private String buyUrl; + + @ApiModelProperty(value = "页面样式") + private String style; + + @ApiModelProperty(value = "页面内容") + private String content; + + @ApiModelProperty(value = "是否开启布局") + @QueryField(type = QueryType.EQ) + private Integer showLayout; + + @ApiModelProperty(value = "页面布局") + private String layout; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsDesignRecordParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsDesignRecordParam.java new file mode 100644 index 0000000..2012d9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsDesignRecordParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 页面组件表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsDesignRecordParam对象", description = "页面组件表查询参数") +public class CmsDesignRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "关联导航ID") + @QueryField(type = QueryType.EQ) + private Integer navigationId; + + @ApiModelProperty(value = "组件") + private String title; + + @ApiModelProperty(value = "组件标识") + private String dictCode; + + @ApiModelProperty(value = "组件样式") + private String styles; + + @ApiModelProperty(value = "卡片阴影显示时机") + private String shadow; + + @ApiModelProperty(value = "页面关键词") + private String keywords; + + @ApiModelProperty(value = "页面描述") + private String description; + + @ApiModelProperty(value = "页面路由地址") + private String path; + + @ApiModelProperty(value = "缩列图") + private String photo; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsDomainParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsDomainParam.java new file mode 100644 index 0000000..435dcf4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsDomainParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站域名记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsDomainParam对象", description = "网站域名记录表查询参数") +public class CmsDomainParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型 0赠送域名 1绑定域名 ") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "主机记录") + private String hostName; + + @ApiModelProperty(value = "记录值") + private String hostValue; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "网站ID") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @ApiModelProperty(value = "租户ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsFormParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsFormParam.java new file mode 100644 index 0000000..97e0797 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsFormParam.java @@ -0,0 +1,89 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 表单设计表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsFormParam对象", description = "表单设计表查询参数") +public class CmsFormParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "表单标题") + private String name; + + @ApiModelProperty(value = "顶部图片") + private String photo; + + @ApiModelProperty(value = "背景图片") + private String background; + + @ApiModelProperty(value = "视频文件") + private String video; + + @ApiModelProperty(value = "提交次数") + @QueryField(type = QueryType.EQ) + private Integer submitNumber; + + @ApiModelProperty(value = "页面布局") + private String layout; + + @ApiModelProperty(value = "是否隐藏顶部图片") + @QueryField(type = QueryType.EQ) + private Integer hidePhoto; + + @ApiModelProperty(value = "是否隐藏背景图片") + @QueryField(type = QueryType.EQ) + private Integer hideBackground; + + @ApiModelProperty(value = "是否隐藏视频") + @QueryField(type = QueryType.EQ) + private Integer hideVideo; + + @ApiModelProperty(value = "背景图片透明度") + @QueryField(type = QueryType.EQ) + private BigDecimal opacity; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsFormRecordParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsFormRecordParam.java new file mode 100644 index 0000000..226fead --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsFormRecordParam.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 表单数据记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsFormRecordParam对象", description = "表单数据记录表查询参数") +public class CmsFormRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer formRecordId; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "表单数据") + private String formData; + + @ApiModelProperty(value = "表单ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsLangLogParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsLangLogParam.java new file mode 100644 index 0000000..a8b54dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsLangLogParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 国际化记录启用查询参数 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsLangLogParam对象", description = "国际化记录启用查询参数") +public class CmsLangLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "名称") + private String lang; + + @ApiModelProperty(value = "关联ID") + @QueryField(type = QueryType.EQ) + private Integer langId; + + @ApiModelProperty(value = "编码") + private String code; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "创建者UID") + @TableField(exist = false) + private Integer websiteUserId; +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsLangParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsLangParam.java new file mode 100644 index 0000000..1e6fc8f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsLangParam.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 国际化查询参数 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsLangParam对象", description = "国际化查询参数") +public class CmsLangParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "编码") + private String code; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsLinkParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsLinkParam.java new file mode 100644 index 0000000..20b94dd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsLinkParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 常用链接查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsLinkParam对象", description = "常用链接查询参数") +public class CmsLinkParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "链接名称") + private String name; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "栏目ID") + private Integer categoryId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "网站创建者ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsModelParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsModelParam.java new file mode 100644 index 0000000..e075129 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsModelParam.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 模型查询参数 + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsModelParam对象", description = "模型查询参数") +public class CmsModelParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer modelId; + + @ApiModelProperty(value = "模型名称") + private String name; + + @ApiModelProperty(value = "唯一标识") + private String model; + + @ApiModelProperty(value = "菜单路由地址") + private String componentDetail; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "模型banner图片") + private String banner; + + @ApiModelProperty(value = "封面图宽") + @QueryField(type = QueryType.EQ) + private String imageWidth; + + @ApiModelProperty(value = "封面图高") + @QueryField(type = QueryType.EQ) + private String imageHeight; + + @ApiModelProperty(value = "Banner上的标题") + private String title; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + @QueryField(type = QueryType.EQ) + private Integer showType; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "创建者用户ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsMpAdParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsMpAdParam.java new file mode 100644 index 0000000..2789428 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsMpAdParam.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序广告位查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsMpAdParam对象", description = "小程序广告位查询参数") +public class CmsMpAdParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer adId; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "广告类型") + private String adType; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "页面名称") + private String pageName; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsMpFieldParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsMpFieldParam.java new file mode 100644 index 0000000..f0cb2c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsMpFieldParam.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序配置查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsMpFieldParam对象", description = "小程序配置查询参数") +public class CmsMpFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsMpMenuParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsMpMenuParam.java new file mode 100644 index 0000000..e860401 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsMpMenuParam.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序端菜单查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsMpMenuParam对象", description = "小程序端菜单查询参数") +public class CmsMpMenuParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "是否微信小程序菜单") + @QueryField(type = QueryType.EQ) + private Boolean isMpWeixin; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String avatar; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "上传图标") + private String icon; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + @QueryField(type = QueryType.EQ) + private Integer position; + + @ApiModelProperty(value = "0 第一行 1第二行") + @QueryField(type = QueryType.EQ) + private Integer rows; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "绑定的页面") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "绑定的文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer articleCategoryId; + + @ApiModelProperty(value = "绑定的文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "绑定的表单ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "绑定的知识库标识") + private String bookCode; + + @ApiModelProperty(value = "绑定的商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer goodsCategoryId; + + @ApiModelProperty(value = "绑定的商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否管理人员可见") + @QueryField(type = QueryType.EQ) + private Integer adminShow; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "分组名称") + private String groupName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsMpPagesParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsMpPagesParam.java new file mode 100644 index 0000000..8c2b533 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsMpPagesParam.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序页面查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsMpPagesParam对象", description = "小程序页面查询参数") +public class CmsMpPagesParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "页面名称") + private String title; + + @ApiModelProperty(value = "页面路径") + private String path; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "分包") + private String subpackage; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "未选中图标") + private String iconPath; + + @ApiModelProperty(value = "选中的图标") + private String selectedIconPath; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsMpParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsMpParam.java new file mode 100644 index 0000000..365263c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsMpParam.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序信息查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsMpParam对象", description = "小程序信息查询参数") +public class CmsMpParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer mpId; + + @ApiModelProperty(value = "是否主账号") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "小程序ID") + private String appId; + + @ApiModelProperty(value = "小程序密钥") + private String appSecret; + + @ApiModelProperty(value = "小程序名称") + private String mpName; + + @ApiModelProperty(value = "小程序简称") + private String shortName; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "小程序码") + private String mpQrcode; + + @ApiModelProperty(value = "微信认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "主体信息") + private String companyName; + + @ApiModelProperty(value = "小程序备案") + private String icpNo; + + @ApiModelProperty(value = "登录邮箱") + private String email; + + @ApiModelProperty(value = "登录密码") + private String password; + + @ApiModelProperty(value = "原始ID") + private String ghId; + + @ApiModelProperty(value = "入口页面") + private String mainPath; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "介绍") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsNavigationParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsNavigationParam.java new file mode 100644 index 0000000..48d4750 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsNavigationParam.java @@ -0,0 +1,154 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站导航记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsNavigationParam对象", description = "网站导航记录表查询参数") +public class CmsNavigationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer navigationId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "模型") + private String model; + + @ApiModelProperty(value = "标识") + private String code; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + @QueryField(type = QueryType.EQ) + private Integer permission; + + @ApiModelProperty(value = "访问密码") + @QueryField(type = QueryType.EQ) + private String password; + + @ApiModelProperty(value = "访问密码") + @QueryField(type = QueryType.EQ) + private String password2; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + @QueryField(type = QueryType.EQ) + private Integer position; + + @ApiModelProperty(value = "仅在顶部显示") + @QueryField(type = QueryType.EQ) + private Integer top; + + @ApiModelProperty(value = "仅在底部显示") + @QueryField(type = QueryType.EQ) + private Integer bottom; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "父级栏目路由") + private String parentPath; + + @ApiModelProperty(value = "父级栏目名称") + private String parentName; + + @ApiModelProperty(value = "模型名称") + private String modelName; + + @ApiModelProperty(value = "类型(已废弃)") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "绑定的页面(已废弃)") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "是否微信小程序菜单") + @QueryField(type = QueryType.EQ) + private Boolean isMpWeixin; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Boolean recommend; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否开启布局") + @QueryField(type = QueryType.EQ) + private Boolean showLayout; + + @ApiModelProperty(value = "是否查询单页内容") + @QueryField(type = QueryType.EQ) + private Boolean queryContent; + + @ApiModelProperty(value = "网站创建者用户ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsOrderParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsOrderParam.java new file mode 100644 index 0000000..2768213 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsOrderParam.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单查询参数 + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsOrderParam对象", description = "订单查询参数") +public class CmsOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单号") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单标题") + private String title; + + @ApiModelProperty(value = "模型名称") + private String model; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单类型,0商城 1询价 2留言") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "关联文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "关联网站ID") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "订单内容") + private String content; + + @ApiModelProperty(value = "订单总额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "报价询价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "购买数量") + @QueryField(type = QueryType.EQ) + private Integer totalNum; + + @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") + private String qrcode; + + @ApiModelProperty(value = "下单渠道,0网站 1小程序 2其他") + @QueryField(type = QueryType.EQ) + private Integer channel; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Boolean isSettled; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "网站创建者ID") + @QueryField(type = QueryType.EQ) + private Integer websiteUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java new file mode 100644 index 0000000..28add14 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsProductParam.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 产品查询参数 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsProductParam对象", description = "产品查询参数") +public class CmsProductParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer productId; + + @ApiModelProperty(value = "类型 0软件产品 1实物商品 2虚拟商品") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "产品编码") + private String code; + + @ApiModelProperty(value = "产品标题") + private String title; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "产品详情") + private String content; + + @ApiModelProperty(value = "父级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "产品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "产品规格 0单规格 1多规格") + @QueryField(type = QueryType.EQ) + private Integer specs; + + @ApiModelProperty(value = "货架") + private String position; + + @ApiModelProperty(value = "单位名称 (个)") + private String unitName; + + @ApiModelProperty(value = "进货价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "销售价格") + @QueryField(type = QueryType.EQ) + private BigDecimal salePrice; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + @QueryField(type = QueryType.EQ) + private Integer deductStockType; + + @ApiModelProperty(value = "轮播图") + private String files; + + @ApiModelProperty(value = "销量") + @QueryField(type = QueryType.EQ) + private Integer sales; + + @ApiModelProperty(value = "库存") + @QueryField(type = QueryType.EQ) + private Integer stock; + + @ApiModelProperty(value = "消费赚取积分") + @QueryField(type = QueryType.EQ) + private BigDecimal gainIntegral; + + @ApiModelProperty(value = "推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "状态(0:未上架,1:上架)") + @QueryField(type = QueryType.EQ) + private Boolean isShow; + + @ApiModelProperty(value = "状态, 0上架 1待上架 2待审核 3审核不通过") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecParam.java new file mode 100644 index 0000000..0ffb5d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecParam.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格查询参数 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsProductSpecParam对象", description = "规格查询参数") +public class CmsProductSpecParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格ID") + @QueryField(type = QueryType.EQ) + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "创建用户") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "更新者") + @QueryField(type = QueryType.EQ) + private Integer updater; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1待修,2异常已修,3异常未修") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecValueParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecValueParam.java new file mode 100644 index 0000000..88f10e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsProductSpecValueParam.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格值查询参数 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsProductSpecValueParam对象", description = "规格值查询参数") +public class CmsProductSpecValueParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格值ID") + @QueryField(type = QueryType.EQ) + private Integer specValueId; + + @ApiModelProperty(value = "规格组ID") + @QueryField(type = QueryType.EQ) + private Integer specId; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsProductUrlParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsProductUrlParam.java new file mode 100644 index 0000000..e808fe4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsProductUrlParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 域名查询参数 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsProductUrlParam对象", description = "域名查询参数") +public class CmsProductUrlParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "产品ID") + @QueryField(type = QueryType.EQ) + private Integer productId; + + @ApiModelProperty(value = "域名类型") + private String type; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsTemplateParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsTemplateParam.java new file mode 100644 index 0000000..5a8b6ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsTemplateParam.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站模版查询参数 + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsTemplateParam对象", description = "网站模版查询参数") +public class CmsTemplateParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "模版名称") + private String name; + + @ApiModelProperty(value = "模版标识") + private String code; + + @ApiModelProperty(value = "缩列图") + private String image; + + @ApiModelProperty(value = "类型 1企业官网 2其他") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "预览地址") + private String domain; + + @ApiModelProperty(value = "模版下载地址") + private String downUrl; + + @ApiModelProperty(value = "色系") + private String color; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Boolean recommend; + + @ApiModelProperty(value = "是否共享模板") + @QueryField(type = QueryType.EQ) + private Boolean share; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteFieldParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteFieldParam.java new file mode 100644 index 0000000..0875d67 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteFieldParam.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.cms.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsWebsiteFieldParam对象", description = "应用参数查询参数") +public class CmsWebsiteFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "默认值") + private String defaultValue; + + @ApiModelProperty(value = "可修改的值 [on|off]") + private String modifyRange; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "创建者") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteParam.java new file mode 100644 index 0000000..57a2002 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteParam.java @@ -0,0 +1,219 @@ +package com.gxwebsoft.cms.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Set; + +/** + * 网站信息记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsWebsiteParam对象", description = "网站信息记录表查询参数") +public class CmsWebsiteParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "站点ID") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @ApiModelProperty(value = "站点类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "网站名称") + private String websiteName; + + @ApiModelProperty(value = "网站标识") + private String websiteCode; + + @ApiModelProperty(value = "网站LOGO") + private String websiteIcon; + + @ApiModelProperty(value = "网站LOGO") + private String websiteLogo; + + @ApiModelProperty(value = "网站LOGO(深色模式)") + private String websiteDarkLogo; + + @ApiModelProperty(value = "网站类型") + private String websiteType; + + @ApiModelProperty(value = "栏目ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "网站截图") + private String files; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "全局样式") + private String style; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "模版ID") + @QueryField(type = QueryType.EQ) + private Integer templateId; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "开发者名称") + private String developer; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "ICP备案号") + private String icpNo; + + @ApiModelProperty(value = "公安备案") + private String policeNo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否官方产品") + @QueryField(type = QueryType.EQ) + private Boolean official; + + @ApiModelProperty(value = "是否查询超管账号") + @QueryField(type = QueryType.EQ) + private Boolean showAdminPhone; + + @ApiModelProperty(value = "允许展示到插件市场") + @QueryField(type = QueryType.EQ) + private Boolean market; + + @ApiModelProperty(value = "是否插件类型 0应用 1插件") + @QueryField(type = QueryType.EQ) + private Boolean plugin; + + @ApiModelProperty(value = "允许被搜索") + @QueryField(type = QueryType.EQ) + private Boolean search; + + @ApiModelProperty(value = "主题色") + private String color; + + @ApiModelProperty(value = "点赞数量") + private Integer likes; + + @ApiModelProperty(value = "点击数量") + private Integer clicks; + + @ApiModelProperty(value = "购买数量") + private Integer buys; + + @ApiModelProperty(value = "下载数量") + private Integer downloads; + + @ApiModelProperty(value = "状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "维护说明") + private String statusText; + + @ApiModelProperty(value = "关闭说明") + private String statusClose; + + @ApiModelProperty(value = "全局样式") + private String styles; + + @ApiModelProperty(value = "运行状态") + @QueryField(type = QueryType.EQ) + private Integer running; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "按userId集搜索") + @QueryField(type = QueryType.EQ) + private Set userIds; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "按WebsiteIds集搜索") + private Set websiteIds; + + @ApiModelProperty(value = "当前登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + + @ApiModelProperty(value = "管理员手机号") + @QueryField(type = QueryType.EQ) + private String adminPhone; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteSettingParam.java b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteSettingParam.java new file mode 100644 index 0000000..9af1348 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/CmsWebsiteSettingParam.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.cms.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站设置查询参数 + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CmsWebsiteSettingParam对象", description = "网站设置查询参数") +public class CmsWebsiteSettingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "关联网站ID") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @ApiModelProperty(value = "是否官方插件") + @QueryField(type = QueryType.EQ) + private Boolean official; + + @ApiModelProperty(value = "是否展示在插件市场") + @QueryField(type = QueryType.EQ) + private Boolean market; + + @ApiModelProperty(value = "是否允许被搜索") + @QueryField(type = QueryType.EQ) + private Boolean search; + + @ApiModelProperty(value = "是否共享") + @QueryField(type = QueryType.EQ) + private Boolean share; + + @ApiModelProperty(value = "是否插件 0应用1 插件 ") + @QueryField(type = QueryType.EQ) + private Boolean plugin; + + @ApiModelProperty(value = "编辑器类型 1 md-editor-v3, 2 tinymce-editor") + @QueryField(type = QueryType.EQ) + private Boolean editor; + + @ApiModelProperty(value = "显示站内搜索") + @QueryField(type = QueryType.EQ) + private Boolean searchBtn; + + @ApiModelProperty(value = "显示登录注册功能") + @QueryField(type = QueryType.EQ) + private Boolean loginBtn; + + @ApiModelProperty(value = "显示悬浮客服工具") + @QueryField(type = QueryType.EQ) + private Boolean floatTool; + + @ApiModelProperty(value = "显示版权链接") + @QueryField(type = QueryType.EQ) + private Boolean copyrightLink; + + @ApiModelProperty(value = "导航栏最多显示数量") + @QueryField(type = QueryType.EQ) + private Boolean maxMenuNum; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsAdRecordService.java b/src/main/java/com/gxwebsoft/cms/service/CmsAdRecordService.java new file mode 100644 index 0000000..5610204 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsAdRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsAdRecord; +import com.gxwebsoft.cms.param.CmsAdRecordParam; + +import java.util.List; + +/** + * 广告图片Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsAdRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsAdRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsAdRecordParam param); + + /** + * 根据id查询 + * + * @param adRecordId ID + * @return CmsAdRecord + */ + CmsAdRecord getByIdRel(Integer adRecordId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsAdService.java b/src/main/java/com/gxwebsoft/cms/service/CmsAdService.java new file mode 100644 index 0000000..9bd4adb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsAdService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsAd; +import com.gxwebsoft.cms.param.CmsAdParam; + +import java.util.List; + +/** + * 广告位Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsAdService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsAdParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsAdParam param); + + /** + * 根据id查询 + * + * @param adId ID + * @return CmsAd + */ + CmsAd getByIdRel(Integer adId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleCategoryService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCategoryService.java new file mode 100644 index 0000000..38d55be --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticleCategory; +import com.gxwebsoft.cms.param.CmsArticleCategoryParam; + +import java.util.List; + +/** + * 文章分类表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleCategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleCategoryParam param); + + /** + * 根据id查询 + * + * @param categoryId 文章分类ID + * @return CmsArticleCategory + */ + CmsArticleCategory getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleCommentService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCommentService.java new file mode 100644 index 0000000..68b4fd8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCommentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticleComment; +import com.gxwebsoft.cms.param.CmsArticleCommentParam; + +import java.util.List; + +/** + * 文章评论表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleCommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleCommentParam param); + + /** + * 根据id查询 + * + * @param commentId 评价ID + * @return CmsArticleComment + */ + CmsArticleComment getByIdRel(Integer commentId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleContentService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleContentService.java new file mode 100644 index 0000000..640ad80 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleContentService.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.entity.TranslateDataVo; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticleContent; +import com.gxwebsoft.cms.param.CmsArticleContentParam; + +import java.util.List; + +/** + * 文章记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleContentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleContentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleContentParam param); + + + CmsArticleContent getByIdRel(Integer id); + + void translate(CmsArticle article); +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleCountService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCountService.java new file mode 100644 index 0000000..c9cd3b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleCountService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticleCount; +import com.gxwebsoft.cms.param.CmsArticleCountParam; + +import java.util.List; + +/** + * 点赞文章Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleCountService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleCountParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleCountParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return CmsArticleCount + */ + CmsArticleCount getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleLikeService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleLikeService.java new file mode 100644 index 0000000..08cd5a3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleLikeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticleLike; +import com.gxwebsoft.cms.param.CmsArticleLikeParam; + +import java.util.List; + +/** + * 点赞文章Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleLikeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleLikeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleLikeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return CmsArticleLike + */ + CmsArticleLike getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsArticleService.java b/src/main/java/com/gxwebsoft/cms/service/CmsArticleService.java new file mode 100644 index 0000000..5eccbea --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsArticleService.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.param.CmsArticleParam; + +import javax.validation.Valid; +import java.util.List; + +/** + * 文章Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsArticleService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsArticleParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsArticleParam param); + + /** + * 根据id查询 + * + * @param articleId 文章ID + * @return CmsArticle + */ + CmsArticle getByIdRel(Integer articleId); + + void saveInc(Integer formId); + + boolean saveRel(@Valid CmsArticle article); + + boolean updateByIdRel(CmsArticle article); +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsComponentsService.java b/src/main/java/com/gxwebsoft/cms/service/CmsComponentsService.java new file mode 100644 index 0000000..6f6de7c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsComponentsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsComponents; +import com.gxwebsoft.cms.param.CmsComponentsParam; + +import java.util.List; + +/** + * 组件Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsComponentsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsComponentsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsComponentsParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsComponents + */ + CmsComponents getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsDesignRecordService.java b/src/main/java/com/gxwebsoft/cms/service/CmsDesignRecordService.java new file mode 100644 index 0000000..e9e3465 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsDesignRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsDesignRecord; +import com.gxwebsoft.cms.param.CmsDesignRecordParam; + +import java.util.List; + +/** + * 页面组件表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsDesignRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsDesignRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsDesignRecordParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsDesignRecord + */ + CmsDesignRecord getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsDesignService.java b/src/main/java/com/gxwebsoft/cms/service/CmsDesignService.java new file mode 100644 index 0000000..6a895d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsDesignService.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.param.CmsDesignParam; + +import java.util.List; + +/** + * 页面管理记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsDesignService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsDesignParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsDesignParam param); + + /** + * 根据id查询 + * + * @param pageId ID + * @return CmsDesign + */ + CmsDesign getByIdRel(Integer pageId); + + void translate(CmsDesign cmsDesign); +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsDomainService.java b/src/main/java/com/gxwebsoft/cms/service/CmsDomainService.java new file mode 100644 index 0000000..bdb1944 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsDomainService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsDomain; +import com.gxwebsoft.cms.param.CmsDomainParam; + +import java.util.List; + +/** + * 网站域名记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsDomainService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsDomainParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsDomainParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsDomain + */ + CmsDomain getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsFormRecordService.java b/src/main/java/com/gxwebsoft/cms/service/CmsFormRecordService.java new file mode 100644 index 0000000..86b1b2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsFormRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsFormRecord; +import com.gxwebsoft.cms.param.CmsFormRecordParam; + +import java.util.List; + +/** + * 表单数据记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsFormRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsFormRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsFormRecordParam param); + + /** + * 根据id查询 + * + * @param formRecordId ID + * @return CmsFormRecord + */ + CmsFormRecord getByIdRel(Integer formRecordId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsFormService.java b/src/main/java/com/gxwebsoft/cms/service/CmsFormService.java new file mode 100644 index 0000000..a6c98fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsFormService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsForm; +import com.gxwebsoft.cms.param.CmsFormParam; + +import java.util.List; + +/** + * 表单设计表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsFormService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsFormParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsFormParam param); + + /** + * 根据id查询 + * + * @param formId ID + * @return CmsForm + */ + CmsForm getByIdRel(Integer formId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsLangLogService.java b/src/main/java/com/gxwebsoft/cms/service/CmsLangLogService.java new file mode 100644 index 0000000..d3e59ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsLangLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsLangLogParam; + +import java.util.List; + +/** + * 国际化记录启用Service + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +public interface CmsLangLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsLangLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsLangLogParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsLangLog + */ + CmsLangLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsLangService.java b/src/main/java/com/gxwebsoft/cms/service/CmsLangService.java new file mode 100644 index 0000000..d1c1fa3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsLangService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsLang; +import com.gxwebsoft.cms.param.CmsLangParam; + +import java.util.List; + +/** + * 国际化Service + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +public interface CmsLangService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsLangParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsLangParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsLang + */ + CmsLang getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsLinkService.java b/src/main/java/com/gxwebsoft/cms/service/CmsLinkService.java new file mode 100644 index 0000000..e65eee7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsLinkService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsLink; +import com.gxwebsoft.cms.param.CmsLinkParam; + +import java.util.List; + +/** + * 常用链接Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsLinkService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsLinkParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsLinkParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CmsLink + */ + CmsLink getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsModelService.java b/src/main/java/com/gxwebsoft/cms/service/CmsModelService.java new file mode 100644 index 0000000..1fe9778 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsModelService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.param.CmsModelParam; + +import java.util.List; + +/** + * 模型Service + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +public interface CmsModelService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsModelParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsModelParam param); + + /** + * 根据id查询 + * + * @param modelId ID + * @return CmsModel + */ + CmsModel getByIdRel(Integer modelId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsMpAdService.java b/src/main/java/com/gxwebsoft/cms/service/CmsMpAdService.java new file mode 100644 index 0000000..de40752 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsMpAdService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsMpAd; +import com.gxwebsoft.cms.param.CmsMpAdParam; + +import java.util.List; + +/** + * 小程序广告位Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpAdService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsMpAdParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsMpAdParam param); + + /** + * 根据id查询 + * + * @param adId ID + * @return CmsMpAd + */ + CmsMpAd getByIdRel(Integer adId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsMpFieldService.java b/src/main/java/com/gxwebsoft/cms/service/CmsMpFieldService.java new file mode 100644 index 0000000..e12a68c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsMpFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsMpField; +import com.gxwebsoft.cms.param.CmsMpFieldParam; + +import java.util.List; + +/** + * 小程序配置Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsMpFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsMpFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CmsMpField + */ + CmsMpField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsMpMenuService.java b/src/main/java/com/gxwebsoft/cms/service/CmsMpMenuService.java new file mode 100644 index 0000000..133d2ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsMpMenuService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsMpMenu; +import com.gxwebsoft.cms.param.CmsMpMenuParam; + +import java.util.List; + +/** + * 小程序端菜单Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpMenuService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsMpMenuParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsMpMenuParam param); + + /** + * 根据id查询 + * + * @param menuId ID + * @return CmsMpMenu + */ + CmsMpMenu getByIdRel(Integer menuId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsMpPagesService.java b/src/main/java/com/gxwebsoft/cms/service/CmsMpPagesService.java new file mode 100644 index 0000000..23ce484 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsMpPagesService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsMpPages; +import com.gxwebsoft.cms.param.CmsMpPagesParam; + +import java.util.List; + +/** + * 小程序页面Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpPagesService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsMpPagesParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsMpPagesParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsMpPages + */ + CmsMpPages getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsMpService.java b/src/main/java/com/gxwebsoft/cms/service/CmsMpService.java new file mode 100644 index 0000000..90d9fb1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsMpService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsMp; +import com.gxwebsoft.cms.param.CmsMpParam; + +import java.util.List; + +/** + * 小程序信息Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsMpService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsMpParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsMpParam param); + + /** + * 根据id查询 + * + * @param mpId ID + * @return CmsMp + */ + CmsMp getByIdRel(Integer mpId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsNavigationService.java b/src/main/java/com/gxwebsoft/cms/service/CmsNavigationService.java new file mode 100644 index 0000000..5188ea2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsNavigationService.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.param.CmsNavigationParam; + +import java.util.List; + +/** + * 网站导航记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +public interface CmsNavigationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsNavigationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsNavigationParam param); + + /** + * 根据id查询 + * + * @param navigationId ID + * @return CmsNavigation + */ + CmsNavigation getByIdRel(Integer navigationId); + + void saveAsync(CmsNavigation cmsNavigation); +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsOrderService.java b/src/main/java/com/gxwebsoft/cms/service/CmsOrderService.java new file mode 100644 index 0000000..2950d01 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsOrderService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsOrder; +import com.gxwebsoft.cms.param.CmsOrderParam; + +import java.util.List; + +/** + * 订单Service + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +public interface CmsOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsOrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单号 + * @return CmsOrder + */ + CmsOrder getByIdRel(Integer orderId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsProductService.java b/src/main/java/com/gxwebsoft/cms/service/CmsProductService.java new file mode 100644 index 0000000..00ef8bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsProductService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsProduct; +import com.gxwebsoft.cms.param.CmsProductParam; + +import java.util.List; + +/** + * 产品Service + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsProductParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsProductParam param); + + /** + * 根据id查询 + * + * @param productId 自增ID + * @return CmsProduct + */ + CmsProduct getByIdRel(Integer productId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecService.java b/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecService.java new file mode 100644 index 0000000..d2beb35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsProductSpec; +import com.gxwebsoft.cms.param.CmsProductSpecParam; + +import java.util.List; + +/** + * 规格Service + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductSpecService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsProductSpecParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsProductSpecParam param); + + /** + * 根据id查询 + * + * @param specId 规格ID + * @return CmsProductSpec + */ + CmsProductSpec getByIdRel(Integer specId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecValueService.java b/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecValueService.java new file mode 100644 index 0000000..29a94c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsProductSpecValueService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsProductSpecValue; +import com.gxwebsoft.cms.param.CmsProductSpecValueParam; + +import java.util.List; + +/** + * 规格值Service + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductSpecValueService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsProductSpecValueParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsProductSpecValueParam param); + + /** + * 根据id查询 + * + * @param specValueId 规格值ID + * @return CmsProductSpecValue + */ + CmsProductSpecValue getByIdRel(Integer specValueId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsProductUrlService.java b/src/main/java/com/gxwebsoft/cms/service/CmsProductUrlService.java new file mode 100644 index 0000000..6501378 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsProductUrlService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsProductUrl; +import com.gxwebsoft.cms.param.CmsProductUrlParam; + +import java.util.List; + +/** + * 域名Service + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +public interface CmsProductUrlService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsProductUrlParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsProductUrlParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CmsProductUrl + */ + CmsProductUrl getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsTemplateService.java b/src/main/java/com/gxwebsoft/cms/service/CmsTemplateService.java new file mode 100644 index 0000000..979fa0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsTemplateService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsTemplate; +import com.gxwebsoft.cms.param.CmsTemplateParam; + +import java.util.List; + +/** + * 网站模版Service + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +public interface CmsTemplateService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsTemplateParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsTemplateParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CmsTemplate + */ + CmsTemplate getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteFieldService.java b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteFieldService.java new file mode 100644 index 0000000..9eab912 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsWebsiteField; +import com.gxwebsoft.cms.param.CmsWebsiteFieldParam; + +import java.util.List; + +/** + * 应用参数Service + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsWebsiteFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsWebsiteFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsWebsiteFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CmsWebsiteField + */ + CmsWebsiteField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteService.java b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteService.java new file mode 100644 index 0000000..7753d8d --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteService.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.cms.param.CmsWebsiteParam; +import com.gxwebsoft.common.system.entity.User; + +import java.util.List; + +/** + * 网站信息记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +public interface CmsWebsiteService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsWebsiteParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsWebsiteParam param); + + /** + * 根据id查询 + * + * @param websiteId 站点ID + * @return CmsWebsite + */ + CmsWebsite getByIdRel(Integer websiteId); + + PageResult pageRelAll(CmsWebsiteParam param); + + // 创建站点 + CmsWebsite create(CmsWebsite cmsWebsite); + + CmsWebsite getByIdRelAll(Integer id); + + boolean updateByIdAll(CmsWebsite cmsWebsite); + + boolean removeByIdAll(Integer id); + + CmsWebsite getByTenantId(Integer tenantId); +} diff --git a/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteSettingService.java b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteSettingService.java new file mode 100644 index 0000000..610a7c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/CmsWebsiteSettingService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.CmsWebsiteSetting; +import com.gxwebsoft.cms.param.CmsWebsiteSettingParam; + +import java.util.List; + +/** + * 网站设置Service + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +public interface CmsWebsiteSettingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CmsWebsiteSettingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CmsWebsiteSettingParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CmsWebsiteSetting + */ + CmsWebsiteSetting getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdRecordServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdRecordServiceImpl.java new file mode 100644 index 0000000..d82d016 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdRecordServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsAdRecordMapper; +import com.gxwebsoft.cms.service.CmsAdRecordService; +import com.gxwebsoft.cms.entity.CmsAdRecord; +import com.gxwebsoft.cms.param.CmsAdRecordParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 广告图片Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsAdRecordServiceImpl extends ServiceImpl implements CmsAdRecordService { + + @Override + public PageResult pageRel(CmsAdRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsAdRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsAdRecord getByIdRel(Integer adRecordId) { + CmsAdRecordParam param = new CmsAdRecordParam(); + param.setAdRecordId(adRecordId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdServiceImpl.java new file mode 100644 index 0000000..26318f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsAdServiceImpl.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.cms.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsAdMapper; +import com.gxwebsoft.cms.service.CmsAdService; +import com.gxwebsoft.cms.entity.CmsAd; +import com.gxwebsoft.cms.param.CmsAdParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 广告位Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsAdServiceImpl extends ServiceImpl implements CmsAdService { + + @Override + public PageResult pageRel(CmsAdParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsAdParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsAd getByIdRel(Integer adId) { + CmsAdParam param = new CmsAdParam(); + param.setAdId(adId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCategoryServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCategoryServiceImpl.java new file mode 100644 index 0000000..e52e243 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsArticleCategoryMapper; +import com.gxwebsoft.cms.service.CmsArticleCategoryService; +import com.gxwebsoft.cms.entity.CmsArticleCategory; +import com.gxwebsoft.cms.param.CmsArticleCategoryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 文章分类表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleCategoryServiceImpl extends ServiceImpl implements CmsArticleCategoryService { + + @Override + public PageResult pageRel(CmsArticleCategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleCategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsArticleCategory getByIdRel(Integer categoryId) { + CmsArticleCategoryParam param = new CmsArticleCategoryParam(); + param.setCategoryId(categoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCommentServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCommentServiceImpl.java new file mode 100644 index 0000000..cc41aed --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCommentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsArticleCommentMapper; +import com.gxwebsoft.cms.service.CmsArticleCommentService; +import com.gxwebsoft.cms.entity.CmsArticleComment; +import com.gxwebsoft.cms.param.CmsArticleCommentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 文章评论表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleCommentServiceImpl extends ServiceImpl implements CmsArticleCommentService { + + @Override + public PageResult pageRel(CmsArticleCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleCommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsArticleComment getByIdRel(Integer commentId) { + CmsArticleCommentParam param = new CmsArticleCommentParam(); + param.setCommentId(commentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleContentServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleContentServiceImpl.java new file mode 100644 index 0000000..e94ddc6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleContentServiceImpl.java @@ -0,0 +1,189 @@ +package com.gxwebsoft.cms.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.*; +import com.gxwebsoft.cms.mapper.CmsArticleContentMapper; +import com.gxwebsoft.cms.service.CmsArticleContentService; +import com.gxwebsoft.cms.param.CmsArticleContentParam; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.cms.service.CmsLangLogService; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.common.core.utils.AliYunSender; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 文章记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleContentServiceImpl extends ServiceImpl implements CmsArticleContentService { + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsArticleService cmsArticleService; + @Resource + private CmsArticleContentService cmsArticleContentService; + @Resource + private CmsLangLogService cmsLangLogService; + @Override + public PageResult pageRel(CmsArticleContentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleContentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsArticleContent getByIdRel(Integer id) { + CmsArticleContentParam param = new CmsArticleContentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public void translate(CmsArticle article) { + // 未开启多语言 + if(cmsLangLogService.count() == 0){ + return; + } + // 仅限定新增简体中文才会同步翻译其他目标语言 + if(!article.getLang().equals("zh_CN")){ + return; + } + // 是否启用自动翻译 + if(!article.getTranslation()){ + return; + } + // 查询关联的默认语言栏目ID + CmsNavigation navigation = cmsNavigationService.getOne(new LambdaQueryWrapper().eq(CmsNavigation::getLangCategoryId, article.getCategoryId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(navigation)) { + TranslateDataVo vo = new TranslateDataVo(); + vo.setFormatType("text"); + vo.setSourceLanguage("auto"); + vo.setTargetLanguage("en"); + + // 翻译标题 + vo.setScene("title"); + vo.setSourceText(article.getTitle()); + article.setTitle(getTranslateApi(vo)); + + // 翻译摘要 + vo.setSourceText(article.getComments()); + vo.setScene("description"); + article.setComments(getTranslateApi(vo)); + + // 翻译产品概述 + vo.setSourceText(article.getOverview()); + article.setOverview(getTranslateApi(vo)); + + // 翻译关键词 + vo.setScene("title"); + vo.setSourceText(article.getTags()); + article.setTags(getTranslateApi(vo)); + + // 翻译话题 + vo.setScene("title"); + vo.setSourceText(article.getTopic()); + article.setTopic(getTranslateApi(vo)); + + // 翻译来源 + vo.setScene("title"); + vo.setSourceText(article.getSource()); + article.setSource(getTranslateApi(vo)); + + // 翻译内容 + vo.setScene(null); + vo.setSourceText(article.getContent()); + article.setContent(getTranslateApi(vo)); + + // 其他参数 + article.setLang("en"); + article.setCategoryId(navigation.getNavigationId()); + + + CmsArticle target = cmsArticleService.getOne(new LambdaQueryWrapper().eq(CmsArticle::getLangArticleId,article.getArticleId()).last("limit 1")); + if(article.getIsUpdate() != null && target != null){ + // 更新操作 + if (ObjectUtil.isNotEmpty(target)) { + target.setTitle(article.getTitle()); + target.setImage(article.getImage()); + target.setFiles(article.getFiles()); + target.setComments(article.getComments()); + target.setTags(article.getTags()); + target.setRecommend(article.getRecommend()); + target.setOverview(article.getOverview()); + target.setContent(article.getContent()); + System.out.println("target = " + target); + cmsArticleService.updateById(target); + cmsArticleContentService.update(new LambdaUpdateWrapper().eq(CmsArticleContent::getArticleId, target.getArticleId()).set(CmsArticleContent::getContent,target.getContent())); + } + }else { + // 新增操作 + article.setLangArticleId(article.getArticleId()); + cmsArticleService.save(article); + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(article.getArticleId()); + content.setContent(article.getContent()); + content.setTenantId(article.getTenantId()); + cmsArticleContentService.save(content); + } + } + + } + + /** + * 机器翻译 + * 阿里云接口 + * ... + */ + public String getTranslateApi(TranslateDataVo item){ + String serviceURL = "http://mt.cn-hangzhou.aliyuncs.com/api/translate/web/ecommerce"; + String accessKeyId = "LTAI5tEsyhW4GCKbds1qsopg";// 使用您的阿里云访问密钥 AccessKeyId + String accessKeySecret = "zltFlQrYVAoq2KMFDWgLa3GhkMNeyO"; // 使用您的阿里云访问密钥 + + final Map map = new HashMap<>(); + map.put("FormatType","text"); + map.put("SourceLanguage","auto"); + map.put("TargetLanguage","en"); + map.put("SourceText",item.getSourceText()); + map.put("Scene","description"); + map.put("Context","产品介绍"); + // Sender代码请参考帮助文档“签名方法” + String result = AliYunSender.sendPost(serviceURL, JSONUtil.toJSONString(map), accessKeyId, accessKeySecret); + JSONObject jsonObject = JSON.parseObject(result); + final Object code = jsonObject.get("Code"); + if (code.equals("200")) { + final Object data = jsonObject.get("Data"); + JSONObject data1 = JSON.parseObject(data.toString()); + final Object translated = data1.get("Translated"); + final Object wordCount = data1.get("WordCount"); + return translated.toString(); + } + return ""; + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCountServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCountServiceImpl.java new file mode 100644 index 0000000..f5804d4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleCountServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsArticleCountMapper; +import com.gxwebsoft.cms.service.CmsArticleCountService; +import com.gxwebsoft.cms.entity.CmsArticleCount; +import com.gxwebsoft.cms.param.CmsArticleCountParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 点赞文章Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleCountServiceImpl extends ServiceImpl implements CmsArticleCountService { + + @Override + public PageResult pageRel(CmsArticleCountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleCountParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsArticleCount getByIdRel(Integer id) { + CmsArticleCountParam param = new CmsArticleCountParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleLikeServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleLikeServiceImpl.java new file mode 100644 index 0000000..26d7521 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleLikeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsArticleLikeMapper; +import com.gxwebsoft.cms.service.CmsArticleLikeService; +import com.gxwebsoft.cms.entity.CmsArticleLike; +import com.gxwebsoft.cms.param.CmsArticleLikeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 点赞文章Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleLikeServiceImpl extends ServiceImpl implements CmsArticleLikeService { + + @Override + public PageResult pageRel(CmsArticleLikeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleLikeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsArticleLike getByIdRel(Integer id) { + CmsArticleLikeParam param = new CmsArticleLikeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java new file mode 100644 index 0000000..29245b9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java @@ -0,0 +1,246 @@ +package com.gxwebsoft.cms.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.CmsArticleContent; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.mapper.CmsArticleMapper; +import com.gxwebsoft.cms.service.CmsArticleContentService; +import com.gxwebsoft.cms.service.CmsArticleService; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.param.CmsArticleParam; +import com.gxwebsoft.cms.service.CmsModelService; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.ArticleConstants.CACHE_KEY_ARTICLE; + +/** + * 文章Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsArticleServiceImpl extends ServiceImpl implements CmsArticleService { + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsArticleContentService cmsArticleContentService; + @Resource + private CmsArticleContentService articleContentService; + @Resource + private UserService userService; + @Resource + private CmsModelService cmsModelService; + @Resource + private RedisUtil redisUtil; + + private static final int PERMISSION_PASSWORD = 2; + private static final long CACHE_MINUTES = 30L; + + @Override + public PageResult pageRel(CmsArticleParam param) { + if (param.getParentId() != null && !param.getParentId().equals(0)) { + final List cmsNavigations = cmsNavigationService.list(new LambdaQueryWrapper().eq(CmsNavigation::getParentId, param.getParentId())); + if (!CollectionUtils.isEmpty(cmsNavigations)) { + param.setCategoryIds(cmsNavigations.stream().map(CmsNavigation::getNavigationId).collect(Collectors.toSet())); + } + } + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsArticleParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc,create_time desc"); + + if (StrUtil.isNotBlank(param.getSceneType())) { + // 导出数据 + if (param.getSceneType().equals("Content")) { + final Set collectIds = list.stream().map(CmsArticle::getArticleId).collect(Collectors.toSet()); + final List contents = cmsArticleContentService.list(new LambdaQueryWrapper().in(CmsArticleContent::getArticleId, collectIds)); + final Map> collect = contents.stream().collect(Collectors.groupingBy(CmsArticleContent::getArticleId)); + list.forEach(d -> { + final List cmsArticleContents = collect.get(d.getArticleId()); + final CmsArticleContent content = cmsArticleContents.get(0); + if (ObjectUtil.isNotEmpty(content)) { + d.setContent(content.getContent()); + } + }); + } + } + return page.sortRecords(list); + } + + @Override + public CmsArticle getByIdRel(Integer articleId) { +// String key = CACHE_KEY_ARTICLE + articleId; +// final String cacheInfo = redisUtil.get(key); +// if (StrUtil.isNotBlank(cacheInfo)) { +// final CmsArticle article = JSONUtil.parseObject(cacheInfo, CmsArticle.class); +// // 更新阅读数量 +// assert article != null; +// article.setActualViews(article.getActualViews() + 1); +// updateById(article); +// return article; +// } + // 缓存不存在 + CmsArticleParam param = new CmsArticleParam(); + param.setArticleId(articleId); + final CmsArticle article = param.getOne(baseMapper.selectListRel(param)); + if (ObjectUtil.isNotEmpty(article)) { + // 更新阅读数量 + article.setActualViews(article.getActualViews() + 1); + updateById(article); + // 读取Banner +// final CmsModel model = cmsModelService.getOne(new LambdaQueryWrapper().eq(CmsModel::getModel, article.getModel()).last("limit 1")); +// if (ObjectUtil.isNotEmpty(model)) { +// article.setBanner(model.getBanner()); +// } + // 附加文字内容 + CmsArticleContent content = articleContentService.getOne(new LambdaQueryWrapper().eq(CmsArticleContent::getArticleId, article.getArticleId()).last("limit 1")); + if (content != null) { + article.setContent(content.getContent()); + } +// redisUtil.set(key, article, CACHE_MINUTES, TimeUnit.MINUTES); + return article; + } + return null; + } + + @Override + public void saveInc(Integer formId) { + final CmsArticle article = getById(formId); + if (ObjectUtil.isNull(article)) { + return; + } + article.setBmUsers(article.getBmUsers() + 1); + updateById(article); + } + + @Override + public boolean saveRel(CmsArticle article) { + try { + // 保存文章模型 + final CmsNavigation cmsNavigation = cmsNavigationService.getByIdRel(article.getCategoryId()); + final CmsModel modelInfo = cmsNavigation.getModelInfo(); + final String componentDetail = modelInfo.getComponentDetail(); + if (ObjectUtil.isNotEmpty(componentDetail)) { + final String[] split = componentDetail.split("/"); + article.setModel(modelInfo.getModel()); + if (split[2].equals(modelInfo.getModel())) { + article.setDetail(split[2].concat("/").concat(split[3])); + } else { + article.setDetail(split[2]); + } + } + // 是否密码可见 + if (article.getPermission() != null && article.getPermission() == PERMISSION_PASSWORD) { + article.setPassword(userService.encodePassword(article.getPassword())); + } + // 保存文章内容 + final boolean save = save(article); + if(StrUtil.isBlank(article.getContent())){ + return true; + } + if (save) { + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(article.getArticleId()); + content.setContent(article.getContent()); + content.setTenantId(article.getTenantId()); + articleContentService.save(content); + // 同步翻译并保存 + articleContentService.translate(article); + return true; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return false; + } + + @Override + public boolean updateByIdRel(CmsArticle article) { + // 是否密码可见 + if (article.getPermission() == PERMISSION_PASSWORD) { + article.setPassword(userService.encodePassword(article.getPassword())); + } + try { + // 保存文章模型 + final CmsNavigation cmsNavigation = cmsNavigationService.getByIdRel(article.getCategoryId()); + // 模型信息 + if (ObjectUtil.isNotEmpty(cmsNavigation)) { + final CmsModel modelInfo = cmsNavigation.getModelInfo(); + final String componentDetail = modelInfo.getComponentDetail(); + if (ObjectUtil.isNotEmpty(componentDetail)) { + final String[] split = componentDetail.split("/"); + article.setModel(modelInfo.getModel()); + if (split[2].equals(modelInfo.getModel())) { + article.setDetail(split[2].concat("/").concat(split[3])); + } else { + article.setDetail(split[2]); + } + } + } + // 修正父级栏目ID + if (article.getParentId().equals(0)) { + final CmsNavigation current = cmsNavigationService.getById(article.getCategoryId()); + if (ObjectUtil.isNotEmpty(current)) { + article.setParentId(current.getParentId()); + } + } + if (updateById(article)) { + if (StrUtil.isBlank(article.getContent())) { + return true; + } + // 删除缓存 + String key = CACHE_KEY_ARTICLE + article.getArticleId(); + redisUtil.delete(key); + // 更新内容 + final boolean update = articleContentService.update(new LambdaUpdateWrapper().eq(CmsArticleContent::getArticleId, article.getArticleId()).set(CmsArticleContent::getContent, article.getContent())); + if (update) { + // 同步翻译并保存 + article.setIsUpdate(true); + articleContentService.translate(article); + return true; + } else { + // 添加内容 + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(article.getArticleId()); + content.setContent(article.getContent()); + content.setTenantId(article.getTenantId()); + articleContentService.save(content); + } + return true; + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return false; + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsComponentsServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsComponentsServiceImpl.java new file mode 100644 index 0000000..cf90d51 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsComponentsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsComponentsMapper; +import com.gxwebsoft.cms.service.CmsComponentsService; +import com.gxwebsoft.cms.entity.CmsComponents; +import com.gxwebsoft.cms.param.CmsComponentsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 组件Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsComponentsServiceImpl extends ServiceImpl implements CmsComponentsService { + + @Override + public PageResult pageRel(CmsComponentsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsComponentsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsComponents getByIdRel(Integer id) { + CmsComponentsParam param = new CmsComponentsParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignRecordServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignRecordServiceImpl.java new file mode 100644 index 0000000..f1810c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignRecordServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsDesignRecordMapper; +import com.gxwebsoft.cms.service.CmsDesignRecordService; +import com.gxwebsoft.cms.entity.CmsDesignRecord; +import com.gxwebsoft.cms.param.CmsDesignRecordParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 页面组件表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsDesignRecordServiceImpl extends ServiceImpl implements CmsDesignRecordService { + + @Override + public PageResult pageRel(CmsDesignRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsDesignRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsDesignRecord getByIdRel(Integer id) { + CmsDesignRecordParam param = new CmsDesignRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignServiceImpl.java new file mode 100644 index 0000000..40906f0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDesignServiceImpl.java @@ -0,0 +1,154 @@ +package com.gxwebsoft.cms.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.entity.TranslateDataVo; +import com.gxwebsoft.cms.mapper.CmsDesignMapper; +import com.gxwebsoft.cms.service.CmsArticleContentService; +import com.gxwebsoft.cms.service.CmsDesignService; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.param.CmsDesignParam; +import com.gxwebsoft.cms.service.CmsLangLogService; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.common.core.utils.AliYunSender; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; +import springfox.documentation.spring.web.plugins.Docket; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 页面管理记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsDesignServiceImpl extends ServiceImpl implements CmsDesignService { + @Resource + private CmsLangLogService cmsLangLogService; + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsArticleContentService cmsArticleContentService; + + @Override + public PageResult pageRel(CmsDesignParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsDesignParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsDesign getByIdRel(Integer pageId) { + CmsDesignParam param = new CmsDesignParam(); + param.setPageId(pageId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public void translate(CmsDesign cmsDesign) { + // 是否启用自动翻译 + if (!cmsDesign.getTranslation()) { + return; + } + // 未开启多语言 + if (cmsLangLogService.count() == 0) { + return; + } + // 查询关联的默认语言栏目ID + CmsNavigation navigation = cmsNavigationService.getOne(new LambdaQueryWrapper().eq(CmsNavigation::getLangCategoryId, cmsDesign.getCategoryId()).last("limit 1")); + if (ObjectUtil.isEmpty(navigation)) { + return; + } + // 仅限定新增简体中文才会同步翻译其他目标语言 + if (!navigation.getLang().equals("en")) { + return; + } + // 查找要翻译的单页面信息 + final CmsDesign design = getOne(new LambdaQueryWrapper().eq(CmsDesign::getCategoryId, navigation.getNavigationId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(design)) { + + TranslateDataVo vo = new TranslateDataVo(); + vo.setFormatType("text"); + vo.setSourceLanguage("auto"); + vo.setTargetLanguage("en"); + + // 翻译标题 + vo.setScene("title"); + vo.setSourceText(cmsDesign.getName()); + design.setName(getTranslateApi(vo)); + + // 翻译关键词 + vo.setSourceText(cmsDesign.getKeywords()); + design.setKeywords(getTranslateApi(vo)); + + // 翻译描述 + vo.setSourceText(cmsDesign.getDescription()); + design.setDescription(getTranslateApi(vo)); + + // 翻译页面内容 + vo.setScene(null); + vo.setSourceText(cmsDesign.getContent()); + design.setContent(getTranslateApi(vo)); + design.setShowBanner(cmsDesign.getShowBanner()); + design.setStyle(cmsDesign.getStyle()); + design.setShowButton(cmsDesign.getShowButton()); + design.setBuyUrl(cmsDesign.getBuyUrl()); + updateById(design); + } + } + + /** + * 机器翻译 + * 阿里云接口 + * ... + */ + public String getTranslateApi(TranslateDataVo item) { + String serviceURL = "http://mt.cn-hangzhou.aliyuncs.com/api/translate/web/ecommerce"; + String accessKeyId = "LTAI5tEsyhW4GCKbds1qsopg";// 使用您的阿里云访问密钥 AccessKeyId + String accessKeySecret = "zltFlQrYVAoq2KMFDWgLa3GhkMNeyO"; // 使用您的阿里云访问密钥 + + final Map map = new HashMap<>(); + map.put("FormatType", "text"); + map.put("SourceLanguage", "auto"); + map.put("TargetLanguage", "en"); + map.put("SourceText", item.getSourceText()); + map.put("Scene", "description"); + map.put("Context", "产品介绍"); + // Sender代码请参考帮助文档“签名方法” + String result = AliYunSender.sendPost(serviceURL, JSONUtil.toJSONString(map), accessKeyId, accessKeySecret); + JSONObject jsonObject = JSON.parseObject(result); + final Object code = jsonObject.get("Code"); + if (code.equals("200")) { + final Object data = jsonObject.get("Data"); + JSONObject data1 = JSON.parseObject(data.toString()); + final Object translated = data1.get("Translated"); + final Object wordCount = data1.get("WordCount"); + return translated.toString(); + } + return ""; + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsDomainServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDomainServiceImpl.java new file mode 100644 index 0000000..dea153f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsDomainServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsDomainMapper; +import com.gxwebsoft.cms.service.CmsDomainService; +import com.gxwebsoft.cms.entity.CmsDomain; +import com.gxwebsoft.cms.param.CmsDomainParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 网站域名记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Service +public class CmsDomainServiceImpl extends ServiceImpl implements CmsDomainService { + + @Override + public PageResult pageRel(CmsDomainParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsDomainParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsDomain getByIdRel(Integer id) { + CmsDomainParam param = new CmsDomainParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormRecordServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormRecordServiceImpl.java new file mode 100644 index 0000000..4156faf --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormRecordServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsFormRecordMapper; +import com.gxwebsoft.cms.service.CmsFormRecordService; +import com.gxwebsoft.cms.entity.CmsFormRecord; +import com.gxwebsoft.cms.param.CmsFormRecordParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 表单数据记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsFormRecordServiceImpl extends ServiceImpl implements CmsFormRecordService { + + @Override + public PageResult pageRel(CmsFormRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsFormRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsFormRecord getByIdRel(Integer formRecordId) { + CmsFormRecordParam param = new CmsFormRecordParam(); + param.setFormRecordId(formRecordId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormServiceImpl.java new file mode 100644 index 0000000..b42ffb1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsFormServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsFormMapper; +import com.gxwebsoft.cms.service.CmsFormService; +import com.gxwebsoft.cms.entity.CmsForm; +import com.gxwebsoft.cms.param.CmsFormParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 表单设计表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsFormServiceImpl extends ServiceImpl implements CmsFormService { + + @Override + public PageResult pageRel(CmsFormParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsFormParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsForm getByIdRel(Integer formId) { + CmsFormParam param = new CmsFormParam(); + param.setFormId(formId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangLogServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangLogServiceImpl.java new file mode 100644 index 0000000..f8627cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsLangLogMapper; +import com.gxwebsoft.cms.service.CmsLangLogService; +import com.gxwebsoft.cms.entity.CmsLangLog; +import com.gxwebsoft.cms.param.CmsLangLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 国际化记录启用Service实现 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Service +public class CmsLangLogServiceImpl extends ServiceImpl implements CmsLangLogService { + + @Override + public PageResult pageRel(CmsLangLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsLangLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsLangLog getByIdRel(Integer id) { + CmsLangLogParam param = new CmsLangLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangServiceImpl.java new file mode 100644 index 0000000..4e27908 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLangServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsLangMapper; +import com.gxwebsoft.cms.service.CmsLangService; +import com.gxwebsoft.cms.entity.CmsLang; +import com.gxwebsoft.cms.param.CmsLangParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 国际化Service实现 + * + * @author 科技小王子 + * @since 2025-01-06 19:29:26 + */ +@Service +public class CmsLangServiceImpl extends ServiceImpl implements CmsLangService { + + @Override + public PageResult pageRel(CmsLangParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsLangParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsLang getByIdRel(Integer id) { + CmsLangParam param = new CmsLangParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsLinkServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLinkServiceImpl.java new file mode 100644 index 0000000..b85d845 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsLinkServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsLinkMapper; +import com.gxwebsoft.cms.service.CmsLinkService; +import com.gxwebsoft.cms.entity.CmsLink; +import com.gxwebsoft.cms.param.CmsLinkParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 常用链接Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsLinkServiceImpl extends ServiceImpl implements CmsLinkService { + + @Override + public PageResult pageRel(CmsLinkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc,create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsLinkParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsLink getByIdRel(Integer id) { + CmsLinkParam param = new CmsLinkParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsModelServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsModelServiceImpl.java new file mode 100644 index 0000000..071f7fa --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsModelServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsModelMapper; +import com.gxwebsoft.cms.service.CmsModelService; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.param.CmsModelParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 模型Service实现 + * + * @author 科技小王子 + * @since 2024-11-26 15:44:53 + */ +@Service +public class CmsModelServiceImpl extends ServiceImpl implements CmsModelService { + + @Override + public PageResult pageRel(CmsModelParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsModelParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsModel getByIdRel(Integer modelId) { + CmsModelParam param = new CmsModelParam(); + param.setModelId(modelId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpAdServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpAdServiceImpl.java new file mode 100644 index 0000000..fa53927 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpAdServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsMpAdMapper; +import com.gxwebsoft.cms.service.CmsMpAdService; +import com.gxwebsoft.cms.entity.CmsMpAd; +import com.gxwebsoft.cms.param.CmsMpAdParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序广告位Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsMpAdServiceImpl extends ServiceImpl implements CmsMpAdService { + + @Override + public PageResult pageRel(CmsMpAdParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsMpAdParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsMpAd getByIdRel(Integer adId) { + CmsMpAdParam param = new CmsMpAdParam(); + param.setAdId(adId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpFieldServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpFieldServiceImpl.java new file mode 100644 index 0000000..68bdca2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsMpFieldMapper; +import com.gxwebsoft.cms.service.CmsMpFieldService; +import com.gxwebsoft.cms.entity.CmsMpField; +import com.gxwebsoft.cms.param.CmsMpFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序配置Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsMpFieldServiceImpl extends ServiceImpl implements CmsMpFieldService { + + @Override + public PageResult pageRel(CmsMpFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsMpFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsMpField getByIdRel(Integer id) { + CmsMpFieldParam param = new CmsMpFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpMenuServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpMenuServiceImpl.java new file mode 100644 index 0000000..eec21fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpMenuServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsMpMenuMapper; +import com.gxwebsoft.cms.service.CmsMpMenuService; +import com.gxwebsoft.cms.entity.CmsMpMenu; +import com.gxwebsoft.cms.param.CmsMpMenuParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序端菜单Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsMpMenuServiceImpl extends ServiceImpl implements CmsMpMenuService { + + @Override + public PageResult pageRel(CmsMpMenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsMpMenuParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsMpMenu getByIdRel(Integer menuId) { + CmsMpMenuParam param = new CmsMpMenuParam(); + param.setMenuId(menuId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpPagesServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpPagesServiceImpl.java new file mode 100644 index 0000000..6226628 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpPagesServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsMpPagesMapper; +import com.gxwebsoft.cms.service.CmsMpPagesService; +import com.gxwebsoft.cms.entity.CmsMpPages; +import com.gxwebsoft.cms.param.CmsMpPagesParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序页面Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsMpPagesServiceImpl extends ServiceImpl implements CmsMpPagesService { + + @Override + public PageResult pageRel(CmsMpPagesParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsMpPagesParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsMpPages getByIdRel(Integer id) { + CmsMpPagesParam param = new CmsMpPagesParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpServiceImpl.java new file mode 100644 index 0000000..d4a8079 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsMpServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsMpMapper; +import com.gxwebsoft.cms.service.CmsMpService; +import com.gxwebsoft.cms.entity.CmsMp; +import com.gxwebsoft.cms.param.CmsMpParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序信息Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsMpServiceImpl extends ServiceImpl implements CmsMpService { + + @Override + public PageResult pageRel(CmsMpParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsMpParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsMp getByIdRel(Integer mpId) { + CmsMpParam param = new CmsMpParam(); + param.setMpId(mpId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsNavigationServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsNavigationServiceImpl.java new file mode 100644 index 0000000..59d322c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsNavigationServiceImpl.java @@ -0,0 +1,161 @@ +package com.gxwebsoft.cms.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.CmsDesign; +import com.gxwebsoft.cms.entity.CmsModel; +import com.gxwebsoft.cms.mapper.CmsNavigationMapper; +import com.gxwebsoft.cms.service.CmsDesignService; +import com.gxwebsoft.cms.service.CmsModelService; +import com.gxwebsoft.cms.service.CmsNavigationService; +import com.gxwebsoft.cms.entity.CmsNavigation; +import com.gxwebsoft.cms.param.CmsNavigationParam; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.MessageFormat; +import java.util.List; + +/** + * 网站导航记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:47:57 + */ +@Service +public class CmsNavigationServiceImpl extends ServiceImpl implements CmsNavigationService { + @Resource + private CmsDesignService cmsDesignService; + @Resource + private CmsModelService cmsModelService; + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private UserService userService; + + @Override + public PageResult pageRel(CmsNavigationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, position asc, navigation_id asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsNavigationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, position asc,navigation_id asc"); + return page.sortRecords(list); + } + + @Override + public CmsNavigation getByIdRel(Integer navigationId) { + CmsNavigationParam param = new CmsNavigationParam(); + param.setNavigationId(navigationId); + CmsNavigation navigation; + navigation = param.getOne(baseMapper.selectListRel(param)); + if (ObjectUtil.isEmpty(navigation)) { + return null; + } + // 父级栏目并且是page模型则读取子项目第一条 + if (navigation.getParentId().equals(0) && navigation.getModel().equals("page")) { + final CmsNavigation parent = cmsNavigationService.getOne(new LambdaQueryWrapper().eq(CmsNavigation::getParentId, navigation.getNavigationId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(parent)) { + navigation = parent; + } + } + // 所属页面 + navigation.setDesign(cmsDesignService.getOne(new LambdaQueryWrapper().eq(CmsDesign::getCategoryId, navigation.getNavigationId()).last("limit 1"))); + // 所属模型 + if (StrUtil.isNotBlank(navigation.getModel())) { + navigation.setModelInfo(cmsModelService.getOne(new LambdaQueryWrapper().eq(CmsModel::getModel, navigation.getModel()).last("limit 1"))); + if (StrUtil.isBlank(navigation.getBanner())) { + navigation.setBanner(navigation.getModelInfo().getBanner()); + navigation.setMpBanner(navigation.getModelInfo().getThumb()); + } + } + return navigation; + } + + /** + * 配置路由生成规则 + * path:/模型/导航ID + * component: /pages/模型/index.vue + */ + @Override + public void saveAsync(CmsNavigation navigation) { + // TODO 1.设计path和component生产规则 + final String path = navigation.getPath(); + final CmsModel model = cmsModelService.getOne(new LambdaQueryWrapper().eq(CmsModel::getModel, navigation.getModel()).last("limit 1")); + // 1.自动配置 + navigation.setPath("/" + navigation.getModel() + "/" + navigation.getNavigationId()); + navigation.setTarget("_self"); + navigation.setComponent(MessageFormat.format("/pages/{0}/{1}", navigation.getModel(), "[id].vue")); + + // 1.2自定义文件后缀 + if(!navigation.getModel().equals("index") && model.getSuffix() != null){ + navigation.setPath(navigation.getPath() + model.getSuffix()); + } + + // 2.特例:默认首页 + if (navigation.getPath().equals("/") || navigation.getModel().equals("index")) { + final int count = count(new LambdaQueryWrapper().eq(CmsNavigation::getPath, "/").eq(CmsNavigation::getLang,navigation.getLang())); + if(count > 1){ + throw new BusinessException("路由地址已存在!"); + } + navigation.setPath("/"); + navigation.setComponent("/pages/index.vue"); + navigation.setModel("index"); + navigation.setHome(1); + } + // 3.外链模型 + if (navigation.getModel().equals("links")) { + navigation.setPath(path); + navigation.setTarget("_blank"); + navigation.setComponent(null); + } + + // 4.密码可见 + if(StrUtil.isNotBlank(navigation.getPassword())){ + navigation.setPassword(userService.encodePassword(navigation.getPassword())); + } + + // 更新操作 + updateById(navigation); + + // TODO 2.同步添加页面 + final CmsDesign one = cmsDesignService.getOne(new LambdaQueryWrapper().eq(CmsDesign::getCategoryId, navigation.getNavigationId()).eq(CmsDesign::getDeleted, 0).last("limit 1")); + if (ObjectUtil.isEmpty(one)) { + final CmsDesign design = new CmsDesign(); + design.setName(navigation.getTitle()); + design.setCategoryId(navigation.getNavigationId()); + design.setKeywords(navigation.getTitle()); + design.setDescription(navigation.getComments()); + design.setPath(navigation.getPath()); + design.setComponent(navigation.getComponent()); + design.setTenantId(navigation.getTenantId()); + if (StrUtil.isNotBlank(navigation.getContent())) { + design.setContent(navigation.getContent()); + } + cmsDesignService.save(design); + } + + // 面包屑 +// final CmsNavigation parent = getById(navigation.getParentId()); +// if (ObjectUtil.isNotEmpty(parent) && navigation.getParentId() > 0) { +// navigation.setParentName(parent.getTitle()); +// navigation.setParentPath(parent.getPath()); +// navigation.setParentId(parent.getNavigationId()); +// updateById(parent); +// } + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsOrderServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsOrderServiceImpl.java new file mode 100644 index 0000000..0dda732 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsOrderServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsOrderMapper; +import com.gxwebsoft.cms.service.CmsOrderService; +import com.gxwebsoft.cms.entity.CmsOrder; +import com.gxwebsoft.cms.param.CmsOrderParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 订单Service实现 + * + * @author 科技小王子 + * @since 2024-11-25 12:14:05 + */ +@Service +public class CmsOrderServiceImpl extends ServiceImpl implements CmsOrderService { + + @Override + public PageResult pageRel(CmsOrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsOrder getByIdRel(Integer orderId) { + CmsOrderParam param = new CmsOrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java new file mode 100644 index 0000000..a2c4a24 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsProductMapper; +import com.gxwebsoft.cms.service.CmsProductService; +import com.gxwebsoft.cms.entity.CmsProduct; +import com.gxwebsoft.cms.param.CmsProductParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 产品Service实现 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Service +public class CmsProductServiceImpl extends ServiceImpl implements CmsProductService { + + @Override + public PageResult pageRel(CmsProductParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsProductParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc,create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsProduct getByIdRel(Integer productId) { + CmsProductParam param = new CmsProductParam(); + param.setProductId(productId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecServiceImpl.java new file mode 100644 index 0000000..6532eba --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsProductSpecMapper; +import com.gxwebsoft.cms.service.CmsProductSpecService; +import com.gxwebsoft.cms.entity.CmsProductSpec; +import com.gxwebsoft.cms.param.CmsProductSpecParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 规格Service实现 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Service +public class CmsProductSpecServiceImpl extends ServiceImpl implements CmsProductSpecService { + + @Override + public PageResult pageRel(CmsProductSpecParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsProductSpecParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsProductSpec getByIdRel(Integer specId) { + CmsProductSpecParam param = new CmsProductSpecParam(); + param.setSpecId(specId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecValueServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecValueServiceImpl.java new file mode 100644 index 0000000..c004b49 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductSpecValueServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsProductSpecValueMapper; +import com.gxwebsoft.cms.service.CmsProductSpecValueService; +import com.gxwebsoft.cms.entity.CmsProductSpecValue; +import com.gxwebsoft.cms.param.CmsProductSpecValueParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 规格值Service实现 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Service +public class CmsProductSpecValueServiceImpl extends ServiceImpl implements CmsProductSpecValueService { + + @Override + public PageResult pageRel(CmsProductSpecValueParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsProductSpecValueParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsProductSpecValue getByIdRel(Integer specValueId) { + CmsProductSpecValueParam param = new CmsProductSpecValueParam(); + param.setSpecValueId(specValueId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductUrlServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductUrlServiceImpl.java new file mode 100644 index 0000000..041f6b7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsProductUrlServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsProductUrlMapper; +import com.gxwebsoft.cms.service.CmsProductUrlService; +import com.gxwebsoft.cms.entity.CmsProductUrl; +import com.gxwebsoft.cms.param.CmsProductUrlParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 域名Service实现 + * + * @author 科技小王子 + * @since 2024-09-27 16:03:44 + */ +@Service +public class CmsProductUrlServiceImpl extends ServiceImpl implements CmsProductUrlService { + + @Override + public PageResult pageRel(CmsProductUrlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsProductUrlParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsProductUrl getByIdRel(Integer id) { + CmsProductUrlParam param = new CmsProductUrlParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsTemplateServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsTemplateServiceImpl.java new file mode 100644 index 0000000..3be39e4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsTemplateServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsTemplateMapper; +import com.gxwebsoft.cms.service.CmsTemplateService; +import com.gxwebsoft.cms.entity.CmsTemplate; +import com.gxwebsoft.cms.param.CmsTemplateParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 网站模版Service实现 + * + * @author 科技小王子 + * @since 2025-01-21 14:21:16 + */ +@Service +public class CmsTemplateServiceImpl extends ServiceImpl implements CmsTemplateService { + + @Override + public PageResult pageRel(CmsTemplateParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsTemplateParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsTemplate getByIdRel(Integer id) { + CmsTemplateParam param = new CmsTemplateParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteFieldServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteFieldServiceImpl.java new file mode 100644 index 0000000..7214be1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsWebsiteFieldMapper; +import com.gxwebsoft.cms.service.CmsWebsiteFieldService; +import com.gxwebsoft.cms.entity.CmsWebsiteField; +import com.gxwebsoft.cms.param.CmsWebsiteFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用参数Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Service +public class CmsWebsiteFieldServiceImpl extends ServiceImpl implements CmsWebsiteFieldService { + + @Override + public PageResult pageRel(CmsWebsiteFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsWebsiteFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time asc"); + return page.sortRecords(list); + } + + @Override + public CmsWebsiteField getByIdRel(Integer id) { + CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java new file mode 100644 index 0000000..dee3ade --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteServiceImpl.java @@ -0,0 +1,310 @@ +package com.gxwebsoft.cms.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.*; +import com.gxwebsoft.cms.mapper.*; +import com.gxwebsoft.cms.param.*; +import com.gxwebsoft.cms.service.*; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.CompanyService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.service.OaCompanyService; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.service.ProjectService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 网站信息记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:36:14 + */ +@Service +public class CmsWebsiteServiceImpl extends ServiceImpl implements CmsWebsiteService { + @Resource + private CmsWebsiteFieldMapper cmsWebsiteFieldMapper; + @Resource + private CmsModelMapper cmsModelMapper; + @Resource + private CmsNavigationMapper cmsNavigationMapper; + @Resource + private CmsLangLogMapper cmsLangLogMapper; + @Resource + private CmsAdMapper cmsAdMapper; + @Resource + private CmsLinkMapper cmsLinkMapper; + @Resource + private CmsArticleMapper cmsArticleMapper; + @Resource + private CmsWebsiteFieldService cmsWebsiteFieldService; + @Resource + private CmsModelService cmsModelService; + @Resource + private CmsNavigationService cmsNavigationService; + @Resource + private CmsLangLogService cmsLangLogService; + @Resource + private CmsAdService cmsAdService; + @Resource + private CmsLinkService cmsLinkService; + @Resource + private CmsArticleService cmsArticleService; + @Resource + private CmsArticleContentService cmsArticleContentService; + @Resource + private CmsWebsiteMapper cmsWebsiteMapper; + @Resource + private ProjectService projectService; + @Resource + private UserService userService; + @Resource + private CompanyService companyService; + + @Override + public PageResult pageRel(CmsWebsiteParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + list.forEach(d -> { + // 即将过期(一周内过期的) + d.setSoon(DateUtil.offsetDay(d.getExpirationTime(), -30).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + d.setStatus(d.getExpirationTime().compareTo(DateUtil.date())); + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsWebsiteParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsWebsite getByIdRel(Integer websiteId) { + CmsWebsiteParam param = new CmsWebsiteParam(); + param.setWebsiteId(websiteId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public PageResult pageRelAll(CmsWebsiteParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRelAll(page, param); + list.forEach(d -> { + // 即将过期(一周内过期的) + d.setSoon(DateUtil.offsetDay(d.getExpirationTime(), -30).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + d.setStatus(d.getExpirationTime().compareTo(DateUtil.date())); + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public CmsWebsite create(CmsWebsite website) { + final User loginUser = website.getLoginUser(); + // 创建站点 +// website.setWebsiteName("网站名称"); + website.setWebsiteCode("site-".concat(loginUser.getTenantId().toString())); +// if (StrUtil.isBlank(website.getWebsiteLogo())) { +// website.setWebsiteLogo("https://oss.wsdns.cn/20240822/0252ad4ed46449cdafe12f8d3d96c2ea.svg"); +// } + website.setWebsiteIcon("/favicon.ico"); + website.setWebsiteType("云·企业官网"); + website.setAdminUrl("site.websoft.top"); + website.setVersion(10); + website.setExpirationTime(DateUtil.nextMonth()); + website.setUserId(loginUser.getUserId()); + website.setDeveloper(loginUser.getNickname()); + website.setTenantId(loginUser.getTenantId()); + website.setTemplateId(loginUser.getTemplateId()); + website.setCompanyId(loginUser.getCompanyId()); + + // 初始化数据 + if(save(website)){ + // 插入网站设置记录 +// final CmsWebsiteSetting setting = new CmsWebsiteSetting(); +// setting.setWebsiteId(website.getWebsiteId()); +// setting.setCreateTime(DateUtil.date()); +// setting.setUpdateTime(DateUtil.date()); +// cmsWebsiteSettingService.save(setting); + + // 将网站创建者的userId做为查询条件 10257(4716),10324(6978),10398(26564) + Integer websiteUserId = website.getTemplateId() != null ? website.getTemplateId() : 0; + + + // TODO 国际化 + final CmsLangLogParam cmsLangLogParam = new CmsLangLogParam(); + cmsLangLogParam.setWebsiteUserId(websiteUserId); + final List logs = cmsLangLogMapper.selectListAllRel(cmsLangLogParam); + logs.forEach(d->{ + d.setTenantId(loginUser.getTenantId()); + }); + cmsLangLogService.saveBatch(logs); + + // TODO 复制参数 + final CmsWebsiteFieldParam param = new CmsWebsiteFieldParam(); + param.setUserId(websiteUserId); + final List fields = cmsWebsiteFieldMapper.selectListAllRel(param); + fields.forEach(d->{ + d.setTenantId(loginUser.getTenantId()); + }); + cmsWebsiteFieldService.saveBatch(fields); + + // TODO 复制模型 + final CmsModelParam modelParam = new CmsModelParam(); + modelParam.setWebsiteUserId(websiteUserId); + final List models = cmsModelMapper.selectListAllRel(modelParam); + models.forEach(d->{ + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsModelService.saveBatch(models); + + // TODO 复制广告 + final CmsAdParam cmsAdParam = new CmsAdParam(); + cmsAdParam.setWebsiteUserId(websiteUserId); + final List ads = cmsAdMapper.selectListAllRel(cmsAdParam); + ads.forEach(d -> { + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsAdService.saveBatch(ads); + + // TODO 复制链接 + CmsLinkParam cmsLinkParam = new CmsLinkParam(); + cmsLinkParam.setWebsiteUserId(websiteUserId); + final List links = cmsLinkMapper.selectListAllRel(cmsLinkParam); + links.forEach(d -> { + d.setUserId(loginUser.getUserId()); + d.setTenantId(loginUser.getTenantId()); + }); + cmsLinkService.saveBatch(links); + + // TODO 复制订单 +// CmsOrderParam cmsOrderParam = new CmsOrderParam(); +// cmsOrderParam.setWebsiteUserId(websiteUserId); +// final List orders = cmsOrderMapper.selectListAllRel(cmsOrderParam); +// orders.forEach(d -> { +// d.setUserId(loginUser.getUserId()); +// d.setTenantId(loginUser.getTenantId()); +// }); +// cmsOrderService.saveBatch(orders); + + + // TODO 复制栏目和文章、文章内容 + CmsNavigationParam cmsNavigationParam = new CmsNavigationParam(); + cmsNavigationParam.setWebsiteUserId(websiteUserId); + cmsNavigationParam.setParentId(0); + final List parents = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); + parents.forEach(d -> { + Integer navigationId = d.getNavigationId(); + // 复制顶级栏目 + d.setTenantId(loginUser.getTenantId()); + d.setUserId(loginUser.getUserId()); + if (cmsNavigationService.save(d)) { + cmsNavigationService.saveAsync(d); + // 复制栏目文章 + CmsArticleParam cmsArticleParam = new CmsArticleParam(); + cmsArticleParam.setWebsiteUserId(websiteUserId); + cmsArticleParam.setCategoryId(navigationId); + final List articles = cmsArticleMapper.selectListAllRel(cmsArticleParam); + articles.forEach(a -> { + a.setCategoryId(d.getNavigationId()); + a.setUserId(loginUser.getUserId()); + a.setTenantId(loginUser.getTenantId()); + if (cmsArticleService.save(a)) { + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(a.getArticleId()); + content.setContent(a.getContent()); + cmsArticleContentService.save(content); + } + }); + // 复制子栏目 + cmsNavigationParam.setParentId(navigationId); + final List navigations = cmsNavigationMapper.selectListAllRel(cmsNavigationParam); + navigations.forEach(c -> { + cmsArticleParam.setCategoryId(c.getNavigationId()); + System.out.println("c.getNavigationId() = " + c.getNavigationId()); + c.setParentId(d.getNavigationId()); + c.setTenantId(loginUser.getTenantId()); + c.setUserId(loginUser.getUserId()); + cmsNavigationService.save(c); + cmsNavigationService.saveAsync(c); + System.out.println("c2.getNavigationId() = " + c.getNavigationId()); + // 复制子栏目文章 + final List articles2 = cmsArticleMapper.selectListAllRel(cmsArticleParam); + articles2.forEach(a2 -> { + a2.setCategoryId(c.getNavigationId()); + a2.setParentId(c.getParentId()); + a2.setUserId(loginUser.getUserId()); + a2.setTenantId(loginUser.getTenantId()); + if (cmsArticleService.save(a2)) { + final CmsArticleContent content = new CmsArticleContent(); + content.setArticleId(a2.getArticleId()); + content.setContent(a2.getContent()); + cmsArticleContentService.save(content); + } + }); + }); + } + }); + + // 新增项目 + final Project project = new Project(); + project.setUserId(website.getUserId()); + project.setAppName(website.getWebsiteName()); + project.setAppIcon(website.getWebsiteIcon()); + project.setAppCode(website.getWebsiteCode()); + project.setAdminUrl(website.getAdminUrl()); + project.setRenewMoney(website.getPrice()); + project.setWebsiteId(website.getWebsiteId()); + project.setAdminUrl(website.getAdminUrl()); + project.setAppType(website.getWebsiteType()); + project.setAppIcon(website.getWebsiteLogo()); + project.setAppUrl(website.getDomain()); + project.setCompanyId(website.getUserId()); + project.setTenantId(5); + projectService.save(project); + } + return website; + } + + @Override + public CmsWebsite getByIdRelAll(Integer id) { + return cmsWebsiteMapper.getByIdRelAll(id); + } + + @Override + public boolean updateByIdAll(CmsWebsite cmsWebsite) { + return baseMapper.updateByIdAll(cmsWebsite); + } + + @Override + public boolean removeByIdAll(Integer id) { + return baseMapper.removeByIdAll(id); + } + + @Override + public CmsWebsite getByTenantId(Integer tenantId) { + return baseMapper.getByTenantId(tenantId); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteSettingServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteSettingServiceImpl.java new file mode 100644 index 0000000..2788563 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsWebsiteSettingServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.CmsWebsiteSettingMapper; +import com.gxwebsoft.cms.service.CmsWebsiteSettingService; +import com.gxwebsoft.cms.entity.CmsWebsiteSetting; +import com.gxwebsoft.cms.param.CmsWebsiteSettingParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 网站设置Service实现 + * + * @author 科技小王子 + * @since 2025-02-19 01:35:44 + */ +@Service +public class CmsWebsiteSettingServiceImpl extends ServiceImpl implements CmsWebsiteSettingService { + + @Override + public PageResult pageRel(CmsWebsiteSettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CmsWebsiteSettingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public CmsWebsiteSetting getByIdRel(Integer id) { + CmsWebsiteSettingParam param = new CmsWebsiteSettingParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/Constants.java b/src/main/java/com/gxwebsoft/common/core/Constants.java new file mode 100644 index 0000000..be48387 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/Constants.java @@ -0,0 +1,93 @@ +package com.gxwebsoft.common.core; + +/** + * 系统常量 + * Created by WebSoft on 2019-10-29 15:55 + */ +public class Constants { + /** + * 默认成功码 + */ + public static final int RESULT_OK_CODE = 0; + + /** + * 默认失败码 + */ + public static final int RESULT_ERROR_CODE = 1; + + /** + * 默认成功信息 + */ + public static final String RESULT_OK_MSG = "操作成功"; + + /** + * 默认失败信息 + */ + public static final String RESULT_ERROR_MSG = "操作失败"; + + /** + * 无权限错误码 + */ + public static final int UNAUTHORIZED_CODE = 403; + + /** + * 无权限提示信息 + */ + public static final String UNAUTHORIZED_MSG = "没有访问权限"; + + /** + * 未认证错误码 + */ + public static final int UNAUTHENTICATED_CODE = 401; + + /** + * 未认证提示信息 + */ + public static final String UNAUTHENTICATED_MSG = "请先登录"; + + /** + * 登录过期错误码 + */ + public static final int TOKEN_EXPIRED_CODE = 401; + + /** + * 登录过期提示信息 + */ + public static final String TOKEN_EXPIRED_MSG = "登录已过期"; + + /** + * 非法token错误码 + */ + public static final int BAD_CREDENTIALS_CODE = 401; + + /** + * 非法token提示信息 + */ + public static final String BAD_CREDENTIALS_MSG = "请退出重新登录"; + + /** + * 表示升序的值 + */ + public static final String ORDER_ASC_VALUE = "asc"; + + /** + * 表示降序的值 + */ + public static final String ORDER_DESC_VALUE = "desc"; + + /** + * token通过header传递的名称 + */ + public static final String TOKEN_HEADER_NAME = "Authorization"; + + /** + * token通过参数传递的名称 + */ + public static final String TOKEN_PARAM_NAME = "access_token"; + + /** + * token认证类型 + */ + public static final String TOKEN_TYPE = "Bearer"; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java b/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java new file mode 100644 index 0000000..87bdf2c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 操作日志记录注解 + * + * @author WebSoft + * @since 2020-03-21 17:03:08 + */ +@Documented +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface OperationLog { + + /** + * 操作功能 + */ + String value() default ""; + + /** + * 操作模块 + */ + String module() default ""; + + /** + * 备注 + */ + String comments() default ""; + + /** + * 是否记录请求参数 + */ + boolean param() default true; + + /** + * 是否记录返回结果 + */ + boolean result() default true; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java b/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java new file mode 100644 index 0000000..60ab018 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java @@ -0,0 +1,21 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 操作日志模块注解 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +@Documented +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface OperationModule { + + /** + * 模块名称 + */ + String value(); + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java b/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java new file mode 100644 index 0000000..9377b9b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 查询条件注解 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) +public @interface QueryField { + + // 字段名称 + String value() default ""; + + // 查询方式 + QueryType type() default QueryType.LIKE; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java b/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java new file mode 100644 index 0000000..3eb540e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.core.annotation; + +/** + * 查询方式 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +public enum QueryType { + // 等于 + EQ, + // 不等于 + NE, + // 大于 + GT, + // 大于等于 + GE, + // 小于 + LT, + // 小于等于 + LE, + // 包含 + LIKE, + // 不包含 + NOT_LIKE, + // 结尾等于 + LIKE_LEFT, + // 开头等于 + LIKE_RIGHT, + // 为NULL + IS_NULL, + // 不为空 + IS_NOT_NULL, + // IN + IN, + // NOT IN + NOT_IN, + // IN条件解析逗号分割 + IN_STR, + // NOT IN条件解析逗号分割 + NOT_IN_STR +} diff --git a/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java b/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java new file mode 100644 index 0000000..b0fe899 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java @@ -0,0 +1,225 @@ +package com.gxwebsoft.common.core.aspect; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.annotation.OperationModule; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.OperationRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.*; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; +import java.util.Map; + +/** + * 操作日志记录 + * + * @author WebSoft + * @since 2020-03-21 16:58:16:05 + */ +@Aspect +@Component +public class OperationLogAspect { + @Resource + private OperationRecordService operationRecordService; + + // 参数、返回结果、错误信息等最大保存长度 + private static final int MAX_LENGTH = 1000; + // 用于记录请求耗时 + private final ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("@annotation(com.gxwebsoft.common.core.annotation.OperationLog)") + public void operationLog() { + } + + @Before("operationLog()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + startTime.set(System.currentTimeMillis()); + } + + @AfterReturning(pointcut = "operationLog()", returning = "result") + public void doAfterReturning(JoinPoint joinPoint, Object result) { + saveLog(joinPoint, result, null); + } + + @AfterThrowing(value = "operationLog()", throwing = "e") + public void doAfterThrowing(JoinPoint joinPoint, Exception e) { + saveLog(joinPoint, null, e); + } + + /** + * 保存操作记录 + */ + private void saveLog(JoinPoint joinPoint, Object result, Exception e) { + OperationRecord record = new OperationRecord(); + // 记录操作耗时 + if (startTime.get() != null) { + record.setSpendTime(System.currentTimeMillis() - startTime.get()); + } + // 记录当前登录用户id、租户id + User user = getLoginUser(); + if (user != null) { + record.setUserId(user.getUserId()); + record.setTenantId(user.getTenantId()); + } + // 记录请求地址、请求方式、ip + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = (attributes == null ? null : attributes.getRequest()); + if (request != null) { + record.setUrl(request.getRequestURI()); + record.setRequestMethod(request.getMethod()); + UserAgent ua = UserAgentUtil.parse(ServletUtil.getHeaderIgnoreCase(request, "User-Agent")); + record.setOs(ua.getPlatform().toString()); + record.setDevice(ua.getOs().toString()); + record.setBrowser(ua.getBrowser().toString()); + record.setIp(ServletUtil.getClientIP(request)); + } + // 记录异常信息 + if (e != null) { + record.setStatus(1); + record.setError(StrUtil.sub(e.toString(), 0, MAX_LENGTH)); + } + // 记录模块名、操作功能、请求方法、请求参数、返回结果 + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + record.setMethod(joinPoint.getTarget().getClass().getName() + "." + signature.getName()); + Method method = signature.getMethod(); + if (method != null) { + OperationLog ol = method.getAnnotation(OperationLog.class); + if (ol != null) { + // 记录操作功能 + record.setDescription(getDescription(method, ol)); + // 记录操作模块 + record.setModule(getModule(joinPoint, ol)); + // 记录备注 + if (StrUtil.isNotEmpty(ol.comments())) { + record.setComments(ol.comments()); + } + // 记录请求参数 + if (ol.param() && request != null) { + record.setParams(StrUtil.sub(getParams(joinPoint, request), 0, MAX_LENGTH)); + } + // 记录请求结果 + if (ol.result() && result != null) { + record.setResult(StrUtil.sub(JSONUtil.toJSONString(result), 0, MAX_LENGTH)); + } + } + } + + // 记录访客日志 +// System.out.println("record = " + record); +// if (record.getMethod().equals("com.gxwebsoft.love.controller.UserProfileController.detail")) { +// final Integer toUserId = Integer.valueOf(StrUtil.removeSuffix(record.getParams()," ")); +// if (userLookService.count(new LambdaQueryWrapper().eq(UserLook::getUserId,record.getUserId()).eq(UserLook::getToUserId,toUserId)) == 0) { +// final UserLook userLook = new UserLook(); +// userLook.setUserId(record.getUserId()); +// userLook.setToUserId(toUserId); +// userLookService.save(userLook); +// } +// } + + operationRecordService.saveAsync(record); + } + + /** + * 获取当前登录用户 + */ + private User getLoginUser() { + Authentication subject = SecurityContextHolder.getContext().getAuthentication(); + if (subject != null) { + Object object = subject.getPrincipal(); + if (object instanceof User) { + return (User) object; + } + } + return null; + } + + /** + * 获取请求参数 + * + * @param joinPoint JoinPoint + * @param request HttpServletRequest + * @return String + */ + private String getParams(JoinPoint joinPoint, HttpServletRequest request) { + String params; + Map paramsMap = ServletUtil.getParamMap(request); + if (paramsMap.keySet().size() > 0) { + params = JSONUtil.toJSONString(paramsMap); + } else { + StringBuilder sb = new StringBuilder(); + for (Object arg : joinPoint.getArgs()) { + if (ObjectUtil.isNull(arg) + || arg instanceof MultipartFile + || arg instanceof HttpServletRequest + || arg instanceof HttpServletResponse) { + continue; + } + sb.append(JSONUtil.toJSONString(arg)).append(" "); + } + params = sb.toString(); + } + return params; + } + + /** + * 获取操作模块 + * + * @param joinPoint JoinPoint + * @param ol OperationLog + * @return String + */ + private String getModule(JoinPoint joinPoint, OperationLog ol) { + if (StrUtil.isNotEmpty(ol.module())) { + return ol.module(); + } + OperationModule om = joinPoint.getTarget().getClass().getAnnotation(OperationModule.class); + if (om != null && StrUtil.isNotEmpty(om.value())) { + return om.value(); + } + Api api = joinPoint.getTarget().getClass().getAnnotation(Api.class); + if (api != null && api.tags() != null) { + return ArrayUtil.join(api.tags(), ","); + } + return null; + } + + /** + * 获取操作功能 + * + * @param method Method + * @param ol OperationLog + * @return String + */ + private String getDescription(Method method, OperationLog ol) { + if (StrUtil.isNotEmpty(ol.value())) { + return ol.value(); + } + ApiOperation ao = method.getAnnotation(ApiOperation.class); + if (ao != null && StrUtil.isNotEmpty(ao.value())) { + return ao.value(); + } + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java new file mode 100644 index 0000000..dfee5d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java @@ -0,0 +1,105 @@ +package com.gxwebsoft.common.core.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 系统配置属性 + * + * @author WebSoft + * @since 2021-08-30 17:58:16 + */ +@Data +@ConfigurationProperties(prefix = "config") +public class ConfigProperties { + /** + * 文件上传磁盘位置 + */ + private Integer uploadLocation = 0; + + /** + * 文件上传是否使用uuid命名 + */ + private Boolean uploadUuidName = true; + + /** + * 文件上传生成缩略图的大小(kb) + */ + private Integer thumbnailSize = 60; + + /** + * OpenOffice的安装目录 + */ + private String openOfficeHome; + + /** + * swagger扫描包 + */ + private String swaggerBasePackage; + + /** + * swagger文档标题 + */ + private String swaggerTitle; + + /** + * swagger文档描述 + */ + private String swaggerDescription; + + /** + * swagger文档版本号 + */ + private String swaggerVersion; + + /** + * swagger地址 + */ + private String swaggerHost; + + /** + * token过期时间, 单位秒 + */ + private Long tokenExpireTime = 60 * 60 * 30 * 24L; + + /** + * token快要过期自动刷新时间, 单位分钟 + */ + private int tokenRefreshTime = 30; + + /** + * 生成token的密钥Key的base64字符 + */ + private String tokenKey; + + /** + * 文件上传目录 + */ + private String uploadPath; + + /** + * 本地文件上传目录(开发环境) + */ + private String localUploadPath; + + /** + * 文件服务器 + */ + private String fileServer; + + /** + * 网关地址 + */ + private String serverUrl; + + /** + * 阿里云存储 OSS + * Endpoint + */ + private String endpoint; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String bucketDomain; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java b/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java new file mode 100644 index 0000000..6bae59d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java @@ -0,0 +1,15 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.util.ArrayList; +import java.util.List; + +public class HttpMessageConverter extends MappingJackson2HttpMessageConverter { + public HttpMessageConverter(){ + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); + setSupportedMediaTypes(mediaTypes); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/MqttProperties.java b/src/main/java/com/gxwebsoft/common/core/config/MqttProperties.java new file mode 100644 index 0000000..8dd1fb8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/MqttProperties.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.common.core.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * MQTT配置属性 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@Data +@Component +@ConfigurationProperties(prefix = "mqtt") +public class MqttProperties { + + /** + * 是否启用MQTT服务 + */ + private boolean enabled = true; + + /** + * MQTT服务器地址 + */ + private String host = "tcp://127.0.0.1:1883"; + + /** + * 用户名 + */ + private String username = ""; + + /** + * 密码 + */ + private String password = ""; + + /** + * 客户端ID前缀 + */ + private String clientIdPrefix = "mqtt_client_"; + + /** + * 订阅主题 + */ + private String topic = "/SW_GPS/#"; + + /** + * QoS等级 + */ + private int qos = 2; + + /** + * 连接超时时间(秒) + */ + private int connectionTimeout = 10; + + /** + * 心跳间隔(秒) + */ + private int keepAliveInterval = 20; + + /** + * 是否自动重连 + */ + private boolean autoReconnect = true; + + /** + * 是否清除会话 + */ + private boolean cleanSession = false; +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java new file mode 100644 index 0000000..575d8d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.common.core.config; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.system.entity.User; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.NullValue; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +/** + * MybatisPlus配置 + * + * @author WebSoft + * @since 2018-02-22 11:29:28 + */ +@Configuration +public class MybatisPlusConfig { + @Resource + private RedisUtil redisUtil; + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor(HttpServletRequest request) { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + + // 多租户插件配置 + TenantLineHandler tenantLineHandler = new TenantLineHandler() { + @Override + public Expression getTenantId() { + String tenantId; + // 从请求头拿ID + tenantId = request.getHeader("tenantId"); + if(tenantId != null){ + return new LongValue(tenantId); + } + // 从域名拿ID + String Domain = request.getHeader("Domain"); + if (StrUtil.isNotBlank(Domain)) { + String key = "Domain:" + Domain; + tenantId = redisUtil.get(key); + if(tenantId != null){ + System.out.println("从域名拿TID = " + tenantId); + return new LongValue(tenantId); + } + } + return getLoginUserTenantId(); + } + + @Override + public boolean ignoreTable(String tableName) { + return Arrays.asList( + "sys_tenant", + "sys_dictionary", + "sys_dictionary_data", + "apps_test_data", + "cms_lang", + "hjm_car", + "hjm_fence" +// "cms_website" +// "sys_user" +// "cms_domain" +// "shop_order_goods", +// "shop_goods" +// "shop_users", +// "shop_order", +// "shop_order_info", +// "booking_user_invoice" + ).contains(tableName); + } + }; + TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(tenantLineHandler); + interceptor.addInnerInterceptor(tenantLineInnerInterceptor); + + // 分页插件配置 + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); + paginationInnerInterceptor.setMaxLimit(2000L); + interceptor.addInnerInterceptor(paginationInnerInterceptor); + + return interceptor; + } + + /** + * 获取当前登录用户的租户id + * + * @return Integer + */ + public Expression getLoginUserTenantId() { + try { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + return new LongValue(((User) object).getTenantId()); + } + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return new NullValue(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java b/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java new file mode 100644 index 0000000..786798f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java @@ -0,0 +1,29 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory) { + RestTemplate restTemplate = new RestTemplate(factory); + restTemplate.getMessageConverters().add(new HttpMessageConverter()); + return restTemplate; + } + @Bean + public ClientHttpRequestFactory simpleClientHttpRequestFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + // ms + factory.setReadTimeout(60000); + // ms + factory.setConnectTimeout(60000); + + return factory; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java b/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java new file mode 100644 index 0000000..4e6d883 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * @Author ds + * @Date 2022-05-05 + */ +@Component +public class SpringContextUtil implements ApplicationContextAware { + /** + * spring的应用上下文 + */ + private static ApplicationContext applicationContext; + + /** + * 初始化时将应用上下文设置进applicationContext + * @param applicationContext + * @throws BeansException + */ + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtil.applicationContext=applicationContext; + } + + public static ApplicationContext getApplicationContext(){ + return applicationContext; + } + + /** + * 根据bean名称获取某个bean对象 + * + * @param name bean名称 + * @return Object + * @throws BeansException + */ + public static Object getBean(String name) throws BeansException { + return applicationContext.getBean(name); + } + + /** + * 根据bean的class获取某个bean对象 + * @param beanClass + * @param + * @return + * @throws BeansException + */ + public static T getBean(Class beanClass) throws BeansException { + return applicationContext.getBean(beanClass); + } + + /** + * 获取spring.profiles.active + * @return + */ + public static String getProfile(){ + return getApplicationContext().getEnvironment().getActiveProfiles()[0]; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java b/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java new file mode 100644 index 0000000..25e6f78 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/SpringFoxSwaggerHostResolver.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.core.config; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.servers.Server; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import springfox.documentation.oas.web.OpenApiTransformationContext; +import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter; +import springfox.documentation.spi.DocumentationType; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +@Component +public class SpringFoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter { + @Override + public OpenAPI transform(OpenApiTransformationContext context) { + + HttpServletRequest request = context.request().get(); + + OpenAPI swagger = context.getSpecification(); + + String scheme = "http"; + String referer = request.getHeader("Referer"); + + if(StringUtils.hasLength(referer)){ + //获取协议 + scheme = referer.split(":")[0]; + } + + List servers = new ArrayList<>(); + String finalScheme = scheme; + //重新组装server信息 + swagger.getServers().forEach(item->{ + + //替换协议,去掉默认端口 + item.setUrl(clearDefaultPort(item.getUrl().replace("http", finalScheme))); + servers.add(item); + }); + swagger.setServers(servers); + return swagger; + } + + //清除默认端口 + private String clearDefaultPort(String url){ + + String port = url.split(":")[2]; + if("80".equals(port)||"443".equals(port)){ + return url.replace(":80","").replace(":443",""); + } + return url; + } + + @Override + public boolean supports(DocumentationType documentationType) { + return documentationType.equals(DocumentationType.OAS_30); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java b/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java new file mode 100644 index 0000000..9da1e5b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java @@ -0,0 +1,208 @@ +package com.gxwebsoft.common.core.config; + +import cn.hutool.core.util.StrUtil; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.oas.annotations.EnableOpenApi; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.RequestHandler; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; + +import com.google.common.base.Function; + +import java.util.List; +import java.util.Optional; +import java.util.function.Predicate; + +import javax.annotation.Resource; +import java.util.Collections; + +/** + * Swagger配置 + * + * @author WebSoft + * @since 2018-02-22 11:29:05 + */ +@EnableOpenApi +@Configuration +public class SwaggerConfig { + @Resource + private ConfigProperties config; + + private static final String SPLITOR = ";"; + + @Bean(value = "common") + public Docket CoreApi() { + Docket docket = new Docket(DocumentationType.OAS_30); + + final ApiInfo info = new ApiInfoBuilder() + .title(config.getSwaggerTitle()) + .description(config.getSwaggerDescription()) + .version(config.getSwaggerVersion()) + .contact(contact()) + .termsOfServiceUrl("https://server.gxwebsoft.com/api/system") + .build(); + + return docket + .apiInfo(info) + .groupName("common") + .enable(true) + .select() + .apis(RequestHandlerSelectors.basePackage("com.gxwebsoft.common")) + .paths(PathSelectors.any()) + .build() + .host("server.gxwebsoft.com") + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + + @Bean(value = "cms") + public Docket CmsApi() { + Docket docket = new Docket(DocumentationType.OAS_30); + if (StrUtil.isNotBlank(config.getSwaggerHost())) { + docket.host(config.getSwaggerHost()); + } + ApiInfo apiInfoBuilder = new ApiInfoBuilder() + .title("CMS模块") + .description(config.getSwaggerDescription()) + .version(config.getSwaggerVersion()) + .termsOfServiceUrl("https://modules.gxwebsoft.com/api/cms") + .contact(contact()) + .build(); + + return docket + .apiInfo(apiInfoBuilder) + //分组名称 + .groupName("cms") + .select() + //这里指定Controller扫描包路径 + .apis(RequestHandlerSelectors.basePackage("com.gxwebsoft.cms")) + .paths(PathSelectors.any()) + .build() + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + + + @Bean(value = "shop") + public Docket ShopApi() { + Docket docket = new Docket(DocumentationType.OAS_30); + if (StrUtil.isNotBlank(config.getSwaggerHost())) { + docket.host(config.getSwaggerHost()); + } + ApiInfo apiInfoBuilder = new ApiInfoBuilder() + .title("Shop模块") + .description(config.getSwaggerDescription()) + .version(config.getSwaggerVersion()) + .termsOfServiceUrl("https://modules.gxwebsoft.com/api/shop") + .contact(contact()) + .build(); + + return docket + .apiInfo(apiInfoBuilder) + //分组名称 + .groupName("shop") + .select() + //这里指定Controller扫描包路径 + .apis(RequestHandlerSelectors.basePackage("com.gxwebsoft.shop")) + .paths(PathSelectors.any()) + .build() + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + + @Bean(value = "oa") + public Docket OaApi() { + Docket docket = new Docket(DocumentationType.OAS_30); + if (StrUtil.isNotBlank(config.getSwaggerHost())) { + docket.host(config.getSwaggerHost()); + } + ApiInfo apiInfoBuilder = new ApiInfoBuilder() + .title("OA模块") + .description(config.getSwaggerDescription()) + .version(config.getSwaggerVersion()) + .termsOfServiceUrl("https://modules.gxwebsoft.com/api/oa") + .contact(contact()) + .build(); + + return docket + .apiInfo(apiInfoBuilder) + //分组名称 + .groupName("oa") + .select() + //这里指定Controller扫描包路径 + .apis(RequestHandlerSelectors.basePackage("com.gxwebsoft.oa")) + .paths(PathSelectors.any()) + .build() + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + private Contact contact() { + return new Contact("科技小王子", "https://www.gxwebsoft.com", "170083662@qq.com"); + } + + private List securitySchemes() { + return Collections.singletonList( + new ApiKey("Authorization", "Authorization", "header") + ); + } + + private List securityContexts() { + AuthorizationScope[] scopes = {new AuthorizationScope("global", "accessEverything")}; + List references = Collections.singletonList( + new SecurityReference("Authorization", scopes) + ); + return Collections.singletonList(SecurityContext.builder() + .securityReferences(references) + .build()); + } + + /** + * @description 重写basePackage方法,使能够实现多包访问 + * @param basePackage 所有包路径 + * @return Predicate + */ + public static Predicate basePackage(final String basePackage) { + return input -> declaringClass(input).map(handlerPackage(basePackage)::apply).orElse(true); + } + + /** + * @description 重写basePackage方法,使能够实现多包访问 + * @param basePackage 所有包路径 + * @return Function, Boolean> + */ + private static Function, Boolean> handlerPackage(final String basePackage) { + return input -> { + // 循环判断匹配 + for (String strPackage : basePackage.split(SPLITOR)) { + assert input != null; + boolean isMatch = input.getPackage().getName().startsWith(strPackage); + if (isMatch) { + return true; + } + } + return false; + }; + } + + /** + * @description 重写basePackage方法,使能够实现多包访问 + * @param input + * @return Optional> + */ + private static Optional> declaringClass(RequestHandler input) { + return Optional.ofNullable(input.declaringClass()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java b/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java new file mode 100644 index 0000000..2ed9d8b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.core.config; + +import com.gxwebsoft.common.core.Constants; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * WebMvc配置, 拦截器、资源映射等都在此配置 + * + * @author WebSoft + * @since 2019-06-12 10:11:16 + */ +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + /** + * 支持跨域访问 + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedHeaders("*") + .exposedHeaders(Constants.TOKEN_HEADER_NAME) + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH") + .allowCredentials(true) + .maxAge(3600); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/AppUserConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/AppUserConstants.java new file mode 100644 index 0000000..538e295 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/AppUserConstants.java @@ -0,0 +1,8 @@ +package com.gxwebsoft.common.core.constants; + +public class AppUserConstants { + // 成员角色 + public static final Integer TRIAL = 10; // 体验成员 + public static final Integer DEVELOPER = 20; // 开发者 + public static final Integer ADMINISTRATOR = 30; // 管理员 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/ArticleConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/ArticleConstants.java new file mode 100644 index 0000000..62a38cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/ArticleConstants.java @@ -0,0 +1,6 @@ +package com.gxwebsoft.common.core.constants; + +public class ArticleConstants extends BaseConstants { + public static final String[] ARTICLE_STATUS = {"已发布","待审核","已驳回","违规内容"}; + public static final String CACHE_KEY_ARTICLE = "Article:"; +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java new file mode 100644 index 0000000..6857250 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.common.core.constants; + +public class BalanceConstants { + // 余额变动场景 + public static final Integer BALANCE_RECHARGE = 10; // 用户充值 + public static final Integer BALANCE_USE = 20; // 用户消费 + public static final Integer BALANCE_RE_LET = 21; // 续租 + public static final Integer BALANCE_ADMIN = 30; // 管理员操作 + public static final Integer BALANCE_REFUND = 40; // 订单退款 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/BaseConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/BaseConstants.java new file mode 100644 index 0000000..66cf4c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/BaseConstants.java @@ -0,0 +1,5 @@ +package com.gxwebsoft.common.core.constants; + +public class BaseConstants { + public static final String[] STATUS = {"未定义","显示","隐藏"}; +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java new file mode 100644 index 0000000..e866654 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.core.constants; + +public class OrderConstants { + // 支付方式 + public static final String PAY_METHOD_BALANCE = "10"; // 余额支付 + public static final String PAY_METHOD_WX = "20"; // 微信支付 + public static final String PAY_METHOD_ALIPAY = "30"; // 支付宝支付 + public static final String PAY_METHOD_OTHER = "40"; // 其他支付 + + // 付款状态 + public static final Integer PAY_STATUS_NO_PAY = 10; // 未付款 + public static final Integer PAY_STATUS_SUCCESS = 20; // 已付款 + + // 发货状态 + public static final Integer DELIVERY_STATUS_NO = 10; // 未发货 + public static final Integer DELIVERY_STATUS_YES = 20; // 已发货 + public static final Integer DELIVERY_STATUS_30 = 30; // 部分发货 + + // 收货状态 + public static final Integer RECEIPT_STATUS_NO = 10; // 未收货 + public static final Integer RECEIPT_STATUS_YES = 20; // 已收货 + public static final Integer RECEIPT_STATUS_RETURN = 30; // 已退货 + + // 订单状态 + public static final Integer ORDER_STATUS_DOING = 10; // 进行中 + public static final Integer ORDER_STATUS_CANCEL = 20; // 已取消 + public static final Integer ORDER_STATUS_TO_CANCEL = 21; // 待取消 + public static final Integer ORDER_STATUS_COMPLETED = 30; // 已完成 + + // 订单结算状态 + public static final Integer ORDER_SETTLED_YES = 1; // 已结算 + public static final Integer ORDER_SETTLED_NO = 0; // 未结算 + + + + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/PlatformConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/PlatformConstants.java new file mode 100644 index 0000000..896f8e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/PlatformConstants.java @@ -0,0 +1,12 @@ +package com.gxwebsoft.common.core.constants; + +public class PlatformConstants { + public static final String MP_OFFICIAL = "MP-OFFICIAL"; // 微信公众号 + public static final String MP_WEIXIN = "MP-WEIXIN"; // 微信小程序 + public static final String MP_ALIPAY = "MP-ALIPAY"; // 支付宝小程序 + public static final String WEB = "WEB"; // web(同H5) + public static final String H5 = "H5"; // H5(推荐使用 WEB) + public static final String APP = "APP"; // App + public static final String MP_BAIDU = "MP-BAIDU"; // 百度小程序 + public static final String MP_TOUTIAO = "MP-TOUTIAO"; // 百度小程序 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java new file mode 100644 index 0000000..2cb60fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java @@ -0,0 +1,9 @@ +package com.gxwebsoft.common.core.constants; + +public class ProfitConstants { + // 收益类型 + public static final Integer PROFIT_TYPE10 = 10; // 推广收益 + public static final Integer PROFIT_TYPE20 = 20; // 团队收益 + public static final Integer PROFIT_TYPE30 = 30; // 门店收益 + public static final Integer PROFIT_TYPE40 = 30; // 区域收益 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/QRCodeConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/QRCodeConstants.java new file mode 100644 index 0000000..1b30868 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/QRCodeConstants.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.common.core.constants; + +public class QRCodeConstants { + // 二维码类型 + public static final String USER_QRCODE = "user"; // 用户二维码 + public static final String TASK_QRCODE = "task"; // 工单二维码 + public static final String ARTICLE_QRCODE = "article"; // 文章二维码 + public static final String GOODS_QRCODE = "goods"; // 商品二维码 + public static final String DIY_QRCODE = "diy"; // 工单二维码 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java new file mode 100644 index 0000000..2765754 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.common.core.constants; + +public class RedisConstants { + // 短信验证码Key + public static final String SMS_CODE_KEY = "sms"; + // 验证码过期时间 + public static final Long SMS_CODE_TTL = 5L; + // 微信凭证access-token + public static final String ACCESS_TOKEN_KEY = "access-token"; + // 空值防止击穿数据库 + public static final Long CACHE_NULL_TTL = 2L; + // 商户信息 + public static final String MERCHANT_KEY = "merchant"; + // 添加商户定位点 + public static final String MERCHANT_GEO_KEY = "merchant-geo"; + + // token + public static final String TOKEN_USER_ID = "cache:token:"; + // 排行榜 + public static final String USER_RANKING_BY_APPS = "userRankingByApps"; + // 搜索历史 + public static final String SEARCH_HISTORY = "searchHistory"; + // 租户系统设置信息 + public static final String TEN_ANT_SETTING_KEY = "setting"; + // 排行榜Key + public static final String USER_RANKING_BY_APPS_5 = "cache5:userRankingByApps"; + + + + // 哗啦啦key + public static final String getAllShop = "allShop"; + public static final String getBaseInfo = "baseInfo"; + public static final String getFoodClassCategory = "foodCategory"; + public static final String getOpenFood = "openFood"; + public static final String haulalaGeoKey = "cache10:hualala-geo"; + public static final String HLL_CART_KEY = "hll-cart"; // hll-cart[shopId]:[userId] + public static final String HLL_CART_FOOD_KEY = "hll-cart-list"; // hll-cart-list[shopId]:[userId] + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/TaskConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/TaskConstants.java new file mode 100644 index 0000000..42cec5e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/TaskConstants.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.core.constants; + +public class TaskConstants { + // 工单进度 + public static final Integer TOBEARRANGED = 0; // 待安排 + public static final Integer PENDING = 1; // 待处理 + public static final Integer PROCESSING = 2; // 处理中 + public static final Integer TOBECONFIRMED = 3; // 待评价 + public static final Integer COMPLETED = 4; // 已完成 + public static final Integer CLOSED = 5; // 已关闭 + + // 工单状态 + public static final Integer TASK_STATUS_0 = 0; // 待处理 + public static final Integer TASK_STATUS_1 = 1; // 已完成 + + // 操作类型 + public static final String ACTION_1 = "派单"; + public static final String ACTION_2 = "已解决"; + public static final String ACTION_3 = "关单"; + public static final String ACTION_4 = "分享"; + public static final String ACTION_5 = "编辑"; +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/WebsiteConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/WebsiteConstants.java new file mode 100644 index 0000000..a49f4ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/WebsiteConstants.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.core.constants; + +public class WebsiteConstants extends BaseConstants { + // 运行状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + public static final String[] WEBSITE_STATUS_NAME = {"未开通","运行中","维护中","已关闭","已欠费停机","违规关停"}; + // 状态图标 + public static final String[] WEBSITE_STATUS_ICON = {"error","success","warning","error","error","error"}; + // 关闭原因 + public static final String[] WEBSITE_STATUS_TEXT = {"产品未开通","","系统升级维护","","已欠费停机","违规关停"}; + // 跳转地址 + public static final String[] WEBSITE_STATUS_URL = {"https://websoft.top","","","","https://websoft.top/user","https://websoft.top/user"}; + // 跳转按钮文字 + public static final String[] WEBSITE_STATUS_BTN_TEXT = {"立即开通","","","","立即续费","申请解封"}; +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java new file mode 100644 index 0000000..a025610 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java @@ -0,0 +1,6 @@ +package com.gxwebsoft.common.core.constants; + +public class WxOfficialConstants { + // 获取 Access token + public static final String GET_ACCESS_TOKEN_API = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; +} diff --git a/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java b/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java new file mode 100644 index 0000000..8e10e82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.core.exception; + +import com.gxwebsoft.common.core.Constants; + +/** + * 自定义业务异常 + * + * @author WebSoft + * @since 2018-02-22 11:29:28 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + private Integer code; + + public BusinessException() { + this(Constants.RESULT_ERROR_MSG); + } + + public BusinessException(String message) { + this(Constants.RESULT_ERROR_CODE, message); + } + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + } + + public BusinessException(Integer code, String message, Throwable cause) { + super(message, cause); + this.code = code; + } + + public BusinessException(Integer code, String message, Throwable cause, + boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + this.code = code; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java b/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..6649a2d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.core.exception; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletResponse; + +/** + * 全局异常处理器 + * + * @author WebSoft + * @since 2018-02-22 11:29:30 + */ +@ControllerAdvice +public class GlobalExceptionHandler { + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @ResponseBody + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public ApiResult methodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e, + HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.RESULT_ERROR_CODE, "请求方式不正确").setError(e.toString()); + } + + @ResponseBody + @ExceptionHandler(AccessDeniedException.class) + public ApiResult accessDeniedExceptionHandler(AccessDeniedException e, HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG).setError(e.toString()); + } + + @ResponseBody + @ExceptionHandler(BusinessException.class) + public ApiResult businessExceptionHandler(BusinessException e, HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(e.getCode(), e.getMessage()); + } + + @ResponseBody + @ExceptionHandler(Throwable.class) + public ApiResult exceptionHandler(Throwable e, HttpServletResponse response) { + logger.error(e.getMessage(), e); + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.RESULT_ERROR_CODE, Constants.RESULT_ERROR_MSG).setError(e.toString()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java new file mode 100644 index 0000000..66acb5c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java @@ -0,0 +1,29 @@ +package com.gxwebsoft.common.core.security; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 没有访问权限异常处理 + * + * @author WebSoft + * @since 2020-03-25 00:35:03 + */ +@Component +public class JwtAccessDeniedHandler implements AccessDeniedHandler { + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) + throws IOException, ServletException { + CommonUtil.responseError(response, Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG, e.getMessage()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java new file mode 100644 index 0000000..3be2908 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.common.core.security; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 没有登录异常处理 + * + * @author WebSoft + * @since 2020-03-25 00:35:03 + */ +@Component +public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) + throws IOException, ServletException { +// CommonUtil.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG, +// e.getMessage()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java new file mode 100644 index 0000000..8a7aa74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.common.core.security; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.utils.SignCheckUtil; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.User; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.annotation.Resource; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 处理携带token的请求过滤器 + * + * @author WebSoft + * @since 2020-03-30 20:48:05 + */ +@Component +public class JwtAuthenticationFilter extends OncePerRequestFilter { + @Resource + private ConfigProperties configProperties; + @Value("${spring.profiles.active}") + String active; + @Resource + private RedisUtil redisUtil; + // 是否读取用户信息 + public static Boolean isReadUserInfo = true; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) + throws ServletException, IOException { + String access_token = JwtUtil.getAccessToken(request); + if (StrUtil.isNotBlank(access_token)) { + try { + // 解析token + Claims claims = JwtUtil.parseToken(access_token, configProperties.getTokenKey()); + JwtSubject jwtSubject = JwtUtil.getJwtSubject(claims); + + // 请求主服务器获取用户信息 + if (isReadUserInfo) { + HashMap map = new HashMap<>(); + map.put("username", jwtSubject.getUsername()); + map.put("tenantId", jwtSubject.getTenantId()); + // 链式构建请求 + String result = HttpRequest.post("https://server.gxwebsoft.com/api/auth/user") + .header("Authorization", access_token) + .header("Tenantid", jwtSubject.getTenantId().toString()) + .body(JSONUtil.toJSONString(map))//表单内容 + .timeout(20000)//超时,毫秒 + .execute().body(); + + // 校验服务器域名白名单 + final SignCheckUtil checkUtil = new SignCheckUtil(); + String key = "WhiteDomain:" + jwtSubject.getTenantId(); + List whiteDomains = redisUtil.get(key, List.class); + // 生产环境 + if (active.equals("prod") && !checkUtil.checkWhiteDomains(whiteDomains, request.getServerName())) { + throw new UsernameNotFoundException("The requested domain name is not on the whitelist"); + } + + JSONObject jsonObject = JSONObject.parseObject(result); + if(jsonObject.getString("code").equals("401")){ + throw new UsernameNotFoundException("Username not found"); + } + final String data = jsonObject.getString("data"); + final User user = JSONObject.parseObject(data, User.class); + List authorities = user.getAuthorities().stream() + .filter(m -> StrUtil.isNotBlank(m.getAuthority())).collect(Collectors.toList()); + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken( + user, null, authorities); + SecurityContextHolder.getContext().setAuthentication(authentication); + + // token将要过期签发新token, 防止突然退出登录 +// long expiration = (claims.getExpiration().getTime() - new Date().getTime()) / 1000 / 60; +// if (expiration < configProperties.getTokenRefreshTime()) { +// String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(), +// configProperties.getTokenKey()); +// response.addHeader(Constants.TOKEN_HEADER_NAME, token); +// loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REFRESH, null, +// user.getTenantId(), request); +// } + + } + } catch (ExpiredJwtException e) { + CommonUtil.responseError(response, Constants.TOKEN_EXPIRED_CODE, Constants.TOKEN_EXPIRED_MSG, + e.getMessage()); + return; + } catch (Exception e) { + CommonUtil.responseError(response, Constants.BAD_CREDENTIALS_CODE, Constants.BAD_CREDENTIALS_MSG, + e.toString()); + return; + } + } + chain.doFilter(request, response); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java b/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java new file mode 100644 index 0000000..1a0ff7d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.core.security; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * Jwt载体 + * + * @author WebSoft + * @since 2021-09-03 00:11:12 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class JwtSubject implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 账号 + */ + private String username; + + /** + * 租户id + */ + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java b/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java new file mode 100644 index 0000000..2f05d23 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.common.core.security; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.JSONUtil; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import io.jsonwebtoken.io.Decoders; +import io.jsonwebtoken.io.Encoders; +import io.jsonwebtoken.security.Keys; + +import javax.servlet.http.HttpServletRequest; +import java.security.Key; +import java.util.Date; + +/** + * JWT工具类 + * + * @author WebSoft + * @since 2018-01-21 16:30:59 + */ +public class JwtUtil { + + /** + * 获取请求中的access_token + * + * @param request HttpServletRequest + * @return String + */ + public static String getAccessToken(HttpServletRequest request) { + String access_token = ServletUtil.getHeaderIgnoreCase(request, Constants.TOKEN_HEADER_NAME); + if (StrUtil.isNotBlank(access_token)) { + if (access_token.startsWith(Constants.TOKEN_TYPE)) { + access_token = StrUtil.removePrefix(access_token, Constants.TOKEN_TYPE).trim(); + } + } else { + access_token = request.getParameter(Constants.TOKEN_PARAM_NAME); + } + return access_token; + } + + /** + * 生成token + * + * @param subject 载体 + * @param expire 过期时间 + * @param base64EncodedKey base64编码的Key + * @return token + */ + public static String buildToken(JwtSubject subject, Long expire, String base64EncodedKey) { + return buildToken(JSONUtil.toJSONString(subject), expire, decodeKey(base64EncodedKey)); + } + + /** + * 生成token + * + * @param subject 载体 + * @param expire 过期时间 + * @param key 密钥 + * @return token + */ + public static String buildToken(String subject, Long expire, Key key) { + Date expireDate = new Date(new Date().getTime() + 1000 * expire); + return Jwts.builder() + .setSubject(subject) + .setExpiration(expireDate) + .setIssuedAt(new Date()) + .signWith(key) + .compact(); + } + + /** + * 解析token + * + * @param token token + * @param base64EncodedKey base64编码的Key + * @return Claims + */ + public static Claims parseToken(String token, String base64EncodedKey) { + return parseToken(token, decodeKey(base64EncodedKey)); + } + + /** + * 解析token + * + * @param token token + * @param key 密钥 + * @return Claims + */ + public static Claims parseToken(String token, Key key) { + return Jwts.parserBuilder() + .setSigningKey(key) + .build() + .parseClaimsJws(token) + .getBody(); + } + + /** + * 获取JwtSubject + * + * @param claims Claims + * @return JwtSubject + */ + public static JwtSubject getJwtSubject(Claims claims) { + return JSONUtil.parseObject(claims.getSubject(), JwtSubject.class); + } + + /** + * 生成Key + * + * @return Key + */ + public static Key randomKey() { + return Keys.secretKeyFor(SignatureAlgorithm.HS256); + } + + /** + * base64编码key + * + * @return String + */ + public static String encodeKey(Key key) { + return Encoders.BASE64.encode(key.getEncoded()); + } + + /** + * base64编码Key + * + * @param base64EncodedKey base64编码的key + * @return Key + */ + public static Key decodeKey(String base64EncodedKey) { + if (StrUtil.isBlank(base64EncodedKey)) { + return null; + } + return Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64EncodedKey)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java new file mode 100644 index 0000000..23094a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java @@ -0,0 +1,106 @@ +package com.gxwebsoft.common.core.security; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +import javax.annotation.Resource; + +/** + * Spring Security配置 + * + * @author WebSoft + * @since 2020-03-23 18:04:52 + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Resource + private JwtAccessDeniedHandler jwtAccessDeniedHandler; + @Resource + private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; + @Resource + private JwtAuthenticationFilter jwtAuthenticationFilter; + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers(HttpMethod.OPTIONS, "/**") + .permitAll() + .antMatchers(HttpMethod.GET, "/api/file/**","/**", "/api/captcha", "/") + .permitAll() + .antMatchers( + "/api/login", + "/api/register", + "/api/cms/website/createWebsite", + "/druid/**", + "/swagger-ui.html", + "/swagger-resources/**", + "/webjars/**", + "/v2/api-docs", + "/v3/api-docs", + "/swagger-ui/**", + "/api/open/**", + "/hxz/v1/**", + "/api/sendSmsCaptcha", + "/api/login-alipay/*", + "/api/wx-login/loginByMpWxPhone", + "/api/shop/payment/mp-alipay/notify", + "/api/shop/payment/mp-alipay/test/**", + "/api/shop/payment/mp-alipay/getPhoneNumber", + "/api/cms/cms-order/**", + "/api/shop/shop-order/notify/**", + "/api/mp/mp/component_verify_ticket", + "/api/mp/mp/callback", + "/api/shop/test/**", + "/api/shop/wx-login/**", + "/api/shop/wx-native-pay/**", + "/api/shop/wx-pay/**", + "/api/bszx/bszx-pay/notify/**", + "/api/wxWorkQrConnect", + "/WW_verify_QMv7HoblYU6z63bb.txt", + "/5zbYEPkyV4.txt", + "/api/love/user-plan-log/wx-pay/**", + "/api/cms/form-record", + "/api/shop/merchant-account/getMerchantAccountByPhone", + "/api/hjm/hjm-car/**", + "/api/chat/**" + ) + .permitAll() + .anyRequest() + .authenticated() + .and() + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .csrf() + .disable() + .cors() + .and() + .logout() + .disable() + .headers() + .frameOptions() + .disable() + .and() + .exceptionHandling() + .accessDeniedHandler(jwtAccessDeniedHandler) + .authenticationEntryPoint(jwtAuthenticationEntryPoint) + .and() + .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); + } + + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/AliYunSender.java b/src/main/java/com/gxwebsoft/common/core/utils/AliYunSender.java new file mode 100644 index 0000000..80fe4b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/AliYunSender.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.common.core.utils; +import cn.hutool.core.codec.Base64; +import org.springframework.stereotype.Component; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.UUID; + +@Component +public class AliYunSender { + /* + * 计算MD5+BASE64 + */ + public static String MD5Base64(String s) { + if (s == null) + return null; + String encodeStr = ""; + byte[] utfBytes = s.getBytes(); + MessageDigest mdTemp; + try { + mdTemp = MessageDigest.getInstance("MD5"); + mdTemp.update(utfBytes); + byte[] md5Bytes = mdTemp.digest(); + encodeStr = Base64.encode(md5Bytes); + } catch (Exception e) { + throw new Error("Failed to generate MD5 : " + e.getMessage()); + } + return encodeStr; + } + /* + * 计算 HMAC-SHA1 + */ + public static String HMACSha1(String data, String key) { + String result; + try { + SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1"); + Mac mac = Mac.getInstance("HmacSHA1"); + mac.init(signingKey); + byte[] rawHmac = mac.doFinal(data.getBytes()); + result = Base64.encode(rawHmac); + } catch (Exception e) { + throw new Error("Failed to generate HMAC : " + e.getMessage()); + } + return result; + } + /* + * 获取时间 + */ + public static String toGMTString(Date date) { + SimpleDateFormat df = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK); + df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT")); + return df.format(date); + } + /* + * 发送POST请求 + */ + public static String sendPost(String url, String body, String ak_id, String ak_secret) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + /* + * http header 参数 + */ + String method = "POST"; + String accept = "application/json"; + String content_type = "application/json;chrset=utf-8"; + String path = realUrl.getFile(); + String date = toGMTString(new Date()); + String host = realUrl.getHost(); + // 1.对body做MD5+BASE64加密 + String bodyMd5 = MD5Base64(body); + String uuid = UUID.randomUUID().toString(); + String stringToSign = method + "\n" + accept + "\n" + bodyMd5 + "\n" + content_type + "\n" + date + "\n" + + "x-acs-signature-method:HMAC-SHA1\n" + + "x-acs-signature-nonce:" + uuid + "\n" + + "x-acs-version:2019-01-02\n" + + path; + // 2.计算 HMAC-SHA1 + String signature = HMACSha1(stringToSign, ak_secret); + // 3.得到 authorization header + String authHeader = "acs " + ak_id + ":" + signature; + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("Accept", accept); + conn.setRequestProperty("Content-Type", content_type); + conn.setRequestProperty("Content-MD5", bodyMd5); + conn.setRequestProperty("Date", date); + conn.setRequestProperty("Host", host); + conn.setRequestProperty("Authorization", authHeader); + conn.setRequestProperty("x-acs-signature-nonce", uuid); + conn.setRequestProperty("x-acs-signature-method", "HMAC-SHA1"); + conn.setRequestProperty("x-acs-version", "2019-01-02"); // 版本可选 + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(body); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + InputStream is; + HttpURLConnection httpconn = (HttpURLConnection) conn; + if (httpconn.getResponseCode() == 200) { + is = httpconn.getInputStream(); + } else { + is = httpconn.getErrorStream(); + } + in = new BufferedReader(new InputStreamReader(is)); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java new file mode 100644 index 0000000..42975ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.common.core.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConstants; +import com.alipay.api.CertAlipayRequest; +import com.alipay.api.DefaultAlipayClient; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 支付宝工具类 + * @author leng + * + */ +@Component +public class AlipayConfigUtil { + private final StringRedisTemplate stringRedisTemplate; + public Integer tenantId; + public String gateway; + public JSONObject config; + public String appId; + public String privateKey; + public String appCertPublicKey; + public String alipayCertPublicKey; + public String alipayRootCert; + + @Resource + private ConfigProperties pathConfig; + + public AlipayConfigUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + // 实例化客户端 + public DefaultAlipayClient alipayClient(Integer tenantId) throws AlipayApiException { + this.gateway = "https://openapi.alipay.com/gateway.do"; + this.tenantId = tenantId; + this.payment(tenantId); + CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); + certAlipayRequest.setServerUrl(this.gateway); + certAlipayRequest.setAppId(this.appId); + certAlipayRequest.setPrivateKey(this.privateKey); + certAlipayRequest.setFormat(AlipayConstants.FORMAT_JSON); + certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8); + certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2); + certAlipayRequest.setCertPath(this.appCertPublicKey); + certAlipayRequest.setAlipayPublicCertPath(this.alipayCertPublicKey); + certAlipayRequest.setRootCertPath(this.alipayRootCert); +// System.out.println("this.appId = " + this.appId); +// System.out.println("this.appId = " + this.gateway); +// System.out.println("this.appId = " + this.privateKey); +// System.out.println("this.appId = " + this.appCertPublicKey); +// System.out.println("this.appId = " + this.alipayCertPublicKey); +// System.out.println("this.appId = " + this.alipayRootCert); +// System.out.println("this.config = " + this.config); + return new DefaultAlipayClient(certAlipayRequest); + } + + /** + * 获取支付宝秘钥 + */ + public JSONObject payment(Integer tenantId) { + System.out.println("tenantId = " + tenantId); + String key = "cache".concat(tenantId.toString()).concat(":setting:payment"); + System.out.println("key = " + key); + String cache = stringRedisTemplate.opsForValue().get(key); + if (cache == null) { + throw new BusinessException("支付方式未配置"); + } + // 解析json数据 + JSONObject payment = JSON.parseObject(cache.getBytes()); + this.config = payment; + this.appId = payment.getString("alipayAppId"); + this.privateKey = payment.getString("privateKey"); + this.appCertPublicKey = pathConfig.getUploadPath() + "file" + payment.getString("appCertPublicKey"); + this.alipayCertPublicKey = pathConfig.getUploadPath() + "file" + payment.getString("alipayCertPublicKey"); + this.alipayRootCert = pathConfig.getUploadPath() + "file" + payment.getString("alipayRootCert"); + return payment; + } + + public String appId(){ + return this.appId; + } + + public String privateKey(){ + return this.privateKey; + } + + public String appCertPublicKey(){ + return this.appCertPublicKey; + } + + public String alipayCertPublicKey(){ + return this.alipayCertPublicKey; + } + + public String alipayRootCert(){ + return this.alipayRootCert; + } + + + + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java b/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java new file mode 100644 index 0000000..2258661 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java @@ -0,0 +1,266 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.result.RedisResult; +import org.springframework.data.geo.Point; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +import static com.gxwebsoft.common.core.constants.RedisConstants.CACHE_NULL_TTL; + +@Component +public class CacheClient { + private final StringRedisTemplate stringRedisTemplate; + public static Integer tenantId; + + public CacheClient(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant) + */ + public void set(String key, T entity){ + stringRedisTemplate.opsForValue().set(prefix(key), JSONUtil.toJSONString(entity)); + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant,1L,TimeUnit.DAYS) + */ + public void set(String key, T entity, Long time, TimeUnit unit){ + stringRedisTemplate.opsForValue().set(prefix(key), JSONUtil.toJSONString(entity),time,unit); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * 示例 cacheClient.get(key) + * @return merchant + */ + public String get(String key) { + return stringRedisTemplate.opsForValue().get(prefix(key)); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * @param clazz Merchant.class + * @param + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @return merchant + */ + public T get(String key, Class clazz) { + String json = stringRedisTemplate.opsForValue().get(prefix(key)); + if(StrUtil.isNotBlank(json)){ + return JSONUtil.parseObject(json, clazz); + } + return null; + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param field 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPut(String key, String field, T entity) { + stringRedisTemplate.opsForHash().put(prefix(key),field,JSONUtil.toJSONString(entity)); + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param map 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPutAll(String key, Map map) { + stringRedisTemplate.opsForHash().putAll(prefix(key),map); + } + + /** + * 读取redis缓存(哈希类型) + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @param key [表名]:id + * @param field 字段 + * @return merchant + */ + public T hGet(String key, String field, Class clazz) { + Object obj = stringRedisTemplate.opsForHash().get(prefix(key), field); + return JSONUtil.parseObject(JSONUtil.toJSONString(obj),clazz); + } + + public List hValues(String key){ + return stringRedisTemplate.opsForHash().values(prefix(key)); + } + + public Long hSize(String key){ + return stringRedisTemplate.opsForHash().size(prefix(key)); + } + + // 逻辑过期方式写入redis + public void setWithLogicalExpire(String key, T value, Long time, TimeUnit unit){ + // 设置逻辑过期时间 + final RedisResult redisResult = new RedisResult<>(); + redisResult.setData(value); + redisResult.setExpireTime(LocalDateTime.now().plusSeconds(unit.toSeconds(time))); + stringRedisTemplate.opsForValue().set(prefix(key),JSONUtil.toJSONString(redisResult)); + } + + // 读取redis + public R query(String keyPrefix, ID id, Class clazz, Function dbFallback, Long time, TimeUnit unit){ + String key = keyPrefix + id; + // 1.从redis查询缓存 + final String json = stringRedisTemplate.opsForValue().get(prefix(key)); + // 2.判断是否存在 + if (StrUtil.isNotBlank(json)) { + // 3.存在,直接返回 + return JSONUtil.parseObject(json,clazz); + } + // 判断命中的是否为空值 + if (json != null) { + return null; + } + // 4. 不存在,跟进ID查询数据库 + R r = dbFallback.apply(id); + // 5. 数据库不存在,返回错误 + if(r == null){ + // 空值写入数据库 + this.set(prefix(key),"",CACHE_NULL_TTL,TimeUnit.MINUTES); + return null; + } + // 写入redis + this.set(prefix(key),r,time,unit); + return r; + } + + /** + * 添加商户定位点 + * @param key geo + * @param id + * 示例 cacheClient.geoAdd("merchant-geo",merchant) + */ + public void geoAdd(String key, Double x, Double y, String id){ + stringRedisTemplate.opsForGeo().add(prefix(key),new Point(x,y),id); + } + + /** + * 删除定位 + * @param key geo + * @param id + * 示例 cacheClient.geoRemove("merchant-geo",id) + */ + public void geoRemove(String key, Integer id){ + stringRedisTemplate.opsForGeo().remove(prefix(key),id.toString()); + } + + + + public void sAdd(String key, T entity){ + stringRedisTemplate.opsForSet().add(prefix(key),JSONUtil.toJSONString(entity)); + } + + public Set sMembers(String key){ + return stringRedisTemplate.opsForSet().members(prefix(key)); + } + + // 更新排行榜 + public void zAdd(String key, Integer userId, Double value) { + stringRedisTemplate.opsForZSet().add(prefix(key),userId.toString(),value); + } + // 增加元素的score值,并返回增加后的值 + public Double zIncrementScore(String key,Integer userId, Double delta){ + return stringRedisTemplate.opsForZSet().incrementScore(key, userId.toString(), delta); + } + // 获取排名榜 + public Set range(String key, Integer start, Integer end) { + return stringRedisTemplate.opsForZSet().range(prefix(key), start, end); + } + // 获取排名榜 + public Set reverseRange(String key, Integer start, Integer end){ + return stringRedisTemplate.opsForZSet().reverseRange(prefix(key), start, end); + } + // 获取分数 + public Double score(String key, Object value){ + return stringRedisTemplate.opsForZSet().score(prefix(key), value); + } + + public void delete(String key){ + stringRedisTemplate.delete(prefix(key)); + } + + // 存储在list头部 + public void leftPush(String key, String keyword){ + stringRedisTemplate.opsForList().leftPush(prefix(key),keyword); + } + + // 获取列表指定范围内的元素 + public List listRange(String key,Long start, Long end){ + return stringRedisTemplate.opsForList().range(prefix(key), start, end); + } + + // 获取列表长度 + public Long listSize(String key){ + return stringRedisTemplate.opsForList().size(prefix(key)); + } + + // 裁剪list + public void listTrim(String key){ + stringRedisTemplate.opsForList().trim(prefix(key), 0L, 100L); + } + + /** + * 读取后台系统设置信息 + * @param keyName 键名wx-word + * @param tenantId 租户ID + * @return + * key示例 cache10048:setting:wx-work + */ + public JSONObject getSettingInfo(String keyName,Integer tenantId){ + String key = "cache" + tenantId + ":setting:" + keyName; + final String cache = stringRedisTemplate.opsForValue().get(key); + assert cache != null; + return JSON.parseObject(cache); + } + + /** + * KEY前缀 + * cache[tenantId]:[key+id] + */ + public static String prefix(String key){ + String prefix = "cache"; + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + final Integer tenantId = ((User) object).getTenantId(); + prefix = prefix.concat(tenantId.toString()).concat(":"); + } + } + return prefix.concat(key); + } + + // 组装key + public String key(String name,Integer id){ + return name.concat(":").concat(id.toString()); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java new file mode 100644 index 0000000..6435db6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java @@ -0,0 +1,321 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.symmetric.AES; +import cn.hutool.crypto.symmetric.SymmetricAlgorithm; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.system.entity.Role; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * 常用工具方法 + * + * @author WebSoft + * @since 2017-06-10 10:10:22 + */ +public class CommonUtil { + + // 生成uuid的字符 + private static final String[] chars = new String[]{ + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", + "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" + }; + + /** + * 生成8位uuid + * + * @return String + */ + public static String randomUUID8() { + StringBuilder sb = new StringBuilder(); + String uuid = UUID.randomUUID().toString().replace("-", ""); + for (int i = 0; i < 8; i++) { + String str = uuid.substring(i * 4, i * 4 + 4); + int x = Integer.parseInt(str, 16); + sb.append(chars[x % 0x3E]); + } + return sb.toString(); + } + + /** + * 生成16位uuid + * + * @return String + */ + public static String randomUUID16() { + StringBuilder sb = new StringBuilder(); + String uuid = UUID.randomUUID().toString().replace("-", ""); + for (int i = 0; i < 16; i++) { + String str = uuid.substring(i * 2, i * 2 + 2); + int x = Integer.parseInt(str, 16); + sb.append(chars[x % 0x3E]); + } + return sb.toString(); + } + + /** + * 获取当前时间 + * + * @return String + */ + public static String currentTime() { + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss"); + return sdf.format(date); + } + + /** + * 生成10位随机用户名 + * + * @return String + */ + public static String randomUsername(String prefix) { + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss"); + String currentTime = sdf.format(date); + return prefix + currentTime; + } + + /** + * 生成订单号 + * 20233191166110426 + * 20230419135802391412 + * @return + */ + public static String createOrderNo() { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + RandomUtil.randomNumbers(2); + } + + /** + * 生成订单号 + * @param tenantId + * 20233191166110426 + * 20230419135802391412 + * @return + */ + public static String createOrderNo(String tenantId) { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + tenantId + RandomUtil.randomNumbers(2); + } + + /** + * 生成订单水流号 + * @param tenantId + * @return + */ + public static String serialNo(int tenantId) { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + tenantId + RandomUtil.randomNumbers(2); + } + + /** + * 生成会员卡号 + * @return + */ + public static String createCardNo() { + String prefix = DateTime.now().toString(DatePattern.PURE_TIME_PATTERN); + return "00" + prefix + RandomUtil.randomNumbers(2); + } + + /** + * 检查List是否有重复元素 + * + * @param list List + * @param mapper 获取需要检查的字段的Function + * @param 数据的类型 + * @param 需要检查的字段的类型 + * @return boolean + */ + public static boolean checkRepeat(List list, Function mapper) { + for (int i = 0; i < list.size(); i++) { + for (int j = 0; j < list.size(); j++) { + if (i != j && mapper.apply(list.get(i)).equals(mapper.apply(list.get(j)))) { + return true; + } + } + } + return false; + } + + /** + * List转为树形结构 + * + * @param data List + * @param parentId 顶级的parentId + * @param parentIdMapper 获取parentId的Function + * @param idMapper 获取id的Function + * @param consumer 赋值children的Consumer + * @param 数据的类型 + * @param parentId的类型 + * @return List + */ + public static List toTreeData(List data, R parentId, + Function parentIdMapper, + Function idMapper, + BiConsumer> consumer) { + List result = new ArrayList<>(); + for (T d : data) { + R dParentId = parentIdMapper.apply(d); + if (ObjectUtil.equals(parentId, dParentId)) { + R dId = idMapper.apply(d); + List children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); + consumer.accept(d, children); + result.add(d); + } + } + return result; + } + + /** + * 遍历树形结构数据 + * + * @param data List + * @param consumer 回调 + * @param mapper 获取children的Function + * @param 数据的类型 + */ + public static void eachTreeData(List data, Consumer consumer, Function> mapper) { + for (T d : data) { + consumer.accept(d); + List children = mapper.apply(d); + if (children != null && children.size() > 0) { + eachTreeData(children, consumer, mapper); + } + } + } + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public static T listGetOne(List records) { + return records == null || records.size() == 0 ? null : records.get(0); + } + + /** + * 支持跨域 + * + * @param response HttpServletResponse + */ + public static void addCrossHeaders(HttpServletResponse response) { + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "*"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME); + } + + /** + * 输出错误信息 + * + * @param response HttpServletResponse + * @param code 错误码 + * @param message 提示信息 + * @param error 错误信息 + */ + public static void responseError(HttpServletResponse response, Integer code, String message, String error) { + response.setContentType("application/json;charset=UTF-8"); + try { + PrintWriter out = response.getWriter(); + out.write(JSONUtil.toJSONString(new ApiResult<>(code, message, null, error))); + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static boolean hasRole(List array,String value){ + System.out.println("value = " + value); + if (value == null) { + return true; + } + if (array == null) { + return false; + } + if (!array.isEmpty()) { + final List collect = array.stream().map(Role::getRoleCode) + .collect(Collectors.toList()); + final boolean contains = collect.contains(value); + if (contains) { + return true; + } + } + return false; + } + + public static boolean hasRole(List array,List value){ + System.out.println("value = " + value); + if (value == null) { + return true; + } + if (array == null) { + return false; + } + if (!array.isEmpty()) { + final List collect = array.stream().map(Role::getRoleCode) + .collect(Collectors.toList()); + final boolean disjoint = Collections.disjoint(collect, value); + if (!disjoint) { + return true; + } + } + return false; + } + + public static AES aes(){ + // 随机生成密钥 + byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded(); + return SecureUtil.aes(key); + } + + // 机密文本 + public static String encrypt(String text){ + final AES aes = aes(); + return aes.encryptHex(text); + } + + // 解密 + public static String decrypt(String encrypt){ + final AES aes = aes(); + return aes.decryptStr(encrypt, CharsetUtil.CHARSET_UTF_8); + } + + /** + * 验证给定的字符串是否为有效的中国大陆手机号码。 + * + * @param phoneNumber 要验证的电话号码字符串 + * @return 如果字符串是有效的手机号码,则返回true;否则返回false + */ + public static boolean isValidPhoneNumber(String phoneNumber) { + // 定义手机号码的正则表达式 + String regex = "^1[3-9]\\d{9}$"; + + // 创建Pattern对象 + Pattern pattern = Pattern.compile(regex); + + // 使用matcher方法创建Matcher对象并进行匹配 + return pattern.matcher(phoneNumber).matches(); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/DomainUtils.java b/src/main/java/com/gxwebsoft/common/core/utils/DomainUtils.java new file mode 100644 index 0000000..64f4ad2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/DomainUtils.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.common.core.utils; + +import com.gxwebsoft.cms.entity.CmsDomain; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +public class DomainUtils { + public static boolean isDomainResolvable(String domain) { + try { + InetAddress.getByName(domain); + return true; + } catch (UnknownHostException e) { + return false; + } + } + + public static boolean DNSLookup(CmsDomain domain){ + try { + // 获取域名对应的InetAddress对象 + InetAddress inetAddress = InetAddress.getByName(domain.getDomain()); + final String hostAddress = inetAddress.getHostAddress(); + InetAddress inetAddress2 = InetAddress.getByName(domain.getHostValue()); + final String hostAddress2 = inetAddress2.getHostAddress(); + if(hostAddress.equals(hostAddress2)){ + return true; + } + return false; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java new file mode 100644 index 0000000..45201d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java @@ -0,0 +1,401 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.img.ImgUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IORuntimeException; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; +import org.apache.tika.Tika; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 文件上传下载工具类 + * + * @author WebSoft + * @since 2018-12-14 08:38:53 + */ +public class FileServerUtil { + // 除 text/* 外也需要设置输出编码的 content-type + private final static List SET_CHARSET_CONTENT_TYPES = Arrays.asList( + "application/json", + "application/javascript" + ); + + /** + * 上传文件 + * + * @param file MultipartFile + * @param directory 文件保存的目录 + * @param uuidName 是否用uuid命名 + * @return File + */ + public static File upload(MultipartFile file, String directory, boolean uuidName) + throws IOException, IllegalStateException { + File outFile = getUploadFile(file.getOriginalFilename(), directory, uuidName); + if (!outFile.getParentFile().exists()) { + if (!outFile.getParentFile().mkdirs()) { + throw new RuntimeException("make directory fail"); + } + } + file.transferTo(outFile); + return outFile; + } + + /** + * 上传base64格式文件 + * + * @param base64 base64编码字符 + * @param fileName 文件名称, 为空使用uuid命名 + * @param directory 文件保存的目录 + * @return File + */ + public static File upload(String base64, String fileName, String directory) + throws FileNotFoundException, IORuntimeException { + if (StrUtil.isBlank(base64) || !base64.startsWith("data:image/") || !base64.contains(";base64,")) { + throw new RuntimeException("base64 data error"); + } + String suffix = "." + base64.substring(11, base64.indexOf(";")); // 获取文件后缀 + boolean uuidName = StrUtil.isBlank(fileName); + File outFile = getUploadFile(uuidName ? suffix : fileName, directory, uuidName); + byte[] bytes = Base64.getDecoder().decode(base64.substring(base64.indexOf(";") + 8).getBytes()); + IoUtil.write(new FileOutputStream(outFile), true, bytes); + return outFile; + } + + /** + * 获取上传文件位置 + * + * @param name 文件名称 + * @param directory 上传目录 + * @param uuidName 是否使用uuid命名 + * @return File + */ + public static File getUploadFile(String name, String directory, boolean uuidName) { + // 当前日期作为上传子目录 + String dir = new SimpleDateFormat("yyyyMMdd/").format(new Date()); + // 获取文件后缀 + String suffix = (name == null || !name.contains(".")) ? "" : name.substring(name.lastIndexOf(".")); + // 使用uuid命名 + if (uuidName || name == null) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + return new File(directory, dir + uuid + suffix); + } + // 使用原名称, 存在相同则加(1) + File file = new File(directory, dir + name); + String prefix = StrUtil.removeSuffix(name, suffix); + int sameSize = 2; + while (file.exists()) { + file = new File(directory, dir + prefix + "(" + sameSize + ")" + suffix); + sameSize++; + } + return file; + } + + /** + * 查看文件, 支持断点续传 + * + * @param file 文件 + * @param pdfDir office转pdf输出目录 + * @param officeHome openOffice安装目录 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void preview(File file, String pdfDir, String officeHome, + HttpServletResponse response, HttpServletRequest request) { + preview(file, false, null, pdfDir, officeHome, response, request); + } + + /** + * 查看文件, 支持断点续传 + * + * @param file 文件 + * @param forceDownload 是否强制下载 + * @param fileName 强制下载的文件名称 + * @param pdfDir office转pdf输出目录 + * @param officeHome openOffice安装目录 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void preview(File file, boolean forceDownload, String fileName, String pdfDir, String officeHome, + HttpServletResponse response, HttpServletRequest request) { + CommonUtil.addCrossHeaders(response); + if (file == null || !file.exists()) { + outNotFund(response); + return; + } + if (forceDownload) { + setDownloadHeader(response, StrUtil.isBlank(fileName) ? file.getName() : fileName); + } else { + // office转pdf预览 + if (OpenOfficeUtil.canConverter(file.getName())) { + File pdfFile = OpenOfficeUtil.converterToPDF(file.getAbsolutePath(), pdfDir, officeHome); + if (pdfFile != null) { + file = pdfFile; + } + } + // 获取文件类型 + String contentType = getContentType(file); + if (contentType != null) { + response.setContentType(contentType); + // 设置编码 + if (contentType.startsWith("text/") || SET_CHARSET_CONTENT_TYPES.contains(contentType)) { + try { + String charset = JChardetFacadeUtil.detectCodepage(file.toURI().toURL()); + if (charset != null) { + response.setCharacterEncoding(charset); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + } else { + setDownloadHeader(response, file.getName()); + } + } + response.setHeader("Cache-Control", "public"); + output(file, response, request); + } + + /** + * 查看缩略图 + * + * @param file 原文件 + * @param thumbnail 缩略图文件 + * @param size 缩略图文件的最大值(kb) + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void previewThumbnail(File file, File thumbnail, Integer size, + HttpServletResponse response, HttpServletRequest request) { + // 如果是图片并且缩略图不存在则生成 + if (!thumbnail.exists() && isImage(file)) { + long fileSize = file.length(); + if ((fileSize / 1024) > size) { + try { + if (thumbnail.getParentFile().mkdirs()) { + System.out.println("生成缩略图1>>>>>>>>>>>>>>>> = " + thumbnail); + ImgUtil.scale(file, thumbnail, size / (fileSize / 1024f)); + if (thumbnail.exists() && thumbnail.length() > file.length()) { + FileUtil.copy(file, thumbnail, true); + } + }else{ + System.out.println("生成缩略图2>>>>>>>>>>>>>>>> = " + thumbnail); + ImgUtil.scale(file, thumbnail, size / (fileSize / 1024f)); + if (thumbnail.exists() && thumbnail.length() > file.length()) { + FileUtil.copy(file, thumbnail, true); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + preview(file, null, null, response, request); + return; + } + } + preview(thumbnail.exists() ? thumbnail : file, null, null, response, request); + } + + /** + * 输出文件流, 支持断点续传 + * + * @param file 文件 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void output(File file, HttpServletResponse response, HttpServletRequest request) { + long length = file.length(); // 文件总大小 + long start = 0, to = length - 1; // 开始读取位置, 结束读取位置 + long lastModified = file.lastModified(); // 文件修改时间 + response.setHeader("Accept-Ranges", "bytes"); + response.setHeader("ETag", "\"" + length + "-" + lastModified + "\""); + response.setHeader("Last-Modified", new Date(lastModified).toString()); + String range = request.getHeader("Range"); + if (range != null) { + response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); + String[] ranges = range.replace("bytes=", "").split("-"); + start = Long.parseLong(ranges[0].trim()); + if (ranges.length > 1) { + to = Long.parseLong(ranges[1].trim()); + } + response.setHeader("Content-Range", "bytes " + start + "-" + to + "/" + length); + } + response.setHeader("Content-Length", String.valueOf(to - start + 1)); + try { + output(file, response.getOutputStream(), 2048, start, to); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 输出文件流 + * + * @param file 文件 + * @param os 输出流 + */ + public static void output(File file, OutputStream os) { + output(file, os, null); + } + + /** + * 输出文件流 + * + * @param file 文件 + * @param os 输出流 + * @param size 读取缓冲区大小 + */ + public static void output(File file, OutputStream os, Integer size) { + output(file, os, size, null, null); + } + + /** + * 输出文件流, 支持分片 + * + * @param file 文件 + * @param os 输出流 + * @param size 读取缓冲区大小 + * @param start 开始位置 + * @param to 结束位置 + */ + public static void output(File file, OutputStream os, Integer size, Long start, Long to) { + BufferedInputStream is = null; + try { + is = new BufferedInputStream(new FileInputStream(file)); + if (start != null) { + long skip = is.skip(start); + if (skip < start) { + System.out.println("ERROR: skip fail[ skipped=" + skip + ", start= " + start + " ]"); + } + to = to - start + 1; + } + byte[] bytes = new byte[size == null ? 2048 : size]; + int len; + if (to == null) { + while ((len = is.read(bytes)) != -1) { + os.write(bytes, 0, len); + } + } else { + while (to > 0 && (len = is.read(bytes)) != -1) { + os.write(bytes, 0, to < len ? (int) ((long) to) : len); + to -= len; + } + } + os.flush(); + } catch (IOException ignored) { + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException ignored) { + } + } + if (is != null) { + try { + is.close(); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + } + } + } + + /** + * 获取文件类型 + * + * @param file 文件 + * @return String + */ + public static String getContentType(File file) { + String contentType = null; + if (file.exists()) { + try { + contentType = new Tika().detect(file); + } catch (IOException e) { + e.printStackTrace(); + } + } + return contentType; + } + + /** + * 判断文件是否是图片类型 + * + * @param file 文件 + * @return boolean + */ + public static boolean isImage(File file) { + return isImage(getContentType(file)); + } + + /** + * 判断文件是否是图片类型 + * + * @param contentType 文件类型 + * @return boolean + */ + public static boolean isImage(String contentType) { + return contentType != null && contentType.startsWith("image/"); + } + + /** + * 设置下载文件的header + * + * @param response HttpServletResponse + * @param fileName 文件名称 + */ + public static void setDownloadHeader(HttpServletResponse response, String fileName) { + response.setContentType("application/force-download"); + try { + fileName = URLEncoder.encode(fileName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); + } + + /** + * 输出404错误页面 + * + * @param response HttpServletResponse + */ + public static void outNotFund(HttpServletResponse response) { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + outMessage("404 Not Found", null, response); + } + + /** + * 输出错误页面 + * + * @param title 标题 + * @param message 内容 + * @param response HttpServletResponse + */ + public static void outMessage(String title, String message, HttpServletResponse response) { + response.setContentType("text/html;charset=UTF-8"); + try { + PrintWriter writer = response.getWriter(); + writer.write(""); + writer.write("" + title + ""); + writer.write("

" + title + "

"); + if (message != null) { + writer.write(message); + } + writer.write("

WebSoft File Server

"); + writer.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java b/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java new file mode 100644 index 0000000..888acc2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java @@ -0,0 +1,311 @@ +package com.gxwebsoft.common.core.utils; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java new file mode 100644 index 0000000..ee4f977 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.codec.Base64Encoder; + +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageOutputStream; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Iterator; +import java.io.File; + +public class ImageUtil { + public static String ImageBase64(String imgUrl) { + URL url = null; + InputStream is = null; + ByteArrayOutputStream outStream = null; + HttpURLConnection httpUrl = null; + try{ + url = new URL(imgUrl); + httpUrl = (HttpURLConnection) url.openConnection(); + httpUrl.connect(); + httpUrl.getInputStream(); + is = httpUrl.getInputStream(); + + outStream = new ByteArrayOutputStream(); + //创建一个Buffer字符串 + byte[] buffer = new byte[1024]; + //每次读取的字符串长度,如果为-1,代表全部读取完毕 + int len = 0; + //使用一个输入流从buffer里把数据读取出来 + while( (len=is.read(buffer)) != -1 ){ + //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 + outStream.write(buffer, 0, len); + } + // 对字节数组Base64编码 + return new Base64Encoder().encode(outStream.toByteArray()); + }catch (Exception e) { + e.printStackTrace(); + } + finally{ + if(is != null) + { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(outStream != null) + { + try { + outStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(httpUrl != null) + { + httpUrl.disconnect(); + } + } + return imgUrl; + } + + + public static void adjustQuality(File inputFile, File outputFile, float quality) throws IOException { + // 读取图片文件 + BufferedImage image = ImageIO.read(inputFile); + + // 获取JPEG ImageWriters的迭代器 + Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); + ImageWriter writer = iter.next(); + + // 创建输出文件 + ImageOutputStream ios = ImageIO.createImageOutputStream(outputFile); + writer.setOutput(ios); + + // 创建ImageWriteParam并设置压缩质量 + ImageWriteParam iwp = writer.getDefaultWriteParam(); + if (iwp.canWriteCompressed()) { + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + iwp.setCompressionQuality(quality); // 设置质量,1.0为最好,0.0最差 + } + + // 写入图片 + writer.write(null, new IIOImage(image, null, null), iwp); + writer.dispose(); + ios.close(); + } + +} + diff --git a/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java new file mode 100644 index 0000000..1b49fb7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java @@ -0,0 +1,2025 @@ +package com.gxwebsoft.common.core.utils; + +import java.io.*; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.charset.UnsupportedCharsetException; + +/** + * 文件编码检测工具, 核心代码来自 cpDetector 和 jChardet, 可以检测大多数文件的编码 + * + * @author WebSoft + * @since 2020-09-15 09:24:20 + */ +public class JChardetFacadeUtil { + + public static String detectCodepage(URL url) { + try { + Charset ret = JChardetFacade.getInstance().detectCodepage(url); + return ret == null ? null : ret.name(); + } catch (Exception ignored) { + } + return null; + } + + /** + * 下面代码来自: https://github.com/r91987/cpdetector + */ + public static class JChardetFacade extends AbstractCodepageDetector implements nsICharsetDetectionObserver { + private static JChardetFacade instance = null; + private static nsDetector det; + private byte[] buf = new byte[4096]; + private Charset codpage = null; + private boolean m_guessing = true; + private int amountOfVerifiers = 0; + + private JChardetFacade() { + det = new nsDetector(0); + det.Init(this); + this.amountOfVerifiers = det.getProbableCharsets().length; + } + + public static JChardetFacade getInstance() { + if (instance == null) { + instance = new JChardetFacade(); + } + + return instance; + } + + public synchronized Charset detectCodepage(InputStream in, int length) throws IOException { + this.Reset(); + int read = 0; + boolean done = false; + boolean isAscii = true; + Charset ret = null; + + int len; + do { + len = in.read(this.buf, 0, Math.min(this.buf.length, length - read)); + if (len > 0) { + read += len; + } + + if (!done) { + done = det.DoIt(this.buf, len, false); + } + } while (len > 0 && !done); + + det.DataEnd(); + if (this.codpage == null) { + if (this.m_guessing) { + ret = this.guess(); + } + } else { + ret = this.codpage; + } + return ret; + } + + private Charset guess() { + Charset ret = null; + String[] possibilities = det.getProbableCharsets(); + if (possibilities.length == this.amountOfVerifiers) { + ret = Charset.forName("US-ASCII"); + } else { + String check = possibilities[0]; + if (!check.equalsIgnoreCase("nomatch")) { + for (int i = 0; ret == null && i < possibilities.length; ++i) { + try { + ret = Charset.forName(possibilities[i]); + } catch (UnsupportedCharsetException ignored) { + } + } + } + } + return ret; + } + + public void Notify(String charset) { + this.codpage = Charset.forName(charset); + } + + public void Reset() { + det.Reset(); + this.codpage = null; + } + + public boolean isGuessing() { + return this.m_guessing; + } + + public synchronized void setGuessing(boolean guessing) { + this.m_guessing = guessing; + } + } + + /** + * + */ + public static abstract class AbstractCodepageDetector implements ICodepageDetector { + public AbstractCodepageDetector() { + } + + public Charset detectCodepage(URL url) throws IOException { + BufferedInputStream in = new BufferedInputStream(url.openStream()); + Charset result = this.detectCodepage(in, 2147483647); + in.close(); + return result; + } + + public final Reader open(URL url) throws IOException { + Reader ret = null; + Charset cs = this.detectCodepage(url); + if (cs != null) { + ret = new InputStreamReader(new BufferedInputStream(url.openStream()), cs); + } + + return ret; + } + + public int compareTo(Object o) { + String other = o.getClass().getName(); + String mine = this.getClass().getName(); + return mine.compareTo(other); + } + } + + /** + * + */ + interface ICodepageDetector extends Serializable, Comparable { + Reader open(URL var1) throws IOException; + + Charset detectCodepage(URL var1) throws IOException; + + Charset detectCodepage(InputStream var1, int var2) throws IOException; + } + + /** + * 以下代码开始是由Mozilla组织提供的JChardet, 它可以检测大多数文件的编码 + * http://jchardet.sourceforge.net/ + */ + public static class nsDetector extends nsPSMDetector implements nsICharsetDetector { + nsICharsetDetectionObserver mObserver = null; + + public nsDetector() { + } + + public nsDetector(int var1) { + super(var1); + } + + public void Init(nsICharsetDetectionObserver var1) { + this.mObserver = var1; + } + + public boolean DoIt(byte[] var1, int var2, boolean var3) { + if (var1 != null && !var3) { + this.HandleData(var1, var2); + return this.mDone; + } else { + return false; + } + } + + public void Done() { + this.DataEnd(); + } + + public void Report(String var1) { + if (this.mObserver != null) { + this.mObserver.Notify(var1); + } + + } + + public boolean isAscii(byte[] var1, int var2) { + for (int var3 = 0; var3 < var2; ++var3) { + if ((128 & var1[var3]) != 0) { + return false; + } + } + + return true; + } + } + + /** + * + */ + public static abstract class nsPSMDetector { + public static final int ALL = 0; + public static final int JAPANESE = 1; + public static final int CHINESE = 2; + public static final int SIMPLIFIED_CHINESE = 3; + public static final int TRADITIONAL_CHINESE = 4; + public static final int KOREAN = 5; + public static final int NO_OF_LANGUAGES = 6; + public static final int MAX_VERIFIERS = 16; + nsVerifier[] mVerifier; + nsEUCStatistics[] mStatisticsData; + nsEUCSampler mSampler = new nsEUCSampler(); + byte[] mState = new byte[16]; + int[] mItemIdx = new int[16]; + int mItems; + int mClassItems; + boolean mDone; + boolean mRunSampler; + boolean mClassRunSampler; + + public nsPSMDetector() { + this.initVerifiers(0); + this.Reset(); + } + + public nsPSMDetector(int var1) { + this.initVerifiers(var1); + this.Reset(); + } + + public nsPSMDetector(int var1, nsVerifier[] var2, nsEUCStatistics[] var3) { + this.mClassRunSampler = var3 != null; + this.mStatisticsData = var3; + this.mVerifier = var2; + this.mClassItems = var1; + this.Reset(); + } + + public void Reset() { + this.mRunSampler = this.mClassRunSampler; + this.mDone = false; + this.mItems = this.mClassItems; + + for (int var1 = 0; var1 < this.mItems; this.mItemIdx[var1] = var1++) { + this.mState[var1] = 0; + } + + this.mSampler.Reset(); + } + + protected void initVerifiers(int var1) { + boolean var2 = false; + int var3; + if (var1 >= 0 && var1 < 6) { + var3 = var1; + } else { + var3 = 0; + } + + this.mVerifier = null; + this.mStatisticsData = null; + if (var3 == 4) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, new Big5Statistics(), null, new EUCTWStatistics(), null, null, null}; + } else if (var3 == 5) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 3) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 1) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 2) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, new GB2312Statistics(), null, new Big5Statistics(), null, null, new EUCTWStatistics(), null, null, null}; + } else if (var3 == 0) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsBIG5Verifier(), new nsEUCTWVerifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, null, new EUCJPStatistics(), null, new EUCKRStatistics(), null, new Big5Statistics(), new EUCTWStatistics(), new GB2312Statistics(), null, null, null, null, null, null}; + } + + this.mClassRunSampler = this.mStatisticsData != null; + this.mClassItems = this.mVerifier.length; + } + + public abstract void Report(String var1); + + public boolean HandleData(byte[] var1, int var2) { + for (int var3 = 0; var3 < var2; ++var3) { + byte var5 = var1[var3]; + int var4 = 0; + + while (var4 < this.mItems) { + byte var6 = nsVerifier.getNextState(this.mVerifier[this.mItemIdx[var4]], var5, this.mState[var4]); + if (var6 == 2) { + this.Report(this.mVerifier[this.mItemIdx[var4]].charset()); + this.mDone = true; + return this.mDone; + } + + if (var6 == 1) { + --this.mItems; + if (var4 < this.mItems) { + this.mItemIdx[var4] = this.mItemIdx[this.mItems]; + this.mState[var4] = this.mState[this.mItems]; + } + } else { + this.mState[var4++] = var6; + } + } + + if (this.mItems <= 1) { + if (1 == this.mItems) { + this.Report(this.mVerifier[this.mItemIdx[0]].charset()); + } + + this.mDone = true; + return this.mDone; + } + + int var7 = 0; + int var8 = 0; + + for (var4 = 0; var4 < this.mItems; ++var4) { + if (!this.mVerifier[this.mItemIdx[var4]].isUCS2() && !this.mVerifier[this.mItemIdx[var4]].isUCS2()) { + ++var7; + var8 = var4; + } + } + + if (1 == var7) { + this.Report(this.mVerifier[this.mItemIdx[var8]].charset()); + this.mDone = true; + return this.mDone; + } + } + + if (this.mRunSampler) { + this.Sample(var1, var2); + } + + return this.mDone; + } + + public void DataEnd() { + if (!this.mDone) { + if (this.mItems == 2) { + if (this.mVerifier[this.mItemIdx[0]].charset().equals("GB18030")) { + this.Report(this.mVerifier[this.mItemIdx[1]].charset()); + this.mDone = true; + } else if (this.mVerifier[this.mItemIdx[1]].charset().equals("GB18030")) { + this.Report(this.mVerifier[this.mItemIdx[0]].charset()); + this.mDone = true; + } + } + + if (this.mRunSampler) { + this.Sample((byte[]) null, 0, true); + } + + } + } + + public void Sample(byte[] var1, int var2) { + this.Sample(var1, var2, false); + } + + public void Sample(byte[] var1, int var2, boolean var3) { + int var4 = 0; + int var6 = 0; + + int var5; + for (var5 = 0; var5 < this.mItems; ++var5) { + if (null != this.mStatisticsData[this.mItemIdx[var5]]) { + ++var6; + } + + if (!this.mVerifier[this.mItemIdx[var5]].isUCS2() && !this.mVerifier[this.mItemIdx[var5]].charset().equals("GB18030")) { + ++var4; + } + } + + this.mRunSampler = var6 > 1; + if (this.mRunSampler) { + this.mRunSampler = this.mSampler.Sample(var1, var2); + if ((var3 && this.mSampler.GetSomeData() || this.mSampler.EnoughData()) && var6 == var4) { + this.mSampler.CalFreq(); + int var7 = -1; + int var8 = 0; + float var9 = 0.0F; + + for (var5 = 0; var5 < this.mItems; ++var5) { + if (null != this.mStatisticsData[this.mItemIdx[var5]] && !this.mVerifier[this.mItemIdx[var5]].charset().equals("Big5")) { + float var10 = this.mSampler.GetScore(this.mStatisticsData[this.mItemIdx[var5]].mFirstByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mFirstByteWeight(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteWeight()); + if (0 == var8++ || var9 > var10) { + var9 = var10; + var7 = var5; + } + } + } + + if (var7 >= 0) { + this.Report(this.mVerifier[this.mItemIdx[var7]].charset()); + this.mDone = true; + } + } + } + + } + + public String[] getProbableCharsets() { + String[] var1; + if (this.mItems <= 0) { + var1 = new String[]{"nomatch"}; + return var1; + } else { + var1 = new String[this.mItems]; + + for (int var2 = 0; var2 < this.mItems; ++var2) { + var1[var2] = this.mVerifier[this.mItemIdx[var2]].charset(); + } + + return var1; + } + } + } + + /** + * + */ + public static interface nsICharsetDetectionObserver { + void Notify(String var1); + } + + /** + * + */ + public static interface nsICharsetDetector { + void Init(nsICharsetDetectionObserver var1); + + boolean DoIt(byte[] var1, int var2, boolean var3); + + void Done(); + } + + /** + * + */ + public static abstract class nsVerifier { + static final byte eStart = 0; + static final byte eError = 1; + static final byte eItsMe = 2; + static final int eidxSft4bits = 3; + static final int eSftMsk4bits = 7; + static final int eBitSft4bits = 2; + static final int eUnitMsk4bits = 15; + + nsVerifier() { + } + + public abstract String charset(); + + public abstract int stFactor(); + + public abstract int[] cclass(); + + public abstract int[] states(); + + public abstract boolean isUCS2(); + + public static byte getNextState(nsVerifier var0, byte var1, byte var2) { + return (byte) (255 & var0.states()[(var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255) >> 3] >> ((var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255 & 7) << 2) & 15); + } + } + + /** + * + */ + public static class nsEUCSampler { + int mTotal = 0; + int mThreshold = 200; + int mState = 0; + public int[] mFirstByteCnt = new int[94]; + public int[] mSecondByteCnt = new int[94]; + public float[] mFirstByteFreq = new float[94]; + public float[] mSecondByteFreq = new float[94]; + + public nsEUCSampler() { + this.Reset(); + } + + public void Reset() { + this.mTotal = 0; + this.mState = 0; + + for (int var1 = 0; var1 < 94; ++var1) { + this.mFirstByteCnt[var1] = this.mSecondByteCnt[var1] = 0; + } + + } + + boolean EnoughData() { + return this.mTotal > this.mThreshold; + } + + boolean GetSomeData() { + return this.mTotal > 1; + } + + boolean Sample(byte[] var1, int var2) { + if (this.mState == 1) { + return false; + } else { + int var3 = 0; + + for (int var4 = 0; var4 < var2 && 1 != this.mState; ++var3) { + int var10002; + switch (this.mState) { + case 0: + if ((var1[var3] & 128) != 0) { + if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { + ++this.mTotal; + var10002 = this.mFirstByteCnt[(255 & var1[var3]) - 161]++; + this.mState = 2; + } else { + this.mState = 1; + } + } + case 1: + break; + case 2: + if ((var1[var3] & 128) != 0) { + if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { + ++this.mTotal; + var10002 = this.mSecondByteCnt[(255 & var1[var3]) - 161]++; + this.mState = 0; + } else { + this.mState = 1; + } + } else { + this.mState = 1; + } + break; + default: + this.mState = 1; + } + + ++var4; + } + + return 1 != this.mState; + } + } + + void CalFreq() { + for (int var1 = 0; var1 < 94; ++var1) { + this.mFirstByteFreq[var1] = (float) this.mFirstByteCnt[var1] / (float) this.mTotal; + this.mSecondByteFreq[var1] = (float) this.mSecondByteCnt[var1] / (float) this.mTotal; + } + + } + + float GetScore(float[] var1, float var2, float[] var3, float var4) { + return var2 * this.GetScore(var1, this.mFirstByteFreq) + var4 * this.GetScore(var3, this.mSecondByteFreq); + } + + float GetScore(float[] var1, float[] var2) { + float var4 = 0.0F; + + for (int var5 = 0; var5 < 94; ++var5) { + float var3 = var1[var5] - var2[var5]; + var4 += var3 * var3; + } + + return (float) Math.sqrt((double) var4) / 94.0F; + } + } + + /** + * + */ + public static abstract class nsEUCStatistics { + public abstract float[] mFirstByteFreq(); + + public abstract float mFirstByteStdDev(); + + public abstract float mFirstByteMean(); + + public abstract float mFirstByteWeight(); + + public abstract float[] mSecondByteFreq(); + + public abstract float mSecondByteStdDev(); + + public abstract float mSecondByteMean(); + + public abstract float mSecondByteWeight(); + + public nsEUCStatistics() { + } + } + + /** + * + */ + public static class EUCJPStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCJPStatistics() { + mFirstByteFreq = new float[]{0.364808F, 0.0F, 0.0F, 0.145325F, 0.304891F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.001835F, 0.010771F, 0.006462F, 0.001157F, 0.002114F, 0.003231F, 0.001356F, 0.00742F, 0.004189F, 0.003231F, 0.003032F, 0.03319F, 0.006303F, 0.006064F, 0.009973F, 0.002354F, 0.00367F, 0.009135F, 0.001675F, 0.002792F, 0.002194F, 0.01472F, 0.011928F, 8.78E-4F, 0.013124F, 0.001077F, 0.009295F, 0.003471F, 0.002872F, 0.002433F, 9.57E-4F, 0.001636F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 2.79E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 0.0F}; + mFirstByteStdDev = 0.050407F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.640871F; + mSecondByteFreq = new float[]{0.002473F, 0.039134F, 0.152745F, 0.009694F, 3.59E-4F, 0.02218F, 7.58E-4F, 0.004308F, 1.6E-4F, 0.002513F, 0.003072F, 0.001316F, 0.00383F, 0.001037F, 0.00359F, 9.57E-4F, 1.6E-4F, 2.39E-4F, 0.006462F, 0.001596F, 0.031554F, 0.001316F, 0.002194F, 0.016555F, 0.003271F, 6.78E-4F, 5.98E-4F, 0.206438F, 7.18E-4F, 0.001077F, 0.00371F, 0.001356F, 0.001356F, 4.39E-4F, 0.004388F, 0.005704F, 8.78E-4F, 0.010172F, 0.007061F, 0.01468F, 6.38E-4F, 0.02573F, 0.002792F, 7.18E-4F, 0.001795F, 0.091551F, 7.58E-4F, 0.003909F, 5.58E-4F, 0.031195F, 0.007061F, 0.001316F, 0.022579F, 0.006981F, 0.00726F, 0.001117F, 2.39E-4F, 0.012127F, 8.78E-4F, 0.00379F, 0.001077F, 7.58E-4F, 0.002114F, 0.002234F, 6.78E-4F, 0.002992F, 0.003311F, 0.023416F, 0.001237F, 0.002753F, 0.005146F, 0.002194F, 0.007021F, 0.008497F, 0.013763F, 0.011768F, 0.006303F, 0.001915F, 6.38E-4F, 0.008776F, 9.18E-4F, 0.003431F, 0.057603F, 4.39E-4F, 4.39E-4F, 7.58E-4F, 0.002872F, 0.001675F, 0.01105F, 0.0F, 2.79E-4F, 0.012127F, 7.18E-4F, 0.00738F}; + mSecondByteStdDev = 0.028247F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.359129F; + } + } + + /** + * + */ + public static class nsEUCJPVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCJPVerifier() { + cclass = new int[32]; + cclass[0] = 1145324612; + cclass[1] = 1430537284; + cclass[2] = 1145324612; + cclass[3] = 1145328708; + cclass[4] = 1145324612; + cclass[5] = 1145324612; + cclass[6] = 1145324612; + cclass[7] = 1145324612; + cclass[8] = 1145324612; + cclass[9] = 1145324612; + cclass[10] = 1145324612; + cclass[11] = 1145324612; + cclass[12] = 1145324612; + cclass[13] = 1145324612; + cclass[14] = 1145324612; + cclass[15] = 1145324612; + cclass[16] = 1431655765; + cclass[17] = 827675989; + cclass[18] = 1431655765; + cclass[19] = 1431655765; + cclass[20] = 572662309; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1342177280; + states = new int[5]; + states[0] = 286282563; + states[1] = 572657937; + states[2] = 286265378; + states[3] = 319885329; + states[4] = 4371; + charset = "EUC-JP"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class EUCKRStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCKRStatistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 4.12E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.057502F, 0.033182F, 0.002267F, 0.016076F, 0.014633F, 0.032976F, 0.004122F, 0.011336F, 0.058533F, 0.024526F, 0.025969F, 0.054411F, 0.01958F, 0.063273F, 0.113974F, 0.029885F, 0.150041F, 0.059151F, 0.002679F, 0.009893F, 0.014839F, 0.026381F, 0.015045F, 0.069456F, 0.08986F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.025593F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.647437F; + mSecondByteFreq = new float[]{0.016694F, 0.0F, 0.012778F, 0.030091F, 0.002679F, 0.006595F, 0.001855F, 8.24E-4F, 0.005977F, 0.00474F, 0.003092F, 8.24E-4F, 0.01958F, 0.037304F, 0.008244F, 0.014633F, 0.001031F, 0.0F, 0.003298F, 0.002061F, 0.006183F, 0.005977F, 8.24E-4F, 0.021847F, 0.014839F, 0.052968F, 0.017312F, 0.007626F, 4.12E-4F, 8.24E-4F, 0.011129F, 0.0F, 4.12E-4F, 0.001649F, 0.005977F, 0.065746F, 0.020198F, 0.021434F, 0.014633F, 0.004122F, 0.001649F, 8.24E-4F, 8.24E-4F, 0.051937F, 0.01958F, 0.023289F, 0.026381F, 0.040396F, 0.009068F, 0.001443F, 0.00371F, 0.00742F, 0.001443F, 0.01319F, 0.002885F, 4.12E-4F, 0.003298F, 0.025969F, 4.12E-4F, 4.12E-4F, 0.006183F, 0.003298F, 0.066983F, 0.002679F, 0.002267F, 0.011129F, 4.12E-4F, 0.010099F, 0.015251F, 0.007626F, 0.043899F, 0.00371F, 0.002679F, 0.001443F, 0.010923F, 0.002885F, 0.009068F, 0.019992F, 4.12E-4F, 0.00845F, 0.005153F, 0.0F, 0.010099F, 0.0F, 0.001649F, 0.01216F, 0.011542F, 0.006595F, 0.001855F, 0.010923F, 4.12E-4F, 0.023702F, 0.00371F, 0.001855F}; + mSecondByteStdDev = 0.013937F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.352563F; + } + } + + /** + * + */ + public static class nsEUCKRVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCKRVerifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 572662304; + cclass[21] = 858923554; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662322; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 35791394; + states = new int[2]; + states[0] = 286331649; + states[1] = 1122850; + charset = "EUC-KR"; + stFactor = 4; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class EUCTWStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCTWStatistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.119286F, 0.052233F, 0.044126F, 0.052494F, 0.045906F, 0.019038F, 0.032465F, 0.026252F, 0.025502F, 0.015963F, 0.052493F, 0.019256F, 0.015137F, 0.031782F, 0.01737F, 0.018494F, 0.015575F, 0.016621F, 0.007444F, 0.011642F, 0.013916F, 0.019159F, 0.016445F, 0.007851F, 0.011079F, 0.022842F, 0.015513F, 0.010033F, 0.00995F, 0.010347F, 0.013103F, 0.015371F, 0.012502F, 0.007436F, 0.018253F, 0.014134F, 0.008907F, 0.005411F, 0.00957F, 0.013598F, 0.006092F, 0.007409F, 0.008432F, 0.005816F, 0.009349F, 0.005472F, 0.00717F, 0.00742F, 0.003681F, 0.007523F, 0.00461F, 0.006154F, 0.003348F, 0.005074F, 0.005922F, 0.005254F, 0.004682F, 0.002093F, 0.0F}; + mFirstByteStdDev = 0.016681F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.715599F; + mSecondByteFreq = new float[]{0.028933F, 0.011371F, 0.011053F, 0.007232F, 0.010192F, 0.004093F, 0.015043F, 0.011752F, 0.022387F, 0.00841F, 0.012448F, 0.007473F, 0.003594F, 0.007139F, 0.018912F, 0.006083F, 0.003302F, 0.010215F, 0.008791F, 0.024236F, 0.014107F, 0.014108F, 0.010303F, 0.009728F, 0.007877F, 0.009719F, 0.007952F, 0.021028F, 0.005764F, 0.009341F, 0.006591F, 0.012517F, 0.005921F, 0.008982F, 0.008771F, 0.012802F, 0.005926F, 0.008342F, 0.003086F, 0.006843F, 0.007576F, 0.004734F, 0.016404F, 0.008803F, 0.008071F, 0.005349F, 0.008566F, 0.01084F, 0.015401F, 0.031904F, 0.00867F, 0.011479F, 0.010936F, 0.007617F, 0.008995F, 0.008114F, 0.008658F, 0.005934F, 0.010452F, 0.009142F, 0.004519F, 0.008339F, 0.007476F, 0.007027F, 0.006025F, 0.021804F, 0.024248F, 0.015895F, 0.003768F, 0.010171F, 0.010007F, 0.010178F, 0.008316F, 0.006832F, 0.006364F, 0.009141F, 0.009148F, 0.012081F, 0.011914F, 0.004464F, 0.014257F, 0.006907F, 0.011292F, 0.018622F, 0.008149F, 0.004636F, 0.006612F, 0.013478F, 0.012614F, 0.005186F, 0.048285F, 0.006816F, 0.006743F, 0.008671F}; + mSecondByteStdDev = 0.00663F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.284401F; + } + } + + /** + * + */ + public static class nsEUCTWVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCTWVerifier() { + cclass = new int[32]; + cclass[0] = 572662306; + cclass[1] = 2236962; + cclass[2] = 572662306; + cclass[3] = 572654114; + cclass[4] = 572662306; + cclass[5] = 572662306; + cclass[6] = 572662306; + cclass[7] = 572662306; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 572662306; + cclass[16] = 0; + cclass[17] = 100663296; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 1145324592; + cclass[21] = 286331221; + cclass[22] = 286331153; + cclass[23] = 286331153; + cclass[24] = 858985233; + cclass[25] = 858993459; + cclass[26] = 858993459; + cclass[27] = 858993459; + cclass[28] = 858993459; + cclass[29] = 858993459; + cclass[30] = 858993459; + cclass[31] = 53687091; + states = new int[6]; + states[0] = 338898961; + states[1] = 571543825; + states[2] = 269623842; + states[3] = 286330880; + states[4] = 1052949; + states[5] = 16; + charset = "x-euc-tw"; + stFactor = 7; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class Big5Statistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public Big5Statistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.114427F, 0.061058F, 0.075598F, 0.048386F, 0.063966F, 0.027094F, 0.095787F, 0.029525F, 0.031331F, 0.036915F, 0.021805F, 0.019349F, 0.037496F, 0.018068F, 0.01276F, 0.030053F, 0.017339F, 0.016731F, 0.019501F, 0.01124F, 0.032973F, 0.016658F, 0.015872F, 0.021458F, 0.012378F, 0.017003F, 0.020802F, 0.012454F, 0.009239F, 0.012829F, 0.007922F, 0.010079F, 0.009815F, 0.010104F, 0.0F, 0.0F, 0.0F, 5.3E-5F, 3.5E-5F, 1.05E-4F, 3.1E-5F, 8.8E-5F, 2.7E-5F, 2.7E-5F, 2.6E-5F, 3.5E-5F, 2.4E-5F, 3.4E-5F, 3.75E-4F, 2.5E-5F, 2.8E-5F, 2.0E-5F, 2.4E-5F, 2.8E-5F, 3.1E-5F, 5.9E-5F, 4.0E-5F, 3.0E-5F, 7.9E-5F, 3.7E-5F, 4.0E-5F, 2.3E-5F, 3.0E-5F, 2.7E-5F, 6.4E-5F, 2.0E-5F, 2.7E-5F, 2.5E-5F, 7.4E-5F, 1.9E-5F, 2.3E-5F, 2.1E-5F, 1.8E-5F, 1.7E-5F, 3.5E-5F, 2.1E-5F, 1.9E-5F, 2.5E-5F, 1.7E-5F, 3.7E-5F, 1.8E-5F, 1.8E-5F, 1.9E-5F, 2.2E-5F, 3.3E-5F, 3.2E-5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.020606F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.675261F; + mSecondByteFreq = new float[]{0.020256F, 0.003293F, 0.045811F, 0.01665F, 0.007066F, 0.004146F, 0.009229F, 0.007333F, 0.003296F, 0.005239F, 0.008282F, 0.003791F, 0.006116F, 0.003536F, 0.004024F, 0.016654F, 0.009334F, 0.005429F, 0.033392F, 0.006121F, 0.008983F, 0.002801F, 0.004221F, 0.010357F, 0.014695F, 0.077937F, 0.006314F, 0.00402F, 0.007331F, 0.00715F, 0.005341F, 0.009195F, 0.00535F, 0.005698F, 0.004472F, 0.007242F, 0.004039F, 0.011154F, 0.016184F, 0.004741F, 0.012814F, 0.007679F, 0.008045F, 0.016631F, 0.009451F, 0.016487F, 0.007287F, 0.012688F, 0.017421F, 0.013205F, 0.03148F, 0.003404F, 0.009149F, 0.008921F, 0.007514F, 0.008683F, 0.008203F, 0.031403F, 0.011733F, 0.015617F, 0.015306F, 0.004004F, 0.010899F, 0.009961F, 0.008388F, 0.01092F, 0.003925F, 0.008585F, 0.009108F, 0.015546F, 0.004659F, 0.006934F, 0.007023F, 0.020252F, 0.005387F, 0.024704F, 0.006963F, 0.002625F, 0.009512F, 0.002971F, 0.008233F, 0.01F, 0.011973F, 0.010553F, 0.005945F, 0.006349F, 0.009401F, 0.008577F, 0.008186F, 0.008159F, 0.005033F, 0.008714F, 0.010614F, 0.006554F}; + mSecondByteStdDev = 0.009909F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.324739F; + } + } + + /** + * + */ + public static class nsBIG5Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsBIG5Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 304226850; + cclass[16] = 1145324612; + cclass[17] = 1145324612; + cclass[18] = 1145324612; + cclass[19] = 1145324612; + cclass[20] = 858993460; + cclass[21] = 858993459; + cclass[22] = 858993459; + cclass[23] = 858993459; + cclass[24] = 858993459; + cclass[25] = 858993459; + cclass[26] = 858993459; + cclass[27] = 858993459; + cclass[28] = 858993459; + cclass[29] = 858993459; + cclass[30] = 858993459; + cclass[31] = 53687091; + states = new int[3]; + states[0] = 286339073; + states[1] = 304226833; + states[2] = 1; + charset = "Big5"; + stFactor = 5; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class GB2312Statistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public GB2312Statistics() { + mFirstByteFreq = new float[]{0.011628F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.011628F, 0.012403F, 0.009302F, 0.003876F, 0.017829F, 0.037209F, 0.008527F, 0.010078F, 0.01938F, 0.054264F, 0.010078F, 0.041085F, 0.02093F, 0.018605F, 0.010078F, 0.013178F, 0.016279F, 0.006202F, 0.009302F, 0.017054F, 0.011628F, 0.008527F, 0.004651F, 0.006202F, 0.017829F, 0.024806F, 0.020155F, 0.013953F, 0.032558F, 0.035659F, 0.068217F, 0.010853F, 0.036434F, 0.117054F, 0.027907F, 0.100775F, 0.010078F, 0.017829F, 0.062016F, 0.012403F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.00155F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.020081F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.586533F; + mSecondByteFreq = new float[]{0.006202F, 0.031008F, 0.005426F, 0.003101F, 0.00155F, 0.003101F, 0.082171F, 0.014729F, 0.006977F, 0.00155F, 0.013953F, 0.0F, 0.013953F, 0.010078F, 0.008527F, 0.006977F, 0.004651F, 0.003101F, 0.003101F, 0.003101F, 0.008527F, 0.003101F, 0.005426F, 0.005426F, 0.005426F, 0.003101F, 0.00155F, 0.006202F, 0.014729F, 0.010853F, 0.0F, 0.011628F, 0.0F, 0.031783F, 0.013953F, 0.030233F, 0.039535F, 0.008527F, 0.015504F, 0.0F, 0.003101F, 0.008527F, 0.016279F, 0.005426F, 0.00155F, 0.013953F, 0.013953F, 0.044961F, 0.003101F, 0.004651F, 0.006977F, 0.00155F, 0.005426F, 0.012403F, 0.00155F, 0.015504F, 0.0F, 0.006202F, 0.00155F, 0.0F, 0.007752F, 0.006977F, 0.00155F, 0.009302F, 0.011628F, 0.004651F, 0.010853F, 0.012403F, 0.017829F, 0.005426F, 0.024806F, 0.0F, 0.006202F, 0.0F, 0.082171F, 0.015504F, 0.004651F, 0.0F, 0.006977F, 0.004651F, 0.0F, 0.008527F, 0.012403F, 0.004651F, 0.003876F, 0.003101F, 0.022481F, 0.024031F, 0.00155F, 0.047287F, 0.009302F, 0.00155F, 0.005426F, 0.017054F}; + mSecondByteStdDev = 0.014156F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.413467F; + } + } + + /** + * + */ + public static class nsGB2312Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsGB2312Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 572662304; + cclass[21] = 858993442; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 35791394; + states = new int[2]; + states[0] = 286331649; + states[1] = 1122850; + charset = "GB2312"; + stFactor = 4; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsGB18030Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsGB18030Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 858993459; + cclass[7] = 286331187; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 1109533218; + cclass[16] = 1717986917; + cclass[17] = 1717986918; + cclass[18] = 1717986918; + cclass[19] = 1717986918; + cclass[20] = 1717986918; + cclass[21] = 1717986918; + cclass[22] = 1717986918; + cclass[23] = 1717986918; + cclass[24] = 1717986918; + cclass[25] = 1717986918; + cclass[26] = 1717986918; + cclass[27] = 1717986918; + cclass[28] = 1717986918; + cclass[29] = 1717986918; + cclass[30] = 1717986918; + cclass[31] = 107374182; + states = new int[6]; + states[0] = 318767105; + states[1] = 571543825; + states[2] = 17965602; + states[3] = 286326804; + states[4] = 303109393; + states[5] = 17; + charset = "GB18030"; + stFactor = 7; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022CNVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022CNVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 0; + cclass[5] = 48; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 16384; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[8]; + states[0] = 304; + states[1] = 286331152; + states[2] = 572662289; + states[3] = 336663074; + states[4] = 286335249; + states[5] = 286331237; + states[6] = 286335249; + states[7] = 18944273; + charset = "ISO-2022-CN"; + stFactor = 9; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022JPVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022JPVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 570425344; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 458752; + cclass[5] = 3; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 1030; + cclass[9] = 1280; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[6]; + states[0] = 304; + states[1] = 286331153; + states[2] = 572662306; + states[3] = 1091653905; + states[4] = 303173905; + states[5] = 287445265; + charset = "ISO-2022-JP"; + stFactor = 8; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022KRVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022KRVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 196608; + cclass[5] = 64; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 20480; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[5]; + states[0] = 285212976; + states[1] = 572657937; + states[2] = 289476898; + states[3] = 286593297; + states[4] = 8465; + charset = "ISO-2022-KR"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsUCS2BEVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUCS2BEVerifier() { + cclass = new int[32]; + cclass[0] = 0; + cclass[1] = 2097408; + cclass[2] = 0; + cclass[3] = 12288; + cclass[4] = 0; + cclass[5] = 3355440; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 0; + cclass[21] = 0; + cclass[22] = 0; + cclass[23] = 0; + cclass[24] = 0; + cclass[25] = 0; + cclass[26] = 0; + cclass[27] = 0; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1409286144; + states = new int[7]; + states[0] = 288626549; + states[1] = 572657937; + states[2] = 291923490; + states[3] = 1713792614; + states[4] = 393569894; + states[5] = 1717659269; + states[6] = 1140326; + charset = "UTF-16BE"; + stFactor = 6; + } + + public boolean isUCS2() { + return true; + } + } + + /** + * + */ + public static class nsUCS2LEVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUCS2LEVerifier() { + cclass = new int[32]; + cclass[0] = 0; + cclass[1] = 2097408; + cclass[2] = 0; + cclass[3] = 12288; + cclass[4] = 0; + cclass[5] = 3355440; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 0; + cclass[21] = 0; + cclass[22] = 0; + cclass[23] = 0; + cclass[24] = 0; + cclass[25] = 0; + cclass[26] = 0; + cclass[27] = 0; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1409286144; + states = new int[7]; + states[0] = 288647014; + states[1] = 572657937; + states[2] = 303387938; + states[3] = 1712657749; + states[4] = 357927015; + states[5] = 1427182933; + states[6] = 1381717; + charset = "UTF-16LE"; + stFactor = 6; + } + + public boolean isUCS2() { + return true; + } + } + + /** + * + */ + public static class nsCP1252Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsCP1252Verifier() { + cclass = new int[32]; + cclass[0] = 572662305; + cclass[1] = 2236962; + cclass[2] = 572662306; + cclass[3] = 572654114; + cclass[4] = 572662306; + cclass[5] = 572662306; + cclass[6] = 572662306; + cclass[7] = 572662306; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 572662306; + cclass[16] = 572662274; + cclass[17] = 16851234; + cclass[18] = 572662304; + cclass[19] = 285286690; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 286331153; + cclass[25] = 286331153; + cclass[26] = 554766609; + cclass[27] = 286331153; + cclass[28] = 286331153; + cclass[29] = 286331153; + cclass[30] = 554766609; + cclass[31] = 286331153; + states = new int[3]; + states[0] = 571543601; + states[1] = 340853778; + states[2] = 65; + charset = "windows-1252"; + stFactor = 3; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsHZVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsHZVerifier() { + cclass = new int[32]; + cclass[0] = 1; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 0; + cclass[5] = 0; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 38813696; + cclass[16] = 286331153; + cclass[17] = 286331153; + cclass[18] = 286331153; + cclass[19] = 286331153; + cclass[20] = 286331153; + cclass[21] = 286331153; + cclass[22] = 286331153; + cclass[23] = 286331153; + cclass[24] = 286331153; + cclass[25] = 286331153; + cclass[26] = 286331153; + cclass[27] = 286331153; + cclass[28] = 286331153; + cclass[29] = 286331153; + cclass[30] = 286331153; + cclass[31] = 286331153; + states = new int[6]; + states[0] = 285213456; + states[1] = 572657937; + states[2] = 335548706; + states[3] = 341120533; + states[4] = 336872468; + states[5] = 36; + charset = "HZ-GB-2312"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsSJISVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsSJISVerifier() { + cclass = new int[32]; + cclass[0] = 286331152; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 304226850; + cclass[16] = 858993459; + cclass[17] = 858993459; + cclass[18] = 858993459; + cclass[19] = 858993459; + cclass[20] = 572662308; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 858993459; + cclass[29] = 1145393971; + cclass[30] = 1145324612; + cclass[31] = 279620; + states = new int[3]; + states[0] = 286339073; + states[1] = 572657937; + states[2] = 4386; + charset = "Shift_JIS"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsUTF8Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUTF8Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 858989090; + cclass[17] = 1145324612; + cclass[18] = 1145324612; + cclass[19] = 1145324612; + cclass[20] = 1431655765; + cclass[21] = 1431655765; + cclass[22] = 1431655765; + cclass[23] = 1431655765; + cclass[24] = 1717986816; + cclass[25] = 1717986918; + cclass[26] = 1717986918; + cclass[27] = 1717986918; + cclass[28] = -2004318073; + cclass[29] = -2003269496; + cclass[30] = -1145324614; + cclass[31] = 16702940; + states = new int[26]; + states[0] = -1408167679; + states[1] = 878082233; + states[2] = 286331153; + states[3] = 286331153; + states[4] = 572662306; + states[5] = 572662306; + states[6] = 290805009; + states[7] = 286331153; + states[8] = 290803985; + states[9] = 286331153; + states[10] = 293041937; + states[11] = 286331153; + states[12] = 293015825; + states[13] = 286331153; + states[14] = 295278865; + states[15] = 286331153; + states[16] = 294719761; + states[17] = 286331153; + states[18] = 298634257; + states[19] = 286331153; + states[20] = 297865489; + states[21] = 286331153; + states[22] = 287099921; + states[23] = 286331153; + states[24] = 285212689; + states[25] = 286331153; + charset = "UTF-8"; + stFactor = 16; + } + + public boolean isUCS2() { + return false; + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java new file mode 100644 index 0000000..8d63168 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + +/** + * JSON解析工具类 + * + * @author WebSoft + * @since 2017-06-10 10:10:39 + */ +public class JSONUtil { + private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final ObjectWriter objectWriter = objectMapper.writerWithDefaultPrettyPrinter(); + + /** + * 对象转json字符串 + * + * @param value 对象 + * @return String + */ + public static String toJSONString(Object value) { + return toJSONString(value, false); + } + + /** + * 对象转json字符串 + * + * @param value 对象 + * @param pretty 是否格式化输出 + * @return String + */ + public static String toJSONString(Object value, boolean pretty) { + if (value != null) { + if (value instanceof String) { + return (String) value; + } + try { + if (pretty) { + return objectWriter.writeValueAsString(value); + } + return objectMapper.writeValueAsString(value); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + /** + * json字符串转对象 + * + * @param json String + * @param clazz Class + * @return T + */ + public static T parseObject(String json, Class clazz) { + if (StrUtil.isNotBlank(json) && clazz != null) { + try { + return objectMapper.readValue(json, clazz); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java new file mode 100644 index 0000000..9651cce --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.extra.qrcode.QrCodeUtil; +import cn.hutool.extra.qrcode.QrConfig; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.net.URL; +import java.util.HashMap; + +import static com.gxwebsoft.common.core.constants.QRCodeConstants.*; + +/** + * 常用工具方法 + * + * @author WebSoft + * @since 2017-06-10 10:10:22 + */ +public class MyQrCodeUtil { + + private static final String logoUrl = "https://file.wsdns.cn/20230430/6fa31aca3b0d47af98a149cf2dd26a4f.jpeg"; + + /** + * 生成用户二维码 + */ + public static String getUserCode(Integer userId, String content) throws IOException { + return createQrCode(USER_QRCODE,userId,content); + } + + /** + * 生成工单二维码 + */ + public static String getTaskCode(Integer taskId, String content) throws IOException { + return createQrCode(TASK_QRCODE,taskId,content); + } + + /** + * 生成商品二维码 + */ + public static String getGoodsCode(Integer goodsId, String content) throws IOException { + return createQrCode(GOODS_QRCODE,goodsId,content); + } + + /** + * 生成自定义二维码 + */ + public static String getCodeMap(HashMap map) throws IOException { + return ""; + } + + /** + * 生成带水印的二维码 + * @param type 类型 + * @param id 实体ID + * @param content 二维码内容 + * @return 二维码图片地址 + */ + public static String createQrCode(String type,Integer id, String content) throws IOException { + String filePath = "/www/wwwroot/file.ws/file/qrcode/".concat(type).concat("/"); + String qrcodeUrl = "https://file.websoft.top/qrcode/".concat(type).concat("/"); + // 将URL转为BufferedImage + BufferedImage bufferedImage = ImageIO.read(new URL(logoUrl)); + // 生成二维码 + QrConfig config = new QrConfig(300, 300); + // 设置边距,既二维码和背景之间的边距 + config.setMargin(1); + // 附带小logo + config.setImg(bufferedImage); + // 保存路径 + filePath = filePath.concat(id + ".jpg"); + qrcodeUrl = qrcodeUrl.concat(id + ".jpg") + "?v=" + DateUtil.current(); + + // 生成二维码 + QrCodeUtil.generate(content, config, FileUtil.file(filePath)); + return qrcodeUrl; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java new file mode 100644 index 0000000..cca3990 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import org.artofsolving.jodconverter.OfficeDocumentConverter; +import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; +import org.artofsolving.jodconverter.office.OfficeManager; + +import java.io.File; +import java.util.Arrays; +import java.util.Base64; + +/** + * OpenOfficeUtil + * + * @author WebSoft + * @since 2018-12-14 08:38:19 + */ +public class OpenOfficeUtil { + // 支持转换pdf的文件后缀列表 + private static final String[] CAN_CONVERTER_FILES = new String[]{ + "doc", "docx", "xls", "xlsx", "ppt", "pptx" + }; + + /** + * 文件转pdf + * + * @param filePath 源文件路径 + * @param outDir 输出目录 + * @param officeHome OpenOffice安装路径 + * @return File + */ + public static File converterToPDF(String filePath, String outDir, String officeHome) { + return converterToPDF(filePath, outDir, officeHome, true); + } + + /** + * 文件转pdf + * + * @param filePath 源文件路径 + * @param outDir 输出目录 + * @param officeHome OpenOffice安装路径 + * @param cache 是否使用上次转换过的文件 + * @return File + */ + public static File converterToPDF(String filePath, String outDir, String officeHome, boolean cache) { + if (StrUtil.isBlank(filePath)) { + return null; + } + File srcFile = new File(filePath); + if (!srcFile.exists()) { + return null; + } + // 是否转换过 + String outPath = Base64.getEncoder().encodeToString(filePath.getBytes()) + .replace("/", "-").replace("+", "-"); + File outFile = new File(outDir, outPath + ".pdf"); + if (cache && outFile.exists()) { + return outFile; + } + // 转换 + OfficeManager officeManager = null; + try { + officeManager = getOfficeManager(officeHome); + OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); + return converterFile(srcFile, outFile, converter); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (officeManager != null) { + officeManager.stop(); + } + } + return null; + } + + /** + * 转换文件 + * + * @param inFile 源文件 + * @param outFile 输出文件 + * @param converter OfficeDocumentConverter + * @return File + */ + public static File converterFile(File inFile, File outFile, OfficeDocumentConverter converter) { + if (!outFile.getParentFile().exists()) { + if (!outFile.getParentFile().mkdirs()) { + return outFile; + } + } + converter.convert(inFile, outFile); + return outFile; + } + + /** + * 判断文件后缀是否可以转换pdf + * + * @param path 文件路径 + * @return boolean + */ + public static boolean canConverter(String path) { + try { + String suffix = path.substring(path.lastIndexOf(".") + 1); + return Arrays.asList(CAN_CONVERTER_FILES).contains(suffix); + } catch (Exception e) { + return false; + } + } + + /** + * 连接并启动OpenOffice + * + * @param officeHome OpenOffice安装路径 + * @return OfficeManager + */ + public static OfficeManager getOfficeManager(String officeHome) { + if (officeHome == null || officeHome.trim().isEmpty()) return null; + DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration(); + config.setOfficeHome(officeHome); // 设置OpenOffice安装目录 + OfficeManager officeManager = config.buildOfficeManager(); + officeManager.start(); // 启动OpenOffice服务 + return officeManager; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java new file mode 100644 index 0000000..863a20d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java @@ -0,0 +1,280 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.result.RedisResult; +import org.springframework.data.geo.Point; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +import static com.gxwebsoft.common.core.constants.RedisConstants.CACHE_NULL_TTL; + +@Component +public class RedisUtil { + private final StringRedisTemplate stringRedisTemplate; + public static Integer tenantId; + + public RedisUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant) + */ + public void set(String key, T entity){ + stringRedisTemplate.opsForValue().set(key, JSONUtil.toJSONString(entity)); + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant,1L,TimeUnit.DAYS) + */ + public void set(String key, T entity, Long time, TimeUnit unit){ + stringRedisTemplate.opsForValue().set(key, JSONUtil.toJSONString(entity),time,unit); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * 示例 cacheClient.get(key) + * @return merchant + */ + public String get(String key) { + return stringRedisTemplate.opsForValue().get(key); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * @param clazz Merchant.class + * @param + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @return merchant + */ + public T get(String key, Class clazz) { + String json = stringRedisTemplate.opsForValue().get(key); + if(StrUtil.isNotBlank(json)){ + return JSONUtil.parseObject(json, clazz); + } + return null; + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param field 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPut(String key, String field, T entity) { + stringRedisTemplate.opsForHash().put(key,field,JSONUtil.toJSONString(entity)); + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param map 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPutAll(String key, Map map) { + stringRedisTemplate.opsForHash().putAll(key,map); + } + + /** + * 读取redis缓存(哈希类型) + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @param key [表名]:id + * @param field 字段 + * @return merchant + */ + public T hGet(String key, String field, Class clazz) { + Object obj = stringRedisTemplate.opsForHash().get(key, field); + return JSONUtil.parseObject(JSONUtil.toJSONString(obj),clazz); + } + + public List hValues(String key){ + return stringRedisTemplate.opsForHash().values(key); + } + + public Long hSize(String key){ + return stringRedisTemplate.opsForHash().size(key); + } + + // 逻辑过期方式写入redis + public void setWithLogicalExpire(String key, T value, Long time, TimeUnit unit){ + // 设置逻辑过期时间 + final RedisResult redisResult = new RedisResult<>(); + redisResult.setData(value); + redisResult.setExpireTime(LocalDateTime.now().plusSeconds(unit.toSeconds(time))); + stringRedisTemplate.opsForValue().set(key,JSONUtil.toJSONString(redisResult)); + } + + // 读取redis + public R query(String keyPrefix, ID id, Class clazz, Function dbFallback, Long time, TimeUnit unit){ + String key = keyPrefix + id; + // 1.从redis查询缓存 + final String json = stringRedisTemplate.opsForValue().get(key); + // 2.判断是否存在 + if (StrUtil.isNotBlank(json)) { + // 3.存在,直接返回 + return JSONUtil.parseObject(json,clazz); + } + // 判断命中的是否为空值 + if (json != null) { + return null; + } + // 4. 不存在,跟进ID查询数据库 + R r = dbFallback.apply(id); + // 5. 数据库不存在,返回错误 + if(r == null){ + // 空值写入数据库 + this.set(key,"",CACHE_NULL_TTL,TimeUnit.MINUTES); + return null; + } + // 写入redis + this.set(key,r,time,unit); + return r; + } + + /** + * 添加商户定位点 + * @param key geo + * @param id + * 示例 cacheClient.geoAdd("merchant-geo",merchant) + */ + public void geoAdd(String key, Double x, Double y, String id){ + stringRedisTemplate.opsForGeo().add(key,new Point(x,y),id); + } + + /** + * 删除定位 + * @param key geo + * @param id + * 示例 cacheClient.geoRemove("merchant-geo",id) + */ + public void geoRemove(String key, Integer id){ + stringRedisTemplate.opsForGeo().remove(key,id.toString()); + } + + + + public void sAdd(String key, T entity){ + stringRedisTemplate.opsForSet().add(key,JSONUtil.toJSONString(entity)); + } + + public Set sMembers(String key){ + return stringRedisTemplate.opsForSet().members(key); + } + + // 更新排行榜 + public void zAdd(String key, Integer userId, Double value) { + stringRedisTemplate.opsForZSet().add(key,userId.toString(),value); + } + // 增加元素的score值,并返回增加后的值 + public Double zIncrementScore(String key,Integer userId, Double delta){ + return stringRedisTemplate.opsForZSet().incrementScore(key, userId.toString(), delta); + } + // 获取排名榜 + public Set range(String key, Integer start, Integer end) { + return stringRedisTemplate.opsForZSet().range(key, start, end); + } + // 获取排名榜 + public Set reverseRange(String key, Integer start, Integer end){ + return stringRedisTemplate.opsForZSet().reverseRange(key, start, end); + } + // 获取分数 + public Double score(String key, Object value){ + return stringRedisTemplate.opsForZSet().score(key, value); + } + + public void delete(String key){ + stringRedisTemplate.delete(key); + } + + // 存储在list头部 + public void leftPush(String key, String keyword){ + stringRedisTemplate.opsForList().leftPush(key,keyword); + } + + // 获取列表指定范围内的元素 + public List listRange(String key,Long start, Long end){ + return stringRedisTemplate.opsForList().range(key, start, end); + } + + // 获取列表长度 + public Long listSize(String key){ + return stringRedisTemplate.opsForList().size(key); + } + + // 裁剪list + public void listTrim(String key){ + stringRedisTemplate.opsForList().trim(key, 0L, 100L); + } + + /** + * 读取后台系统设置信息 + * @param keyName 键名wx-word + * @param tenantId 租户ID + * @return + * key示例 cache10048:setting:wx-work + */ + public JSONObject getSettingInfo(String keyName,Integer tenantId){ + String key = "cache" + tenantId + ":setting:" + keyName; + final String cache = stringRedisTemplate.opsForValue().get(key); + assert cache != null; + return JSON.parseObject(cache); + } + + /** + * KEY前缀 + * cache[tenantId]:[key+id] + */ + public static String prefix(String key){ + String prefix = "cache"; + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + final Integer tenantId = ((User) object).getTenantId(); + prefix = prefix.concat(tenantId.toString()).concat(":"); + } + } + return prefix.concat(key); + } + + // 组装key + public String key(String name,Integer id){ + return name.concat(":").concat(id.toString()); + } + + // 获取上传配置 + public HashMap getUploadConfig(Integer tenantId){ + String key = "setting:upload:" + tenantId; + final String s = get(key); + final JSONObject jsonObject = JSONObject.parseObject(s); + final String uploadMethod = jsonObject.getString("uploadMethod"); + final String bucketDomain = jsonObject.getString("bucketDomain"); + + final HashMap map = new HashMap<>(); + map.put("uploadMethod",uploadMethod); + map.put("bucketDomain",bucketDomain); + return map; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java new file mode 100644 index 0000000..7310f33 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java @@ -0,0 +1,264 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.system.entity.Payment; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; + +@Component +public class RequestUtil { + private static final String host = "https://server.gxwebsoft.com/api"; + private static String ACCESS_TOKEN; + private static String TENANT_ID; + + public void setTenantId(String tenantId) { + TENANT_ID = tenantId; + } + + public void setAccessToken(String token) { + ACCESS_TOKEN = token; + } + + // 预付请求付款(余额支付) + public Object balancePay(ShopOrder order) { + // 设置租户ID + setTenantId(order.getTenantId().toString()); + // 设置token + setAccessToken(order.getAddress()); + // 余额支付接口 + String path = "/system/payment/balancePay"; + try { + // 链式构建请求 + final String body = HttpRequest.post(host.concat(path)) + .header("Tenantid", TENANT_ID) + .header("Authorization", ACCESS_TOKEN) + .body(JSONUtil.toJSONString(order))//表单内容 + .timeout(20000)//超时,毫秒 + .execute().body(); + return JSONUtil.parseObject(body, ApiResult.class).getData(); + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + // 微信支付通知 + public String pushWxPayNotify(Transaction transaction, Payment payment) { + // 设置租户ID + setTenantId(payment.getTenantId().toString()); + // 推送支付通知地址 + String path = payment.getNotifyUrl(); + try { + // 链式构建请求 + return HttpRequest.post(path) + .header("Tenantid", TENANT_ID) + .body(JSONUtil.toJSONString(transaction))//表单内容 + .timeout(20000)//超时,毫秒 + .execute().body(); + + } catch (Exception e) { + e.printStackTrace(); + } + return "支付失败"; + } + + + public User getUserByPhone(String phone) { + String path = "/system/user/getByPhone/" + phone; + try { + // 链式构建请求 + String result = HttpRequest.get(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .timeout(20000)//超时,毫秒 + .execute().body(); + + JSONObject jsonObject = JSONObject.parseObject(result); + final String data = jsonObject.getString("data"); + return JSONObject.parseObject(data, User.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public User getByUserId(Integer userId) { + String path = "/system/user/" + userId; + try { + // 链式构建请求 + String result = HttpRequest.get(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .timeout(20000)//超时,毫秒 + .execute().body(); + + JSONObject jsonObject = JSONObject.parseObject(result); + System.out.println("jsonObject = " + jsonObject); + final String data = jsonObject.getString("data"); + return JSONObject.parseObject(data, User.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + // 新增用户 + public boolean saveUserByPhone(ShopMerchantAccount merchantAccount) { + String path = "/system/user/"; + try { + HashMap map = new HashMap<>(); + map.put("nickname", merchantAccount.getRealName()); + map.put("username", merchantAccount.getPhone()); + map.put("realName", merchantAccount.getRealName()); + map.put("phone", merchantAccount.getPhone()); + map.put("merchantId", merchantAccount.getMerchantId()); + final ArrayList roles = new ArrayList<>(); + final UserRole userRole = new UserRole(); + userRole.setUserId(merchantAccount.getUserId()); + userRole.setRoleId(merchantAccount.getRoleId()); + userRole.setTenantId(merchantAccount.getTenantId()); + roles.add(userRole); + map.put("roles", roles); + map.put("tenantId", TENANT_ID); + // 链式构建请求 + String result = HttpRequest.post(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .body(JSONUtil.toJSONString(map))//表单内容 + .timeout(20000)//超时,毫秒 + .execute().body(); + + } catch (Exception e) { + e.printStackTrace(); + } + return true; + } + + public ApiResult updateUserBalance(String path, User user) { + try { + // 链式构建请求 + final String body = HttpRequest.put(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .body(JSONUtil.toJSONString(user)) + .timeout(20000) + .execute().body(); + return JSONUtil.parseObject(body, ApiResult.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public User getParent(Integer userId) { + try { + // 链式构建请求 + final String result = HttpRequest.get(host.concat("/system/user-referee/getReferee/" + userId)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .timeout(20000) + .execute().body(); + JSONObject jsonObject = JSONObject.parseObject(result); + final String data = jsonObject.getString("data"); + return JSONObject.parseObject(data, User.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + // 更新用户信息 + public void updateUser(User user) { + String path = "/system/user/"; + try { + // 链式构建请求 + final String body = HttpRequest.put(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("Tenantid", TENANT_ID) + .body(JSONUtil.toJSONString(user)) + .timeout(20000) + .execute().body(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public String getMpOrderQrCode(String orderNo) { + String path = "/wx-login/getOrderQRCode/"; + try { + // 链式构建请求 + final String body = HttpRequest.get(host.concat(path).concat(orderNo)) + .header("Authorization", ACCESS_TOKEN) + .header("tenantId", TENANT_ID) + .timeout(20000) + .execute().body(); + final JSONObject jsonObject = JSONObject.parseObject(body); + final String qrCode = jsonObject.getString("message"); + return qrCode; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public String getOrderQRCodeUnlimited(String orderNo) { + String path = "/wx-login/getOrderQRCodeUnlimited/"; + try { + // 链式构建请求 + final String body = HttpRequest.get(host.concat(path).concat(orderNo)) + .header("Authorization", ACCESS_TOKEN) + .header("tenantId", TENANT_ID) + .timeout(20000) + .execute().body(); + System.out.println("body = " + body); + final JSONObject jsonObject = JSONObject.parseObject(body); + final String qrCode = jsonObject.getString("message"); + System.out.println("qrCode = " + qrCode); + return qrCode; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void updateUserMerchantId(User user) { + String path = "/system/user/updateUserMerchantId"; + try { + // 链式构建请求 + final String body = HttpRequest.put(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("tenantId", TENANT_ID) + .body(JSONUtil.toJSONString(user)) + .timeout(20000) + .execute().body(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public ApiResult getWxConfig() { + String path = "/system/setting?settingKey=mp-weixin"; + try { + // 链式构建请求 + final String body = HttpRequest.get(host.concat(path)) + .header("Authorization", ACCESS_TOKEN) + .header("tenantId", TENANT_ID) + .timeout(20000) + .execute().body(); + return JSONUtil.parseObject(body, ApiResult.class); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java new file mode 100644 index 0000000..c07ab55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java @@ -0,0 +1,197 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.KVEntity; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 签名检查和获取签名 + * https://blog.csdn.net/u011628753/article/details/110251445 + * @author leng + * + */ +public class SignCheckUtil { + // 签名字段 + public final static String SIGN = "sign"; + + /** + * 签名检查,签名参数中,sign是用于校验的加密值,其他参数按照字母顺序排序,加密,并将其内容链接起来 + * + * @param params + * @param key + * @return + */ + public static boolean signCheck(JSONObject params, String key) { + if (null != params) { + Map map = new HashMap<>(); + + params.forEach((k, v) -> { + map.put(k, v.toString()); + }); + return signCheck(map, key); + } + + return false; + } + + /** + * 签名检查,签名参数中,sign是用于校验的加密值,其他参数按照字母顺序排序,加密,并将其内容链接起来 + * + * @param params + * @param key + * 签名key不允许为空 + * @return + */ + public static boolean signCheck(Map params, String key) { + String sign = params.get(SIGN);// 签名 + if (null == sign) { + return false; + } + String signTemp = getSignString(params,key); + if (null == signTemp) { + return false; + } + return signTemp.equals(sign); + } + + /** + * 获取签名的字符串 + * + * @param params + * @param key + * @return + */ + public static String getSignString(JSONObject params, String key) { + if (null != params) { + Map map = new HashMap<>(); + + params.forEach((k, v) -> { + map.put(k, v.toString()); + }); + return getSignString(map, key); + } + + return null; + } + + /** + * 获取签名的字符串 + * + * @param params + * @param key + * @return + */ + public static String getSignString(Map params, String key) { + // 签名 + if (null == params || params.size() == 0) { + return null; + } + key = (null == key) ? "" : key; + List> list = new ArrayList<>(params.size() - 1); + + params.forEach((k, v) -> { + if (!SIGN.equals(k)) { + list.add(KVEntity.build(k, v)); + } + }); + + Collections.sort(list, (obj1, obj2) -> { + return obj1.getK().compareTo(obj2.getK()); + }); + + StringBuffer sb = new StringBuffer(); + for (KVEntity kv : list) { + String value = kv.getV(); + if (!StringUtils.isEmpty(value)) { + sb.append(kv.getV()).append("-"); + } + } + sb.append(key); + System.out.println("md5加密前的字符串 = " + sb + key); + String signTemp = SecureUtil.md5(sb.toString()).toLowerCase(); + return signTemp; + } + + /** + * 获取微信签名的字符串 + * + * 注意签名(sign)的生成方式,具体见官方文档(传参都要参与生成签名,且参数名按照字典序排序,最后接上APP_KEY,转化成大写) + * + * @param params + * @param key + * @return + */ + public static String getWXSignString(Map params, String key) { + // 签名 + if (null == params || params.size() == 0 || StringUtils.isEmpty(key)) { + return null; + } + + List> list = new ArrayList<>(params.size() - 1); + + params.forEach((k, v) -> { + if (!SIGN.equals(k)) { + list.add(KVEntity.build(k, v)); + } + }); + + Collections.sort(list, (obj1, obj2) -> { + return obj1.getK().compareTo(obj2.getK()); + }); + + StringBuffer sb = new StringBuffer(); + for (KVEntity kv : list) { + String value = kv.getV(); + if (!StringUtils.isEmpty(value)) { + sb.append(kv.getK() + "=" + value + "&"); + } + } + + sb.append("key=" + key); + String signTemp = SecureUtil.md5(sb.toString()).toLowerCase(); + return signTemp; + } + + /** + * 微信签名验证 + * @param params + * @param key + * @return + */ + public static boolean WXsignCheck(Map params, String key) { + String sign = params.get(SIGN); + if (StringUtils.isEmpty(sign)) { + return false; + } + return sign.equals(getWXSignString(params, key)); + } + + + /** + * 白名单校验 + * @param domainName abc.com + * @return true + */ + public boolean checkWhiteDomains(List whiteDomains, String domainName) { + if(whiteDomains == null){ + return true; + } + if (whiteDomains.isEmpty()) { + return true; + } + // 服务器域名白名单列表 + whiteDomains.add("server.gxwebsoft.com"); + System.out.println("whiteDomains = " + whiteDomains); + System.out.println(">>> domainName = " + domainName); + for(String item: whiteDomains){ + if(Objects.equals(item, domainName)){ + return true; + } + } + return false; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/SpmUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/SpmUtil.java new file mode 100644 index 0000000..091ef20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/SpmUtil.java @@ -0,0 +1,23 @@ +package com.gxwebsoft.common.core.utils; + +import com.gxwebsoft.cms.entity.CmsNavigation; + +public class SpmUtil { + + // 生成spmUrl + public static String getSpmUrl(String path){ + return path.concat("?spm=c."); + } + + // 生成spmUrl + public static String getSpmUrl(String path, CmsNavigation navigation){ + return path.concat("?spm=c.".concat(navigation.getNavigationId().toString())); + } + + // 生成spmUrl +// public static String getSpmUrl(String path, T data){ +// System.out.println("json = " + data); +// return "?spm=".concat(path).concat(); +// } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxNativeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxNativeUtil.java new file mode 100644 index 0000000..52a8d2c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxNativeUtil.java @@ -0,0 +1,20 @@ +package com.gxwebsoft.common.core.utils; + +import com.wechat.pay.java.core.Config; + +import java.util.HashMap; +import java.util.Map; + + +public class WxNativeUtil { + + private static final Map tenantConfigs = new HashMap<>(); + + public static void addConfig(Integer tenantId, Config config) { + tenantConfigs.put(tenantId, config); + } + + public static Config getConfig(Integer tenantId) { + return tenantConfigs.get(tenantId); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java new file mode 100644 index 0000000..077e615 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java @@ -0,0 +1,106 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.system.service.SettingService; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * 微信公众号工具类 + * @author 科技小王子 + * + */ +@Component +public class WxOfficialUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String openid; + public String unionid; + public String access_token; + public String expires_in; + public String nickname; + + + @Resource + private SettingService settingService; + @Resource + private ConfigProperties pathConfig; + @Resource + private CacheClient cacheClient; + + public WxOfficialUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + // 实例化客户端 + public WxOfficialUtil client(Integer tenantId) { + if(tenantId > 0){ + throw new BusinessException(tenantId + "123123"); + } + this.tenantId = tenantId; + this.config(); + System.out.println("this.tenantId = " + this.tenantId); + return this; + } + + // 开发者ID和秘钥 + private void config() { + String key = "cache"+ this.tenantId +":setting:wx-official"; + String wxOfficial = stringRedisTemplate.opsForValue().get(key); + JSONObject data = JSONObject.parseObject(wxOfficial); + if(data != null){ + this.appId = data.getString("appId"); + this.appSecret = data.getString("appSecret"); + } + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取appId + public String getAppSecret(){ + return this.appSecret; + } + + public String getCodeUrl() throws UnsupportedEncodingException { + String encodedReturnUrl = URLEncoder.encode("https://server.gxwebsoft.com/api/open/wx-official/accessToken","UTF-8"); + return "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+ this.appId +"&redirect_uri=" + encodedReturnUrl + "&response_type=code&scope=snsapi_userinfo&state="+ this.tenantId +"#wechat_redirect"; + } + + // 获取access_token + public String getAccessToken(String code) { + String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ this.appId +"&secret="+ this.appSecret +"&code="+ code +"&grant_type=authorization_code"; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + final JSONObject jsonObject = JSONObject.parseObject(response); + access_token = jsonObject.getString("access_token"); + if(access_token == null){ + throw new BusinessException("获取access_token失败"); + } + this.openid = jsonObject.getString("openid"); + this.unionid = jsonObject.getString("unionid"); + this.expires_in = jsonObject.getString("expires_in"); + return access_token; + } + + // 获取userinfo + public JSONObject getUserInfo(String access_token) { + String url = "https://api.weixin.qq.com/sns/userinfo?access_token="+ access_token +"&openid="+ this.openid +"&lang=zh_CN"; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + if(response == null){ + throw new BusinessException("获取userinfo失败"); + } + return JSONObject.parseObject(response); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java new file mode 100644 index 0000000..417a354 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * 微信小程序工具类 + * @author 科技小王子 + * + */ +@Component +public class WxUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String access_token; + public String expires_in; + public String nickname; + public String userid; + public String user_ticket; + public String openid; + public String external_userid; + public String name; + public String position; + public String mobile; + public String gender; + public String email; + public String avatar; + public String thumb_avatar; + public String telephone; + public String address; + public String alias; + public String qr_code; + public String open_userid; + + @Resource + private CacheClient cacheClient; + + + public WxUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + + // 实例化客户端 + public WxUtil client(Integer tenantId) { + this.tenantId = tenantId; + this.config(); + return this; + } + + // 开发者ID和秘钥 + private void config() { + JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", this.tenantId); + if(settingInfo == null){ + throw new BusinessException("微信小程序未配置"); + } + this.appId = settingInfo.getString("corpId"); + this.appSecret = settingInfo.getString("secret"); + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取access_token + public void getAccessToken(String code) { + String key = "cache"+ this.tenantId +":ww:access_token"; + final String access_token = stringRedisTemplate.opsForValue().get(key); + if(access_token != null){ + this.getUserInfo(code,access_token); + }else { + String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +this.appId+ "&corpsecret="+ this.appSecret; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + // 获取成功 + if(jsonObject.getString("access_token") != null){ + this.access_token = jsonObject.getString("access_token"); + this.expires_in = jsonObject.getString("expires_in"); + stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS); + System.out.println("获取access_token成功 = " + this.access_token); + this.getUserInfo(code,this.access_token); + } + } + } + + // 获取userinfo + public void getUserInfo(String code, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=" +access_token+ "&code=" + code; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + JSONObject jsonObject = JSONObject.parseObject(response); + final String errcode = jsonObject.getString("errcode"); + final String errmsg = jsonObject.getString("errmsg"); + if(!StrUtil.equals(errcode,"0")){ + throw new BusinessException(errmsg); + } + this.userid = jsonObject.getString("userid"); + this.user_ticket = jsonObject.getString("user_ticket"); + this.openid = jsonObject.getString("openid"); + this.external_userid = jsonObject.getString("external_userid"); + } + + public void getUserProfile(String userid, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token="+ access_token +"&userid=" + userid; + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + JSONObject jsonObject = JSONObject.parseObject(response); + + this.name = jsonObject.getString("name"); + this.position = jsonObject.getString("position"); + this.gender = jsonObject.getString("gender"); + this.email = jsonObject.getString("email"); + this.avatar = jsonObject.getString("avatar"); + this.thumb_avatar = jsonObject.getString("thumb_avatar"); + this.telephone = jsonObject.getString("telephone"); + this.address = jsonObject.getString("address"); + this.alias = jsonObject.getString("alias"); + this.qr_code = jsonObject.getString("qr_code"); + this.open_userid = jsonObject.getString("open_userid"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java new file mode 100644 index 0000000..5a4e449 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * 企业微信工具类 + * @author 科技小王子 + * + */ +@Component +public class WxWorkUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String access_token; + public String expires_in; + public String nickname; + public String userid; + public String user_ticket; + public String openid; + public String external_userid; + public String name; + public String position; + public String mobile; + public String gender; + public String email; + public String avatar; + public String thumb_avatar; + public String telephone; + public String address; + public String alias; + public String qr_code; + public String open_userid; + + @Resource + private CacheClient cacheClient; + + + public WxWorkUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + + // 实例化客户端 + public WxWorkUtil client(Integer tenantId) { + this.tenantId = tenantId; + this.config(); + return this; + } + + // 开发者ID和秘钥 + private void config() { + JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", this.tenantId); + if(settingInfo == null){ + throw new BusinessException("企业微信未配置"); + } + this.appId = settingInfo.getString("corpId"); + this.appSecret = settingInfo.getString("secret"); + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取access_token + public void getAccessToken(String code) { + String key = "cache"+ this.tenantId +":ww:access_token"; + final String access_token = stringRedisTemplate.opsForValue().get(key); + if(access_token != null){ + this.getUserInfo(code,access_token); + }else { + String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +this.appId+ "&corpsecret="+ this.appSecret; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + // 获取成功 + if(jsonObject.getString("access_token") != null){ + this.access_token = jsonObject.getString("access_token"); + this.expires_in = jsonObject.getString("expires_in"); + stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS); + System.out.println("获取access_token成功 = " + this.access_token); + this.getUserInfo(code,this.access_token); + } + } + } + + // 获取userinfo + public void getUserInfo(String code, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=" +access_token+ "&code=" + code; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + final String errcode = jsonObject.getString("errcode"); + final String errmsg = jsonObject.getString("errmsg"); + if(!StrUtil.equals(errcode,"0")){ + throw new BusinessException(errmsg); + } + this.userid = jsonObject.getString("userid"); + this.user_ticket = jsonObject.getString("user_ticket"); + this.openid = jsonObject.getString("openid"); + this.external_userid = jsonObject.getString("external_userid"); + System.out.println("获取用户信息成功 = " + jsonObject); + } + + public void getUserProfile(String userid, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token="+ access_token +"&userid=" + userid; + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response3 = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + System.out.println("读取用户详细信息 = " + jsonObject); + + this.name = jsonObject.getString("name"); + this.position = jsonObject.getString("position"); + this.gender = jsonObject.getString("gender"); + this.email = jsonObject.getString("email"); + this.avatar = jsonObject.getString("avatar"); + this.thumb_avatar = jsonObject.getString("thumb_avatar"); + this.telephone = jsonObject.getString("telephone"); + this.address = jsonObject.getString("address"); + this.alias = jsonObject.getString("alias"); + this.qr_code = jsonObject.getString("qr_code"); + this.open_userid = jsonObject.getString("open_userid"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java b/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java new file mode 100644 index 0000000..eab091a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.common.core.web; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * 返回结果 + * + * @author WebSoft + * @since 2017-06-10 10:10:50 + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "状态码") + private Integer code; + + @ApiModelProperty(value = "状态信息") + private String message; + + @ApiModelProperty(value = "返回数据") + private T data; + + @ApiModelProperty(value = "错误信息") + private String error; + + public ApiResult() {} + + public ApiResult(Integer code) { + this(code, null); + } + + public ApiResult(Integer code, String message) { + this(code, message, null); + } + + public ApiResult(Integer code, String message, T data) { + this(code, message, data, null); + } + + public ApiResult(Integer code, String message, T data, String error) { + setCode(code); + setMessage(message); + setData(data); + setError(error); + } + + public Integer getCode() { + return this.code; + } + + public ApiResult setCode(Integer code) { + this.code = code; + return this; + } + + public String getMessage() { + return this.message; + } + + public ApiResult setMessage(String message) { + this.message = message; + return this; + } + + public T getData() { + return this.data; + } + + public ApiResult setData(T data) { + this.data = data; + return this; + } + + public String getError() { + return this.error; + } + + public ApiResult setError(String error) { + this.error = error; + return this; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BaseController.java b/src/main/java/com/gxwebsoft/common/core/web/BaseController.java new file mode 100644 index 0000000..46542ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BaseController.java @@ -0,0 +1,333 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.utils.SignCheckUtil; +import com.gxwebsoft.common.system.entity.User; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Controller基类 + * + * @author WebSoft + * @since 2017-06-10 10:10:19 + */ +public class BaseController { + @Resource + private HttpServletRequest request; + @Resource + private RedisUtil redisUtil; + + /** + * 获取当前登录的user + * + * @return User + */ + public User getLoginUser() { + try { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + return (User) object; + } + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + /** + * 获取当前登录的userId + * + * @return userId + */ + public Integer getLoginUserId() { + User loginUser = getLoginUser(); + return loginUser == null ? null : loginUser.getUserId(); + } + + /** + * 获取当前登录的tenantId + * + * @return tenantId + */ + public Integer getTenantId() { + String tenantId; + // 2 从请求头拿ID + tenantId = request.getHeader("tenantId"); + if(StrUtil.isNotBlank(tenantId)){ + return Integer.valueOf(tenantId); + } + // 3 从登录用户拿tenantId + User loginUser = getLoginUser(); + if (loginUser != null) { + return loginUser.getTenantId(); + } + // 1 从域名拿ID + String Domain = request.getHeader("Domain"); + if (StrUtil.isNotBlank(Domain)) { + String key = "Domain:" + Domain; + tenantId = redisUtil.get(key); + if(tenantId != null){ + System.out.println("从域名拿ID = " + tenantId); + return Integer.valueOf(tenantId); + } + } + return null; + } + + /** + * 返回成功 + * + * @return ApiResult + */ + public ApiResult success() { + return new ApiResult<>(Constants.RESULT_OK_CODE, Constants.RESULT_OK_MSG); + } + + /** + * 返回成功 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult success(String message) { + return success().setMessage(message); + } + + /** + * 返回成功 + * + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult success(T data) { + return new ApiResult<>(Constants.RESULT_OK_CODE, Constants.RESULT_OK_MSG, data); + } + + /** + * 返回成功 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult success(String message, T data) { + return success(data).setMessage(message); + } + + /** + * 返回分页查询数据 + * + * @param list 当前页数据 + * @param count 总数量 + * @return ApiResult + */ + public ApiResult> success(List list, Long count) { + return success(new PageResult<>(list, count)); + } + + /** + * 返回分页查询数据 + * + * @param iPage IPage + * @return ApiResult + */ + public ApiResult> success(IPage iPage) { + return success(iPage.getRecords(), iPage.getTotal()); + } + + /** + * 返回失败 + * + * @return ApiResult + */ + public ApiResult fail() { + return new ApiResult<>(Constants.RESULT_ERROR_CODE, Constants.RESULT_ERROR_MSG); + } + + /** + * 返回失败 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult fail(String message) { + return fail().setMessage(message); + } + + /** + * 返回失败 + * + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult fail(T data) { + return fail(Constants.RESULT_ERROR_MSG, data); + } + + /** + * 返回失败 + * + * @param message 状态信息 + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult fail(String message, T data) { + return new ApiResult<>(Constants.RESULT_ERROR_CODE, message, data); + } + + /** + * 请求参数的空字符串转为null + */ + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); + } + + // 自定义函数 + public String getAuthorization(){ + return request.getHeader("Authorization"); + } + + public String getAppId() { + // 兼容小写 + if(request.getHeader("appid") != null){ + return request.getHeader("appid"); + } + return request.getHeader("AppId"); + } + + public String getSign() { + return request.getParameter("sign"); + } + + /** + * 是否校验签名信息 + * 存在签名信息则需要验证 + */ + public void isCheckSign() { + if (StrUtil.isNotBlank(getSign())) { + if(getTenantId() == null){ + throw new BusinessException("签名失败:TenantId不能为空"); + } + + String timestamp1 = request.getParameter("timestamp"); + long timestamp2 = System.currentTimeMillis(); + long time = timestamp2 - Long.parseLong(timestamp1); + if(time > 600000L){ + throw new BusinessException("签名失败:请求超时"); + } + + Enumeration names = request.getParameterNames(); + //2.遍历正文名称的枚举获得请求参数 + Map params = new HashMap<>(); + while(names.hasMoreElements()){ + String name = names.nextElement(); + String value = request.getParameter(name); + params.put(name,value); + } + String signString = SignCheckUtil.getSignString(params, getAppSecret()); + System.out.println("请求的参数 = " + params); + System.out.println("正确的签名 = " + signString); + System.out.println("签名是否正确 = " + SignCheckUtil.signCheck(params, getAppSecret())); + + if (!SignCheckUtil.signCheck(params, getAppSecret())) { + throw new BusinessException("签名失败"); + } + } + + // 模拟提交参数 + // String key = "FRbMx1FkG4Qz6GZxY"; + // Map param0 = new HashMap<>(); + // param0.put("orderId", "D2018062976332656413"); + // param0.put("MainAccountID", "DC3NHPJ73S"); + // param0.put("MainAccountSN", "320"); + // param0.put("payStatus", "2"); + // param0.put("title","测试"); + // System.out.println("请求的参数 = " + param0); + // String signString0 = SignCheckUtil.getSignString(param0, key); + // System.out.println("signString0 = " + signString0); + + // return SignCheckUtil.signCheck(params, getAppSecret()); + } + + /** + * 获取当前请求租户的AppSecret + * + * @return AppSecret + */ + public String getAppSecret() { + String key = "cache5:AppSecret:" + Integer.valueOf(getAppId()); + return redisUtil.get(key); + } + + /** + * 根据账号|手机号码|邮箱查找用户ID + * @return userId + */ +// public Integer getUserIdByUsername(String username, Integer tenantId){ +// // 按账号搜素 +// User user = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, username).eq(User::getTenantId,tenantId)); +// if (user != null && user.getUserId() > 0) { +// return user.getUserId(); +// } +// // 按手机号码搜索 +// User userByPhone = userService.getOne(new LambdaQueryWrapper().eq(User::getPhone, username).eq(User::getTenantId, tenantId)); +// if (userByPhone != null && userByPhone.getUserId() > 0) { +// return userByPhone.getUserId(); +// } +// // 按邮箱搜索 +// User userByEmail = userService.getOne(new LambdaQueryWrapper().eq(User::getEmail, username).eq(User::getTenantId, tenantId)); +// if (userByEmail != null && userByEmail.getUserId() > 0) { +// return userByEmail.getUserId(); +// } +// throw new BusinessException("找不到该用户"); +// } + + /** + * 处理方法参数类型转换异常 + * 主要处理URL路径参数中传入"NaN"等无法转换为Integer的情况 + * + * @param ex 方法参数类型不匹配异常 + * @return ApiResult + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + public ApiResult handleMethodArgumentTypeMismatch(MethodArgumentTypeMismatchException ex) { + String parameterName = ex.getName(); + Object value = ex.getValue(); + Class requiredType = ex.getRequiredType(); + + // 记录错误日志 + System.err.println("参数类型转换异常: 参数名=" + parameterName + + ", 传入值=" + value + + ", 期望类型=" + (requiredType != null ? requiredType.getSimpleName() : "unknown")); + + // 如果是ID参数且传入的是"NaN",返回友好的错误信息 + if ("id".equals(parameterName) && "NaN".equals(String.valueOf(value))) { + return fail("无效的ID参数,请检查传入的ID值"); + } + + // 其他类型转换错误的通用处理 + return fail("参数格式错误: " + parameterName + " 的值 '" + value + "' 无法转换为 " + + (requiredType != null ? requiredType.getSimpleName() : "目标类型")); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java b/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java new file mode 100644 index 0000000..9396b50 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.utils.CommonUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 查询参数基本字段 + * + * @author WebSoft + * @since 2021-08-26 22:14:43 + */ +@Data +public class BaseParam implements Serializable { + private static final long serialVersionUID = 1L; + + @TableField(exist = false) + @ApiModelProperty("分页查询页码") + private Long page; + + @TableField(exist = false) + @ApiModelProperty("分页查询每页数量") + private Long limit; + + @TableField(exist = false) + @ApiModelProperty("国际化") + private String lang; + + @TableField(exist = false) + @ApiModelProperty(value = "排序字段", notes = "排序字段或sql, 如果是sql则order字段无用, 如: `id asc, name desc`") + private String sort; + + @TableField(exist = false) + @ApiModelProperty(value = "排序方式", notes = "sort是字段名称时对应的排序方式, asc升序, desc降序") + private String order; + + @QueryField(value = "create_time", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("创建时间起始值") + private String createTimeStart; + + @QueryField(value = "create_time", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("创建时间结束值") + private String createTimeEnd; + + @QueryField(value = "create_time", type = QueryType.GE) + @ApiModelProperty("搜索场景") + @TableField(exist = false) + private String sceneType; + + @ApiModelProperty("模糊搜素") + @TableField(exist = false) + private String keywords; + + @ApiModelProperty("token") + @TableField(exist = false) + private String token; + + @ApiModelProperty("租户ID") + @TableField(exist = false) + private Integer tenantId; + + @ApiModelProperty(value = "商户ID") + @TableField(exist = false) + private Long merchantId; + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public T getOne(List records) { + return CommonUtil.listGetOne(records); + } + + /** + * 国际化参数 + */ + public String getLang(){ + if(StrUtil.isBlank(this.lang)){ + return null; + } + if(this.lang.equals("zh")){ + return "zh_CN"; + } + return this.lang; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java b/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java new file mode 100644 index 0000000..c9f5ac5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.common.core.web; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.service.IService; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 批量修改通用参数 + * + * @author WebSoft + * @since 2020-03-13 00:11:06 + */ +@Data +public class BatchParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "需要修改的数据id集合") + private List ids; + + @ApiModelProperty(value = "需要修改的字段和值") + private T data; + + /** + * 通用批量修改方法 + * + * @param service IService + * @param idField id字段名称 + * @return boolean + */ + public boolean update(IService service, String idField) { + if (this.data == null) { + return false; + } + return service.update(this.data, new UpdateWrapper().in(idField, this.ids)); + } + + /** + * 通用批量修改方法 + * + * @param service IService + * @param idField id字段名称 + * @return boolean + */ + public boolean update(IService service, SFunction idField) { + if (this.data == null) { + return false; + } + return service.update(this.data, new LambdaUpdateWrapper().in(idField, this.ids)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java b/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java new file mode 100644 index 0000000..f423b6d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.service.IService; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 检查是否存在通用参数 + * + * @author WebSoft + * @since 2021-09-07 22:24:39 + */ +@Data +public class ExistenceParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "检查的字段") + private String field; + + @ApiModelProperty(value = "字段的值") + private String value; + + @ApiModelProperty(value = "修改时的主键") + private Integer id; + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @return boolean + */ + public boolean isExistence(IService service, String idField) { + return isExistence(service, idField, true); + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @param isToUnderlineCase 是否需要把field转为下划线格式 + * @return boolean + */ + public boolean isExistence(IService service, String idField, boolean isToUnderlineCase) { + if (StrUtil.hasBlank(this.field, this.value)) { + return false; + } + String fieldName = isToUnderlineCase ? StrUtil.toUnderlineCase(field) : field; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(fieldName, value); + if (id != null) { + wrapper.ne(idField, id); + } + return service.count(wrapper) > 0; + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @return boolean + */ + public boolean isExistence(IService service, SFunction idField) { + return isExistence(service, idField, true); + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @param isToUnderlineCase 是否需要把field转为下划线格式 + * @return boolean + */ + public boolean isExistence(IService service, SFunction idField, boolean isToUnderlineCase) { + if (StrUtil.hasBlank(this.field, this.value)) { + return false; + } + String fieldName = isToUnderlineCase ? StrUtil.toUnderlineCase(field) : field; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.apply(fieldName + " = {0}", value); + if (id != null) { + wrapper.ne(idField, id); + } + return service.count(wrapper) > 0; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/PageParam.java b/src/main/java/com/gxwebsoft/common/core/web/PageParam.java new file mode 100644 index 0000000..596ea58 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/PageParam.java @@ -0,0 +1,343 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.utils.CommonUtil; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 分页、排序、搜索参数封装 + * + * @author WebSoft + * @since 2019-04-26 10:34:35 + */ +public class PageParam extends Page { + private static final long serialVersionUID = 1L; + + /** + * 租户id字段名称 + */ + private static final String TENANT_ID_FIELD = "tenantId"; + + /** + * 查询条件 + */ + private final U where; + + /** + * 是否把字段名称驼峰转下划线 + */ + private final boolean isToUnderlineCase; + + public PageParam() { + this(null); + } + + public PageParam(U where) { + this(where, true); + } + + public PageParam(U where, boolean isToUnderlineCase) { + super(); + this.where = where; + this.isToUnderlineCase = isToUnderlineCase; + if (where != null) { + // 获取分页页码 + if (where.getPage() != null) { + setCurrent(where.getPage()); + } + // 获取分页每页数量 + if (where.getLimit() != null) { + setSize(where.getLimit()); + } + // 获取排序方式 + if (where.getSort() != null) { + if (sortIsSQL(where.getSort())) { + setOrders(parseOrderSQL(where.getSort())); + } else { + List orderItems = new ArrayList<>(); + String column = this.isToUnderlineCase ? StrUtil.toUnderlineCase(where.getSort()) : where.getSort(); + boolean asc = !Constants.ORDER_DESC_VALUE.equals(where.getOrder()); + orderItems.add(new OrderItem(column, asc)); + setOrders(orderItems); + } + } + } + } + + /** + * 排序字段是否是sql + */ + private boolean sortIsSQL(String sort) { + return sort != null && (sort.contains(",") || sort.trim().contains(" ")); + } + + /** + * 解析排序sql + */ + private List parseOrderSQL(String orderSQL) { + List orders = new ArrayList<>(); + if (StrUtil.isNotBlank(orderSQL)) { + for (String item : orderSQL.split(",")) { + String[] temp = item.trim().split(" "); + if (!temp[0].isEmpty()) { + String column = this.isToUnderlineCase ? StrUtil.toUnderlineCase(temp[0]) : temp[0]; + boolean asc = temp.length == 1 || !temp[temp.length - 1].equals(Constants.ORDER_DESC_VALUE); + orders.add(new OrderItem(column, asc)); + } + } + } + return orders; + } + + /** + * 设置默认排序方式 + * + * @param orderItems 排序方式 + * @return PageParam + */ + public PageParam setDefaultOrder(List orderItems) { + if (orders() == null || orders().size() == 0) { + setOrders(orderItems); + } + return this; + } + + /** + * 设置默认排序方式 + * + * @param orderSQL 排序方式 + * @return PageParam + */ + public PageParam setDefaultOrder(String orderSQL) { + setDefaultOrder(parseOrderSQL(orderSQL)); + return this; + } + + /** + * 获取查询条件 + * + * @param excludes 不包含的字段 + * @return QueryWrapper + */ + public QueryWrapper getWrapper(String... excludes) { + return buildWrapper(null, Arrays.asList(excludes)); + } + + /** + * 获取查询条件 + * + * @param columns 只包含的字段 + * @return QueryWrapper + */ + public QueryWrapper getWrapperWith(String... columns) { + return buildWrapper(Arrays.asList(columns), null); + } + + /** + * 构建QueryWrapper + * + * @param columns 包含的字段 + * @param excludes 排除的字段 + * @return QueryWrapper + */ + private QueryWrapper buildWrapper(List columns, List excludes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Map map = BeanUtil.beanToMap(where, false, true); + for (String fieldName : map.keySet()) { + Object fieldValue = map.get(fieldName); + Field field = ReflectUtil.getField(where.getClass(), fieldName); + + // 过滤不包含的字段 + if (columns != null && !columns.contains(fieldName)) { + continue; + } + + // 过滤排除的字段 + if (excludes != null && excludes.contains(fieldName)) { + continue; + } + + // 过滤逻辑删除字段 + if (field.getAnnotation(TableLogic.class) != null) { + continue; + } + + // 过滤租户id字段 + if (fieldName.equals(TENANT_ID_FIELD)) { + continue; + } + + // 获取注解指定的查询字段及查询方式 + QueryType queryType = QueryType.LIKE; + QueryField queryField = field.getAnnotation(QueryField.class); + if (queryField != null) { + if (StrUtil.isNotEmpty(queryField.value())) { + fieldName = queryField.value(); + } + if (queryField.type() != null) { + queryType = queryField.type(); + } + } else { + // 过滤非本表的字段 + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null && !tableField.exist()) { + continue; + } + } + + // 字段名驼峰转下划线 + if (this.isToUnderlineCase) { + fieldName = StrUtil.toUnderlineCase(fieldName); + } + + // + switch (queryType) { + case EQ: + queryWrapper.eq(fieldName, fieldValue); + break; + case NE: + queryWrapper.ne(fieldName, fieldValue); + break; + case GT: + queryWrapper.gt(fieldName, fieldValue); + break; + case GE: + queryWrapper.ge(fieldName, fieldValue); + break; + case LT: + queryWrapper.lt(fieldName, fieldValue); + break; + case LE: + queryWrapper.le(fieldName, fieldValue); + break; + case LIKE: + queryWrapper.like(fieldName, fieldValue); + break; + case NOT_LIKE: + queryWrapper.notLike(fieldName, fieldValue); + break; + case LIKE_LEFT: + queryWrapper.likeLeft(fieldName, fieldValue); + break; + case LIKE_RIGHT: + queryWrapper.likeRight(fieldName, fieldValue); + break; + case IS_NULL: + queryWrapper.isNull(fieldName); + break; + case IS_NOT_NULL: + queryWrapper.isNotNull(fieldName); + break; + case IN: + queryWrapper.in(fieldName, fieldValue); + break; + case NOT_IN: + queryWrapper.notIn(fieldName, fieldValue); + break; + case IN_STR: + if (fieldValue instanceof String) { + queryWrapper.in(fieldName, Arrays.asList(((String) fieldValue).split(","))); + } + break; + case NOT_IN_STR: + if (fieldValue instanceof String) { + queryWrapper.notIn(fieldName, Arrays.asList(((String) fieldValue).split(","))); + } + break; + } + } + return queryWrapper; + } + + /** + * 获取包含排序的查询条件 + * + * @return 包含排序的QueryWrapper + */ + public QueryWrapper getOrderWrapper() { + return getOrderWrapper(getWrapper()); + } + + /** + * 获取包含排序的查询条件 + * + * @param queryWrapper 不含排序的QueryWrapper + * @return 包含排序的QueryWrapper + */ + public QueryWrapper getOrderWrapper(QueryWrapper queryWrapper) { + if (queryWrapper == null) { + queryWrapper = new QueryWrapper<>(); + } + for (OrderItem orderItem : orders()) { + if (orderItem.isAsc()) { + queryWrapper.orderByAsc(orderItem.getColumn()); + } else { + queryWrapper.orderByDesc(orderItem.getColumn()); + } + } + return queryWrapper; + } + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public T getOne(List records) { + return CommonUtil.listGetOne(records); + } + + /** + * 代码排序集合 + * + * @param records 集合 + * @return 排序后的集合 + */ + public List sortRecords(List records) { + List orderItems = orders(); + if (records == null || records.size() < 2 || orderItems == null || orderItems.size() == 0) { + return records; + } + Comparator comparator = null; + for (OrderItem item : orderItems) { + if (item.getColumn() == null) { + continue; + } + String field = this.isToUnderlineCase ? StrUtil.toCamelCase(item.getColumn()) : item.getColumn(); + Function keyExtractor = t -> ReflectUtil.getFieldValue(t, field); + if (comparator == null) { + if (item.isAsc()) { + comparator = Comparator.comparing(keyExtractor); + } else { + comparator = Comparator.comparing(keyExtractor, Comparator.reverseOrder()); + } + } else { + if (item.isAsc()) { + comparator.thenComparing(keyExtractor); + } else { + comparator.thenComparing(keyExtractor, Comparator.reverseOrder()); + } + } + } + if (comparator != null) { + return records.stream().sorted(comparator).collect(Collectors.toList()); + } + return records; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/PageResult.java b/src/main/java/com/gxwebsoft/common/core/web/PageResult.java new file mode 100644 index 0000000..2ef9d0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/PageResult.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.core.web; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; +import java.util.List; + +/** + * 分页查询返回结果 + * + * @author WebSoft + * @since 2017-06-10 10:10:02 + */ +public class PageResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "当前页数据") + private List list; + + @ApiModelProperty(value = "总数量") + private Long count; + + public PageResult() { + } + + public PageResult(List list) { + this(list, null); + } + + public PageResult(List list, Long count) { + setList(list); + setCount(count); + } + + public List getList() { + return this.list; + } + + public void setList(List list) { + this.list = list; + } + + public Long getCount() { + return this.count; + } + + public void setCount(Long count) { + this.count = count; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketConfig.java b/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketConfig.java new file mode 100644 index 0000000..690ee73 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketConfig.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.core.websocket; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + + +@Configuration +public class WebSocketConfig +{ + @Bean + public ServerEndpointExporter serverEndpointExporter() + { + ServerEndpointExporter exporter = new ServerEndpointExporter(); + + // 手动注册 WebSocket 端点 + exporter.setAnnotatedEndpointClasses(WebSocketServer.class); + + + return exporter; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketServer.java b/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketServer.java new file mode 100644 index 0000000..c3b64fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/websocket/WebSocketServer.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.common.core.websocket; + +import org.springframework.stereotype.Component; + +import javax.websocket.OnClose; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.io.IOException; +import java.util.concurrent.ConcurrentHashMap; + + +@ServerEndpoint(value = "/api/chat/{userId}") +@Component +public class WebSocketServer { + + /** + * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。 + */ + private static ConcurrentHashMap webSocketMap = new ConcurrentHashMap<>(); + /** + * 与某个客户端的连接会话,需要通过它来给客户端发送数据 + */ + private Session session; + /** + * 接收userId + */ + private String userId = ""; + + /** + * 连接建立成功调用的方法 + */ + @OnOpen + public void onOpen(Session session, @PathParam("userId") String userId) { + this.session = session; + this.userId = userId; + if (webSocketMap.containsKey(userId)) { + webSocketMap.remove(userId); + webSocketMap.put(userId, this); + //加入set中 + } else { + webSocketMap.put(userId, this); + } + + try { + sendMessage(userId, "连接成功"); + } catch (IOException e) { + + } + } + + /** + * 连接关闭调用的方法 + */ + @OnClose + public void onClose() { + if (webSocketMap.containsKey(userId)) { + webSocketMap.remove(userId); + } + } + + + /** + * 实现服务器主动推送 + */ + public void sendMessage(String userId, String message) throws IOException { + if (webSocketMap.containsKey(userId)) { + Session session1 = webSocketMap.get(userId).session; + if (session1 != null) session1.getBasicRemote().sendText(message); + } + } + + + /** + * 实现服务器主动推送 + */ + public void sendAllMessage(String message) throws IOException { + ConcurrentHashMap.KeySetView userIds = webSocketMap.keySet(); + for (String userId : userIds) { + WebSocketServer webSocketServer = webSocketMap.get(userId); + webSocketServer.session.getBasicRemote().sendText(message); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AiController.java b/src/main/java/com/gxwebsoft/common/system/controller/AiController.java new file mode 100644 index 0000000..4135f4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/AiController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.websocket.WebSocketServer; +import com.gxwebsoft.common.system.entity.ChatMessage; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; + +@Api(tags = "AI") +@RestController +@RequestMapping("/api/chat") +public class AiController extends BaseController { + @Resource + private WebSocketServer webSocketServer; + + @PostMapping("/message") + public ApiResult message(@RequestBody ChatMessage message) throws IOException { + Map paramsJsonStr = new HashMap<>(); + paramsJsonStr.put("query", message.getQuery()); + paramsJsonStr.put("opsType", "0"); + + Map formData = new HashMap<>(); + formData.put("user", message.getUser()); + formData.put("responseMode", "streaming"); + formData.put("paramsJsonStr", JSONUtil.toJSONString(paramsJsonStr)); + formData.put("authCode", "a8cc4a0a-aea3-4ea5-811a-80316520a3d3"); + // 使用 Java 自带的 HttpURLConnection 发送流式请求 + try { + URL url = new URL("https://ai-console.gxshucheng.com/ai-console-api/run/v1"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + connection.setDoOutput(true); + connection.setConnectTimeout(600000); + connection.setReadTimeout(600000); + + // 写入请求体 + try (OutputStream os = connection.getOutputStream(); + PrintWriter writer = new PrintWriter(new OutputStreamWriter(os, StandardCharsets.UTF_8))) { + for (Map.Entry entry : formData.entrySet()) { + writeFormField(writer, entry.getKey(), entry.getValue()); + } + // 添加文件上传部分(可选) + // writeFilePart(writer, "file", "test.txt", "text/plain", "This is the file content."); + writer.append("--").append(boundary).append("--").append("\r\n"); + writer.flush(); + } + + StringBuilder responseStr = new StringBuilder(); + // 读取响应流 + try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + String line; + while ((line = br.readLine()) != null) { + System.out.println("Received chunk: " + line); // 打印接收到的每一部分数据 + // 这里可以对每一部分数据进行处理,例如解析或发送给前端 + if (!line.isEmpty()) { + String[] dataList = line.split("data: "); + if (dataList.length == 2) { +// System.out.println(dataList[1]); + Map data = JSONUtil.parseObject(dataList[1], Map.class); + if (data.get("event") != null && data.get("event").equals("message")) { + String answer = (String) data.get("answer"); + String task_id = (String) data.get("task_id"); + if (answer != null && !answer.isEmpty()) { + HashMap answerData = new HashMap<>(); + answerData.put("answer", answer); + answerData.put("taskId", task_id); + webSocketServer.sendMessage(message.getUser(), JSONUtil.toJSONString(answerData)); + } + System.out.println("answer: " + answer); + responseStr.append(answer); + }else if (data.get("event") != null && data.get("event").equals("message_end")) { + String task_id = (String) data.get("task_id"); + HashMap answerData = new HashMap<>(); + answerData.put("answer", "__END__"); + answerData.put("taskId", task_id); + + webSocketServer.sendMessage(message.getUser(), JSONUtil.toJSONString(answerData)); + } + } + } + } + } + } catch (Exception e) { + System.out.println(e.getMessage()); + for (StackTraceElement stackTraceElement : e.getStackTrace()) { + System.out.println(stackTraceElement); + } + webSocketServer.sendMessage(message.getUser(), "出错了,请晚点再来提问吧~"); + return fail("出错了,请晚点再来提问吧~"); + } + + // 返回成功响应 + return success("Stream processing completed"); + } + + private static final String boundary = "---" + System.currentTimeMillis() + "---"; + + private static void writeFormField(PrintWriter writer, String fieldName, String value) { + writer.append("--").append(boundary).append("\r\n"); + writer.append("Content-Disposition: form-data; name=\"").append(fieldName).append("\"\r\n"); + writer.append("\r\n"); + writer.append(value).append("\r\n"); + } + + @PostMapping("/messageStop") + public ApiResult stop(@RequestBody Map data) { + if (data.get("taskId") == null) return success(); + String taskId = data.get("taskId").toString(); + Map postData = new HashMap<>(); + postData.put("user", getLoginUserId()); + String token = "Bearer app-UxV82WXIRrScpf53exkJ7dIw"; + if (data.get("type") != null) { + token = "Bearer app-7AFseF5UTEJpZGkW93S0wybh"; + } + String res = HttpRequest.post("http://workflow.gxshucheng.com:8010/v1/chat-messages/" + taskId + "/stop") + .header("Authorization", token) + .header("Content-Type", "application/json") + .body(JSONObject.toJSONString(postData)) + .execute().body(); + System.out.println("stop res:" + res); + return success(); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java b/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java new file mode 100644 index 0000000..0f6150b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java @@ -0,0 +1,117 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Cache; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.SettingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * 缓存控制器 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "缓存管理") +@RestController +@RequestMapping("/api/system/cache") +public class CacheController extends BaseController { + @Resource + private SettingService settingService; + @Resource + private CacheClient cacheClient; + @Resource + private RedisUtil redisUtil; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @PreAuthorize("hasAuthority('sys:cache:list')") + @ApiOperation("查询全部缓存") + @GetMapping() + public ApiResult> list() { + String key = "cache".concat(getTenantId().toString()).concat("*"); + final Set keys = stringRedisTemplate.keys(key); + final HashMap map = new HashMap<>(); + final ArrayList list = new ArrayList<>(); + assert keys != null; + keys.forEach(d -> { + final Cache cache = new Cache(); + cache.setKey(d); + try { + final String content = stringRedisTemplate.opsForValue().get(d); + if(content != null){ + cache.setContent(stringRedisTemplate.opsForValue().get(d)); + } + } catch (Exception e) { + e.printStackTrace(); + } + list.add(cache); + }); + map.put("count",keys.size()); + map.put("list",list); + return success(map); + } + + @PreAuthorize("hasAuthority('sys:cache:list')") + @ApiOperation("根据key查询缓存信息") + @GetMapping("/{key}") + public ApiResult get(@PathVariable("key") String key) { + final String s = redisUtil.get(key + getTenantId()); + if(StrUtil.isNotBlank(s)){ + return success("读取成功", JSONObject.parseObject(s)); + } + return fail("缓存不存在!"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @ApiOperation("添加缓存") + @PostMapping() + public ApiResult add(@RequestBody Cache cache) { + if (cache.getExpireTime() != null) { + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent(),cache.getExpireTime(), TimeUnit.MINUTES); + return success("缓存成功"); + } + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent()); + return success("缓存成功"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @ApiOperation("删除缓存") + @DeleteMapping("/{key}") + public ApiResult remove(@PathVariable("key") String key) { + if (Boolean.TRUE.equals(stringRedisTemplate.delete(key))) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @ApiOperation("缓存皮肤") + @PostMapping("/theme") + public ApiResult saveTheme(@RequestBody Cache cache) { + final User loginUser = getLoginUser(); + final String username = loginUser.getUsername(); + if (username.equals("admin")) { + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent()); + return success("缓存成功"); + } + return success("缓存失败"); + } + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyCommentController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyCommentController.java new file mode 100644 index 0000000..1184d75 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyCommentController.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyComment; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.CompanyCommentParam; +import com.gxwebsoft.common.system.service.CompanyCommentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用评论控制器 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Api(tags = "应用评论管理") +@RestController +@RequestMapping("/api/system/company-comment") +public class CompanyCommentController extends BaseController { + @Resource + private CompanyCommentService companyCommentService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询应用评论") + @GetMapping("/page") + public ApiResult> page(CompanyCommentParam param) { + // 使用关联查询 + return success(companyCommentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部应用评论") + @GetMapping() + public ApiResult> list(CompanyCommentParam param) { + // 使用关联查询 + return success(companyCommentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询应用评论") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyCommentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("添加应用评论") + @PostMapping() + public ApiResult save(@RequestBody CompanyComment companyComment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + companyComment.setUserId(loginUser.getUserId()); + } + if (companyCommentService.save(companyComment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改应用评论") + @PutMapping() + public ApiResult update(@RequestBody CompanyComment companyComment) { + if (companyCommentService.updateById(companyComment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除应用评论") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyCommentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加应用评论") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyCommentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改应用评论") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyCommentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除应用评论") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyCommentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyContentController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyContentController.java new file mode 100644 index 0000000..35edda7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyContentController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyContent; +import com.gxwebsoft.common.system.param.CompanyContentParam; +import com.gxwebsoft.common.system.service.CompanyContentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用详情控制器 + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +@Api(tags = "应用详情管理") +@RestController +@RequestMapping("/api/system/company-content") +public class CompanyContentController extends BaseController { + @Resource + private CompanyContentService companyContentService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询应用详情") + @GetMapping("/page") + public ApiResult> page(CompanyContentParam param) { + // 使用关联查询 + return success(companyContentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部应用详情") + @GetMapping() + public ApiResult> list(CompanyContentParam param) { + // 使用关联查询 + return success(companyContentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询应用详情") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyContentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("添加应用详情") + @PostMapping() + public ApiResult save(@RequestBody CompanyContent companyContent) { + if (companyContentService.save(companyContent)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改应用详情") + @PutMapping() + public ApiResult update(@RequestBody CompanyContent companyContent) { + if (companyContentService.updateById(companyContent)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除应用详情") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyContentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加应用详情") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyContentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改应用详情") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyContentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除应用详情") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyContentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java new file mode 100644 index 0000000..ef14821 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java @@ -0,0 +1,365 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.DesensitizedUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.mapper.CompanyMapper; +import com.gxwebsoft.common.system.mapper.TenantMapper; +import com.gxwebsoft.common.system.param.CompanyParam; +import com.gxwebsoft.common.system.service.*; +import com.gxwebsoft.shop.entity.ShopMerchantApply; +import com.gxwebsoft.shop.service.ShopMerchantApplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 企业信息控制器 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Api(tags = "企业") +@RestController +@RequestMapping("/api/system/company") +public class CompanyController extends BaseController { + @Resource + private CompanyService companyService; + @Resource + private ShopMerchantApplyService shopMerchantApplyService; + @Resource + private CompanyContentService companyContentService; + @Resource + private CompanyUrlService companyUrlService; + @Resource + private CompanyParameterService companyParameterService; + @Resource + private TenantService tenantService; + @Resource + private CompanyMapper companyMapper; + @Resource + private TenantMapper tenantMapper; + @Resource + private DomainService domainService; + @Resource + private UserCollectionService userCollectionService; + @Resource + private RedisUtil redisUtil; + + + @ApiOperation("分页查询企业信息不限租户") + @GetMapping("/pageAll") + public ApiResult> pageAll(CompanyParam param) { + final PageResult result = companyService.pageRelAll(param); + result.getList().forEach(d -> { + d.setPhone(DesensitizedUtil.mobilePhone(d.getPhone())); + d.setCompanyCode(DesensitizedUtil.idCardNum(d.getCompanyCode(),1,2)); + }); + final User loginUser = getLoginUser(); + if(loginUser != null){ + // 我的收藏 + final List myFocus = userCollectionService.list(new LambdaQueryWrapper().eq(UserCollection::getUserId, getLoginUserId())); + if (!CollectionUtils.isEmpty(myFocus)) { + final Set collect = myFocus.stream().map(UserCollection::getTid).collect(Collectors.toSet()); + if (param.getVersion() != null) { + // 我的收藏 + if (param.getVersion().equals(99)) { + param.setVersion(null); + param.setCompanyIds(collect); + } + } + result.getList().forEach(d -> { + d.setCollection(collect.contains(d.getCompanyId())); + }); + return success(result); + } + } + // 使用关联查询 + return success(result); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @ApiOperation("分页查询企业信息") + @GetMapping("/page") + public ApiResult> page(CompanyParam param) { + // 使用关联查询 + return success(companyService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部企业信息") + @GetMapping() + public ApiResult> list(CompanyParam param) { + // 使用关联查询 + return success(companyService.listRel(param)); + } + + @ApiOperation("根据id查询企业信息") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + final Company company = companyService.getByIdRel(id); + if (ObjectUtil.isNotEmpty(company)) { + // 应用详情 + final CompanyContent content = companyContentService.getOne(new LambdaQueryWrapper().eq(CompanyContent::getCompanyId, company.getCompanyId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(content)) { + company.setContent(content.getContent()); + } + // 应用链接 + company.setLinks(companyUrlService.list(new LambdaQueryWrapper().eq(CompanyUrl::getCompanyId, company.getCompanyId()))); + // 应用参数 + company.setParameters(companyParameterService.list(new LambdaQueryWrapper().eq(CompanyParameter::getCompanyId, company.getCompanyId()))); + + } + return success(company); + } + + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + @PreAuthorize("hasAuthority('sys:company:save')") + @ApiOperation("添加企业信息") + @PostMapping() + public ApiResult save(@RequestBody Company company) { + Tenant tenant = new Tenant(); + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + company.setUserId(loginUser.getUserId()); + tenant.setUserId(loginUser.getUserId()); + } + tenant.setTenantName(company.getShortName()); + tenant.setTenantCode(CommonUtil.randomUUID16()); + tenant.setComments(company.getComments()); + tenantService.save(tenant); + company.setTenantId(tenant.getTenantId()); + company.setTid(tenant.getTenantId()); + company.setAuthoritative(true); + // 添加租户并初始化 +// final Company result = tenantService.initialization(company); +// if (result != null) { +// return success("添加成功",result); +// } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改企业信息") + @PutMapping() + public ApiResult update(@RequestBody Company company) { + // 授权新的免费域名 + if (StrUtil.isNotBlank(company.getFreeDomain())) { + // 待授权的二级域名 + String domain = company.getFreeDomain().concat(".websoft.top"); + // 删除旧授权域名 + final Domain one = domainService.getOne(new LambdaQueryWrapper().eq(Domain::getType, 2).eq(Domain::getCompanyId, company.getCompanyId()).eq(Domain::getDeleted,0).last("limit 1")); + if(one != null){ + redisUtil.delete("Domain:".concat(one.getDomain())); + domainService.removeById(one); + } + // 保存记录 + final Domain sysDomain = new Domain(); + sysDomain.setDomain(domain); + sysDomain.setType(2); + sysDomain.setSortNumber(100); + sysDomain.setCompanyId(company.getCompanyId()); + sysDomain.setTenantId(company.getTenantId()); + domainService.save(sysDomain); + company.setDomain(domain); + // 写入缓存 + redisUtil.set("Domain:".concat(domain), company.getTenantId()); + } + // 同步更新租户表 + if(StrUtil.isNotBlank(company.getShortName())){ + final Tenant tenant = new Tenant(); + tenant.setTenantId(company.getTenantId()); + tenant.setTenantName(company.getShortName()); + tenantService.updateById(tenant); + } + if (companyService.updateById(company)) { + // 清除缓存 + redisUtil.delete("TenantInfo:".concat(company.getTenantId().toString())); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除企业信息") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + final Company company = companyService.getById(id); + tenantService.removeById(company.getTenantId()); + if (companyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加企业信息") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改企业信息") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyService, "company_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除企业信息") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("根据id查询企业信息") + @GetMapping("/profile") + public ApiResult profile() { + final User loginUser = getLoginUser(); + if(loginUser != null){ + final Company company = companyService.getOne(new LambdaQueryWrapper().eq(Company::getTenantId, loginUser.getTenantId()).eq(Company::getAuthoritative, true).last("limit 1")); + if (ObjectUtil.isNotEmpty(company)) { + final ShopMerchantApply apply = shopMerchantApplyService.getOne(new LambdaQueryWrapper().eq(ShopMerchantApply::getTenantId, loginUser.getTenantId()).last("limit 1")); + if (ObjectUtil.isNotEmpty(apply)) { + company.setCompanyName(apply.getMerchantName()); + company.setCompanyType(apply.getShopType()); + if (apply.getStatus().equals(1)) { + company.setAuthentication(1); + } + } + // 即将过期(一周内过期的) + company.setSoon(DateUtil.offsetDay(company.getExpirationTime(), -7).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + company.setStatus(company.getExpirationTime().compareTo(DateUtil.date())); + return success(company); + } + } + return fail("企业不存在",null); + } + + @PreAuthorize("hasAuthority('sys:company:profile')") + @OperationLog + @ApiOperation("根据id查询企业信息不限租户") + @GetMapping("/profileAll/{companyId}") + public ApiResult profileAll(@PathVariable("companyId") Integer companyId) { + return success(companyMapper.getCompanyAll(companyId)); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("销毁租户") + @DeleteMapping("/destruction/{id}") + public ApiResult destruction(@PathVariable("id") Integer id) { + final User loginUser = getLoginUser(); + if (!loginUser.getUsername().equals("admin")) { + throw new BusinessException("只有超级管理员才能操作"); + } + final Integer tenantId = getTenantId(); + if (tenantService.removeById(tenantId)) { + return success("删除成功",tenantId); + } + return fail("删除失败"); + } + @ApiOperation("检查企业是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + CompanyParam companyParam = new CompanyParam(); + if (param.getField().equals("shortName")) { + companyParam.setAppName(param.getValue()); + List count = companyMapper.getCount(companyParam); + if (!CollectionUtils.isEmpty(count)) { + return success(param.getValue() + "已存在"); + } + } + if (param.getField().equals("email")) { + companyParam.setEmail(param.getValue()); + List count = companyMapper.getCount(companyParam); + if (!CollectionUtils.isEmpty(count)) { + return success(param.getValue() + "已存在"); + } + } + if (param.getField().equals("phone")) { + companyParam.setPhone(param.getValue()); + List count = companyMapper.getCount(companyParam); + if (!CollectionUtils.isEmpty(count)) { + return success(param.getValue() + "已存在"); + } + } + return fail(param.getValue() + "不存在"); + } + + @ApiOperation("根据id查询企业信息不限租户不带token") + @GetMapping("/companyInfoAll/{companyId}") + public ApiResult companyInfoAll(@PathVariable("companyId") Integer companyId) { + return success(companyMapper.getCompanyAll(companyId)); + } + + @PreAuthorize("hasAuthority('sys:company:updateAll')") + @OperationLog + @ApiOperation("修改企业信息") + @PutMapping("/updateCompanyAll") + public ApiResult updateCompanyAll(@RequestBody Company company) { + if (companyMapper.updateByIdAll(company)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:removeAll')") + @OperationLog + @ApiOperation("删除企业信息") + @DeleteMapping("/removeAll/{id}") + public ApiResult removeAll(@PathVariable("id") Integer id) { + if (companyMapper.removeCompanyAll(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:removeAll')") + @OperationLog + @ApiOperation("恢复租户") + @DeleteMapping("/undeleteAll/{id}") + public ApiResult undeleteAll(@PathVariable("id") Integer id) { + if (companyMapper.undeleteAll(id)) { + return success("恢复成功"); + } + return fail("恢复失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyGitController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyGitController.java new file mode 100644 index 0000000..429f8ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyGitController.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyGit; +import com.gxwebsoft.common.system.param.CompanyGitParam; +import com.gxwebsoft.common.system.service.CompanyGitService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 代码仓库控制器 + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +@Api(tags = "代码仓库管理") +@RestController +@RequestMapping("/api/system/company-git") +public class CompanyGitController extends BaseController { + @Resource + private CompanyGitService companyGitService; + + @PreAuthorize("hasAuthority('sys:companyGit:list')") + @ApiOperation("分页查询代码仓库") + @GetMapping("/page") + public ApiResult> page(CompanyGitParam param) { + // 使用关联查询 + return success(companyGitService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:companyGit:list')") + @ApiOperation("查询全部代码仓库") + @GetMapping() + public ApiResult> list(CompanyGitParam param) { + // 使用关联查询 + return success(companyGitService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:companyGit:list')") + @ApiOperation("根据id查询代码仓库") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyGitService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:companyGit:save')") + @OperationLog + @ApiOperation("添加代码仓库") + @PostMapping() + public ApiResult save(@RequestBody CompanyGit companyGit) { + if (companyGitService.save(companyGit)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:companyGit:update')") + @OperationLog + @ApiOperation("修改代码仓库") + @PutMapping() + public ApiResult update(@RequestBody CompanyGit companyGit) { + if (companyGitService.updateById(companyGit)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:companyGit:remove')") + @OperationLog + @ApiOperation("删除代码仓库") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyGitService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:companyGit:save')") + @OperationLog + @ApiOperation("批量添加代码仓库") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyGitService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:companyGit:update')") + @OperationLog + @ApiOperation("批量修改代码仓库") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyGitService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:companyGit:remove')") + @OperationLog + @ApiOperation("批量删除代码仓库") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyGitService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyParameterController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyParameterController.java new file mode 100644 index 0000000..00e357c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyParameterController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyParameter; +import com.gxwebsoft.common.system.param.CompanyParameterParam; +import com.gxwebsoft.common.system.service.CompanyParameterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用参数控制器 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Api(tags = "应用参数管理") +@RestController +@RequestMapping("/api/system/company-parameter") +public class CompanyParameterController extends BaseController { + @Resource + private CompanyParameterService companyParameterService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询应用参数") + @GetMapping("/page") + public ApiResult> page(CompanyParameterParam param) { + // 使用关联查询 + return success(companyParameterService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部应用参数") + @GetMapping() + public ApiResult> list(CompanyParameterParam param) { + // 使用关联查询 + return success(companyParameterService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询应用参数") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyParameterService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("添加应用参数") + @PostMapping() + public ApiResult save(@RequestBody CompanyParameter companyParameter) { + if (companyParameterService.save(companyParameter)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改应用参数") + @PutMapping() + public ApiResult update(@RequestBody CompanyParameter companyParameter) { + if (companyParameterService.updateById(companyParameter)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除应用参数") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyParameterService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加应用参数") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyParameterService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改应用参数") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyParameterService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除应用参数") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyParameterService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyUrlController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyUrlController.java new file mode 100644 index 0000000..03a0c5e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyUrlController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyUrl; +import com.gxwebsoft.common.system.param.CompanyUrlParam; +import com.gxwebsoft.common.system.service.CompanyUrlService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用域名控制器 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Api(tags = "应用域名管理") +@RestController +@RequestMapping("/api/system/company-url") +public class CompanyUrlController extends BaseController { + @Resource + private CompanyUrlService companyUrlService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询应用域名") + @GetMapping("/page") + public ApiResult> page(CompanyUrlParam param) { + // 使用关联查询 + return success(companyUrlService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部应用域名") + @GetMapping() + public ApiResult> list(CompanyUrlParam param) { + // 使用关联查询 + return success(companyUrlService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询应用域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyUrlService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("添加应用域名") + @PostMapping() + public ApiResult save(@RequestBody CompanyUrl companyUrl) { + if (companyUrlService.save(companyUrl)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改应用域名") + @PutMapping() + public ApiResult update(@RequestBody CompanyUrl companyUrl) { + if (companyUrlService.updateById(companyUrl)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除应用域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyUrlService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加应用域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyUrlService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改应用域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyUrlService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除应用域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyUrlService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictController.java new file mode 100644 index 0000000..4efa708 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictController.java @@ -0,0 +1,177 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dict; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.param.DictParam; +import com.gxwebsoft.common.system.service.DictDataService; +import com.gxwebsoft.common.system.service.DictService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(业务类)") +@RestController +@RequestMapping("/api/system/dict") +public class DictController extends BaseController { + @Resource + private DictService dictService; + @Resource + private DictDataService dictDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("查询全部字典") + @GetMapping("/tree") + public ApiResult tree() { + final HashMap result = new HashMap<>(); + final List dictData = dictDataService.listRel(new DictDataParam()); + final Map> dataCollect = dictData.stream().collect(Collectors.groupingBy(DictData::getDictCode)); + for (String code : dataCollect.keySet()) { + Dict dict = new Dict(); + dict.setDictCode(code); + final Set> list = new LinkedHashSet<>(); + Set codes = new LinkedHashSet<>(); + for(DictData item : dictData){ + if (item.getDictCode().equals(code)) { + codes.add(item.getDictDataCode()); + } + } + list.add(codes); + dict.setItems(list); + result.put(code,dict.getItems()); + } + return success(result); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.save(dict)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.updateById(dict)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dict::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dict::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictCode, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dict::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictName, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dict::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java new file mode 100644 index 0000000..b424993 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 字典数据控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(业务类)") +@RestController +@RequestMapping("/api/system/dict-data") +public class DictDataController extends BaseController { + @Resource + private DictDataService dictDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictDataParam param) { + return success(dictDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictDataParam param) { + return success(dictDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.save(dictData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.updateById(dictData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java new file mode 100644 index 0000000..7a4c8e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dictionary; +import com.gxwebsoft.common.system.param.DictionaryParam; +import com.gxwebsoft.common.system.service.DictionaryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(系统类)") +@RestController +@RequestMapping("/api/system/dictionary") +public class DictionaryController extends BaseController { + @Resource + private DictionaryService dictionaryService; + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.save(dictionary)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:update')") + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.updateById(dictionary)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dictionary::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dictionary::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictCode, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictName, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dictionary::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictionaryService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java new file mode 100644 index 0000000..8d362ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 字典数据控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(系统类)") +@RestController +@RequestMapping("/api/system/dictionary-data") +public class DictionaryDataController extends BaseController { + @Resource + private DictionaryDataService dictionaryDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictionaryDataParam param) { + return success(dictionaryDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictionaryDataParam param) { + return success(dictionaryDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.save(dictionaryData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.updateById(dictionaryData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictionaryDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DomainController.java b/src/main/java/com/gxwebsoft/common/system/controller/DomainController.java new file mode 100644 index 0000000..12b0a69 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DomainController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Domain; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.DomainParam; +import com.gxwebsoft.common.system.service.DomainService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 授权域名控制器 + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +@Api(tags = "授权域名管理") +@RestController +@RequestMapping("/api/system/domain") +public class DomainController extends BaseController { + @Resource + private DomainService domainService; + + @ApiOperation("分页查询授权域名") + @GetMapping("/page") + public ApiResult> page(DomainParam param) { + // 使用关联查询 + return success(domainService.pageRel(param)); + } + + @ApiOperation("查询全部授权域名") + @GetMapping() + public ApiResult> list(DomainParam param) { + // 使用关联查询 + return success(domainService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:domain:list')") + @OperationLog + @ApiOperation("根据id查询授权域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(domainService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:domain:save')") + @OperationLog + @ApiOperation("添加授权域名") + @PostMapping() + public ApiResult save(@RequestBody Domain domain) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + domain.setUserId(loginUser.getUserId()); + } + if (domainService.save(domain)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:domain:update')") + @OperationLog + @ApiOperation("修改授权域名") + @PutMapping() + public ApiResult update(@RequestBody Domain domain) { + if (domainService.updateById(domain)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:domain:remove')") + @OperationLog + @ApiOperation("删除授权域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (domainService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:domain:save')") + @OperationLog + @ApiOperation("批量添加授权域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (domainService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:domain:update')") + @OperationLog + @ApiOperation("批量修改授权域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(domainService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:domain:remove')") + @OperationLog + @ApiOperation("批量删除授权域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (domainService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java b/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java new file mode 100644 index 0000000..4f4704d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.EmailRecord; +import com.gxwebsoft.common.system.service.EmailRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.mail.MessagingException; + +/** + * 邮件功能控制器 + * + * @author WebSoft + * @since 2020-03-21 00:37:11 + */ +@Api(tags = "邮件功能") +@RestController +@RequestMapping("/api/system/email") +public class EmailController extends BaseController { + @Resource + private EmailRecordService emailRecordService; + + @PreAuthorize("hasAuthority('sys:email:send')") + @ApiOperation("发送邮件") + @PostMapping() + public ApiResult send(@RequestBody EmailRecord emailRecord) { + try { + emailRecordService.sendFullTextEmail(emailRecord.getTitle(), emailRecord.getContent(), + emailRecord.getReceiver().split(",")); + emailRecord.setCreateUserId(getLoginUserId()); + emailRecordService.save(emailRecord); + return success("发送成功"); + } catch (MessagingException e) { + e.printStackTrace(); + } + return fail("发送失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/FileController.java b/src/main/java/com/gxwebsoft/common/system/controller/FileController.java new file mode 100644 index 0000000..12b5a7e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/FileController.java @@ -0,0 +1,327 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; +import com.gxwebsoft.common.system.service.FileRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +/** + * 文件上传下载控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:24 + */ +@Api(tags = "文件上传下载") +@RestController +@RequestMapping("/api/file") +public class FileController extends BaseController { + @Resource + private ConfigProperties config; + @Resource + private RedisUtil redisUtil; + @Resource + private FileRecordService fileRecordService; + + @PreAuthorize("hasAuthority('sys:file:upload')") + @ApiOperation("上传文件") + @PostMapping("/upload") + public ApiResult upload(@RequestParam MultipartFile file, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload"); + String requestURL = config.getFileServer() + "/api/file"; + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail" + path); + } + result.setDownloadUrl(config.getFileServer() + "/download" + path); + // 云存储配置 + final String s = redisUtil.get("setting:upload:" + getTenantId()); + final JSONObject jsonObject = JSONObject.parseObject(s); + final String uploadMethod = jsonObject.getString("uploadMethod"); + final String bucketDomain = jsonObject.getString("bucketDomain"); + if(!uploadMethod.equals("file")){ + path = bucketDomain + path; + } + result.setUrl(path); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @ApiOperation("上传base64文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "base64", value = "base64", required = true, dataType = "string", dataTypeClass = String.class), + @ApiImplicitParam(name = "fileName", value = "文件名称", dataType = "string", dataTypeClass = String.class) + }) + @PostMapping("/upload/base64") + public ApiResult uploadBase64(String base64, String fileName, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(base64, fileName, getUploadDir()); + String path = upload.getAbsolutePath().substring(dir.length()).replace("\\", "/"); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload/base64"); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(fileName) ? upload.getName() : fileName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + result.setThumbnail(FileServerUtil.isImage(upload) ? (requestURL + "/thumbnail" + path) : null); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @ApiOperation("上传图片") + @PostMapping("/image") + public HashMap image(@RequestParam MultipartFile file, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); +// System.out.println("request.getRequestURL() = " + request.getRequestURL()); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/image"); + String requestURL = config.getFileServer() + "/api/file"; +// System.out.println("requestURL = " + requestURL); +// config.getServerUrl() + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail" + path); + } + result.setDownloadUrl(requestURL + "/download" + path); + final HashMap map = new HashMap<>(); + map.put("name",result.getName()); + map.put("status","done"); + map.put("thumbUrl",result.getThumbnail()); + map.put("downloadUrl",result.getDownloadUrl()); + map.put("url",result.getUrl()); + fileRecordService.save(result); + return map; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @ApiOperation("根据id查询文件") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(fileRecordService.getByIdRel(id)); + } + + @ApiOperation("查看原文件") + @GetMapping("/{dir}/{name:.+}") + public void preview(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + FileServerUtil.preview(file, getPdfOutDir(), config.getOpenOfficeHome(), response, request); + } + + @ApiOperation("下载原文件") + @GetMapping("/download/{dir}/{name:.+}") + public void download(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + String path = dir + "/" + name; + FileRecord record = fileRecordService.getByIdPath(path); + File file = new File(getUploadDir(), path); + String fileName = record == null ? file.getName() : record.getName(); + FileServerUtil.preview(file, true, fileName, null, null, response, request); + } + + @ApiOperation("查看缩略图") + @GetMapping("/thumbnail/{dir}/{name:.+}") + public void thumbnail(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + File thumbnail = new File(getUploadSmDir(), dir + "/" + name); + FileServerUtil.previewThumbnail(file, thumbnail, config.getThumbnailSize(), response, request); + } + + @PreAuthorize("hasAuthority('sys:file:remove')") + @ApiOperation("删除文件") + @DeleteMapping("/remove/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + FileRecord record = fileRecordService.getById(id); + if (fileRecordService.removeById(id)) { + if (StrUtil.isNotBlank(record.getPath())) { + fileRecordService.deleteFileAsync(Arrays.asList( + new File(getUploadDir(), record.getPath()), + new File(getUploadSmDir(), record.getPath()) + )); + } + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:file:remove')") + @ApiOperation("批量删除文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "id数组", required = true, dataType = "string", dataTypeClass = String.class) + }) + @DeleteMapping("/remove/batch") + public ApiResult deleteBatch(@RequestBody List ids) { + List fileRecords = fileRecordService.listByIds(ids); + if (fileRecordService.removeByIds(ids)) { + List files = new ArrayList<>(); + for (FileRecord record : fileRecords) { + if (StrUtil.isNotBlank(record.getPath())) { + files.add(new File(getUploadDir(), record.getPath())); + files.add(new File(getUploadSmDir(), record.getPath())); + } + } + fileRecordService.deleteFileAsync(files); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @ApiOperation("分页查询文件") + @GetMapping("/page") + public ApiResult> page(FileRecordParam param, HttpServletRequest request) { + PageResult result = fileRecordService.pageRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/page"); + String requestURL = config.getFileServer(); + for (FileRecord record : result.getList()) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(result); + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @ApiOperation("查询全部文件") + @GetMapping("/list") + public ApiResult> list(FileRecordParam param, HttpServletRequest request) { + List records = fileRecordService.listRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/list"); + String requestURL = config.getFileServer(); + for (FileRecord record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(records); + } + + /** + * 文件上传基目录 + */ + private String getUploadBaseDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 文件上传位置(本地) + */ +// private String getUploadDir() { +// return "/Users/gxwebsoft/Documents/uploads/"; +// } + + /** + * 缩略图生成位置 + */ + private String getUploadSmDir() { + return getUploadBaseDir() + "thumbnail/"; + } + + /** + * office转pdf输出位置 + */ + private String getPdfOutDir() { + return getUploadBaseDir() + "pdf/"; + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @ApiOperation("添加文件") + @PostMapping() + public ApiResult save(@RequestBody FileRecord fileRecord) { + if (fileRecordService.save(fileRecord)) { + return success("上传成功"); + } + return fail("上传失败"); + } + + @PreAuthorize("hasAuthority('sys:file:update')") + @ApiOperation("修改文件") + @PutMapping() + public ApiResult update(@RequestBody FileRecord fileRecord) { + if (fileRecordService.updateById(fileRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java b/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java new file mode 100644 index 0000000..58244d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import com.gxwebsoft.common.system.service.LoginRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 登录日志控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:31 + */ +@Api(tags = "登录日志") +@RestController +@RequestMapping("/api/system/login-record") +public class LoginRecordController extends BaseController { + @Resource + private LoginRecordService loginRecordService; + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @ApiOperation("分页查询登录日志") + @GetMapping("/page") + public ApiResult> page(LoginRecordParam param) { + return success(loginRecordService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @ApiOperation("查询全部登录日志") + @GetMapping() + public ApiResult> list(LoginRecordParam param) { + return success(loginRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @ApiOperation("根据id查询登录日志") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(loginRecordService.getByIdRel(id)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java new file mode 100644 index 0000000..c6b4f00 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -0,0 +1,314 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.CommonRequest; +import com.aliyuncs.CommonResponse; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.exceptions.ServerException; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.google.gson.Gson; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.ExistenceParam; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.LoginParam; +import com.gxwebsoft.common.system.param.SmsCaptchaParam; +import com.gxwebsoft.common.system.param.UpdatePasswordParam; +import com.gxwebsoft.common.system.result.CaptchaResult; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.*; +import com.wf.captcha.SpecCaptcha; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +/** + * 登录认证控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Api(tags = "登录认证") +@RestController +@RequestMapping("/api") +public class MainController extends BaseController { + @Resource + private ConfigProperties configProperties; + @Resource + private UserService userService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private CacheClient cacheClient; + @Resource + private RedisUtil redisUtil; + + @ApiOperation("检查用户是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + if (param.isExistence(userService, User::getUserId)) { + return success("已存在", param.getValue()); + } + return fail("不存在"); + } + + @ApiOperation("获取登录用户信息") + @GetMapping("/auth/user") + public ApiResult userInfo() { + final Integer loginUserId = getLoginUserId(); + if(loginUserId != null){ + return success(userService.getByIdRel(getLoginUserId())); + } + return fail("loginUserId不存在",null); + } + + @ApiOperation("获取登录用户菜单") + @GetMapping("/auth/menu") + public ApiResult> userMenu() { + List menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU); + return success(CommonUtil.toTreeData(menus, 0, Menu::getParentId, Menu::getMenuId, Menu::setChildren)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("修改个人信息") + @PutMapping("/auth/user") + public ApiResult updateInfo(@RequestBody User user) { + user.setUserId(getLoginUserId()); + // 不能修改的字段 + user.setUsername(null); + user.setPassword(null); + user.setEmailVerified(null); + user.setOrganizationId(null); + user.setStatus(null); + if (userService.updateById(user)) { + return success(userService.getByIdRel(user.getUserId())); + } + return fail("保存失败", null); + } + + @PreAuthorize("hasAuthority('sys:auth:password')") + @ApiOperation("修改自己密码") + @PutMapping("/auth/password") + public ApiResult updatePassword(@RequestBody UpdatePasswordParam param) { + if (StrUtil.hasBlank(param.getOldPassword(), param.getPassword())) { + return fail("参数不能为空"); + } + Integer userId = getLoginUserId(); + if (userId == null) { + return fail("未登录"); + } + if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) { + return fail("原密码输入不正确"); + } + User user = new User(); + user.setUserId(userId); + user.setPassword(userService.encodePassword(param.getPassword())); + if (userService.updateById(user)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("图形验证码") + @GetMapping("/captcha") + public ApiResult captcha() { + SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); + return success(new CaptchaResult(specCaptcha.toBase64(), specCaptcha.text().toLowerCase())); + } + + @ApiOperation("企业微信登录链接") + @GetMapping("/wxWorkQrConnect") + public ApiResult wxWorkQrConnect() throws UnsupportedEncodingException { + final JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", 10048); + final String corpId = settingInfo.getString("corpId"); + String encodedReturnUrl = URLEncoder.encode("https://oa.gxwebsoft.com/api/open/wx-work/login","UTF-8"); + String url = "https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=" +corpId+ "&redirect_uri=" +encodedReturnUrl+ "&state=ww_login@gxwebsoft&usertype=admin"; + return success("获取成功",url); + } + + @ApiOperation("短信验证码") + @PostMapping("/sendSmsCaptcha") + public ApiResult sendSmsCaptcha(@RequestBody SmsCaptchaParam param) { + // 读取短信配置信息 + String string = redisUtil.get("setting:sms:" + getTenantId()); + JSONObject jsonObject = JSONObject.parseObject(string); + String accessKeyId = jsonObject.getString("accessKeyId"); + String accessKeySecret = jsonObject.getString("accessKeySecret"); + String userTemplateId = jsonObject.getString("userTemplateId"); + String sign = jsonObject.getString("sign"); + if(accessKeyId != null){ + DefaultProfile profile = DefaultProfile.getProfile("regionld", accessKeyId, accessKeySecret); + IAcsClient client = new DefaultAcsClient(profile); + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId", "cn-hangzhou"); + request.putQueryParameter("PhoneNumbers", param.getPhone()); + request.putQueryParameter("SignName", sign); + request.putQueryParameter("TemplateCode", userTemplateId); + // 生成短信验证码 + Random randObj = new Random(); + String code = Integer.toString(100000 + randObj.nextInt(900000)); + request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); + try { + CommonResponse response = client.getCommonResponse(request); + System.out.println("response = " + response); + String json = response.getData(); + System.out.println("json = " + json); + Gson g = new Gson(); + HashMap result = g.fromJson(json, HashMap.class); + System.out.println("result = " + result); + if("OK".equals(result.get("Message"))) { + System.out.println("======================== = " + result); + cacheClient.set(param.getPhone(),code,5L,TimeUnit.MINUTES); + String key = "code:" + param.getPhone(); + redisUtil.set(key,code,5L,TimeUnit.MINUTES); + return success("发送成功",result.get("Message")); + }else{ + return fail("发送失败"); + } + } catch (ServerException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); + } + } + return fail("发送失败"); + } + + @ApiOperation("重置密码") + @PutMapping("/password") + public ApiResult resetPassword(@RequestBody User user) { + if (user.getPassword() == null) { + return fail("参数不正确"); + } + if (user.getCode() == null) { + return fail("验证码不能为空"); + } + // 短信验证码校验 + String code = cacheClient.get(user.getPhone(), String.class); + if (!StrUtil.equals(code,user.getCode())) { + return fail("验证码不正确"); + } + + user.setUserId(getLoginUserId()); + user.setPassword(userService.encodePassword(user.getPassword())); + if (userService.updateById(user)) { + return success("密码修改成功"); + } else { + return fail("密码修改失败"); + } + } + + @ApiOperation("短信验证码登录") + @PostMapping("/loginBySms") + public ApiResult loginBySms(@RequestBody LoginParam param, HttpServletRequest request) { + final String phone = param.getPhone(); + final Integer tenantId = param.getTenantId(); + final String code = param.getCode(); + + User user = userService.getByUsername(phone, tenantId); + // 验证码校验 + String key = "code:" + param.getPhone(); + if(!code.equals(redisUtil.get(key))){ + String message = "验证码不正确"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId,request); + return fail(message, null); + } + if (user == null) { + String message = "账号不存在"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId,request); + return fail(message, null); + } + if (!user.getStatus().equals(0)) { + String message = "账号被冻结"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + loginRecordService.saveAsync(phone, LoginRecord.TYPE_LOGIN, null, tenantId, request); + + // 设置过期时间 + Long tokenExpireTime = configProperties.getTokenExpireTime(); + final JSONObject register = cacheClient.getSettingInfo("register", tenantId); + if(register != null){ + final String ExpireTime = register.getString("tokenExpireTime"); + if (ExpireTime != null) { + tokenExpireTime = Long.valueOf(ExpireTime); + } + } + + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(phone, tenantId), + tokenExpireTime, configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("会员注册") + @PostMapping("/register") + public ApiResult register(@RequestBody LoginParam param, HttpServletRequest request) { + final String phone = param.getPhone(); + final Integer tenantId = param.getTenantId(); + final String code = param.getCode(); + + User user = userService.getByUsername(phone, tenantId); + // 验证码校验 + String key = "code:" + param.getPhone(); + if(!code.equals(redisUtil.get(key))){ + String message = "验证码不正确"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId,request); + return fail(message, null); + } + if (user == null) { + String message = "账号不存在"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId,request); + return fail(message, null); + } + if (!user.getStatus().equals(0)) { + String message = "账号被冻结"; + loginRecordService.saveAsync(phone, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + loginRecordService.saveAsync(phone, LoginRecord.TYPE_LOGIN, null, tenantId, request); + + // 设置过期时间 + Long tokenExpireTime = configProperties.getTokenExpireTime(); + final JSONObject register = cacheClient.getSettingInfo("register", tenantId); + if(register != null){ + final String ExpireTime = register.getString("tokenExpireTime"); + if (ExpireTime != null) { + tokenExpireTime = Long.valueOf(ExpireTime); + } + } + + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(phone, tenantId), + tokenExpireTime, configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java b/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java new file mode 100644 index 0000000..87d706e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.MenuParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.PlugService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 菜单控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:23 + */ +@Api(tags = "菜单管理") +@RestController +@RequestMapping("/api/system/menu") +public class MenuController extends BaseController { + @Resource + private MenuService menuService; + @Resource + private PlugService plugService; + + @PreAuthorize("hasAuthority('sys:menu:list')") + @ApiOperation("分页查询菜单") + @GetMapping("/page") + public ApiResult> page(MenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(menuService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:menu:list')") + @ApiOperation("查询全部菜单") + @GetMapping() + public ApiResult> list(MenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(menuService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:menu:list')") + @ApiOperation("根据id查询菜单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(menuService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:menu:save')") + @ApiOperation("添加菜单") + @PostMapping() + public ApiResult add(@RequestBody Menu menu) { + if (menu.getParentId() == null) { + menu.setParentId(0); + } + if (menuService.save(menu)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @ApiOperation("修改菜单") + @PutMapping() + public ApiResult update(@RequestBody Menu menu) { + if (menuService.updateById(menu)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:remove')") + @ApiOperation("删除菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (menuService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:save')") + @ApiOperation("批量添加菜单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List menus) { + if (menuService.saveBatch(menus)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @ApiOperation("批量修改菜单") + @PutMapping("/batch") + public ApiResult updateBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(menuService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:remove')") + @ApiOperation("批量删除菜单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (menuService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @ApiOperation("菜单克隆") + @PostMapping("/clone") + public ApiResult onClone(@RequestBody MenuParam param){ + if(menuService.cloneMenu(param)){ + return success("克隆成功,请刷新"); + } + return fail("克隆失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @ApiOperation("安装插件") + @GetMapping("/install/{id}") + public ApiResult install(@PathVariable("id") Integer id){ + if(menuService.install(id)){ + // 更新安装次数 + final Plug plug = plugService.getOne(new LambdaQueryWrapper().eq(Plug::getMenuId, id)); + plug.setInstalls(plug.getInstalls() + 1); + plugService.updateById(plug); + return success("安装成功"); + } + return fail("安装失败",id); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java b/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java new file mode 100644 index 0000000..ac720f1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import com.gxwebsoft.common.system.service.OperationRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 操作日志控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:12 + */ +@Api(tags = "操作日志") +@RestController +@RequestMapping("/api/system/operation-record") +public class OperationRecordController extends BaseController { + @Resource + private OperationRecordService operationRecordService; + + /** + * 分页查询操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @ApiOperation("分页查询操作日志") + @GetMapping("/page") + public ApiResult> page(OperationRecordParam param) { + return success(operationRecordService.pageRel(param)); + } + + /** + * 查询全部操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @ApiOperation("查询全部操作日志") + @GetMapping() + public ApiResult> list(OperationRecordParam param) { + return success(operationRecordService.listRel(param)); + } + + /** + * 根据id查询操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @ApiOperation("根据id查询操作日志") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(operationRecordService.getByIdRel(id)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java b/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java new file mode 100644 index 0000000..478a74f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; +import com.gxwebsoft.common.system.service.OrganizationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 组织机构控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "组织机构管理") +@RestController +@RequestMapping("/api/system/organization") +public class OrganizationController extends BaseController { + @Resource + private OrganizationService organizationService; + + @PreAuthorize("hasAuthority('sys:org:list')") + @ApiOperation("分页查询组织机构") + @GetMapping("/page") + public ApiResult> page(OrganizationParam param) { + return success(organizationService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:org:list')") + @ApiOperation("查询全部组织机构") + @GetMapping() + public ApiResult> list(OrganizationParam param) { + return success(organizationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:org:list')") + @ApiOperation("根据id查询组织机构") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(organizationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:org:save')") + @ApiOperation("添加组织机构") + @PostMapping() + public ApiResult add(@RequestBody Organization organization) { + if (organization.getParentId() == null) { + organization.setParentId(0); + } + if (organizationService.count(new LambdaQueryWrapper() + .eq(Organization::getOrganizationName, organization.getOrganizationName()) + .eq(Organization::getParentId, organization.getParentId())) > 0) { + return fail("机构名称已存在"); + } + if (organizationService.save(organization)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:org:update')") + @ApiOperation("修改组织机构") + @PutMapping() + public ApiResult update(@RequestBody Organization organization) { + if (organization.getOrganizationName() != null) { + if (organization.getParentId() == null) { + organization.setParentId(0); + } + if (organizationService.count(new LambdaQueryWrapper() + .eq(Organization::getOrganizationName, organization.getOrganizationName()) + .eq(Organization::getParentId, organization.getParentId()) + .ne(Organization::getOrganizationId, organization.getOrganizationId())) > 0) { + return fail("机构名称已存在"); + } + } + if (organizationService.updateById(organization)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:org:remove')") + @ApiOperation("删除组织机构") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (organizationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:org:save')") + @ApiOperation("批量添加组织机构") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List organizationList) { + if (organizationService.saveBatch(organizationList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:org:update')") + @ApiOperation("批量修改组织机构") + @PutMapping("/batch") + public ApiResult updateBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(organizationService, Organization::getOrganizationId)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:org:remove')") + @ApiOperation("批量删除组织机构") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (organizationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java b/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java new file mode 100644 index 0000000..d3da1e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java @@ -0,0 +1,161 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.PlugParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.PlugService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 插件扩展控制器 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Api(tags = "插件扩展管理") +@RestController +@RequestMapping("/api/system/plug") +public class PlugController extends BaseController { + @Resource + private PlugService plugService; + @Resource + private MenuService menuService; + + @PreAuthorize("hasAuthority('sys:plug:list')") + @ApiOperation("分页查询插件扩展") + @GetMapping("/page") + public ApiResult> page(PlugParam param) { + // 如果不传userId,只显示审核通过的插件 + if (param.getUserId() == null) { + param.setStatus(20); + } + // 使用关联查询 + return success(plugService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:plug:list')") + @ApiOperation("查询全部插件扩展") + @GetMapping() + public ApiResult> list(PlugParam param) { + // 使用关联查询 + return success(plugService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:plug:list')") + @ApiOperation("根据id查询插件扩展") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(plugService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @ApiOperation("添加插件扩展") + @PostMapping() + public ApiResult save(@RequestBody Plug plug) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + plug.setUserId(loginUser.getUserId()); + } + if (plugService.save(plug)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:update')") + @ApiOperation("修改插件扩展") + @PutMapping() + public ApiResult update(@RequestBody Plug plug) { + if (plugService.updateById(plug)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:remove')") + @ApiOperation("删除插件扩展") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (plugService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @ApiOperation("批量添加插件扩展") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (plugService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:update')") + @ApiOperation("批量修改插件扩展") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(plugService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:remove')") + @ApiOperation("批量删除插件扩展") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (plugService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @ApiOperation("发布插件") + @PostMapping("/plug") + public ApiResult plug(@RequestBody Plug plug){ + final Integer menuId = plug.getParentId(); + // 查重 + final int count = plugService.count(new LambdaQueryWrapper().eq(Plug::getMenuId, menuId)); + if(count > 0){ + return fail("请勿重复发布"); + } + // 准备数据 + final Menu menu = menuService.getById(menuId); + plug.setUserId(getLoginUserId()); + plug.setMenuId(menuId); + plug.setTenantId(getTenantId()); + plug.setIcon(menu.getIcon()); + plug.setPath(menu.getPath()); + plug.setComponent(menu.getComponent()); + plug.setAuthority(menu.getAuthority()); + plug.setTitle(menu.getTitle()); + plug.setMenuType(menu.getMenuType()); + plug.setMeta(menu.getMeta()); + plug.setParentId(menu.getParentId()); + plug.setHide(menu.getHide()); + plug.setSortNumber(menu.getSortNumber()); + if(plugService.save(plug)){ + return success("发布成功"); + } + return fail("发布失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java b/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java new file mode 100644 index 0000000..6e2c2a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/redis-util") +@Api(tags = "Redis缓存工具接口") +public class RedisUtilController extends BaseController { + private CacheClient cacheClient; + private final StringRedisTemplate redisTemplate; + private static final String SPLIT = ":"; + private static final String PREFIX_ENTITY_LIKE = "focus:user"; + private static final String PREFIX_USER_LIKE = "like:user"; + private static final String PREFIX_FOLLOWEE = "followee"; + private static final String PREFIX_FOLLOWER = "follower"; + + + public RedisUtilController(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @ApiOperation("添加关注") + @PostMapping("/addFocus") + public ApiResult addFocus(@RequestBody User user) { + final Integer userId = user.getUserId(); + redisTemplate.opsForZSet().incrementScore(getFocusKey(userId), userId.toString(), 1); + return success("关注成功"); + } + + /** + * 某个用户的关注数 + * @return like:entity:[entityId] ->set(userId) + */ + public static String getFocusKey(Integer userId) { + return PREFIX_ENTITY_LIKE + SPLIT + userId; + } + + /** + * 某个用户的赞 + * @return like:entity:[entityId] ->set(userId) + */ + public static String getEntityLikeKey(int entityType, int entityId) { + return PREFIX_ENTITY_LIKE + SPLIT + entityType + SPLIT + entityId; + } + + /** + * 某个用户的赞 + * @return like:user:[userId] ->int + */ + public static String getUserLikeKey(int userId) { + return PREFIX_USER_LIKE + SPLIT + userId; + } + + /** + * 某个用户关注的实体(键:用户Id,值:实体Id) + * @return followee:[userId:entityType] ->zSet(entityId,now) + */ + public static String getFolloweeKey(int userId, int entityType) { + return PREFIX_FOLLOWEE + SPLIT + userId + SPLIT + entityType; + } + + /** + * 某个实体拥有的粉丝(键:实体Id,值:用户Id) + * @return follower:[entityType:entityId] ->zSet(entityId,now) + */ + public static String getFollowerKey(int entityType, int entityId) { + return PREFIX_FOLLOWER + SPLIT + entityType + SPLIT + entityId; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java b/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java new file mode 100644 index 0000000..61211f4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java @@ -0,0 +1,144 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.param.RoleParam; +import com.gxwebsoft.common.system.service.RoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 角色控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +@Api(tags = "角色管理") +@RestController +@RequestMapping("/api/system/role") +public class RoleController extends BaseController { + @Resource + private RoleService roleService; + + @PreAuthorize("hasAuthority('sys:role:list')") + @ApiOperation("分页查询角色") + @GetMapping("/page") + public ApiResult> page(RoleParam param) { + PageParam page = new PageParam<>(param); + return success(roleService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:role:list')") + @ApiOperation("查询全部角色") + @GetMapping() + public ApiResult> list(RoleParam param) { + PageParam page = new PageParam<>(param); + return success(roleService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:role:list')") + @ApiOperation("根据id查询角色") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(roleService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:role:save')") + @ApiOperation("添加角色") + @PostMapping() + public ApiResult save(@RequestBody Role role) { + if (roleService.count(new LambdaQueryWrapper().eq(Role::getRoleCode, role.getRoleCode())) > 0) { + return fail("角色标识已存在"); + } + if (roleService.count(new LambdaQueryWrapper().eq(Role::getRoleName, role.getRoleName())) > 0) { + return fail("角色名称已存在"); + } + if (roleService.save(role)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @ApiOperation("修改角色") + @PutMapping() + public ApiResult update(@RequestBody Role role) { + if (role.getRoleCode() != null && roleService.count(new LambdaQueryWrapper() + .eq(Role::getRoleCode, role.getRoleCode()) + .ne(Role::getRoleId, role.getRoleId())) > 0) { + return fail("角色标识已存在"); + } + if (role.getRoleName() != null && roleService.count(new LambdaQueryWrapper() + .eq(Role::getRoleName, role.getRoleName()) + .ne(Role::getRoleId, role.getRoleId())) > 0) { + return fail("角色名称已存在"); + } + if (roleService.updateById(role)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:role:remove')") + @ApiOperation("删除角色") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (roleService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:role:save')") + @ApiOperation("批量添加角色") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + // 校验是否重复 + if (CommonUtil.checkRepeat(list, Role::getRoleName)) { + return fail("角色名称存在重复", null); + } + if (CommonUtil.checkRepeat(list, Role::getRoleCode)) { + return fail("角色标识存在重复", null); + } + // 校验是否存在 + List codeExists = roleService.list(new LambdaQueryWrapper().in(Role::getRoleCode, + list.stream().map(Role::getRoleCode).collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("角色标识已存在", codeExists.stream().map(Role::getRoleCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = roleService.list(new LambdaQueryWrapper().in(Role::getRoleName, + list.stream().map(Role::getRoleCode).collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("角色标识已存在", nameExists.stream().map(Role::getRoleCode) + .collect(Collectors.toList())).setCode(3); + } + if (roleService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:role:remove')") + @ApiOperation("批量删除角色") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (roleService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java b/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java new file mode 100644 index 0000000..fabe677 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 角色菜单控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +@Api(tags = "角色菜单管理") +@RestController +@RequestMapping("/api/system/role-menu") +public class RoleMenuController extends BaseController { + @Resource + private RoleMenuService roleMenuService; + @Resource + private MenuService menuService; + + @PreAuthorize("hasAuthority('sys:role:list')") + @ApiOperation("查询角色菜单") + @GetMapping("/{id}") + public ApiResult> list(@PathVariable("id") Integer roleId) { + List menus = menuService.list(new LambdaQueryWrapper().orderByAsc(Menu::getSortNumber)); + List roleMenus = roleMenuService.list(new LambdaQueryWrapper() + .eq(RoleMenu::getRoleId, roleId)); + for (Menu menu : menus) { + menu.setChecked(roleMenus.stream().anyMatch((d) -> d.getMenuId().equals(menu.getMenuId()))); + } + return success(menus); + } + + @Transactional(rollbackFor = {Exception.class}) + @PreAuthorize("hasAuthority('sys:role:update')") + @ApiOperation("修改角色菜单") + @PutMapping("/{id}") + public ApiResult update(@PathVariable("id") Integer roleId, @RequestBody List menuIds) { + roleMenuService.remove(new LambdaUpdateWrapper().eq(RoleMenu::getRoleId, roleId)); + if (menuIds != null && menuIds.size() > 0) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menuIds) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + if (!roleMenuService.saveBatch(roleMenuList)) { + throw new BusinessException("保存失败"); + } + } + return success("保存成功"); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @ApiOperation("添加角色菜单") + @PostMapping("/{id}") + public ApiResult addRoleAuth(@PathVariable("id") Integer roleId, @RequestBody Integer menuId) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + if (roleMenuService.save(roleMenu)) { + return success(); + } + return fail(); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @ApiOperation("移除角色菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer roleId, @RequestBody Integer menuId) { + if (roleMenuService.remove(new LambdaUpdateWrapper() + .eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getMenuId, menuId))) { + return success(); + } + return fail(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java b/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java new file mode 100644 index 0000000..814a1fa --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java @@ -0,0 +1,185 @@ +package com.gxwebsoft.common.system.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.SettingParam; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.TenantService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 系统设置控制器 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "系统设置管理") +@RestController +@RequestMapping("/api/system/setting") +public class SettingController extends BaseController { + @Resource + private SettingService settingService; + @Resource + private TenantService tenantService; + @Resource + private RedisUtil redisUtil; + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("分页查询系统设置") + @GetMapping("/page") + public ApiResult> page(SettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(settingService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(settingService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("查询全部系统设置") + @GetMapping() + public ApiResult> list(SettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(settingService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(settingService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("根据id查询系统设置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(settingService.getById(id)); + // 使用关联查询 + //return success(settingService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("添加系统设置") + @PostMapping() + public ApiResult save(@RequestBody Setting setting) { + if (settingService.save(setting)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("修改系统设置") + @PutMapping() + public ApiResult update(@RequestBody Setting setting) { + if (settingService.updateById(setting)) { + // 更新系统设置信息到缓存 + String key = "setting:" + setting.getSettingKey() + ":" + getTenantId(); + System.out.println("key = " + key); + redisUtil.set(key, JSON.parseObject(setting.getContent())); + // 创建微信支付Bean +// settingService.initConfig(setting); + // 更新租户信息 + if (setting.getSettingKey().equals("setting")) { + System.out.println("修改系统设置 = " + setting.getContent()); + final String content = setting.getContent(); + final JSONObject jsonObject = JSONObject.parseObject(content); + final String siteName = jsonObject.getString("siteName"); + final String logo = jsonObject.getString("logo"); + System.out.println("siteName = " + siteName); + final Tenant tenant = new Tenant(); + tenant.setTenantName(siteName); + tenant.setTenantId(getTenantId()); + tenant.setLogo(logo); + tenantService.updateById(tenant); + } + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:remove')") + @ApiOperation("删除系统设置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (settingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("批量添加系统设置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (settingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:update')") + @ApiOperation("批量修改系统设置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(settingService, "setting_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:remove')") + @ApiOperation("批量删除系统设置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (settingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:data')") + @ApiOperation("查询租户设置信息") + @GetMapping("/data") + public ApiResult data() { + return success(settingService.getData("setting")); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @ApiOperation("更新主题皮肤") + @PutMapping("/theme") + public ApiResult theme(@RequestBody Setting setting) { + String key = "theme:".concat(getTenantId().toString()); + // 新增 + final Setting one = settingService.getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, setting.getSettingKey())); + if(one == null){ + settingService.save(setting); + redisUtil.set(key,setting.getContent()); + return success("保存成功"); + } + // 更新 + final Setting update = settingService.getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, setting.getSettingKey())); + update.setContent(setting.getContent()); + if (settingService.updateById(update)) { + redisUtil.set(key,setting.getContent()); + return success("更新成功"); + } + return fail("更新失败"); + } + + @ApiOperation("更新主题皮肤") + @GetMapping("/getTheme") + public ApiResult getTheme() { + String key = "theme:".concat(getTenantId().toString()); + return success("获取成功",redisUtil.get(key)); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java b/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java new file mode 100644 index 0000000..67dbca5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java @@ -0,0 +1,158 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 租户控制器 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Api(tags = "租户管理") +@RestController +@RequestMapping("/api/system/tenant") +public class TenantController extends BaseController { + @Resource + private TenantService tenantService; + @Resource + private MenuService menuService; + @Resource + private RoleMenuService roleMenuService; + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @ApiOperation("分页查询租户") + @GetMapping("/page") + public ApiResult> page(TenantParam param) { + // 使用关联查询 + return success(tenantService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @ApiOperation("查询全部租户") + @GetMapping() + public ApiResult> list(TenantParam param) { + // 使用关联查询 + return success(tenantService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @ApiOperation("根据id查询租户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(tenantService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:tenant:save')") + @ApiOperation("添加租户") + @PostMapping() + public ApiResult save(@RequestBody Tenant tenant) { + System.out.println("tenant = " + tenant); + if (tenantService.save(tenant)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:update')") + @ApiOperation("修改租户") + @PutMapping() + public ApiResult update(@RequestBody Tenant tenant) { + if (tenantService.updateById(tenant)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:remove')") + @ApiOperation("删除租户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (tenantService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:save')") + @ApiOperation("批量添加租户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (tenantService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:update')") + @ApiOperation("批量修改租户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(tenantService, "tenant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:remove')") + @ApiOperation("批量删除租户") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (tenantService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("租户角色权限初始化") + @GetMapping("/role-menu/{id}") + public ApiResult> initialization(@PathVariable("id") Integer roleId) { + List menus = menuService.list(new LambdaQueryWrapper().orderByAsc(Menu::getSortNumber)); + List roleMenus = roleMenuService.list(new LambdaQueryWrapper() + .eq(RoleMenu::getRoleId, roleId)); + for (Menu menu : menus) { + menu.setChecked(roleMenus.stream().anyMatch((d) -> d.getMenuId().equals(menu.getMenuId()))); + } + List menuIds = menus.stream().map(Menu::getMenuId).collect(Collectors.toList()); + roleMenuService.remove(new LambdaUpdateWrapper().eq(RoleMenu::getRoleId, roleId)); + if (menuIds.size() > 0) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menuIds) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + if (!roleMenuService.saveBatch(roleMenuList)) { + throw new BusinessException("保存失败"); + } + } + return success(menus); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserCollectionController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserCollectionController.java new file mode 100644 index 0000000..4fddf72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserCollectionController.java @@ -0,0 +1,135 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserCollection; +import com.gxwebsoft.common.system.param.UserCollectionParam; +import com.gxwebsoft.common.system.service.UserCollectionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 我的收藏控制器 + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +@Api(tags = "用户收藏") +@RestController +@RequestMapping("/api/system/user-collection") +public class UserCollectionController extends BaseController { + @Resource + private UserCollectionService userCollectionService; + + @PreAuthorize("hasAuthority('sys:userCollection:list')") + @ApiOperation("分页查询我的收藏") + @GetMapping("/page") + public ApiResult> page(UserCollectionParam param) { + // 使用关联查询 + return success(userCollectionService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:userCollection:list')") + @ApiOperation("查询全部我的收藏") + @GetMapping() + public ApiResult> list(UserCollectionParam param) { + // 使用关联查询 + return success(userCollectionService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:userCollection:list')") + @ApiOperation("根据id查询我的收藏") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userCollectionService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:userCollection:save')") + @OperationLog + @ApiOperation("添加和取消收藏") + @PostMapping() + public ApiResult save(@RequestBody UserCollection userCollection) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userCollection.setUserId(loginUser.getUserId()); + userCollection.setTid(userCollection.getTid()); + final UserCollection one = userCollectionService.getOne(new LambdaQueryWrapper().eq(UserCollection::getUserId, loginUser.getUserId()).eq(UserCollection::getTid, userCollection.getTid()).last("limit 1")); + if (one != null) { + userCollectionService.removeById(one.getId()); + return success("已取消收藏"); + } + if (userCollectionService.save(userCollection)) { + return success("已添加收藏"); + } + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:userCollection:update')") + @OperationLog + @ApiOperation("修改我的收藏") + @PutMapping() + public ApiResult update(@RequestBody UserCollection userCollection) { + if (userCollectionService.updateById(userCollection)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userCollection:remove')") + @OperationLog + @ApiOperation("删除我的收藏") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userCollectionService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:userCollection:save')") + @OperationLog + @ApiOperation("批量添加我的收藏") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userCollectionService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:userCollection:update')") + @OperationLog + @ApiOperation("批量修改我的收藏") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userCollectionService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userCollection:remove')") + @OperationLog + @ApiOperation("批量删除我的收藏") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userCollectionService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java new file mode 100644 index 0000000..4d1ac8d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java @@ -0,0 +1,405 @@ +package com.gxwebsoft.common.system.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.param.UserImportParam; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +import com.gxwebsoft.common.system.service.OrganizationService; +import com.gxwebsoft.common.system.service.RoleService; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 用户控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +@Api(tags = "用户管理") +@RestController +@RequestMapping("/api/system/user") +public class UserController extends BaseController { + @Resource + private UserService userService; + @Resource + private RoleService roleService; + @Resource + private OrganizationService organizationService; + @Resource + private DictionaryDataService dictionaryDataService; + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("分页查询用户") + @GetMapping("/page") + public ApiResult> page(UserParam param) { + return success(userService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("分页查询用户") + @GetMapping("/pageAdminByPhone") + public ApiResult> pageAdminByPhone(UserParam param) { + return success(userService.pageAdminByPhone(param)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("查询全部用户") + @GetMapping() + public ApiResult> list(UserParam param) { + return success(userService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("根据id查询用户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("根据手机号码查询用户") + @GetMapping("/getByPhone/{phone}") + public ApiResult getByPhone(@PathVariable("phone") String phone) { + return success(userService.getByPhone(phone)); + } + + @PreAuthorize("hasAuthority('sys:user:save')") + @ApiOperation("添加用户") + @PostMapping() + public ApiResult add(@RequestBody User user) { + user.setStatus(0); + user.setPassword(userService.encodePassword(user.getPassword())); + if (userService.saveUser(user)) { + return success("添加成功",user.getUserId()); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:user:save')") + @ApiOperation("批量添加用户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List userList) { + userList.forEach(d -> { + d.setStatus(0); + if (d.getPassword() != null) { + d.setPassword(userService.encodePassword(d.getPassword())); + } + }); + if (userService.saveBatch(userList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:user:save')") + @ApiOperation("批量添加用户并返回userId") + @PostMapping("/batchBackUserId") + public ApiResult saveBatchBackUserId(@RequestBody List userList) { + userList.forEach(d -> { + d.setStatus(0); + d.setPassword(userService.encodePassword(d.getPassword())); + }); + final Set phones = userList.stream().map(User::getPhone).collect(Collectors.toSet()); + if (userService.saveBatch(userList)) { + final UserParam userParam = new UserParam(); + userParam.setPhones(phones); + userParam.setLimit(500L); + final PageResult result = userService.pageRel(userParam); + final Set collect = result.getList().stream().map(User::getUserId).collect(Collectors.toSet()); + return success("添加成功",collect); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改用户") + @PutMapping() + public ApiResult update(@RequestBody User user) { + user.setStatus(null); + user.setUsername(null); + user.setPassword(null); + if (userService.updateUser(user)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:remove')") + @OperationLog + @ApiOperation("删除用户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量修改用户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userService, User::getUserId)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:remove')") + @OperationLog + @ApiOperation("批量删除用户") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "id数组", required = true, dataType = "string", dataTypeClass = String.class) + }) + @Transactional(rollbackFor = {Exception.class}) + @DeleteMapping("/batch") + public ApiResult deleteBatch(@RequestBody List ids) { + if (userService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改用户状态") + @PutMapping("/status") + public ApiResult updateStatus(@RequestBody User user) { + if (user.getUserId() == null || user.getStatus() == null || !Arrays.asList(0, 1).contains(user.getStatus())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setStatus(user.getStatus()); + if (userService.updateById(u)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改推荐状态") + @PutMapping("/recommend") + public ApiResult updateRecommend(@RequestBody User user) { + if (user.getUserId() == null || user.getRecommend() == null || !Arrays.asList(0, 1).contains(user.getRecommend())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setRecommend(user.getRecommend()); + if (userService.updateById(u)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量修改用户状态") + @PutMapping("/status/batch") + public ApiResult updateStatusBatch(@RequestBody BatchParam batchParam) { + if (!Arrays.asList(0, 1).contains(batchParam.getData())) { + return fail("状态值不正确"); + } + if (userService.update(new LambdaUpdateWrapper() + .in(User::getUserId, batchParam.getIds()) + .set(User::getStatus, batchParam.getData()))) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("重置密码") + @PutMapping("/password") + public ApiResult resetPassword(@RequestBody User user) { + if (user.getUserId() == null || StrUtil.isBlank(user.getPassword())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setPassword(userService.encodePassword(user.getPassword())); + if (userService.updateById(u)) { + return success("重置成功"); + } else { + return fail("重置失败"); + } + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量重置密码") + @PutMapping("/password/batch") + public ApiResult resetPasswordBatch(@RequestBody BatchParam batchParam) { + if (batchParam.getIds() == null || batchParam.getIds().size() == 0) { + return fail("请选择用户"); + } + if (batchParam.getData() == null) { + return fail("请输入密码"); + } + if (userService.update(new LambdaUpdateWrapper() + .in(User::getUserId, batchParam.getIds()) + .set(User::getPassword, userService.encodePassword(batchParam.getData())))) { + return success("重置成功"); + } else { + return fail("重置失败"); + } + } + + @ApiOperation("检查用户是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + if (param.isExistence(userService, User::getUserId)) { + return success(param.getValue() + "已存在"); + } + return fail(param.getValue() + "不存在"); + } + + /** + * excel导入用户 + */ + @PreAuthorize("hasAuthority('sys:user:save')") + @ApiOperation("导入用户") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/import") + public ApiResult> importBatch(MultipartFile file) { + ImportParams importParams = new ImportParams(); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), + UserImportParam.class, importParams); + // 校验是否重复 + if (CommonUtil.checkRepeat(list, UserImportParam::getUsername)) { + return fail("账号存在重复", null); + } + if (CommonUtil.checkRepeat(list, UserImportParam::getPhone)) { + return fail("手机号存在重复", null); + } + // 校验是否存在 + List usernameExists = userService.list(new LambdaQueryWrapper().in(User::getUsername, + list.stream().map(UserImportParam::getUsername).collect(Collectors.toList()))); + if (usernameExists.size() > 0) { + return fail("账号已经存在", + usernameExists.stream().map(User::getUsername).collect(Collectors.toList())); + } + List phoneExists = userService.list(new LambdaQueryWrapper().in(User::getPhone, + list.stream().map(UserImportParam::getPhone).collect(Collectors.toList()))); + if (phoneExists.size() > 0) { + return fail("手机号已经存在", + phoneExists.stream().map(User::getPhone).collect(Collectors.toList())); + } + // 添加 + List users = new ArrayList<>(); + for (UserImportParam one : list) { + User u = new User(); + u.setStatus(0); + u.setUsername(one.getUsername()); + u.setPassword(userService.encodePassword(one.getPassword())); + u.setNickname(one.getNickname()); + u.setPhone(one.getPhone()); + Role role = roleService.getOne(new QueryWrapper() + .eq("role_name", one.getRoleName()), false); + if (role == null) { + return fail("角色不存在", Collections.singletonList(one.getRoleName())); + } else { + u.setRoles(Collections.singletonList(role)); + } + Organization organization = organizationService.getOne(new QueryWrapper() + .eq("organization_full_name", one.getOrganizationName()), false); + if (organization == null) { + return fail("机构不存在", Collections.singletonList(one.getOrganizationName())); + } else { + u.setOrganizationId(organization.getOrganizationId()); + } + DictionaryData sex = dictionaryDataService.getByDictCodeAndName("sex", one.getSexName()); + if (sex == null) { + return fail("性别不存在", Collections.singletonList(one.getSexName())); + } else { + u.setSex(sex.getDictDataCode()); + } + } + if (userService.saveBatch(users)) { + return success("导入成功", null); + } + } catch (Exception e) { + e.printStackTrace(); + } + return fail("导入失败", null); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @PostMapping("/getAvatarByMpWx") + @ApiOperation("更新微信头像") + public ApiResult getAvatarByMpWx(@RequestBody User user){ + user.setAvatar("https://oa.gxwebsoft.com/assets/logo.7ccfefb9.svg"); + if (userService.updateUser(user)) { + return success("更新成功"); + } + return fail("更新失败"); + } + + @PostMapping("/updatePointsBySign") + @ApiOperation("签到成功累加积分") + public ApiResult updatePointsBySign(){ + final User loginUser = getLoginUser(); + loginUser.setPoints(loginUser.getPoints() + 1); + if (userService.updateUser(loginUser)) { + return success("签到成功"); + } + return fail("签到失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @PutMapping("/updateUserBalance") + @ApiOperation("更新用户余额") + public ApiResult updateUserBalance(@RequestBody User user){ + if (getLoginUser() == null) { + return fail("请先登录"); + } + if (userService.updateUser(user)) { + return success("操作成功"); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("统计用户余额") + @GetMapping("/countUserBalance") + public ApiResult countUserBalance(User param) { + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.gt(User::getBalance, 0); + if (!param.getOrganizationId().equals(0)) { + wrapper.eq(User::getOrganizationId,param.getOrganizationId()); + } + final List list = userService.list(wrapper); + final BigDecimal totalBalance = list.stream().map(User::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add); + // System.out.println("统计用户余额 = " + totalBalance); + return success("统计成功",totalBalance); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java new file mode 100644 index 0000000..9ce4d6e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java @@ -0,0 +1,158 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.service.UserFileService; +import com.gxwebsoft.common.system.entity.UserFile; +import com.gxwebsoft.common.system.param.UserFileParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 用户文件控制器 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Api(tags = "用户文件管理") +@RestController +@RequestMapping("/api/system/user-file") +public class UserFileController extends BaseController { + @Resource + private UserFileService userFileService; + + @ApiOperation("分页查询用户文件") + @GetMapping("/page") + public ApiResult> page(UserFileParam param, HttpServletRequest request) { + param.setUserId(getLoginUserId()); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("is_directory desc"); + PageParam result = userFileService.page(page, page.getWrapper()); + List records = result.getRecords(); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/system/user-file") + "/file"; + for (UserFile record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + "/" + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail/" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download/" + record.getPath()); + } + } + return success(records, result.getTotal()); + } + + @ApiOperation("查询全部用户文件") + @GetMapping() + public ApiResult> list(UserFileParam param, HttpServletRequest request) { + param.setUserId(getLoginUserId()); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("is_directory desc"); + List records = userFileService.list(page.getOrderWrapper()); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/system/user-file") + "/file"; + for (UserFile record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + "/" + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail/" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download/" + record.getPath()); + } + } + return success(records); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("添加用户文件") + @PostMapping() + public ApiResult save(@RequestBody UserFile userFile) { + userFile.setUserId(getLoginUserId()); + if (userFile.getParentId() == null) { + userFile.setParentId(0); + } + if (userFile.getIsDirectory() != null && userFile.getIsDirectory().equals(1)) { + if (userFileService.count(new LambdaQueryWrapper() + .eq(UserFile::getName, userFile.getName()) + .eq(UserFile::getParentId, userFile.getParentId()) + .eq(UserFile::getUserId, userFile.getUserId())) > 0) { + return fail("文件夹名称已存在"); + } + } + if (userFileService.save(userFile)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("修改用户文件") + @PutMapping() + public ApiResult update(@RequestBody UserFile userFile) { + Integer loginUserId = getLoginUserId(); + UserFile old = userFileService.getById(userFile.getId()); + UserFile entity = new UserFile(); + if (StrUtil.isNotBlank(userFile.getName())) { + entity.setName(userFile.getName()); + } + if (userFile.getParentId() != null) { + entity.setParentId(userFile.getParentId()); + } + if (!old.getUserId().equals(loginUserId) || + (entity.getName() == null && entity.getParentId() == null)) { + return fail("修改失败"); + } + if (old.getIsDirectory() != null && old.getIsDirectory().equals(1)) { + if (userFileService.count(new LambdaQueryWrapper() + .eq(UserFile::getName, entity.getName() == null ? old.getName() : entity.getName()) + .eq(UserFile::getParentId, entity.getParentId() == null ? old.getParentId() : entity.getParentId()) + .eq(UserFile::getUserId, loginUserId) + .ne(UserFile::getId, old.getId())) > 0) { + return fail("文件夹名称已存在"); + } + } + if (userFileService.update(entity, new LambdaUpdateWrapper() + .eq(UserFile::getId, userFile.getId()) + .eq(UserFile::getUserId, loginUserId))) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("删除用户文件") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userFileService.remove(new LambdaUpdateWrapper() + .eq(UserFile::getId, id) + .eq(UserFile::getUserId, getLoginUserId()))) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @ApiOperation("批量删除用户文件") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userFileService.remove(new LambdaUpdateWrapper() + .in(UserFile::getId, ids) + .eq(UserFile::getUserId, getLoginUserId()))) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserRefereeController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserRefereeController.java new file mode 100644 index 0000000..b14f2ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserRefereeController.java @@ -0,0 +1,183 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserReferee; +import com.gxwebsoft.common.system.param.UserRefereeParam; +import com.gxwebsoft.common.system.service.UserRefereeService; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户推荐关系表控制器 + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +@Api(tags = "用户") +@RestController +@RequestMapping("/api/system/user-referee") +public class UserRefereeController extends BaseController { + @Resource + private UserRefereeService userRefereeService; + @Resource + private UserService userService; + + @PreAuthorize("hasAuthority('sys:userReferee:list')") + @OperationLog + @ApiOperation("分页查询用户推荐关系表") + @GetMapping("/page") + public ApiResult> page(UserRefereeParam param) { + // 使用关联查询 + return success(userRefereeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:userReferee:list')") + @OperationLog + @ApiOperation("查询全部用户推荐关系表") + @GetMapping() + public ApiResult> list(UserRefereeParam param) { + // 使用关联查询 + return success(userRefereeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:userReferee:list')") + @OperationLog + @ApiOperation("根据id查询用户推荐关系表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userRefereeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:userReferee:save')") + @OperationLog + @ApiOperation("添加用户推荐关系表") + @PostMapping() + public ApiResult save(@RequestBody UserReferee userReferee) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userReferee.setUserId(loginUser.getUserId()); + } + if (userRefereeService.save(userReferee)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:userReferee:update')") + @OperationLog + @ApiOperation("修改用户推荐关系表") + @PutMapping() + public ApiResult update(@RequestBody UserReferee userReferee) { + if (userRefereeService.updateById(userReferee)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userReferee:remove')") + @OperationLog + @ApiOperation("删除用户推荐关系表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userRefereeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:userReferee:save')") + @OperationLog + @ApiOperation("批量添加用户推荐关系表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userRefereeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:userReferee:update')") + @OperationLog + @ApiOperation("批量修改用户推荐关系表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userRefereeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:userReferee:remove')") + @OperationLog + @ApiOperation("批量删除用户推荐关系表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userRefereeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查询推荐人信息") + @GetMapping("/getReferee/{id}") + public ApiResult getReferee(@PathVariable("id") Integer id) { + if (id == null) { + return fail("参数错误", null); + } + + final UserReferee referee = userRefereeService.getOne(new LambdaQueryWrapper() + .eq(UserReferee::getUserId, id) + .eq(UserReferee::getDeleted, 0)); + + if (ObjectUtil.isEmpty(referee)) { + return fail("查询失败", null); + } + + final User user = userService.getByIdRel(referee.getDealerId()); + if (ObjectUtil.isNotEmpty(user)) { + return success(user); + } + return fail("查询失败", null); + } + + @ApiOperation("查询推荐人列表") + @GetMapping("/getRefereeList/{id}") + public ApiResult> getRefereeList(@PathVariable("id") Integer id) { + if (id == null) { + return fail("参数错误", null); + } + + final List refereeList = userRefereeService.list(new LambdaQueryWrapper() + .eq(UserReferee::getDealerId, id) + .eq(UserReferee::getDeleted, 0)); + + if (ObjectUtil.isEmpty(refereeList)) { + return fail("查询失败", null); + } + + final List users = userService.list( + new LambdaQueryWrapper() + .in(User::getUserId, refereeList.stream().map(UserReferee::getUserId).toList()) + ); + if (ObjectUtil.isNotEmpty(users)) { + return success(users); + } + return fail("查询失败", null); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java new file mode 100644 index 0000000..063a00d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java @@ -0,0 +1,435 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.utils.RequestUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.util.HashMap; +import java.util.concurrent.TimeUnit; + +import static com.gxwebsoft.common.core.constants.PlatformConstants.MP_WEIXIN; +import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY; + +@RestController +@RequestMapping("/api/wx-login") +@Api(tags = "微信小程序登录API") +public class WxLoginController extends BaseController { + private final StringRedisTemplate redisTemplate; + @Resource + private SettingService settingService; + @Resource + private UserService userService; + @Resource + private ConfigProperties configProperties; + @Resource + private UserRoleService userRoleService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private RoleService roleService; + @Resource + private RedisUtil redisUtil; + @Resource + private RequestUtil requestUtil; + @Resource + private ConfigProperties config; + @Resource + private UserRefereeService userRefereeService; + + public WxLoginController(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @ApiOperation("获取微信AccessToken") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/getAccessToken") + public ApiResult getMpAccessToken() { + return success("操作成功", getAccessToken()); + } + + @ApiOperation("获取微信openId") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/getOpenId") + public ApiResult getOpenId(@RequestBody UserParam userParam, HttpServletRequest request) { + // 1.获取openid + JSONObject result = getOpenIdByCode(userParam); + String openid = result.getString("openid"); + String unionid = result.getString("unionid"); + if (openid == null) { + return fail("获取openid失败", null); + } + // 2.通过openid查询用户是否已存在 + User user = userService.getByOauthId(userParam); + // 3.存在则签发token并返回登录成功,不存在则注册新用户 + if (user == null) { + user = addUser(userParam); + } + // 4.签发token + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, user.getTenantId(), request); + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("微信授权手机号码并登录") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/loginByMpWxPhone") + public ApiResult loginByMpWxPhone(@RequestBody UserParam userParam, HttpServletRequest request) { + // 获取手机号码 + String phone = getPhoneByCode(userParam); + if (phone == null) { + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + redisTemplate.delete(key); + throw new BusinessException("授权失败,请重试"); + } + // 查询是否存在 + User user = userService.getByPhone(phone); + // 不存在则注册 + if (user == null) { + if ((userParam.getOpenid() == null || userParam.getOpenid().isEmpty()) && userParam.getAuthCode() != null) { + UserParam userParam2 = new UserParam(); + userParam2.setCode(userParam.getAuthCode()); + JSONObject result = getOpenIdByCode(userParam2); + System.out.println("userInfo res:" + result); + String openid = result.getString("openid"); +// String unionid = result.getString("unionid"); + userParam.setOpenid(openid); + } + userParam.setPhone(phone); + user = addUser(userParam); + user.setRecommend(1); + }else { + // 存在则检查绑定上级 + if (userParam.getSceneType() != null && userParam.getSceneType().equals("save_referee") && userParam.getRefereeId() != null && userParam.getRefereeId() != 0) { + UserReferee check = userRefereeService.check(user.getUserId(), userParam.getRefereeId()); + if (check == null) { + UserReferee userReferee = new UserReferee(); + userReferee.setDealerId(userParam.getRefereeId()); + userReferee.setUserId(user.getUserId()); + userRefereeService.save(userReferee); + } + } + } + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REGISTER, null, user.getTenantId(), request); + // 附加体育中心项目用户信息 +// user.setBookingUser(); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("微信授权手机号码并更新") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/updatePhoneByMpWx") + public ApiResult updatePhoneByMpWx(@RequestBody UserParam userParam) { + // 获取微信授权手机号 + String phone = getPhoneByCode(userParam); + // 查询当前用户 + User user = userService.getById(userParam.getUserId()); + if (user != null && phone != null) { + user.setPhone(phone); + userService.updateUser(user); + return success("更新成功", phone); + } + return fail("更新失败"); + } + + /** + * 新用户注册 + */ + private User addUser(UserParam userParam) { + User addUser = new User(); + // 注册用户 + addUser.setStatus(0); + addUser.setUsername(createUsername("wx_")); + addUser.setNickname("微信用户"); + addUser.setPlatform(MP_WEIXIN); + addUser.setGradeId(2); + if (userParam.getGradeId() != null) { + addUser.setGradeId(userParam.getGradeId()); + } + if (userParam.getPhone() != null) { + addUser.setPhone(userParam.getPhone()); + } + if (StrUtil.isNotBlank(userParam.getOpenid())) { + addUser.setOpenid(userParam.getOpenid()); + } + if (StrUtil.isNotBlank(userParam.getUnionid())) { + addUser.setUnionid(userParam.getUnionid()); + } + addUser.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + addUser.setTenantId(getTenantId()); + addUser.setRecommend(1); + Role role = roleService.getOne(new QueryWrapper().eq("role_code", "user"), false); + addUser.setRoleId(role.getRoleId()); + if (userService.saveUser(addUser)) { + // 添加用户角色 + final UserRole userRole = new UserRole(); + userRole.setUserId(addUser.getUserId()); + userRole.setTenantId(addUser.getTenantId()); + userRole.setRoleId(addUser.getRoleId()); + userRoleService.save(userRole); + } + // 绑定关系 + if (userParam.getSceneType() != null && userParam.getSceneType().equals("save_referee") && userParam.getRefereeId() != null && userParam.getRefereeId() != 0) { + UserReferee check = userRefereeService.check(addUser.getUserId(), userParam.getRefereeId()); + if (check == null) { + UserReferee userReferee = new UserReferee(); + userReferee.setDealerId(userParam.getRefereeId()); + userReferee.setUserId(addUser.getUserId()); + userRefereeService.save(userReferee); + } + } + return addUser; + } + + // 获取openid + private JSONObject getOpenIdByCode(UserParam userParam) { + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + // 获取openId + String apiUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + setting.getString("appId") + "&secret=" + setting.getString("appSecret") + "&js_code=" + userParam.getCode() + "&grant_type=authorization_code"; + // 执行get请求 + String result = HttpUtil.get(apiUrl); + // 解析access_token + return JSON.parseObject(result); + } + + /** + * 获取微信手机号码 + * + * @param userParam 需要传微信凭证code + */ + private String getPhoneByCode(UserParam userParam) { + // 获取手机号码 + String apiUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + getAccessToken(); + HashMap paramMap = new HashMap<>(); + if (StrUtil.isBlank(userParam.getCode())) { + throw new BusinessException("code不能为空"); + } + paramMap.put("code", userParam.getCode()); + // 执行post请求 + String post = HttpUtil.post(apiUrl, JSON.toJSONString(paramMap)); + JSONObject json = JSON.parseObject(post); + if (json.get("errcode").equals(0)) { + JSONObject phoneInfo = JSON.parseObject(json.getString("phone_info")); + // 微信用户的手机号码 + final String phoneNumber = phoneInfo.getString("phoneNumber"); + // 验证手机号码 +// if (userParam.getNotVerifyPhone() == null && !Validator.isMobile(phoneNumber)) { +// String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); +// redisTemplate.delete(key); +// throw new BusinessException("手机号码格式不正确"); +// } + return phoneNumber; + } + return null; + } + + /** + * 生成随机账号 + * + * @return username + */ + private String createUsername(String type) { + return type.concat(RandomUtil.randomString(12)); + } + + /** + * 获取接口调用凭据AccessToken + * ... + */ + private String getAccessToken() { + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + if (setting == null) { + throw new BusinessException("请先配置小程序"); + } + // 从缓存获取access_token + String value = redisTemplate.opsForValue().get(key); + if (value != null) { + // 解析access_token + JSONObject response = JSON.parseObject(value); +// return response.getString("access_token"); + } + // 微信获取凭证接口 + String apiUrl = "https://api.weixin.qq.com/cgi-bin/token"; + // 组装url参数 + String url = apiUrl.concat("?grant_type=client_credential").concat("&appid=").concat(setting.getString("appId")).concat("&secret=").concat(setting.getString("appSecret")); + // 执行get请求 + String result = HttpUtil.get(url); + System.out.println("result = " + result); + // 解析access_token + JSONObject response = JSON.parseObject(result); + if (response.getString("access_token") != null) { + // 存入缓存 + redisTemplate.opsForValue().set(key, result, 7000L, TimeUnit.SECONDS); + return response.getString("access_token"); + } + throw new BusinessException("小程序配置不正确"); + } + + @ApiOperation("获取微信openId并更新") + @PostMapping("/getWxOpenId") + public ApiResult getWxOpenId(@RequestBody UserParam userParam) { + final User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录"); + } + // 已存在直接返回 + if (StrUtil.isNotBlank(loginUser.getOpenid())) { + return success(loginUser); + } + // 请求微信接口获取openid + String apiUrl = "https://api.weixin.qq.com/sns/jscode2session"; + final HashMap map = new HashMap<>(); + final JSONObject setting = settingService.getBySettingKey("mp-weixin"); + final String appId = setting.getString("appId"); + final String appSecret = setting.getString("appSecret"); + map.put("appid", appId); + map.put("secret", appSecret); + map.put("js_code", userParam.getCode()); + map.put("grant_type", "authorization_code"); + final String response = HttpUtil.get(apiUrl, map); + final JSONObject jsonObject = JSONObject.parseObject(response); + String openid = jsonObject.getString("openid"); + String sessionKey = jsonObject.getString("session_key"); + String unionid = jsonObject.getString("unionid"); + // 保存openID + if (loginUser.getOpenid() == null || StrUtil.isBlank(loginUser.getOpenid())) { + loginUser.setOpenid(openid); + loginUser.setUnionid(unionid); + requestUtil.updateUser(loginUser); +// userService.updateById(loginUser); + } + return success("获取成功", jsonObject); + } + + @ApiOperation("仅获取微信openId") + @PostMapping("/getWxOpenIdOnly") + public ApiResult getWxOpenIdOnly(@RequestBody UserParam userParam) { + + String apiUrl = "https://api.weixin.qq.com/sns/jscode2session"; + final HashMap map = new HashMap<>(); + final JSONObject setting = settingService.getBySettingKey("mp-weixin"); + final String appId = setting.getString("appId"); + final String appSecret = setting.getString("appSecret"); + map.put("appid", appId); + map.put("secret", appSecret); + map.put("js_code", userParam.getCode()); + map.put("grant_type", "authorization_code"); + final String response = HttpUtil.get(apiUrl, map); + final JSONObject jsonObject = JSONObject.parseObject(response); + return success("获取成功", jsonObject); + } + + @ApiOperation("获取微信小程序码-用户ID") + @GetMapping("/getUserQRCode") + public ApiResult getQRCode() { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + map.put("path", "/package/user/qrcode?user_id=" + getLoginUserId()); +// map.put("env_version","trial"); + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/") + fileName; + File file = FileUtil.writeBytes(qrCode, filePath); + if (file != null) { + return success(config.getFileServer().concat("/qrcode/").concat(fileName)); + } + return fail("获取失败", null); + } + + @ApiOperation("获取微信小程序码-订单核销码") + @GetMapping("/getOrderQRCode/{orderNo}") + public ApiResult getOrderQRCode(@PathVariable("orderNo") String orderNo) { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + map.put("path", "/package/admin/order-scan?orderNo=".concat(orderNo)); + map.put("env_version", "trial"); + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/") + fileName; + File file = FileUtil.writeBytes(qrCode, filePath); + if (file != null) { + return success(config.getFileServer().concat("/qrcode/").concat(fileName)); + } + return fail("获取失败", null); + } + + @ApiOperation("获取微信小程序码-订单核销码-数量极多的业务场景") + @GetMapping("/getOrderQRCodeUnlimited/{orderNo}") + public ApiResult getOrderQRCodeUnlimited(@PathVariable("orderNo") String orderNo) { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + map.put("scene", "orderNo=".concat(orderNo)); + map.put("page", "package/admin/order-scan"); + map.put("env_version", "trial"); + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + System.out.println("qrCode = " + qrCode); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/") + fileName; + File file = FileUtil.writeBytes(qrCode, filePath); + if (file != null) { + return success(config.getFileServer().concat("/qrcode/").concat(fileName)); + } + return fail("获取失败", null); + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Cache.java b/src/main/java/com/gxwebsoft/common/system/entity/Cache.java new file mode 100644 index 0000000..f0eabcc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Cache.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.common.system.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * 缓存管理 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Setting对象", description = "缓存管理") +public class Cache implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "key") + private String key; + + @ApiModelProperty(value = "设置内容(json格式)") + private String content; + + @ApiModelProperty(value = "过期时间(秒)") + private Long expireTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/ChatMessage.java b/src/main/java/com/gxwebsoft/common/system/entity/ChatMessage.java new file mode 100644 index 0000000..11686af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/ChatMessage.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Map; + +/** + * 机构 + * + * @author LX + * @since 2025-04-14 00:35:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "LawOrg对象", description = "机构") +@TableName("law_org") +public class ChatMessage implements Serializable { + private static final long serialVersionUID = 1L; + + @TableField(exist = false) + private String query; + + @TableField(exist = false) + private String inputs; + + @TableField(exist = false) + private String responseMode; + + @TableField(exist = false) + private String user; + + @TableField(exist = false) + private String conversationId; + + @TableField(exist = false) + private String type; + + @TableField(exist = false) + private Integer requestType; + + @TableField(exist = false) + private Map files; +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Company.java b/src/main/java/com/gxwebsoft/common/system/entity/Company.java new file mode 100644 index 0000000..70c162b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Company.java @@ -0,0 +1,332 @@ +package com.gxwebsoft.common.system.entity; + +import cn.hutool.core.util.DesensitizedUtil; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 企业信息 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Company对象", description = "企业信息") +@TableName("sys_company") +public class Company implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @TableId(value = "company_id", type = IdType.AUTO) + private Integer companyId; + + @ApiModelProperty(value = "应用类型") + private Integer type; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "企业类型") + private String companyType; + + @ApiModelProperty(value = "是否官方") + private Boolean official; + + @ApiModelProperty(value = "企业类型 多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "应用详情") + @TableField(exist = false) + private String content; + + @ApiModelProperty(value = "栏目分类") + private Integer categoryId; + + @ApiModelProperty(value = "栏目名称") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "应用截图") + private String files; + + @ApiModelProperty(value = "顶级域名") + private String domain; + + @ApiModelProperty(value = "免费域名") + private String freeDomain; + + @ApiModelProperty(value = "销售价格") + private BigDecimal price; + + @ApiModelProperty(value = "计费方式") + private Integer chargingMethod; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "公司座机") + private String tel; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "发票抬头") + @TableField("Invoice_header") + private String invoiceHeader; + + @ApiModelProperty(value = "服务开始时间") + private Date startTime; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "即将过期") + private Integer soon; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + private Integer version; + + @ApiModelProperty(value = "版本名称") + private String versionName; + + @ApiModelProperty(value = "版本号") + private String versionCode; + + @ApiModelProperty(value = "评分") + private BigDecimal rate; + + @ApiModelProperty(value = "企业成员(当前)") + private Integer users; + + @ApiModelProperty(value = "成员数量(上限)") + private Integer members; + + @ApiModelProperty(value = "浏览数量") + private Long clicks; + + @ApiModelProperty(value = "点赞数量") + private Long likes; + + @ApiModelProperty(value = "购买数量") + private Long buys; + + @ApiModelProperty(value = "存储空间") + private Long storage; + + @ApiModelProperty(value = "存储空间(上限)") + private Long storageMax; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + private Integer departments; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "主控端节点") + private String serverUrl; + + @ApiModelProperty(value = "模块节点") + private String modulesUrl; + + @ApiModelProperty(value = "重定向节点") + private String redirectUrl; + + @ApiModelProperty(value = "request合法域名") + private String requestUrl; + + @ApiModelProperty(value = "socket合法域名") + private String socketUrl; + + @ApiModelProperty(value = "总后台管理入口") + private String adminUrl; + + @ApiModelProperty(value = "商户端管理入口") + private String merchantUrl; + + @ApiModelProperty(value = "默认网站URL") + private String websiteUrl; + + @ApiModelProperty(value = "微信小程序二维码") + private String mpWeixinCode; + + @ApiModelProperty(value = "支付宝小程序二维码") + private String mpAlipayCode; + + @ApiModelProperty(value = "H5端应用二维码") + private String h5Code; + + @ApiModelProperty(value = "安卓APP二维码") + private String androidUrl; + + @ApiModelProperty(value = "苹果APP二维码") + private String iosUrl; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序") + private Integer sortNumber; + + @ApiModelProperty(value = "插件ID(菜单根节点)") + private Integer menuId; + + @ApiModelProperty(value = "当前使用的租户模板") + private Integer planId; + + @ApiModelProperty(value = "是否开启网站") + private Boolean websiteStatus; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否含税") + private Boolean isTax; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "是否默认企业主体") + private Boolean authoritative; + + @ApiModelProperty("是否推荐") + private Boolean recommend; + + @ApiModelProperty("商户ID") + private Long merchantId; + + @ApiModelProperty(value = "租户ID") + private Integer tid; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "租户编号") + @TableField(exist = false) + private String tenantCode; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "配置信息") + @TableField(exist = false) + private Object config; + + @ApiModelProperty(value = "是否已收藏") + @TableField(exist = false) + private Boolean collection; + + @ApiModelProperty(value = "新注册的密码") + @TableField(exist = false) + private String password; + + @ApiModelProperty("手机号(脱敏)") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty(value = "是否已购买") + @TableField(exist = false) + private Boolean isBuy; + + @ApiModelProperty(value = "用户是否已安装了该插件") + @TableField(exist = false) + private Boolean installed; + + @ApiModelProperty(value = "产品参数") + @TableField(exist = false) + private List parameters; + + @ApiModelProperty(value = "产品按钮及链接") + @TableField(exist = false) + private List links; + + @ApiModelProperty(value = "购买数量") + @TableField(exist = false) + private Integer num; + + @ApiModelProperty("角色列表") + @TableField(exist = false) + private List roles; + + @ApiModelProperty("权限列表") + @TableField(exist = false) + private List authorities; + + @ApiModelProperty("记录克隆的模板ID") + @TableField(exist = false) + private Integer templateId; + + public String getMobile() { + return DesensitizedUtil.mobilePhone(this.phone); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/CompanyComment.java b/src/main/java/com/gxwebsoft/common/system/entity/CompanyComment.java new file mode 100644 index 0000000..1288d72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/CompanyComment.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 应用评论 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CompanyComment对象", description = "应用评论") +@TableName("sys_company_comment") +public class CompanyComment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "父级ID") + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "评分") + private BigDecimal rate; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "评论内容") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/CompanyContent.java b/src/main/java/com/gxwebsoft/common/system/entity/CompanyContent.java new file mode 100644 index 0000000..11b2643 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/CompanyContent.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 应用详情 + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CompanyContent对象", description = "应用详情") +@TableName("sys_company_content") +public class CompanyContent implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "详细内容") + private String content; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/CompanyGit.java b/src/main/java/com/gxwebsoft/common/system/entity/CompanyGit.java new file mode 100644 index 0000000..be26877 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/CompanyGit.java @@ -0,0 +1,67 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 代码仓库 + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CompanyGit对象", description = "代码仓库") +@TableName("sys_company_git") +public class CompanyGit implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "仓库名称") + private String title; + + @ApiModelProperty(value = "厂商") + private String brand; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "仓库地址") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "仓库描述") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/CompanyParameter.java b/src/main/java/com/gxwebsoft/common/system/entity/CompanyParameter.java new file mode 100644 index 0000000..81aa54d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/CompanyParameter.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 应用参数 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CompanyParameter对象", description = "应用参数") +@TableName("sys_company_parameter") +public class CompanyParameter implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "参数名称") + private String name; + + @ApiModelProperty(value = "参数内容") + private String value; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/CompanyUrl.java b/src/main/java/com/gxwebsoft/common/system/entity/CompanyUrl.java new file mode 100644 index 0000000..91844a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/CompanyUrl.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 应用域名 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "CompanyUrl对象", description = "应用域名") +@TableName("sys_company_url") +public class CompanyUrl implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "域名类型") + private String type; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Dict.java b/src/main/java/com/gxwebsoft/common/system/entity/Dict.java new file mode 100644 index 0000000..48b56bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Dict.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +/** + * 字典 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Data +@ApiModel(description = "字典(业务类)") +@TableName("sys_dict") +public class Dict implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典id") + @TableId(type = IdType.AUTO) + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "字典项列表") + @TableField(exist = false) + private Set> items; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/DictData.java b/src/main/java/com/gxwebsoft/common/system/entity/DictData.java new file mode 100644 index 0000000..8daee79 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/DictData.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典数据 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "字典数据(业务类)") +@TableName("sys_dict_data") +public class DictData implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @TableId(type = IdType.AUTO) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java b/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java new file mode 100644 index 0000000..2baec46 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 字典 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Data +@ApiModel(description = "字典(系统类)") +@TableName("sys_dictionary") +public class Dictionary implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典id") + @TableId(type = IdType.AUTO) + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java b/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java new file mode 100644 index 0000000..aec639c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 字典数据 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "字典数据(系统类)") +@TableName("sys_dictionary_data") +public class DictionaryData implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @TableId(type = IdType.AUTO) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Domain.java b/src/main/java/com/gxwebsoft/common/system/entity/Domain.java new file mode 100644 index 0000000..29ab032 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Domain.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 授权域名 + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Domain对象", description = "授权域名") +@TableName("sys_domain") +public class Domain implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "主机记录") + private String hostName; + + @ApiModelProperty(value = "记录值") + private String hostValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "类型 0常规 1后台 2商家端") + private Integer type; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java new file mode 100644 index 0000000..4deb683 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 邮件发送记录 + * + * @author WebSoft + * @since 2021-08-29 12:36:35 + */ +@Data +@ApiModel(description = "邮件发送记录") +@TableName("sys_email_record") +public class EmailRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("邮件标题") + private String title; + + @ApiModelProperty("邮件内容") + private String content; + + @ApiModelProperty("收件邮箱") + private String receiver; + + @ApiModelProperty("发件邮箱") + private String sender; + + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java new file mode 100644 index 0000000..d422f41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文件上传记录 + * + * @author WebSoft + * @since 2021-08-29 12:36:32 + */ +@Data +@ApiModel(description = "文件上传记录") +@TableName("sys_file_record") +public class FileRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("分组ID") + private String groupId; + + @ApiModelProperty("文件名称") + private String name; + + @ApiModelProperty("文件存储路径") + private String path; + + @ApiModelProperty("文件大小") + private Long length; + + @ApiModelProperty("文件类型") + private String contentType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty(value = "AppId") + private Integer appId; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("商户编号") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("文件访问地址") + @TableField(exist = false) + private String url; + + @ApiModelProperty("文件缩略图访问地址") + @TableField(exist = false) + private String thumbnail; + + @ApiModelProperty("文件下载地址") + @TableField(exist = false) + private String downloadUrl; + + @ApiModelProperty("创建人账号") + @TableField(exist = false) + private String createUsername; + + @ApiModelProperty("创建人名称") + @TableField(exist = false) + private String createNickname; + + @ApiModelProperty("用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java b/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java new file mode 100644 index 0000000..b310b8f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 租户 + * + * @author WebSoft + * @since 2021-08-28 11:31:06 + */ +@Data +@ApiModel(description = "实体") +public class KVEntity implements Serializable { + private static final long serialVersionUID = 1L; + protected K k; + protected V v; + public KVEntity() { + super(); + } + + public KVEntity(K k, V v) { + super(); + this.k = k; + this.v = v; + } + + public static KVEntity build(K k, V v) { + return new KVEntity<>(k, v); + } + + public K getK() { + return k; + } + + public void setK(K k) { + this.k = k; + } + + public V getV() { + return v; + } + + public void setV(V v) { + this.v = v; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java new file mode 100644 index 0000000..9e205b6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 登录日志 + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +@Data +@ApiModel(description = "登录日志") +@TableName("sys_login_record") +public class LoginRecord implements Serializable { + private static final long serialVersionUID = 1L; + public static final int TYPE_LOGIN = 0; // 登录成功 + public static final int TYPE_ERROR = 1; // 登录失败 + public static final int TYPE_LOGOUT = 2; // 退出登录 + public static final int TYPE_REFRESH = 3; // 续签token + public static final int TYPE_REGISTER = 4; // 注册成功 + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户账号") + private String username; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名称") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token") + private Integer loginType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("操作时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("用户id") + @TableField(exist = false) + private Integer userId; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Menu.java b/src/main/java/com/gxwebsoft/common/system/entity/Menu.java new file mode 100644 index 0000000..9274ab1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Menu.java @@ -0,0 +1,84 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; + +import java.util.Date; +import java.util.List; + +/** + * 菜单 + * + * @author WebSoft + * @since 2018-12-24 16:10:17 + */ +@Data +@ApiModel(description = "菜单") +@TableName("sys_menu") +public class Menu implements GrantedAuthority { + private static final long serialVersionUID = 1L; + public static final int TYPE_MENU = 0; // 菜单类型 + public static final int TYPE_BTN = 1; // 按钮类型 + + @ApiModelProperty("菜单id") + @TableId(type = IdType.AUTO) + private Integer menuId; + + @ApiModelProperty("上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty("菜单名称") + private String title; + + @ApiModelProperty("菜单路由地址") + private String path; + + @ApiModelProperty("菜单组件地址") + private String component; + + @ApiModelProperty("菜单类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty("排序号") + private Integer sortNumber; + + @ApiModelProperty("权限标识") + private String authority; + + @ApiModelProperty("菜单图标") + private String icon; + + @ApiModelProperty("是否隐藏, 0否, 1是(仅注册路由不显示左侧菜单)") + private Integer hide; + + @ApiModelProperty("路由元信息") + private String meta; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("关联应用") + private Integer appId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty("角色权限树选中状态") + @TableField(exist = false) + private Boolean checked; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java new file mode 100644 index 0000000..cdda95c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 操作日志 + * + * @author WebSoft + * @since 2018-12-24 16:10:33 + */ +@Data +@ApiModel(description = "操作日志") +@TableName("sys_operation_record") +public class OperationRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户id") + private Integer userId; + + @ApiModelProperty("操作模块") + private String module; + + @ApiModelProperty("操作功能") + private String description; + + @ApiModelProperty("请求地址") + private String url; + + @ApiModelProperty("请求方式") + private String requestMethod; + + @ApiModelProperty("调用方法") + private String method; + + @ApiModelProperty("请求参数") + private String params; + + @ApiModelProperty("返回结果") + private String result; + + @ApiModelProperty("异常信息") + private String error; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("消耗时间, 单位毫秒") + private Long spendTime; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名称") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("状态, 0成功, 1异常") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("操作时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty("用户账号") + @TableField(exist = false) + private String username; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Organization.java b/src/main/java/com/gxwebsoft/common/system/entity/Organization.java new file mode 100644 index 0000000..4c52f2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Organization.java @@ -0,0 +1,89 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 组织机构 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "组织机构") +@TableName("sys_organization") +public class Organization implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "机构id") + @TableId(type = IdType.AUTO) + private Integer organizationId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "机构全称") + private String organizationFullName; + + @ApiModelProperty(value = "机构代码") + private String organizationCode; + + @ApiModelProperty(value = "机构类型, 字典标识") + private String organizationType; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "邮政编码") + private String zipCode; + + @ApiModelProperty(value = "负责人id") + private Integer leaderId; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "机构类型名称") + @TableField(exist = false) + private String organizationTypeName; + + @ApiModelProperty(value = "负责人姓名") + @TableField(exist = false) + private String leaderNickname; + + @ApiModelProperty(value = "负责人账号") + @TableField(exist = false) + private String leaderUsername; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Payment.java b/src/main/java/com/gxwebsoft/common/system/entity/Payment.java new file mode 100644 index 0000000..2ae1c14 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Payment.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 支付方式 + * + * @author 科技小王子 + * @since 2024-05-11 12:39:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Payment对象", description = "支付方式") +@TableName("sys_payment") +public class Payment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "支付方式") + private String name; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "标识") + private String code; + + @ApiModelProperty(value = "支付图标") + private String image; + + @ApiModelProperty(value = "微信商户号类型 1普通商户2子商户") + private Integer wechatType; + + @ApiModelProperty(value = "应用ID") + private String appId; + + @ApiModelProperty(value = "商户号") + private String mchId; + + @ApiModelProperty(value = "设置APIv3密钥") + private String apiKey; + + @ApiModelProperty(value = "证书文件 (CERT)") + private String apiclientCert; + + @ApiModelProperty(value = "证书文件 (KEY)") + private String apiclientKey; + + @ApiModelProperty(value = "公钥文件 (KEY)") + private String pubKey; + + @ApiModelProperty(value = "公钥ID") + private String pubKeyId; + + @ApiModelProperty(value = "商户证书序列号") + private String merchantSerialNumber; + + @ApiModelProperty(value = "支付结果通知") + private String notifyUrl; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0未启用, 1启用") + private Boolean status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Plug.java b/src/main/java/com/gxwebsoft/common/system/entity/Plug.java new file mode 100644 index 0000000..b2dcd7c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Plug.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 插件扩展 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Plug对象", description = "插件扩展") +@TableName("sys_plug") +public class Plug implements Serializable { + private static final long serialVersionUID = 1L; + public static final int TYPE_MENU = 0; // 菜单类型 + public static final int TYPE_BTN = 1; // 按钮类型 + + @ApiModelProperty(value = "插件id") + @TableId(value = "plug_id", type = IdType.AUTO) + private Integer plugId; + + @ApiModelProperty(value = "菜单ID") + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "插件描述") + private String comments; + + @ApiModelProperty(value = "插件详情") + private String content; + + @ApiModelProperty("评分") + private BigDecimal score; + + @ApiModelProperty("插件价格") + private BigDecimal price; + + @ApiModelProperty("浏览次数") + private Integer clicks; + + @ApiModelProperty("安装次数") + private Integer installs; + + @ApiModelProperty(value = "关联应用ID") + private Integer appId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty("角色权限树选中状态") + @TableField(exist = false) + private Boolean checked; + + @ApiModelProperty("租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty("企业名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty("企业简称") + @TableField(exist = false) + private String shortName; + + @ApiModelProperty("企业域名") + @TableField(exist = false) + private String domain; +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Role.java b/src/main/java/com/gxwebsoft/common/system/entity/Role.java new file mode 100644 index 0000000..7fd8598 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Role.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 角色 + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +@Data +@ApiModel(description = "角色") +@TableName("sys_role") +public class Role implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("角色id") + @TableId(type = IdType.AUTO) + private Integer roleId; + + @ApiModelProperty("角色标识") + private String roleCode; + + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java b/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java new file mode 100644 index 0000000..2d4dc3c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 角色菜单 + * + * @author WebSoft + * @since 2018-12-24 16:10:54 + */ +@Data +@ApiModel(description = "角色权限") +@TableName("sys_role_menu") +public class RoleMenu implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("角色id") + private Integer roleId; + + @ApiModelProperty("菜单id") + private Integer menuId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Setting.java b/src/main/java/com/gxwebsoft/common/system/entity/Setting.java new file mode 100644 index 0000000..cba1b08 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Setting.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 系统设置 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Setting对象", description = "系统设置") +@TableName("sys_setting") +public class Setting implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "setting_id", type = IdType.AUTO) + private Integer settingId; + + @ApiModelProperty(value = "设置项标示") + private String settingKey; + + @ApiModelProperty(value = "设置内容(json格式)") + private String content; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "修改租户名称") + @TableField(exist = false) + private String tenantName; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java b/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java new file mode 100644 index 0000000..27c93c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 租户 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Tenant对象", description = "租户") +@TableName("sys_tenant") +public class Tenant implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "租户id") + @TableId(value = "tenant_id", type = IdType.AUTO) + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "logo") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "游客") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "游客身份") + @TableField(exist = false) + private String token; + + @ApiModelProperty(value = "当前登录用户") + @TableField(exist = false) + private User loginUser; + + @ApiModelProperty(value = "菜单信息") + @TableField(exist = false) + private List menu; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/User.java b/src/main/java/com/gxwebsoft/common/system/entity/User.java new file mode 100644 index 0000000..8909a7e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/User.java @@ -0,0 +1,314 @@ +package com.gxwebsoft.common.system.entity; + +import cn.hutool.core.util.DesensitizedUtil; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gxwebsoft.cms.entity.CmsWebsite; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.security.core.userdetails.UserDetails; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 用户 + * + * @author WebSoft + * @since 2018-12-24 16:10:13 + */ +@Data +@ApiModel(description = "用户") +@TableName("sys_user") +public class User implements UserDetails { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户id") + @TableId(type = IdType.AUTO) + private Integer userId; + + @ApiModelProperty("用户类型, 0普通用户") + private Integer type; + + @ApiModelProperty("用户编码") + private String userCode; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("密码") + private String password; + + @ApiModelProperty("昵称") + private String nickname; + + @ApiModelProperty("头像") + private String avatar; + + @ApiModelProperty("头像") + private String bgImage; + + @ApiModelProperty("性别, 字典标识") + private String sex; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("邮箱") + private String email; + + @ApiModelProperty("支付密码") + private String payPassword; + + @ApiModelProperty("职务") + private String position; + + @ApiModelProperty("邮箱是否验证, 0否, 1是") + private Integer emailVerified; + + @ApiModelProperty("别名") + private String alias; + + @ApiModelProperty("真实姓名") + private String realName; + + @ApiModelProperty("身份证号(脱敏)") + private String idCard; + + @ApiModelProperty("身份证号") + @TableField(exist = false) + private String idCardNo; + + @ApiModelProperty("出生日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date birthday; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty("所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty("街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty("用户可用余额") + private BigDecimal balance; + + @ApiModelProperty("用户可用积分") + private Integer points; + + @ApiModelProperty("用户总支付的金额") + private String payMoney; + + @ApiModelProperty("实际消费的金额(不含退款)") + private String expendMoney; + + @ApiModelProperty("会员等级ID") + private Integer gradeId; + + @ApiModelProperty("个人简介") + private String introduction; + + @ApiModelProperty("机构ID") + private Integer organizationId; + + @ApiModelProperty("会员分组ID") + private Integer groupId; + + @ApiModelProperty("会员分组") + @TableField(exist = false) + private String groupName; + + @ApiModelProperty("客户ID") + @TableField(exist = false) + private Integer customerId; + + @ApiModelProperty("企业ID") + @TableField(exist = false) + private Integer companyId; + + @ApiModelProperty("模板ID") + @TableField(exist = false) + private Integer templateId; + + @ApiModelProperty("注册来源客户端") + private String platform; + + @ApiModelProperty("是否下线会员") + private Integer offline; + + @ApiModelProperty("关注数") + private Integer followers; + + @ApiModelProperty("粉丝数") + private Integer fans; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("客户端ID") + private String clientId; + + @ApiModelProperty(value = "可管理的商户") + private String merchants; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "是否管理员") + private Boolean isAdmin; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + @ApiModelProperty("是否推荐") + private Integer recommend; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "最后结算时间") + private Date settlementTime; + + @ApiModelProperty("注册时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("公司名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty("是否已实名认证") + private Integer certification; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty("会员等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty("默认注册的角色ID") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty("角色列表") + @TableField(exist = false) + private List roles; + + @ApiModelProperty("权限列表") + @TableField(exist = false) + private List authorities; + + @ApiModelProperty("微信凭证") + @TableField(exist = false) + private String code; + + @ApiModelProperty("推荐人ID") + @TableField(exist = false) + private Integer dealerId; + + @ApiModelProperty("微信openid") + private String openid; + + @ApiModelProperty("公众号openid") + private String officeOpenid; + + @ApiModelProperty("微信unionid") + private String unionid; + + @ApiModelProperty("关联用户ID") + @TableField(exist = false) + private Integer sysUserId; + + @ApiModelProperty("ico文件") + @TableField(exist = false) + private String logo; + + @ApiModelProperty("创建的应用数量") + @TableField(exist = false) + private Double apps; + + @ApiModelProperty("租户设置信息") + @TableField(exist = false) + private String setting; + + @ApiModelProperty("手机号(脱敏)") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty("网站信息") + @TableField(exist = false) + private CmsWebsite website; + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return this.status != null && this.status == 0; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + + public String getMobile(){ + return DesensitizedUtil.mobilePhone(this.phone); + } + + public String getIdCardNo(){ + return DesensitizedUtil.idCardNum(this.idCard,4,4); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserCollection.java b/src/main/java/com/gxwebsoft/common/system/entity/UserCollection.java new file mode 100644 index 0000000..87f7454 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserCollection.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 我的收藏 + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserCollection对象", description = "我的收藏") +@TableName("sys_user_collection") +public class UserCollection implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "租户ID") + private Integer tid; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java b/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java new file mode 100644 index 0000000..b9d277f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户文件 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserFile对象", description = "用户文件") +@TableName("sys_user_file") +public class UserFile implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "文件名称") + private String name; + + @ApiModelProperty(value = "是否是文件夹, 0否, 1是") + private Integer isDirectory; + + @ApiModelProperty(value = "上级id") + private Integer parentId; + + @ApiModelProperty(value = "文件路径") + private String path; + + @ApiModelProperty(value = "文件大小") + private Integer length; + + @ApiModelProperty("文件类型") + private String contentType; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty("文件访问地址") + @TableField(exist = false) + private String url; + + @ApiModelProperty("文件缩略图访问地址") + @TableField(exist = false) + private String thumbnail; + + @ApiModelProperty("文件下载地址") + @TableField(exist = false) + private String downloadUrl; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserInfo.java b/src/main/java/com/gxwebsoft/common/system/entity/UserInfo.java new file mode 100644 index 0000000..d2c57bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserInfo.java @@ -0,0 +1,257 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 用户 + * + * @author WebSoft + * @since 2018-12-24 16:10:13 + */ +@Data +@ApiModel(description = "用户") +@TableName("sys_user") +public class UserInfo { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户id") + @TableId(type = IdType.AUTO) + private Integer userId; + + @ApiModelProperty("用户类型, 0普通用户 6开发者 10企业用户") + private Integer type; + + @ApiModelProperty("用户编码") + private String userCode; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("密码") + private String password; + + @ApiModelProperty("昵称") + private String nickname; + + @ApiModelProperty("头像") + private String avatar; + + @ApiModelProperty("头像") + private String bgImage; + + @ApiModelProperty("性别, 字典标识") + private String sex; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("邮箱") + private String email; + + @ApiModelProperty("职务") + private String position; + + @ApiModelProperty("邮箱是否验证, 0否, 1是") + private Integer emailVerified; + + @ApiModelProperty("别名") + private String alias; + + @ApiModelProperty("真实姓名") + private String realName; + + @ApiModelProperty("身份证号") + private String idCard; + + @ApiModelProperty("出生日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date birthday; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty("所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty("街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty("用户可用余额") + private BigDecimal balance; + + @ApiModelProperty("用户可用积分") + private Integer points; + + @ApiModelProperty("用户总支付的金额") + private String payMoney; + + @ApiModelProperty("实际消费的金额(不含退款)") + private String expendMoney; + + @ApiModelProperty("会员等级ID") + private Integer gradeId; + + @ApiModelProperty("个人简介") + private String introduction; + + @ApiModelProperty("机构ID") + private Integer organizationId; + + @ApiModelProperty("客户ID") + private Integer customerId; + + @ApiModelProperty("企业ID") + private Integer companyId; + + @ApiModelProperty("注册来源客户端") + private String platform; + + @ApiModelProperty("兴趣爱好") + private String interest; + + @ApiModelProperty("身高") + private String height; + + @ApiModelProperty("体重") + private String weight; + + @ApiModelProperty("学历") + private String education; + + @ApiModelProperty("月薪") + private String monthlyPay; + + @ApiModelProperty("是否下线会员") + private Integer offline; + + @ApiModelProperty("关注数") + private Integer followers; + + @ApiModelProperty("粉丝数") + private Integer fans; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + @ApiModelProperty("是否推荐") + private Integer recommend; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "最后结算时间") + private Date settlementTime; + + @ApiModelProperty("注册时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("公司名称") + private String companyName; + + @ApiModelProperty("是否已实名认证") + private Integer certification; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty("会员等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty("默认注册的角色ID") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty("角色列表") + @TableField(exist = false) + private List roles; + + @ApiModelProperty("权限列表") + @TableField(exist = false) + private List authorities; + + @ApiModelProperty("微信凭证") + @TableField(exist = false) + private String code; + + @ApiModelProperty("推荐人ID") + @TableField(exist = false) + private Integer dealerId; + + @ApiModelProperty("微信openid") + @TableField(exist = false) + private String openid; + + @ApiModelProperty("微信unionid") + @TableField(exist = false) + private String unionid; + + @ApiModelProperty("所属商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty("ico文件") + @TableField(exist = false) + private String logo; + + @ApiModelProperty("创建的应用数量") + @TableField(exist = false) + private Double apps; + + @ApiModelProperty("租户设置信息") + @TableField(exist = false) + private String setting; + + @ApiModelProperty("手机号(脱敏)") + @TableField(exist = false) + private String mobile; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserReferee.java b/src/main/java/com/gxwebsoft/common/system/entity/UserReferee.java new file mode 100644 index 0000000..31ee037 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserReferee.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户推荐关系表 + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserReferee对象", description = "用户推荐关系表") +@TableName("sys_user_referee") +public class UserReferee implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @TableField(exist = false) + private User user; +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java new file mode 100644 index 0000000..ca12165 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户角色 + * + * @author WebSoft + * @since 2018-12-24 16:10:23 + */ +@Data +@ApiModel(description = "用户角色") +@TableName("sys_user_role") +public class UserRole implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户id") + private Integer userId; + + @ApiModelProperty("角色id") + private Integer roleId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("角色名称") + @TableField(exist = false) + private String roleName; + + @ApiModelProperty("租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyCommentMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyCommentMapper.java new file mode 100644 index 0000000..d80c603 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyCommentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.CompanyComment; +import com.gxwebsoft.common.system.param.CompanyCommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用评论Mapper + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyCommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyCommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyCommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyContentMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyContentMapper.java new file mode 100644 index 0000000..3a75de9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyContentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.CompanyContent; +import com.gxwebsoft.common.system.param.CompanyContentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用详情Mapper + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +public interface CompanyContentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyContentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyContentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyGitMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyGitMapper.java new file mode 100644 index 0000000..345650f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyGitMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.CompanyGit; +import com.gxwebsoft.common.system.param.CompanyGitParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 代码仓库Mapper + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +public interface CompanyGitMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyGitParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyGitParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java new file mode 100644 index 0000000..28b534f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.param.CompanyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 企业信息Mapper + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +public interface CompanyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyParam param); + + @InterceptorIgnore(tenantLine = "true") + List getCount(@Param("param") CompanyParam param); + + @InterceptorIgnore(tenantLine = "true") + List selectPageRelAll(PageParam page, CompanyParam param); + + @InterceptorIgnore(tenantLine = "true") + Company getCompanyAll(@Param("companyId") Integer companyId); + + @InterceptorIgnore(tenantLine = "true") + void updateByCompanyId(@Param("param") Company company); + + @InterceptorIgnore(tenantLine = "true") + boolean removeCompanyAll(Integer id); + + @InterceptorIgnore(tenantLine = "true") + boolean undeleteAll(Integer id); + + @InterceptorIgnore(tenantLine = "true") + boolean updateByIdAll(Company company); + + @InterceptorIgnore(tenantLine = "true") + Company getByTenantId(Integer tenantId); +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyParameterMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyParameterMapper.java new file mode 100644 index 0000000..c55b5f0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyParameterMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.CompanyParameter; +import com.gxwebsoft.common.system.param.CompanyParameterParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用参数Mapper + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyParameterMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyParameterParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyParameterParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyUrlMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyUrlMapper.java new file mode 100644 index 0000000..117ed2b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyUrlMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.CompanyUrl; +import com.gxwebsoft.common.system.param.CompanyUrlParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用域名Mapper + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyUrlMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyUrlParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyUrlParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java new file mode 100644 index 0000000..f36039f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典数据Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictDataMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DictDataParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DictDataParam param); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return List + */ + List getByDictCodeAndName(@Param("dictCode") String dictCode, + @Param("dictDataName") String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java new file mode 100644 index 0000000..ce19779 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Dict; + +/** + * 字典Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java new file mode 100644 index 0000000..519c2ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典数据Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictionaryDataMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DictionaryDataParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DictionaryDataParam param); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return List + */ + List getByDictCodeAndName(@Param("dictCode") String dictCode, + @Param("dictDataName") String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java new file mode 100644 index 0000000..7c2cbac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Dictionary; + +/** + * 字典Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictionaryMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DomainMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DomainMapper.java new file mode 100644 index 0000000..2853001 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DomainMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Domain; +import com.gxwebsoft.common.system.param.DomainParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 授权域名Mapper + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +public interface DomainMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DomainParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DomainParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java new file mode 100644 index 0000000..02611c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.EmailRecord; + +/** + * 邮件记录Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface EmailRecordMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java new file mode 100644 index 0000000..fe9f0b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文件上传记录Mapper + * + * @author WebSoft + * @since 2021-08-30 11:18:04 + */ +public interface FileRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") FileRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") FileRecordParam param); + + /** + * 根据path查询 + * + * @param path 文件路径 + * @return FileRecord + */ + @InterceptorIgnore(tenantLine = "true") + List getByIdPath(@Param("path") String path); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java new file mode 100644 index 0000000..4409fdd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 登录日志Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +public interface LoginRecordMapper extends BaseMapper { + + /** + * 添加, 排除租户拦截 + * + * @param entity LoginRecord + * @return int + */ + @Override + @InterceptorIgnore(tenantLine = "true") + int insert(LoginRecord entity); + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") LoginRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") LoginRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java new file mode 100644 index 0000000..938ef17 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.param.MenuParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜单Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:32 + */ +public interface MenuMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + List getMenuByClone(@Param("param") MenuParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java new file mode 100644 index 0000000..8750c2a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 操作日志Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:03 + */ +public interface OperationRecordMapper extends BaseMapper { + + /** + * 添加, 排除租户拦截 + * + * @param entity OperationRecord + * @return int + */ + @Override + @InterceptorIgnore(tenantLine = "true") + int insert(OperationRecord entity); + + /** + * 分页查询 + * + * @param page 分页参数 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OperationRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OperationRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java new file mode 100644 index 0000000..6f06689 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 组织机构Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface OrganizationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrganizationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrganizationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java new file mode 100644 index 0000000..600b1a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.PlugParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 插件扩展Mapper + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +public interface PlugMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectPageRel(@Param("page") IPage page, + @Param("param") PlugParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PlugParam param); + + @InterceptorIgnore(tenantLine = "true") + List getMenuByClone(@Param("param") PlugParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java new file mode 100644 index 0000000..b00f275 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Role; + +/** + * 角色Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:44 + */ +public interface RoleMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java new file mode 100644 index 0000000..a225765 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 角色菜单Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:21 + */ +public interface RoleMenuMapper extends BaseMapper { + + /** + * 查询用户的菜单 + * + * @param userId 用户id + * @param menuType 菜单类型 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List listMenuByUserId(@Param("userId") Integer userId, @Param("menuType") Integer menuType); + + /** + * 根据角色id查询菜单 + * + * @param roleIds 角色id + * @param menuType 菜单类型 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List listMenuByRoleIds(@Param("roleIds") List roleIds, @Param("menuType") Integer menuType); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java new file mode 100644 index 0000000..ffc7f55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.param.SettingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 系统设置Mapper + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +public interface SettingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") SettingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") SettingParam param); + + @InterceptorIgnore(tenantLine = "true") + Setting getBySettingKeyIgnore(@Param("param") SettingParam param); +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java new file mode 100644 index 0000000..17f4a25 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 租户Mapper + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +public interface TenantMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TenantParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TenantParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserCollectionMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserCollectionMapper.java new file mode 100644 index 0000000..b7330da --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserCollectionMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.UserCollection; +import com.gxwebsoft.common.system.param.UserCollectionParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 我的收藏Mapper + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +public interface UserCollectionMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserCollectionParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserCollectionParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java new file mode 100644 index 0000000..d9e4bb4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.UserFile; + +/** + * 用户文件Mapper + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +public interface UserFileMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java new file mode 100644 index 0000000..95cb4d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +public interface UserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserParam param); + + /** + * 根据账号查询 + * + * @param username 账号 + * @param tenantId 租户id + * @return User + */ + @InterceptorIgnore(tenantLine = "true") + User selectByUsername(@Param("username") String username, @Param("tenantId") Integer tenantId); + + @InterceptorIgnore(tenantLine = "true") + List getOne(@Param("param") UserParam param); + + List selectListStatisticsRel(@Param("param") UserParam param); + + @InterceptorIgnore(tenantLine = "true") + void updateByUserId(@Param("param") User param); + + @InterceptorIgnore(tenantLine = "true") + List pageAdminByPhone(@Param("param") UserParam param); + + @InterceptorIgnore(tenantLine = "true") + List listByAlert(); +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserRefereeMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserRefereeMapper.java new file mode 100644 index 0000000..e729045 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserRefereeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.UserReferee; +import com.gxwebsoft.common.system.param.UserRefereeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户推荐关系表Mapper + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +public interface UserRefereeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserRefereeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserRefereeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java new file mode 100644 index 0000000..51b38c8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户角色Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +public interface UserRoleMapper extends BaseMapper { + + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int insertBatch(@Param("userId") Integer userId, @Param("roleIds") List roleIds); + + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectByUserId(@Param("userId") Integer userId); + + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List selectByUserIds(@Param("userIds") List userIds); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyCommentMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyCommentMapper.xml new file mode 100644 index 0000000..0e04c48 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyCommentMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM sys_company_comment a + + + AND a.id = #{param.id} + + + AND a.parent_id = #{param.parentId} + + + AND a.user_id = #{param.userId} + + + AND a.company_id = #{param.companyId} + + + AND a.rate = #{param.rate} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyContentMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyContentMapper.xml new file mode 100644 index 0000000..06207e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyContentMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM sys_company_content a + + + AND a.id = #{param.id} + + + AND a.company_id = #{param.companyId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyGitMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyGitMapper.xml new file mode 100644 index 0000000..bf8c616 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyGitMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM sys_company_git a + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.brand = #{param.brand} + + + AND a.company_id = #{param.companyId} + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.domain LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml new file mode 100644 index 0000000..ad61d39 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml @@ -0,0 +1,198 @@ + + + + + + + SELECT a.*,b.tenant_id,b.tenant_name,b.tenant_code,c.title as categoryName + FROM gxwebsoft_core.sys_company a + LEFT JOIN gxwebsoft_core.sys_tenant b ON a.tenant_id = b.tenant_id + LEFT JOIN gxwebsoft_core.cms_navigation c ON a.category_id = c.navigation_id + + + AND a.company_id = #{param.companyId} + + + AND a.type = #{param.type} + + + AND a.official = #{param.official} + + + AND a.category_id = #{param.categoryId} + + + AND a.short_name LIKE CONCAT('%', #{param.shortName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.company_type = #{param.companyType} + + + AND a.company_logo LIKE CONCAT('%', #{param.companyLogo}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.phone = #{param.phone} + + + AND a.Invoice_header LIKE CONCAT('%', #{param.invoiceHeader}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.version = #{param.version} + + + AND a.members = #{param.members} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.departments = #{param.departments} + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.status = #{param.status} + + + AND a.app_type = #{param.appType} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.authoritative = #{param.authoritative} + + + AND a.recommend = 1 + + + AND a.short_name = #{param.appName} + + + AND a.email = #{param.email} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.company_id IN + + #{item} + + + + AND (a.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.short_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.tenant_id = #{param.keywords} + OR a.phone = #{param.keywords} + OR a.domain LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + + + + + + + + + UPDATE sys_company SET storage = #{param.storage} WHERE company_id = #{param.companyId} + + + + + UPDATE sys_company SET deleted = 1 WHERE company_id = #{param.companyId} + + + + UPDATE sys_company SET deleted = 0 WHERE company_id = #{param.companyId} + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyParameterMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyParameterMapper.xml new file mode 100644 index 0000000..eabfba2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyParameterMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.* + FROM sys_company_parameter a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.value LIKE CONCAT('%', #{param.value}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyUrlMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyUrlMapper.xml new file mode 100644 index 0000000..6db9462 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyUrlMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM sys_company_url a + + + AND a.id = #{param.id} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml new file mode 100644 index 0000000..a831629 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.dict_code, + b.dict_name + FROM gxwebsoft_core.sys_dict_data a + LEFT JOIN gxwebsoft_core.sys_dict b ON a.dict_id = b.dict_id + + AND a.deleted = 0 + + AND a.dict_data_id = #{param.dictDataId} + + + AND a.dict_id = #{param.dictId} + + + AND a.dict_data_code LIKE CONCAT('%', #{param.dictDataCode}, '%') + + + AND a.dict_data_name LIKE CONCAT('%', #{param.dictDataName}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_code = #{param.dictCode} + + + AND b.dict_name = #{param.dictName} + + + AND ( + a.dict_data_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml new file mode 100644 index 0000000..db709ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml new file mode 100644 index 0000000..886303b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.dict_code, + b.dict_name + FROM sys_dictionary_data a + LEFT JOIN gxwebsoft_core.sys_dictionary b ON a.dict_id = b.dict_id + + AND a.deleted = 0 + + AND a.dict_data_id = #{param.dictDataId} + + + AND a.dict_id = #{param.dictId} + + + AND a.dict_data_code LIKE CONCAT('%', #{param.dictDataCode}, '%') + + + AND a.dict_data_name LIKE CONCAT('%', #{param.dictDataName}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_code = #{param.dictCode} + + + AND b.dict_name = #{param.dictName} + + + AND ( + a.dict_data_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml new file mode 100644 index 0000000..8cd0cff --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DomainMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DomainMapper.xml new file mode 100644 index 0000000..1299cf7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DomainMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM sys_domain a + + + AND a.id = #{param.id} + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.host_name LIKE CONCAT('%', #{param.hostName}, '%') + + + AND a.host_value LIKE CONCAT('%', #{param.hostValue}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.type = #{param.type} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml new file mode 100644 index 0000000..7b5ad62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml new file mode 100644 index 0000000..1a7dd22 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml @@ -0,0 +1,76 @@ + + + + + + + SELECT a.*, + b.username create_username, + b.nickname create_nickname, + b.avatar, + c.merchant_code + FROM sys_file_record a + LEFT JOIN gxwebsoft_core.sys_user b ON a.create_user_id = b.user_id + LEFT JOIN shop_merchant c ON a.merchant_code = c.merchant_code + + + AND a.id = #{param.id} + + + AND a.`name` LIKE CONCAT('%', #{param.name}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.create_user_id = #{param.createUserId} + + + AND a.group_id = #{param.groupId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND b.username = #{param.createUsername} + + + AND b.nickname LIKE CONCAT('%', #{param.createNickname}, '%') + + + AND a.content_type LIKE CONCAT('%', #{param.contentType}, '%') + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml new file mode 100644 index 0000000..397c525 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.*, + b.user_id, + b.nickname + FROM sys_login_record a + LEFT JOIN gxwebsoft_core.sys_user b ON a.username = b.username + + + AND a.id = #{param.id} + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.os LIKE CONCAT('%', #{param.os}, '%') + + + AND a.device LIKE CONCAT('%', #{param.device}, '%') + + + AND a.browser LIKE CONCAT('%', #{param.browser}, '%') + + + AND a.ip LIKE CONCAT('%', #{param.ip}, '%') + + + AND a.login_type LIKE CONCAT('%', #{param.loginType}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.user_id = #{param.userId} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml new file mode 100644 index 0000000..0897489 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml @@ -0,0 +1,32 @@ + + + + + + + SELECT a.* + FROM sys_menu a + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.tenant_id = #{param.tenantId} + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml new file mode 100644 index 0000000..56b7fad --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.nickname, + b.username + FROM gxwebsoft_core.sys_operation_record a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.module LIKE CONCAT('%', #{param.module}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.request_method = #{param.requestMethod} + + + AND a.method LIKE CONCAT('%', #{param.method}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.ip LIKE CONCAT('%', #{param.ip}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.`status` = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.username LIKE CONCAT('%', #{param.username}, '%') + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml new file mode 100644 index 0000000..ed5d3c8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml @@ -0,0 +1,98 @@ + + + + + + + SELECT ta.* + FROM sys_dictionary_data ta + LEFT JOIN gxwebsoft_core.sys_dictionary tb + ON ta.dict_id = tb.dict_id + AND tb.deleted = 0 + WHERE ta.deleted = 0 + AND tb.dict_code = 'organization_type' + + + + + SELECT a.*, + b.dict_data_name organization_type_name, + c.nickname leader_nickname, + c.username leader_username + FROM sys_organization a + LEFT JOIN ( + + ) b ON a.organization_type = b.dict_data_code + LEFT JOIN gxwebsoft_core.sys_user c ON a.leader_id = c.user_id + + AND a.deleted = 0 + + AND a.organization_id = #{param.organizationId} + + + AND a.parent_id = #{param.parentId} + + + AND a.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') + + + AND a.organization_full_name LIKE CONCAT('%', #{param.organizationFullName}, '%') + + + AND a.organization_code LIKE CONCAT('%', #{param.organizationCode}, '%') + + + AND a.organization_type = #{param.organizationType} + + + AND a.province = #{param.province} + + + AND a.city = #{param.city} + + + AND a.region = #{param.province} + + + AND a.zip_code = #{param.zipCode} + + + AND a.leader_id = #{param.leaderId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_data_name LIKE CONCAT('%', #{param.organizationTypeName}, '%') + + + AND c.nickname LIKE CONCAT('%', #{param.leaderNickname}, '%') + + + AND c.username LIKE CONCAT('%', #{param.leaderUsername}, '%') + + + AND ( + a.organization_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml new file mode 100644 index 0000000..45e3aac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml @@ -0,0 +1,105 @@ + + + + + + + SELECT a.*,b.tenant_name,c.company_name,c.short_name,c.domain + FROM sys_plug a + LEFT JOIN gxwebsoft_core.sys_tenant b ON a.tenant_id = b.tenant_id + LEFT JOIN gxwebsoft_core.sys_company c ON a.tenant_id = c.tenant_id + + + AND a.plug_id = #{param.plugId} + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.menu_type = #{param.menuType} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.authority LIKE CONCAT('%', #{param.authority}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.hide = #{param.hide} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.app_id = #{param.appId} + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.menu_id = #{param.keywords} + OR c.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR c.short_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml new file mode 100644 index 0000000..9f6facc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml new file mode 100644 index 0000000..141c53c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml new file mode 100644 index 0000000..ac81f4e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml @@ -0,0 +1,33 @@ + + + + + + + SELECT a.* + FROM sys_setting a + + + AND a.setting_key = #{param.settingKey} + + + AND a.setting_id = #{param.settingId} + + + AND a.tenant_id = #{param.tenantId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml new file mode 100644 index 0000000..83ba5b2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml @@ -0,0 +1,56 @@ + + + + + + + SELECT a.* + FROM sys_tenant a + + + AND a.tenant_id = #{param.tenantId} + + + AND a.tenant_name LIKE CONCAT('%', #{param.tenantName}, '%') + + + AND a.tenant_code LIKE CONCAT('%', #{param.tenantCode}, '%') + + + AND a.logo LIKE CONCAT('%', #{param.logo}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserCollectionMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserCollectionMapper.xml new file mode 100644 index 0000000..9b60a69 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserCollectionMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM sys_user_collection a + + + AND a.id = #{param.id} + + + AND a.tid = #{param.tid} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml new file mode 100644 index 0000000..872b232 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml new file mode 100644 index 0000000..4fa3030 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml @@ -0,0 +1,248 @@ + + + + + + + SELECT ta.* + FROM gxwebsoft_core.sys_dictionary_data ta + LEFT JOIN gxwebsoft_core.sys_dictionary tb + ON ta.dict_id = tb.dict_id + AND tb.deleted = 0 + WHERE ta.deleted = 0 + AND tb.dict_code = 'sex' + + + + + SELECT a.user_id, + GROUP_CONCAT(b.role_name) role_name + FROM gxwebsoft_core.sys_user_role a + LEFT JOIN gxwebsoft_core.sys_role b ON a.role_id = b.role_id + GROUP BY a.user_id + + + + + SELECT a.*, + c.dict_data_name sex_name, + e.tenant_name, + h.dealer_id + FROM gxwebsoft_core.sys_user a + LEFT JOIN ( + + ) c ON a.sex = c.dict_data_code + LEFT JOIN( + + ) d ON a.user_id = d.user_id + LEFT JOIN gxwebsoft_core.sys_tenant e ON a.tenant_id = e.tenant_id + LEFT JOIN gxwebsoft_core.sys_user_referee h ON a.user_id = h.user_id and h.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.type = #{param.type} + + + AND a.sex = #{param.sex} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.email_verified = #{param.emailVerified} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%') + + + AND a.birthday LIKE CONCAT('%', #{param.birthday}, '%') + + + AND a.organization_id = #{param.organizationId} + + + AND a.organization_id > 0 + + + AND a.platform = #{param.platform} + + + AND a.`status` = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.recommend = #{param.recommend} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_id=#{param.roleId}) + + + AND a.user_id IN + + #{item} + + + + AND a.phones IN + + #{item} + + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND i.city_mate LIKE CONCAT('%', #{param.cityMate}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND c.dict_data_name = #{param.sexName} + + + AND ( + a.username LIKE CONCAT('%', #{param.keywords}, '%') + OR a.user_id = #{param.keywords} + OR a.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR a.real_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.alias LIKE CONCAT('%', #{param.keywords}, '%') + OR a.phone LIKE CONCAT('%', #{param.keywords}, '%') + OR a.email LIKE CONCAT('%', #{param.keywords}, '%') + OR c.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + OR d.role_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + AND a.organization_id IN (SELECT organization_id FROM sys_organization WHERE parent_id=#{param.parentId}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE gxwebsoft_core.sys_user SET grade_id = #{param.gradeId} WHERE user_id = #{param.userId} + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRefereeMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRefereeMapper.xml new file mode 100644 index 0000000..67943f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRefereeMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.* + FROM sys_user_referee a + + + AND a.id = #{param.id} + + + AND a.dealer_id = #{param.dealerId} + + + AND a.user_id = #{param.userId} + + + AND a.level = #{param.level} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml new file mode 100644 index 0000000..78e3a87 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml @@ -0,0 +1,35 @@ + + + + + + INSERT INTO sys_user_role(user_id, role_id) VALUES + + (#{userId}, #{roleId}) + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java b/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java new file mode 100644 index 0000000..978c942 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 登录参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录参数") +public class AlipayParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("支付宝授权码") + private String authCode; + + @ApiModelProperty("登录账号") + private String username; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java b/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java new file mode 100644 index 0000000..0e43e93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java @@ -0,0 +1,25 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 缓存管理 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "缓存管理") +public class CacheParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("key") + private String key; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyCommentParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyCommentParam.java new file mode 100644 index 0000000..1a8e244 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyCommentParam.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 应用评论查询参数 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyCommentParam对象", description = "应用评论查询参数") +public class CompanyCommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "父级ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "评分") + @QueryField(type = QueryType.EQ) + private BigDecimal rate; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "评论内容") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyContentParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyContentParam.java new file mode 100644 index 0000000..79d9e52 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyContentParam.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用详情查询参数 + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyContentParam对象", description = "应用详情查询参数") +public class CompanyContentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "详细内容") + private String content; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyGitParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyGitParam.java new file mode 100644 index 0000000..bbc0436 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyGitParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 代码仓库查询参数 + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyGitParam对象", description = "代码仓库查询参数") +public class CompanyGitParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "仓库名称") + private String title; + + @ApiModelProperty(value = "厂商") + @QueryField(type = QueryType.EQ) + private String brand; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "仓库地址") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "仓库描述") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java new file mode 100644 index 0000000..4cbc456 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Set; + +/** + * 企业信息查询参数 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyParam对象", description = "企业信息查询参数") +public class CompanyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "应用类型") + private Integer type; + + @ApiModelProperty(value = "是否官方") + private Boolean official; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "类型 10企业 20政府单位") + @QueryField(type = QueryType.EQ) + private String companyType; + + @ApiModelProperty(value = "企业类型 多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "栏目分类") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "企业域名") + private String domain; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + @QueryField(type = QueryType.EQ) + private String email; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "发票抬头") + private String invoiceHeader; + + @ApiModelProperty(value = "服务开始时间") + private String startTime; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "成员数量") + @QueryField(type = QueryType.EQ) + private Integer members; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + @QueryField(type = QueryType.EQ) + private Integer departments; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Boolean recommend; + + @ApiModelProperty(value = "应用类型 app应用 plug插件") + private String appType; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty("商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "是否默认企业主体") + @QueryField(type = QueryType.EQ) + private Boolean authoritative; + + @ApiModelProperty(value = "租户号") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @QueryField(type = QueryType.EQ) + private String appName; + + @ApiModelProperty(value = "企业id集合") + @TableField(exist = false) + private Set companyIds; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyParameterParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyParameterParam.java new file mode 100644 index 0000000..2d5e35e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyParameterParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数查询参数 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyParameterParam对象", description = "应用参数查询参数") +public class CompanyParameterParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "参数名称") + private String name; + + @ApiModelProperty(value = "参数内容") + private String value; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyUrlParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyUrlParam.java new file mode 100644 index 0000000..a62ada3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyUrlParam.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用域名查询参数 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyUrlParam对象", description = "应用域名查询参数") +public class CompanyUrlParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "域名类型") + private String type; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java new file mode 100644 index 0000000..68d85b9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典数据查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典数据查询参数") +public class DictDataParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @QueryField(type = QueryType.EQ) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + @QueryField(type = QueryType.EQ) + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "字典数据代码或字典数据名称") + @TableField(exist = false) + private String keywords; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictParam.java new file mode 100644 index 0000000..a4fcefc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictParam.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典查询参数") +public class DictParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java new file mode 100644 index 0000000..9ae7597 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典数据查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典数据查询参数") +public class DictionaryDataParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @QueryField(type = QueryType.EQ) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + @QueryField(type = QueryType.EQ) + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "字典数据代码或字典数据名称") + @TableField(exist = false) + private String keywords; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java new file mode 100644 index 0000000..d3d5ef2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.common.system.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典查询参数") +public class DictionaryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DomainParam.java b/src/main/java/com/gxwebsoft/common/system/param/DomainParam.java new file mode 100644 index 0000000..05b510d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DomainParam.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 授权域名查询参数 + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "DomainParam对象", description = "授权域名查询参数") +public class DomainParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "主机记录") + private String hostName; + + @ApiModelProperty(value = "记录值") + private String hostValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "类型 0常规 1后台 2商家端") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java new file mode 100644 index 0000000..7f21366 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文件上传记录查询参数 + * + * @author WebSoft + * @since 2021-08-30 11:29:31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "文件上传记录查询参数") +public class FileRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("主键id") + private Integer id; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("分组ID") + private String groupId; + + @ApiModelProperty("文件名称") + private String name; + + @ApiModelProperty("文件存储路径") + private String path; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("文件类型") + private String contentType; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("创建人账号") + @TableField(exist = false) + private String createUsername; + + @ApiModelProperty("创建人名称") + @TableField(exist = false) + private String createNickname; + + @ApiModelProperty("用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty("商户编号") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java b/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java new file mode 100644 index 0000000..e0b6ea5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 登录参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录参数") +public class LoginParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("短信验证码") + private String code; + + @ApiModelProperty("密码") + private String password; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java new file mode 100644 index 0000000..9ceb8d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 登录日志查询参数 + * + * @author WebSoft + * @since 2021-08-29 19:09:23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录日志查询参数") +public class LoginRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("主键id") + private Integer id; + + @ApiModelProperty("用户账号") + private String username; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token") + private Integer loginType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("用户id") + @TableField(exist = false) + private Integer userId; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java b/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java new file mode 100644 index 0000000..6596d0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 菜单查询参数 + * + * @author WebSoft + * @since 2021-08-29 19:36:10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "菜单查询参数") +public class MenuParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("菜单id") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty("上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty("菜单名称") + private String title; + + @ApiModelProperty("菜单路由关键字") + private String path; + + @ApiModelProperty("菜单组件地址") + private String component; + + @ApiModelProperty("菜单类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty("权限标识") + private String authority; + + @ApiModelProperty("菜单图标") + private String icon; + + @ApiModelProperty("关联应用") + private Integer appId; + + @ApiModelProperty("是否隐藏, 0否, 1是(仅注册路由不显示左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("租户ID") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java new file mode 100644 index 0000000..7c5e344 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java @@ -0,0 +1,67 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 操作日志参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "操作日志参数") +public class OperationRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty("用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty("操作模块") + private String module; + + @ApiModelProperty("操作功能") + private String description; + + @ApiModelProperty("请求地址") + private String url; + + @ApiModelProperty("请求方式") + private String requestMethod; + + @ApiModelProperty("调用方法") + private String method; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("状态, 0成功, 1异常") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty("用户账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java b/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java new file mode 100644 index 0000000..97a7c62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 组织机构查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "组织机构查询参数") +public class OrganizationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "机构全称") + private String organizationFullName; + + @ApiModelProperty(value = "机构代码") + private String organizationCode; + + @ApiModelProperty(value = "机构类型(字典代码)") + private String organizationType; + + @ApiModelProperty(value = "所在省份") + @QueryField(type = QueryType.EQ) + private String province; + + @ApiModelProperty(value = "所在城市") + @QueryField(type = QueryType.EQ) + private String city; + + @ApiModelProperty(value = "所在辖区") + @QueryField(type = QueryType.EQ) + private String region; + + @ApiModelProperty(value = "邮政编码") + @QueryField(type = QueryType.EQ) + private String zipCode; + + @ApiModelProperty(value = "负责人id") + @QueryField(type = QueryType.EQ) + private Integer leaderId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "机构类型名称") + @TableField(exist = false) + private String organizationTypeName; + + @ApiModelProperty(value = "负责人姓名") + @TableField(exist = false) + private String leaderNickname; + + @ApiModelProperty(value = "负责人账号") + @TableField(exist = false) + private String leaderUsername; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java b/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java new file mode 100644 index 0000000..87e79af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 插件扩展查询参数 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PlugParam对象", description = "插件扩展查询参数") +public class PlugParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "插件id") + @QueryField(type = QueryType.EQ) + private Integer plugId; + + @ApiModelProperty(value = "菜单id") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "关联应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java b/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java new file mode 100644 index 0000000..1332d4e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.common.system.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 角色查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "角色查询参数") +public class RoleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("角色id") + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @ApiModelProperty("角色标识") + private String roleCode; + + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java b/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java new file mode 100644 index 0000000..fe322d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 系统设置查询参数 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "SettingParam对象", description = "系统设置查询参数") +public class SettingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @QueryField(type = QueryType.EQ) + private Integer settingId; + + @ApiModelProperty(value = "设置项标示") + @QueryField(type = QueryType.EQ) + private String settingKey; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "同步更新租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户名称") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java b/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java new file mode 100644 index 0000000..765b9eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 发送短信验证码参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "发送短信验证码参数") +public class SmsCaptchaParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("短信签名") + private String signName; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("短信模板") + private String TemplateParam; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java b/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java new file mode 100644 index 0000000..5d70e82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 租户查询参数 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TenantParam对象", description = "租户查询参数") +public class TenantParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "logo") + private String logo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "租户id") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java b/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java new file mode 100644 index 0000000..ca75819 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 修改密码参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "修改密码参数") +public class UpdatePasswordParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("原始密码") + private String oldPassword; + + @ApiModelProperty("新密码") + private String password; + + @ApiModelProperty("手机号码") + private String phone; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserCollectionParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserCollectionParam.java new file mode 100644 index 0000000..bd95efb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserCollectionParam.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的收藏查询参数 + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserCollectionParam对象", description = "我的收藏查询参数") +public class UserCollectionParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "租户ID") + @QueryField(type = QueryType.EQ) + private Integer tid; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java new file mode 100644 index 0000000..d8217af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.common.system.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户文件查询参数 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserFileParam对象", description = "用户文件查询参数") +public class UserFileParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "文件名称") + private String name; + + @ApiModelProperty(value = "上级id") + @QueryField(type = QueryType.EQ) + private Integer parentId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java new file mode 100644 index 0000000..153a783 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.param; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户导入参数 + * + * @author WebSoft + * @since 2011-10-15 17:33:34 + */ +@Data +public class UserImportParam implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "账号") + private String username; + + @Excel(name = "密码") + private String password; + + @Excel(name = "昵称") + private String nickname; + + @Excel(name = "手机号") + private String phone; + + @Excel(name = "邮箱") + private String email; + + @Excel(name = "组织机构") + private String organizationName; + + @Excel(name = "性别") + private String sexName; + + @Excel(name = "角色") + private String roleName; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java new file mode 100644 index 0000000..157bd8c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java @@ -0,0 +1,249 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Set; + +/** + * 用户查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "用户查询参数") +public class UserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty("用户类型, 0普通用户 10企业用户") + private Integer type; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("昵称") + private String nickname; + + @ApiModelProperty("用户编码") + private String userCode; + + @ApiModelProperty("性别(字典)") + @QueryField(type = QueryType.EQ) + private String sex; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("邮箱") + private String email; + + @ApiModelProperty("邮箱是否验证, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer emailVerified; + + @ApiModelProperty("别名") + private String alias; + + @ApiModelProperty("真实姓名") + private String realName; + + @ApiModelProperty("身份证号") + private String idCard; + + @ApiModelProperty("出生日期") + private String birthday; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty("可用余额") + private BigDecimal balance; + + @ApiModelProperty("机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty("用户分组ID") + @QueryField(type = QueryType.EQ) + private Integer groupId; + + @ApiModelProperty("注册来源客户端") + @QueryField(type = QueryType.EQ) + private String platform; + + @ApiModelProperty("是否下线会员") + private Integer offline; + + @ApiModelProperty("上级机构ID") + @QueryField(type = QueryType.IN) + private Integer parentId; + + @ApiModelProperty("状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("角色id") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty("角色标识") + @TableField(exist = false) + private String roleCode; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty("关注数") + private Integer followers; + + @ApiModelProperty("粉丝数") + private Integer fans; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + @ApiModelProperty(value = "择偶区域") + @TableField(exist = false) + private String cityMate; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("公司名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty("公司名称") + private String customerName; + + @ApiModelProperty("性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty("推荐状态") + @TableField(exist = false) + private Integer recommend; + + @ApiModelProperty("搜索关键字") + @TableField(exist = false) + private String keywords; + + @ApiModelProperty(value = "会员等级") + @TableField(exist = false) + private Integer gradeId; + + @ApiModelProperty("按角色搜索") + @TableField(exist = false) + private String roleIds; + + @ApiModelProperty("用户类型 sys系统用户 org机构职员 member商城会员 ") + @TableField(exist = false) + private String userType; + + @ApiModelProperty("支付宝授权码") + @TableField(exist = false) + private String authCode; + + @ApiModelProperty("微信凭证code") + @TableField(exist = false) + private String code; + + @ApiModelProperty("推荐人ID") + @QueryField(type = QueryType.IN) + private Integer refereeId; + + @ApiModelProperty("租户ID") + private Integer tenantId; + + @ApiModelProperty("二维码类型") + @TableField(exist = false) + private String codeType; + + @ApiModelProperty("二维码内容 填网址扫码后可跳转") + @TableField(exist = false) + private String codeContent; + + @ApiModelProperty("是否内部职员") + @TableField(exist = false) + private Boolean isStaff; + + @ApiModelProperty(value = "是否管理员") + @TableField(exist = false) + private Boolean isAdmin; + + @ApiModelProperty("openid") + private String openid; + + @ApiModelProperty("unionid") + private String unionid; + + @ApiModelProperty("最后结算时间") + @TableField(exist = false) + private Date settlementTime; + + @ApiModelProperty("报餐时间") + @TableField(exist = false) + private String deliveryTime; + + @ApiModelProperty("用户ID集合") + @TableField(exist = false) + private Set userIds; + + @ApiModelProperty("用户手机号码集合") + @TableField(exist = false) + private Set phones; + + @ApiModelProperty("是否查询用户详细资料表") + @TableField(exist = false) + private Boolean showProfile; + + @ApiModelProperty("openId") + @TableField(exist = false) + private String openId; + + @ApiModelProperty(value = "可管理的商户") + @QueryField(type = QueryType.LIKE) + private String merchants; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty("关联用户ID") + @TableField(exist = false) + private Integer sysUserId; +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserRefereeParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserRefereeParam.java new file mode 100644 index 0000000..16e5261 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserRefereeParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户推荐关系表查询参数 + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserRefereeParam对象", description = "用户推荐关系表查询参数") +public class UserRefereeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + @QueryField(type = QueryType.EQ) + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + @QueryField(type = QueryType.EQ) + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java b/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java new file mode 100644 index 0000000..5a2d441 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 验证码返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "验证码返回结果") +public class CaptchaResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("图形验证码base64数据") + private String base64; + + @ApiModelProperty("验证码文本") + private String text; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java b/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java new file mode 100644 index 0000000..4089728 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.result; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 登录返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "登录返回结果") +public class LoginResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("access_token") + private String access_token; + + @ApiModelProperty("用户信息") + private User user; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java b/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java new file mode 100644 index 0000000..ad752d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * Redis缓存数据 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "缓存数据返回") +public class RedisResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("key") + private String key; + + @ApiModelProperty("数据") + private T data; + + @ApiModelProperty("过期时间") + private LocalDateTime expireTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java b/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java new file mode 100644 index 0000000..0db38d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java @@ -0,0 +1,26 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 短信验证码返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "短信验证码返回结果") +public class SmsCaptchaResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("短信验证码") + private String text; +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyCommentService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyCommentService.java new file mode 100644 index 0000000..10ca95a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyCommentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyComment; +import com.gxwebsoft.common.system.param.CompanyCommentParam; + +import java.util.List; + +/** + * 应用评论Service + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyCommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyCommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyCommentParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return CompanyComment + */ + CompanyComment getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyContentService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyContentService.java new file mode 100644 index 0000000..e4e1ab4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyContentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyContent; +import com.gxwebsoft.common.system.param.CompanyContentParam; + +import java.util.List; + +/** + * 应用详情Service + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +public interface CompanyContentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyContentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyContentParam param); + + /** + * 根据id查询 + * + * @param id + * @return CompanyContent + */ + CompanyContent getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyGitService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyGitService.java new file mode 100644 index 0000000..f3ac263 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyGitService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyGit; +import com.gxwebsoft.common.system.param.CompanyGitParam; + +import java.util.List; + +/** + * 代码仓库Service + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +public interface CompanyGitService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyGitParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyGitParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CompanyGit + */ + CompanyGit getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyParameterService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyParameterService.java new file mode 100644 index 0000000..4ffa4c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyParameterService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyParameter; +import com.gxwebsoft.common.system.param.CompanyParameterParam; + +import java.util.List; + +/** + * 应用参数Service + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyParameterService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyParameterParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyParameterParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CompanyParameter + */ + CompanyParameter getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java new file mode 100644 index 0000000..d675f59 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.param.CompanyParam; + +import java.util.List; + +/** + * 企业信息Service + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +public interface CompanyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyParam param); + + /** + * 根据id查询 + * + * @param companyId 企业id + * @return Company + */ + Company getByIdRel(Integer companyId); + + Company getByTenantIdRel(Integer tenantId); + + PageResult pageRelAll(CompanyParam param); + + void updateByCompanyId(Company company); + + boolean removeCompanyAll(Integer companyId); + + boolean undeleteAll(Integer companyId); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyUrlService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyUrlService.java new file mode 100644 index 0000000..c2b2479 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyUrlService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyUrl; +import com.gxwebsoft.common.system.param.CompanyUrlParam; + +import java.util.List; + +/** + * 应用域名Service + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +public interface CompanyUrlService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyUrlParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyUrlParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return CompanyUrl + */ + CompanyUrl getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java b/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java new file mode 100644 index 0000000..86b94bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; + +import java.util.List; + +/** + * 字典数据Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictDataService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DictDataParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DictDataParam param); + + /** + * 根据id查询 + * + * @param dictDataId 字典数据id + * @return DictData + */ + DictData getByIdRel(Integer dictDataId); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return DictData + */ + DictData getByDictCodeAndName(String dictCode, String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictService.java b/src/main/java/com/gxwebsoft/common/system/service/DictService.java new file mode 100644 index 0000000..8aef5ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Dict; + +/** + * 字典Service + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java b/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java new file mode 100644 index 0000000..881fd5a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; + +import java.util.List; + +/** + * 字典数据Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictionaryDataService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DictionaryDataParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DictionaryDataParam param); + + /** + * 根据id查询 + * + * @param dictDataId 字典数据id + * @return DictionaryData + */ + DictionaryData getByIdRel(Integer dictDataId); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return DictionaryData + */ + DictionaryData getByDictCodeAndName(String dictCode, String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java b/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java new file mode 100644 index 0000000..4705494 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Dictionary; + +/** + * 字典Service + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictionaryService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DomainService.java b/src/main/java/com/gxwebsoft/common/system/service/DomainService.java new file mode 100644 index 0000000..2996471 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DomainService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Domain; +import com.gxwebsoft.common.system.param.DomainParam; + +import java.util.List; + +/** + * 授权域名Service + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +public interface DomainService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DomainParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DomainParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return Domain + */ + Domain getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DomainServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/DomainServiceImpl.java new file mode 100644 index 0000000..9323228 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DomainServiceImpl.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Domain; +import com.gxwebsoft.common.system.mapper.DomainMapper; +import com.gxwebsoft.common.system.param.DomainParam; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 授权域名Service实现 + * + * @author 科技小王子 + * @since 2024-09-19 23:56:33 + */ +@Service +public class DomainServiceImpl extends ServiceImpl implements DomainService { + + @Override + public PageResult pageRel(DomainParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(DomainParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Domain getByIdRel(Integer id) { + DomainParam param = new DomainParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java new file mode 100644 index 0000000..b99a195 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.EmailRecord; + +import javax.mail.MessagingException; +import java.io.IOException; +import java.util.Map; + +/** + * 邮件发送记录Service + * + * @author WebSoft + * @since 2019-06-19 04:07:02 + */ +public interface EmailRecordService extends IService { + + /** + * 发送普通邮件 + * + * @param title 标题 + * @param content 内容 + * @param toEmails 收件人 + */ + void sendTextEmail(String title, String content, String[] toEmails); + + /** + * 发送富文本邮件 + * + * @param title 标题 + * @param html 富文本 + * @param toEmails 收件人 + * @throws MessagingException MessagingException + */ + void sendFullTextEmail(String title, String html, String[] toEmails) throws MessagingException; + + /** + * 发送模板邮件 + * + * @param title 标题 + * @param path 模板路径 + * @param map 填充数据 + * @param toEmails 收件人 + * @throws MessagingException MessagingException + * @throws IOException IOException + */ + void sendHtmlEmail(String title, String path, Map map, String[] toEmails) + throws MessagingException, IOException; + + void sendEmail(String title, String content, String receiver); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java new file mode 100644 index 0000000..3dd09ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; + +import java.io.File; +import java.util.List; + +/** + * 文件上传记录Service + * + * @author WebSoft + * @since 2021-08-30 11:20:15 + */ +public interface FileRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(FileRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(FileRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return FileRecord + */ + FileRecord getByIdRel(Integer id); + + /** + * 根据path查询 + * + * @param path 文件路径 + * @return FileRecord + */ + FileRecord getByIdPath(String path); + + /** + * 异步删除文件 + * + * @param files 文件数组 + */ + void deleteFileAsync(List files); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java new file mode 100644 index 0000000..0c4adbf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 登录日志Service + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +public interface LoginRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(LoginRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(LoginRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return LoginRecord + */ + LoginRecord getByIdRel(Integer id); + + /** + * 异步添加 + * + * @param username 用户账号 + * @param type 操作类型 + * @param comments 备注 + * @param tenantId 租户id + * @param request HttpServletRequest + */ + void saveAsync(String username, Integer type, String comments, Integer tenantId, HttpServletRequest request); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/MenuService.java b/src/main/java/com/gxwebsoft/common/system/service/MenuService.java new file mode 100644 index 0000000..db8e967 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/MenuService.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.param.MenuParam; + +/** + * 菜单Service + * + * @author WebSoft + * @since 2018-12-24 16:10:31 + */ +public interface MenuService extends IService { + + Boolean cloneMenu(MenuParam param); + + Boolean install(Integer id); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java new file mode 100644 index 0000000..227c4e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; + +import java.util.List; + +/** + * 操作日志Service + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +public interface OperationRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OperationRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OperationRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return OperationRecord + */ + OperationRecord getByIdRel(Integer id); + + /** + * 异步添加 + * + * @param operationRecord OperationRecord + */ + void saveAsync(OperationRecord operationRecord); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java b/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java new file mode 100644 index 0000000..94d3407 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; + +import java.util.List; + +/** + * 组织机构Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface OrganizationService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrganizationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrganizationParam param); + + /** + * 根据id查询 + * + * @param organizationId 机构id + * @return Organization + */ + Organization getByIdRel(Integer organizationId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/PlugService.java b/src/main/java/com/gxwebsoft/common/system/service/PlugService.java new file mode 100644 index 0000000..18d1194 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/PlugService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.PlugParam; + +import java.util.List; + +/** + * 插件扩展Service + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +public interface PlugService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PlugParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PlugParam param); + + /** + * 根据id查询 + * + * @param menuId 菜单id + * @return Plug + */ + Plug getByIdRel(Integer menuId); + + Boolean cloneMenu(PlugParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java b/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java new file mode 100644 index 0000000..05a3d4f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; + +import java.util.List; + +/** + * 角色菜单Service + * + * @author WebSoft + * @since 2018-12-24 16:10:44 + */ +public interface RoleMenuService extends IService { + + /** + * 查询用户对应的菜单 + * + * @param userId 用户id + * @param menuType 菜单类型 + * @return List + */ + List listMenuByUserId(Integer userId, Integer menuType); + + /** + * 查询用户对应的菜单 + * + * @param roleIds 角色id + * @param menuType 菜单类型 + * @return List + */ + List listMenuByRoleIds(List roleIds, Integer menuType); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/RoleService.java b/src/main/java/com/gxwebsoft/common/system/service/RoleService.java new file mode 100644 index 0000000..3e76263 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/RoleService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Role; + +/** + * 角色Service + * + * @author WebSoft + * @since 2018-12-24 16:10:32 + */ +public interface RoleService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/SettingService.java b/src/main/java/com/gxwebsoft/common/system/service/SettingService.java new file mode 100644 index 0000000..9432620 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/SettingService.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.system.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.param.SettingParam; +import com.wechat.pay.java.core.Config; + +import java.util.List; + +/** + * 系统设置Service + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +public interface SettingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(SettingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(SettingParam param); + + /** + * 根据id查询 + * + * @param settingId id + * @return Setting + */ + Setting getByIdRel(Integer settingId); + + /** + * 通过key获取设置内容 + * @param key key + * @return Setting + */ + JSONObject getBySettingKey(String key); + + Setting getData(String settingKey); + + JSONObject getCache(String key); + + void initConfig(Setting setting); + + Config getConfig(Integer tenantId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/TenantService.java b/src/main/java/com/gxwebsoft/common/system/service/TenantService.java new file mode 100644 index 0000000..42614a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/TenantService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; + +import java.util.List; + +/** + * 租户Service + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +public interface TenantService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TenantParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TenantParam param); + + /** + * 根据id查询 + * + * @param tenantId 租户id + * @return Tenant + */ + Tenant getByIdRel(Integer tenantId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserCollectionService.java b/src/main/java/com/gxwebsoft/common/system/service/UserCollectionService.java new file mode 100644 index 0000000..421c682 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserCollectionService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.UserCollection; +import com.gxwebsoft.common.system.param.UserCollectionParam; + +import java.util.List; + +/** + * 我的收藏Service + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +public interface UserCollectionService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserCollectionParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserCollectionParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return UserCollection + */ + UserCollection getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserCollectionServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/UserCollectionServiceImpl.java new file mode 100644 index 0000000..f5c174f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserCollectionServiceImpl.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.UserCollection; +import com.gxwebsoft.common.system.mapper.UserCollectionMapper; +import com.gxwebsoft.common.system.param.UserCollectionParam; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 我的收藏Service实现 + * + * @author 科技小王子 + * @since 2024-04-28 18:08:32 + */ +@Service +public class UserCollectionServiceImpl extends ServiceImpl implements UserCollectionService { + + @Override + public PageResult pageRel(UserCollectionParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserCollectionParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserCollection getByIdRel(Integer id) { + UserCollectionParam param = new UserCollectionParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java b/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java new file mode 100644 index 0000000..2c8abe6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.UserFile; + +/** + * 用户文件Service + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +public interface UserFileService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserRefereeService.java b/src/main/java/com/gxwebsoft/common/system/service/UserRefereeService.java new file mode 100644 index 0000000..e715c4f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserRefereeService.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.UserReferee; +import com.gxwebsoft.common.system.param.UserRefereeParam; + +import java.util.List; + +/** + * 用户推荐关系表Service + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +public interface UserRefereeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserRefereeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserRefereeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return UserReferee + */ + UserReferee getByIdRel(Integer id); + + UserReferee check(Integer dealerId, Integer userId); + + UserReferee getByUserId(Integer userId); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java new file mode 100644 index 0000000..c87365b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; + +import java.util.List; + +/** + * 用户角色Service + * + * @author WebSoft + * @since 2018-12-24 16:10:35 + */ +public interface UserRoleService extends IService { + + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int saveBatch(Integer userId, List roleIds); + + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + List listByUserId(Integer userId); + + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List listByUserIds(List userIds); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserService.java b/src/main/java/com/gxwebsoft/common/system/service/UserService.java new file mode 100644 index 0000000..658c205 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserService.java @@ -0,0 +1,116 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import org.springframework.security.core.userdetails.UserDetailsService; + +import java.util.List; + +/** + * 用户Service + * + * @author WebSoft + * @since 2018-12-24 16:10:52 + */ +public interface UserService extends IService, UserDetailsService { + + /** + * 关联分页查询用户 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserParam param); + + /** + * 关联查询全部用户 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserParam param); + + /** + * 根据id查询用户 + * + * @param userId 用户id + * @return User + */ + User getByIdRel(Integer userId); + + /** + * 根据账号查询用户 + * + * @param username 账号 + * @return User + */ + User getByUsername(String username); + + /** + * 根据账号查询用户 + * + * @param username 账号 + * @param tenantId 租户id + * @return User + */ + User getByUsername(String username, Integer tenantId); + + /** + * 添加用户 + * + * @param user 用户信息 + * @return boolean + */ + boolean saveUser(User user); + + /** + * 修改用户 + * + * @param user 用户信息 + * @return boolean + */ + boolean updateUser(User user); + + /** + * 比较用户密码 + * + * @param dbPassword 数据库存储的密码 + * @param inputPassword 用户输入的密码 + * @return boolean + */ + boolean comparePassword(String dbPassword, String inputPassword); + + /** + * md5加密用户密码 + * + * @param password 密码明文 + * @return 密文 + */ + String encodePassword(String password); + + /** + * 跟进手机号码查询用户 + * @param phone 手机号码 + * @return 用户信息 + */ + User getByPhone(String phone); + + User getByUnionId(UserParam userParam); + + User getByOauthId(UserParam userParam); + + List listStatisticsRel(UserParam param); + + /** + * 更新会员不限租户 + * @param user 用户信息 + */ + void updateByUserId(User user); + + List pageAdminByPhone(UserParam param); + + List listByAlert(); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyCommentServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyCommentServiceImpl.java new file mode 100644 index 0000000..e945e66 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyCommentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyComment; +import com.gxwebsoft.common.system.mapper.CompanyCommentMapper; +import com.gxwebsoft.common.system.param.CompanyCommentParam; +import com.gxwebsoft.common.system.service.CompanyCommentService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用评论Service实现 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Service +public class CompanyCommentServiceImpl extends ServiceImpl implements CompanyCommentService { + + @Override + public PageResult pageRel(CompanyCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyCommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CompanyComment getByIdRel(Integer id) { + CompanyCommentParam param = new CompanyCommentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyContentServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyContentServiceImpl.java new file mode 100644 index 0000000..b8604a6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyContentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyContent; +import com.gxwebsoft.common.system.mapper.CompanyContentMapper; +import com.gxwebsoft.common.system.param.CompanyContentParam; +import com.gxwebsoft.common.system.service.CompanyContentService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用详情Service实现 + * + * @author 科技小王子 + * @since 2024-10-16 13:41:21 + */ +@Service +public class CompanyContentServiceImpl extends ServiceImpl implements CompanyContentService { + + @Override + public PageResult pageRel(CompanyContentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyContentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CompanyContent getByIdRel(Integer id) { + CompanyContentParam param = new CompanyContentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyGitServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyGitServiceImpl.java new file mode 100644 index 0000000..a954d4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyGitServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyGit; +import com.gxwebsoft.common.system.mapper.CompanyGitMapper; +import com.gxwebsoft.common.system.param.CompanyGitParam; +import com.gxwebsoft.common.system.service.CompanyGitService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 代码仓库Service实现 + * + * @author 科技小王子 + * @since 2024-10-19 18:08:51 + */ +@Service +public class CompanyGitServiceImpl extends ServiceImpl implements CompanyGitService { + + @Override + public PageResult pageRel(CompanyGitParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyGitParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CompanyGit getByIdRel(Integer id) { + CompanyGitParam param = new CompanyGitParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyParameterServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyParameterServiceImpl.java new file mode 100644 index 0000000..4b77612 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyParameterServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyParameter; +import com.gxwebsoft.common.system.mapper.CompanyParameterMapper; +import com.gxwebsoft.common.system.param.CompanyParameterParam; +import com.gxwebsoft.common.system.service.CompanyParameterService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用参数Service实现 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Service +public class CompanyParameterServiceImpl extends ServiceImpl implements CompanyParameterService { + + @Override + public PageResult pageRel(CompanyParameterParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyParameterParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CompanyParameter getByIdRel(Integer id) { + CompanyParameterParam param = new CompanyParameterParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java new file mode 100644 index 0000000..8bdb503 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.mapper.CompanyMapper; +import com.gxwebsoft.common.system.param.CompanyParam; +import com.gxwebsoft.common.system.service.CompanyService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 企业信息Service实现 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Service +public class CompanyServiceImpl extends ServiceImpl implements CompanyService { + + @Override + public PageResult pageRel(CompanyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number desc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Company getByIdRel(Integer companyId) { + CompanyParam param = new CompanyParam(); + param.setCompanyId(companyId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Company getByTenantIdRel(Integer tenantId) { + CompanyParam param = new CompanyParam(); +// final Company one = param.getOne(baseMapper.selectListRel(param)); + param.setAuthoritative(true); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public PageResult pageRelAll(CompanyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number desc,create_time desc"); + List list = baseMapper.selectPageRelAll(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public void updateByCompanyId(Company company) { + baseMapper.updateByCompanyId(company); + } + + @Override + public boolean removeCompanyAll(Integer companyId){ + if (baseMapper.removeCompanyAll(companyId)) { + return true; + } + return false; + } + + @Override + public boolean undeleteAll(Integer companyId){ + if (baseMapper.undeleteAll(companyId)) { + return true; + } + return false; + } + + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyUrlServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyUrlServiceImpl.java new file mode 100644 index 0000000..a7922cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyUrlServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.CompanyUrl; +import com.gxwebsoft.common.system.mapper.CompanyUrlMapper; +import com.gxwebsoft.common.system.param.CompanyUrlParam; +import com.gxwebsoft.common.system.service.CompanyUrlService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用域名Service实现 + * + * @author 科技小王子 + * @since 2024-10-17 15:30:24 + */ +@Service +public class CompanyUrlServiceImpl extends ServiceImpl implements CompanyUrlService { + + @Override + public PageResult pageRel(CompanyUrlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CompanyUrlParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public CompanyUrl getByIdRel(Integer id) { + CompanyUrlParam param = new CompanyUrlParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java new file mode 100644 index 0000000..e30a0fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.mapper.DictDataMapper; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典数据Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class DictDataServiceImpl extends ServiceImpl + implements DictDataService { + + @Override + public PageResult pageRel(DictDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(DictDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public DictData getByIdRel(Integer dictDataId) { + DictDataParam param = new DictDataParam(); + param.setDictDataId(dictDataId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public DictData getByDictCodeAndName(String dictCode, String dictDataName) { + List list = baseMapper.getByDictCodeAndName(dictCode, dictDataName); + return CommonUtil.listGetOne(list); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java new file mode 100644 index 0000000..6b09f90 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Dict; +import com.gxwebsoft.common.system.mapper.DictMapper; +import com.gxwebsoft.common.system.service.DictService; +import org.springframework.stereotype.Service; + +/** + * 字典Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Service +public class DictServiceImpl extends ServiceImpl implements DictService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java new file mode 100644 index 0000000..0f26dd2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.mapper.DictionaryDataMapper; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典数据Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class DictionaryDataServiceImpl extends ServiceImpl + implements DictionaryDataService { + + @Override + public PageResult pageRel(DictionaryDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(DictionaryDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public DictionaryData getByIdRel(Integer dictDataId) { + DictionaryDataParam param = new DictionaryDataParam(); + param.setDictDataId(dictDataId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public DictionaryData getByDictCodeAndName(String dictCode, String dictDataName) { + List list = baseMapper.getByDictCodeAndName(dictCode, dictDataName); + return CommonUtil.listGetOne(list); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java new file mode 100644 index 0000000..74d6fe1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Dictionary; +import com.gxwebsoft.common.system.mapper.DictionaryMapper; +import com.gxwebsoft.common.system.service.DictionaryService; +import org.springframework.stereotype.Service; + +/** + * 字典Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Service +public class DictionaryServiceImpl extends ServiceImpl implements DictionaryService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java new file mode 100644 index 0000000..13ecae2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.EmailRecord; +import com.gxwebsoft.common.system.mapper.EmailRecordMapper; +import com.gxwebsoft.common.system.service.EmailRecordService; +import org.beetl.core.Configuration; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.ClasspathResourceLoader; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.IOException; +import java.util.Map; + +/** + * 邮件发送记录Service实现 + * + * @author WebSoft + * @since 2019-06-19 04:07:54 + */ +@Service +public class EmailRecordServiceImpl extends ServiceImpl + implements EmailRecordService { + // 发件邮箱 + @Value("${spring.mail.username}") + private String formEmail; + @Resource + private JavaMailSender mailSender; + + @Override + public void sendTextEmail(String title, String content, String[] toEmails) { + SimpleMailMessage message = new SimpleMailMessage(); + message.setFrom(formEmail); + message.setTo(toEmails); + message.setSubject(title); + message.setText(content); + mailSender.send(message); + } + + @Override + public void sendFullTextEmail(String title, String html, String[] toEmails) throws MessagingException { + MimeMessage mimeMessage = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); + helper.setFrom(formEmail); + helper.setTo(toEmails); + helper.setSubject(title); + // 发送邮件 + helper.setText(html, true); + mailSender.send(mimeMessage); + } + + @Override + public void sendHtmlEmail(String title, String path, Map map, String[] toEmails) + throws MessagingException, IOException { + ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("templates/"); + Configuration cfg = Configuration.defaultConfiguration(); + GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); + Template t = gt.getTemplate(path); // 加载html模板 + t.binding(map); // 填充数据 + String html = t.render(); // 获得渲染后的html + sendFullTextEmail(title, html, toEmails); // 发送邮件 + } + + @Async + @Override + public void sendEmail(String title, String content, String receiver) { + // 发送邮件通知 + EmailRecord emailRecord = new EmailRecord(); + emailRecord.setTitle(title); + emailRecord.setContent(content); + emailRecord.setReceiver(receiver); + emailRecord.setCreateUserId(42); + sendTextEmail(title,content,receiver.split(",")); + save(emailRecord); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java new file mode 100644 index 0000000..72c9c27 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.mapper.FileRecordMapper; +import com.gxwebsoft.common.system.param.FileRecordParam; +import com.gxwebsoft.common.system.service.FileRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; + +/** + * 文件上传记录Service实现 + * + * @author WebSoft + * @since 2021-08-30 11:21:01 + */ +@Service +public class FileRecordServiceImpl extends ServiceImpl implements FileRecordService { + + @Override + public PageResult pageRel(FileRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(FileRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public FileRecord getByIdRel(Integer id) { + FileRecordParam param = new FileRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public FileRecord getByIdPath(String path) { + return CommonUtil.listGetOne(baseMapper.getByIdPath(path)); + } + + @Async + @Override + public void deleteFileAsync(List files) { + for (File file : files) { + try { + file.delete(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java new file mode 100644 index 0000000..28497e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.common.system.service.impl; + +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.mapper.LoginRecordMapper; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import com.gxwebsoft.common.system.service.LoginRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 登录日志Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +@Service +public class LoginRecordServiceImpl extends ServiceImpl + implements LoginRecordService { + + @Override + public PageResult pageRel(LoginRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(LoginRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public LoginRecord getByIdRel(Integer id) { + LoginRecordParam param = new LoginRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Async + @Override + public void saveAsync(String username, Integer type, String comments, Integer tenantId, + HttpServletRequest request) { + if (username == null) { + return; + } + LoginRecord loginRecord = new LoginRecord(); + loginRecord.setUsername(username); + loginRecord.setLoginType(type); + loginRecord.setComments(comments); + loginRecord.setTenantId(tenantId); + UserAgent ua = UserAgentUtil.parse(ServletUtil.getHeaderIgnoreCase(request, "User-Agent")); + if (ua != null) { + if (ua.getPlatform() != null) { + loginRecord.setOs(ua.getPlatform().toString()); + } + if (ua.getOs() != null) { + loginRecord.setDevice(ua.getOs().toString()); + } + if (ua.getBrowser() != null) { + loginRecord.setBrowser(ua.getBrowser().toString()); + } + } + loginRecord.setIp(ServletUtil.getClientIP(request)); + baseMapper.insert(loginRecord); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..969aee3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.mapper.MenuMapper; +import com.gxwebsoft.common.system.param.MenuParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.RoleService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 菜单Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:10 + */ +@Service +public class MenuServiceImpl extends ServiceImpl implements MenuService { + private Integer plugMenuId; + @Resource + private RoleService roleService; + @Resource + private RoleMenuService roleMenuService; + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean cloneMenu(MenuParam param) { +// System.out.println("准备待克隆的菜单数据 = " + param); + // 删除本项目菜单 + baseMapper.delete(new LambdaQueryWrapper().eq(Menu::getDeleted,0)); + // 顶级栏目 + param.setParentId(0); +// final List list = baseMapper.getMenuByClone(param); +//// final List menuIds = list.stream().map(Menu::getMenuId).collect(Collectors.toList()); + doCloneMenu(baseMapper.getMenuByClone(param)); + return true; + } + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean install(Integer id) { + // 1.插件绑定的菜单ID + final MenuParam param = new MenuParam(); + param.setMenuId(id); + final List list = baseMapper.getMenuByClone(param); + // TODO 克隆当前插件到顶级菜单 + doCloneMenu(list); + + // 2.查找当前租户的超管权限的roleId + final Role superAdmin = roleService.getOne(new LambdaQueryWrapper().eq(Role::getRoleCode, "superAdmin")); + final Integer roleId = superAdmin.getRoleId(); + final Integer tenantId = superAdmin.getTenantId(); + // 3.勾选菜单根权限 + final RoleMenu roleMenu0 = new RoleMenu(); + roleMenu0.setRoleId(roleId); + roleMenu0.setMenuId(this.plugMenuId); + roleMenuService.save(roleMenu0); + + // 4.勾选根节点下的子菜单权限 + final MenuParam menuParam = new MenuParam(); + menuParam.setParentId(this.plugMenuId); + menuParam.setTenantId(tenantId); + final List menuList = baseMapper.getMenuByClone(menuParam); + menuList.forEach(d->{ + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(d.getMenuId()); + roleMenuService.save(roleMenu); + }); + // 5.调整新插件的排序 + final Menu menu = baseMapper.selectById(this.plugMenuId); + menu.setSortNumber(100); + baseMapper.updateById(menu); + return true; + } + + // 克隆菜单 + private void doCloneMenu(List list) { + final MenuParam param = new MenuParam(); + list.forEach(d -> { + Menu menu = new Menu(); + menu.setParentId(0); + menu.setTitle(d.getTitle()); + menu.setPath(d.getPath()); + menu.setComponent(d.getComponent()); + menu.setMenuType(d.getMenuType()); + menu.setSortNumber(d.getSortNumber()); + menu.setAuthority(d.getAuthority()); + menu.setIcon(d.getIcon()); + menu.setHide(d.getHide()); + menu.setMeta(d.getMeta()); + save(menu); + this.plugMenuId = menu.getMenuId(); + // 二级菜单 + param.setParentId(d.getMenuId()); + final List list1 = baseMapper.getMenuByClone(param); + list1.forEach(d1 -> { + final Menu menu1 = new Menu(); + menu1.setParentId(menu.getMenuId()); + menu1.setTitle(d1.getTitle()); + menu1.setPath(d1.getPath()); + menu1.setComponent(d1.getComponent()); + menu1.setMenuType(d1.getMenuType()); + menu1.setSortNumber(d1.getSortNumber()); + menu1.setAuthority(d1.getAuthority()); + menu1.setIcon(d1.getIcon()); + menu1.setHide(d1.getHide()); + menu1.setMeta(d1.getMeta()); + save(menu1); + // 三级菜单 + param.setParentId(d1.getMenuId()); + final List list2 = baseMapper.getMenuByClone(param); + list2.forEach(d2 -> { + final Menu menu2 = new Menu(); + menu2.setParentId(menu1.getMenuId()); + menu2.setTitle(d2.getTitle()); + menu2.setPath(d2.getPath()); + menu2.setComponent(d2.getComponent()); + menu2.setMenuType(d2.getMenuType()); + menu2.setSortNumber(d2.getSortNumber()); + menu2.setAuthority(d2.getAuthority()); + menu2.setIcon(d2.getIcon()); + menu2.setHide(d2.getHide()); + menu2.setMeta(d2.getMeta()); + save(menu2); + }); + }); + }); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java new file mode 100644 index 0000000..8095bf4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.mapper.OperationRecordMapper; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import com.gxwebsoft.common.system.service.OperationRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 操作日志Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +@Service +public class OperationRecordServiceImpl extends ServiceImpl + implements OperationRecordService { + + @Override + public PageResult pageRel(OperationRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(OperationRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public OperationRecord getByIdRel(Integer id) { + OperationRecordParam param = new OperationRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Async + @Override + public void saveAsync(OperationRecord operationRecord) { + baseMapper.insert(operationRecord); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java new file mode 100644 index 0000000..b2bb53f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.mapper.OrganizationMapper; +import com.gxwebsoft.common.system.param.OrganizationParam; +import com.gxwebsoft.common.system.service.OrganizationService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 组织机构Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class OrganizationServiceImpl extends ServiceImpl + implements OrganizationService { + + @Override + public PageResult pageRel(OrganizationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(OrganizationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public Organization getByIdRel(Integer organizationId) { + OrganizationParam param = new OrganizationParam(); + param.setOrganizationId(organizationId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java new file mode 100644 index 0000000..aee07a6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.mapper.PlugMapper; +import com.gxwebsoft.common.system.param.PlugParam; +import com.gxwebsoft.common.system.service.PlugService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 插件扩展Service实现 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Service +public class PlugServiceImpl extends ServiceImpl implements PlugService { + + @Override + public PageResult pageRel(PlugParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(PlugParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Plug getByIdRel(Integer menuId) { + PlugParam param = new PlugParam(); + param.setMenuId(menuId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean cloneMenu(PlugParam param) { +// System.out.println("准备待克隆的菜单数据 = " + param); + // 删除本项目菜单 + baseMapper.delete(new LambdaQueryWrapper().eq(Plug::getDeleted,0)); + // 顶级栏目 + param.setParentId(0); + final List list = baseMapper.getMenuByClone(param); +// final List menuIds = list.stream().map(Menu::getMenuId).collect(Collectors.toList()); + + list.forEach(d -> { + Plug plug = new Plug(); + plug.setParentId(0); + plug.setTitle(d.getTitle()); + plug.setPath(d.getPath()); + plug.setComponent(d.getComponent()); + plug.setMenuType(d.getMenuType()); + plug.setSortNumber(d.getSortNumber()); + plug.setAuthority(d.getAuthority()); + plug.setIcon(d.getIcon()); + plug.setHide(d.getHide()); + plug.setMeta(d.getMeta()); + save(plug); + // 二级菜单 + param.setParentId(d.getMenuId()); + final List list1 = baseMapper.getMenuByClone(param); + list1.forEach(d1 -> { + final Plug menu1 = new Plug(); + menu1.setParentId(plug.getMenuId()); + menu1.setTitle(d1.getTitle()); + menu1.setPath(d1.getPath()); + menu1.setComponent(d1.getComponent()); + menu1.setMenuType(d1.getMenuType()); + menu1.setSortNumber(d1.getSortNumber()); + menu1.setAuthority(d1.getAuthority()); + menu1.setIcon(d1.getIcon()); + menu1.setHide(d1.getHide()); + menu1.setMeta(d1.getMeta()); + save(menu1); + // 三级菜单 + param.setParentId(d1.getMenuId()); + final List list2 = baseMapper.getMenuByClone(param); + list2.forEach(d2 -> { + final Plug menu2 = new Plug(); + menu2.setParentId(menu1.getMenuId()); + menu2.setTitle(d2.getTitle()); + menu2.setPath(d2.getPath()); + menu2.setComponent(d2.getComponent()); + menu2.setMenuType(d2.getMenuType()); + menu2.setSortNumber(d2.getSortNumber()); + menu2.setAuthority(d2.getAuthority()); + menu2.setIcon(d2.getIcon()); + menu2.setHide(d2.getHide()); + menu2.setMeta(d2.getMeta()); + save(menu2); + }); + }); + }); + return true; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java new file mode 100644 index 0000000..737c5e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.mapper.RoleMenuMapper; +import com.gxwebsoft.common.system.service.RoleMenuService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 角色菜单Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:12 + */ +@Service +public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { + + @Override + public List listMenuByUserId(Integer userId, Integer menuType) { + return baseMapper.listMenuByUserId(userId, menuType); + } + + @Override + public List listMenuByRoleIds(List roleIds, Integer menuType) { + return baseMapper.listMenuByRoleIds(roleIds, menuType); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..f543abd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.mapper.RoleMapper; +import com.gxwebsoft.common.system.service.RoleService; +import org.springframework.stereotype.Service; + +/** + * 角色服务实现类 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Service +public class RoleServiceImpl extends ServiceImpl implements RoleService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java new file mode 100644 index 0000000..702c265 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.mapper.SettingMapper; +import com.gxwebsoft.common.system.param.SettingParam; +import com.gxwebsoft.common.system.service.SettingService; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAConfig; +import com.wechat.pay.java.service.payments.jsapi.JsapiService; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 系统设置Service实现 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Service +public class SettingServiceImpl extends ServiceImpl implements SettingService { + // 本地缓存 + public static Map configMap = new HashMap<>(); + public static JsapiService service = null; + public static Config config = null; + @Resource + private ConfigProperties pathConfig; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Override + public PageResult pageRel(SettingParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(SettingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Setting getByIdRel(Integer settingId) { + SettingParam param = new SettingParam(); + param.setSettingId(settingId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public JSONObject getBySettingKey(String key) { + Setting setting = this.getOne(new QueryWrapper().eq("setting_key", key), false); + if(setting == null){ + if ("mp-weixin".equals(key)) { + throw new BusinessException("小程序未配置"); + } + if ("payment".equals(key)) { + throw new BusinessException("支付未配置"); + } + if ("sms".equals(key)) { + throw new BusinessException("短信未配置"); + } + if ("wx-work".equals(key)){ + throw new BusinessException("企业微信未配置"); + } + if ("setting".equals(key)) { + throw new BusinessException("基本信息未配置"); + } + if ("wx-official".equals(key)) { + throw new BusinessException("微信公众号未配置"); + } + if ("printer".equals(key)) { + throw new BusinessException("打印机未配置"); + } + } + return JSON.parseObject(setting.getContent()); + } + + @Override + public Setting getData(String settingKey) { + return query().eq("setting_key", settingKey).one(); + } + + @Override + public JSONObject getCache(String key) { + final String cache = stringRedisTemplate.opsForValue().get(key); + final JSONObject jsonObject = JSONObject.parseObject(cache); + if(jsonObject == null){ + throw new BusinessException("域名未配置"); + } + return jsonObject; + } + + @Override + public void initConfig(Setting data) { + if (data.getSettingKey().equals("payment")) { + final JSONObject jsonObject = JSONObject.parseObject(data.getContent()); + final String mchId = jsonObject.getString("mchId"); + final String apiclientKey = jsonObject.getString("apiclientKey"); + final String privateKey = pathConfig.getUploadPath().concat("file").concat(apiclientKey); + final String apiclientCert = pathConfig.getUploadPath().concat("file").concat(jsonObject.getString("apiclientCert")); + final String merchantSerialNumber = jsonObject.getString("merchantSerialNumber"); + final String apiV3key = jsonObject.getString("wechatApiKey"); + if(config == null){ +// config = new RSAAutoCertificateConfig.Builder() +// .merchantId(mchId) +// .privateKeyFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/fb193d3bfff0467b83dc498435a4f433.pem") +// .merchantSerialNumber(merchantSerialNumber) +// .apiV3Key(apiV3key) +// .build(); + config = + new RSAConfig.Builder() + .merchantId("1246610101") + .privateKeyFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/fb193d3bfff0467b83dc498435a4f433.pem") + .merchantSerialNumber("2903B872D5CA36E525FAEC37AEDB22E54ECDE7B7") + .wechatPayCertificatesFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/23329e924dae41af9b716825626dd44b.pem") + .build(); + configMap.put(data.getTenantId().toString(),config); + System.out.println("config = " + config); + } + if (service == null) { + service = new JsapiService.Builder().config(config).build(); + } + } + } + + @Override + public Config getConfig(Integer tenantId) { + if(configMap.get(tenantId.toString()) == null){ + final Setting payment = getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, "payment")); + this.initConfig(payment); + return configMap.get(tenantId.toString()); + } + return configMap.get(tenantId.toString()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java new file mode 100644 index 0000000..99c423e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.TenantMapper; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 租户Service实现 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Service +public class TenantServiceImpl extends ServiceImpl implements TenantService { + + @Override + public PageResult pageRel(TenantParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(TenantParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Tenant getByIdRel(Integer tenantId) { + TenantParam param = new TenantParam(); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java new file mode 100644 index 0000000..b5712c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.UserFileMapper; +import com.gxwebsoft.common.system.service.UserFileService; +import com.gxwebsoft.common.system.entity.UserFile; +import org.springframework.stereotype.Service; + +/** + * 用户文件Service实现 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Service +public class UserFileServiceImpl extends ServiceImpl implements UserFileService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserRefereeServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRefereeServiceImpl.java new file mode 100644 index 0000000..3055b98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRefereeServiceImpl.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.UserReferee; +import com.gxwebsoft.common.system.mapper.UserRefereeMapper; +import com.gxwebsoft.common.system.param.UserRefereeParam; +import com.gxwebsoft.common.system.service.UserRefereeService; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户推荐关系表Service实现 + * + * @author 科技小王子 + * @since 2023-10-07 22:56:36 + */ +@Service +public class UserRefereeServiceImpl extends ServiceImpl implements UserRefereeService { + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(UserRefereeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + for (UserReferee userReferee : list) { + userReferee.setUser(userService.getById(userReferee.getUserId())); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserRefereeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserReferee getByIdRel(Integer id) { + UserRefereeParam param = new UserRefereeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public UserReferee check(Integer dealerId, Integer userId) { + return getOne( + new LambdaQueryWrapper() + .eq(UserReferee::getDealerId, dealerId) + .eq(UserReferee::getUserId, userId) + ); + } + + @Override + public UserReferee getByUserId(Integer userId) { + return getOne( + new LambdaQueryWrapper() + .eq(UserReferee::getUserId, userId) + .last("limit 1") + ); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000..a2a3d11 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.mapper.UserRoleMapper; +import com.gxwebsoft.common.system.service.UserRoleService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户角色Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:36 + */ +@Service +public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + + + @Override + public int saveBatch(Integer userId, List roleIds) { + return baseMapper.insertBatch(userId, roleIds); + } + + @Override + public List listByUserId(Integer userId) { + return baseMapper.selectByUserId(userId); + } + + @Override + public List listByUserIds(List userIds) { + return baseMapper.selectByUserIds(userIds); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..84e6a70 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java @@ -0,0 +1,250 @@ +package com.gxwebsoft.common.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.cms.param.CmsWebsiteParam; +import com.gxwebsoft.cms.service.CmsWebsiteService; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.mapper.UserMapper; +import com.gxwebsoft.common.system.param.CompanyParam; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.CompanyService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 用户Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + @Resource + private UserRoleService userRoleService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private BCryptPasswordEncoder bCryptPasswordEncoder; + @Resource + private CmsWebsiteService cmsWebsiteService; + @Resource + private CompanyService companyService; + @Resource + private RedisUtil redisUtil; + + @Override + public PageResult pageRel(UserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 查询用户的角色 + selectUserRoles(list); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserParam param) { + List list = baseMapper.selectListRel(param); + // 查询用户的角色 + selectUserRoles(list); + // 排序 + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public User getByIdRel(Integer userId) { + UserParam param = new UserParam(); + param.setUserId(userId); + User user = param.getOne(baseMapper.selectListRel(param)); + if (user != null) { + user.setRoles(userRoleService.listByUserId(user.getUserId())); + user.setAuthorities(roleMenuService.listMenuByUserId(user.getUserId(), null)); + // 系统配置信息 +// Map map = new HashMap<>(); + // 1)云存储 +// String key = "setting:upload:" + user.getTenantId(); +// final String upload = redisUtil.get(key); +// if(upload != null){ +// final JSONObject object = JSONObject.parseObject(upload); +// map.put("uploadMethod",object.getString("uploadMethod")); +// map.put("bucketDomain",object.getString("bucketDomain")); +// map.put("fileUrl",object.getString("fileUrl") + "/"); +// user.setSystem(map); +// } + } + return user; + } + + @Override + public User getByUsername(String username) { + return getByUsername(username, null); + } + + @Override + public User getByUsername(String username, Integer tenantId) { + if (StrUtil.isBlank(username)) { + return null; + } + User user = baseMapper.selectByUsername(username, tenantId); + if (user != null) { + user.setRoles(userRoleService.listByUserId(user.getUserId())); + user.setAuthorities(roleMenuService.listMenuByUserId(user.getUserId(), null)); + } + return user; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + return getByUsername(username); + } + + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + @Override + public boolean saveUser(User user) { + if (StrUtil.isNotEmpty(user.getUsername()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getUsername, user.getUsername())) > 0) { + throw new BusinessException("账号已存在"); + } + if (StrUtil.isNotEmpty(user.getPhone()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getPhone, user.getPhone())) > 0) { + throw new BusinessException("手机号已存在"); + } + if (StrUtil.isNotEmpty(user.getEmail()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getEmail, user.getEmail())) > 0) { + throw new BusinessException("邮箱已存在"); + } + boolean result = baseMapper.insert(user) > 0; + if (result && user.getRoles() != null && user.getRoles().size() > 0) { + List roleIds = user.getRoles().stream().map(Role::getRoleId).collect(Collectors.toList()); + if (userRoleService.saveBatch(user.getUserId(), roleIds) < roleIds.size()) { + throw new BusinessException("用户角色添加失败"); + } + } + return result; + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public boolean updateUser(User user) { + if (StrUtil.isNotEmpty(user.getUsername()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getUsername, user.getUsername()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("账号已存在"); + } + if (StrUtil.isNotEmpty(user.getPhone()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getPhone, user.getPhone()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("手机号已存在"); + } + if (StrUtil.isNotEmpty(user.getEmail()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getEmail, user.getEmail()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("邮箱已存在"); + } + boolean result = baseMapper.updateById(user) > 0; + if (result && user.getRoles() != null && user.getRoles().size() > 0) { + userRoleService.remove(new LambdaUpdateWrapper().eq(UserRole::getUserId, user.getUserId())); + List roleIds = user.getRoles().stream().map(Role::getRoleId).collect(Collectors.toList()); + if (userRoleService.saveBatch(user.getUserId(), roleIds) < roleIds.size()) { + throw new BusinessException("用户角色添加失败"); + } + } + return result; + } + + @Override + public boolean comparePassword(String dbPassword, String inputPassword) { + return bCryptPasswordEncoder.matches(inputPassword, dbPassword); + } + + @Override + public String encodePassword(String password) { + return password == null ? null : bCryptPasswordEncoder.encode(password); + } + + @Override + public User getByPhone(String phone) { + return query().eq("phone", phone).one(); + } + + @Override + public User getByUnionId(UserParam param) { + return param.getOne(baseMapper.getOne(param)); + } + + @Override + public User getByOauthId(UserParam userParam) { + return userParam.getOne(baseMapper.getOne(userParam)); + } + + @Override + public List listStatisticsRel(UserParam param) { + List list = baseMapper.selectListStatisticsRel(param); + return list; + } + + /** + * 更新用户信息(跨租户) + * + * @param user 用户信息 + */ + @Override + public void updateByUserId(User user) { + baseMapper.updateByUserId(user); + } + + @Override + public List pageAdminByPhone(UserParam param) { + return baseMapper.pageAdminByPhone(param); + } + + @Override + public List listByAlert() { + return baseMapper.listByAlert(); + } + + /** + * 批量查询用户的角色 + * + * @param users 用户集合 + */ + private void selectUserRoles(List users) { + if (users != null && users.size() > 0) { + List userIds = users.stream().map(User::getUserId).collect(Collectors.toList()); + List userRoles = userRoleService.listByUserIds(userIds); + for (User user : users) { + List roles = userRoles.stream().filter(d -> user.getUserId().equals(d.getUserId())) + .collect(Collectors.toList()); + user.setRoles(roles); + } + } + } +} diff --git a/src/main/java/com/gxwebsoft/common/task/AddUserTaskController.java b/src/main/java/com/gxwebsoft/common/task/AddUserTaskController.java new file mode 100644 index 0000000..000e261 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/task/AddUserTaskController.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.common.task; + +import com.gxwebsoft.common.core.utils.RequestUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 定时任务 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Api(tags = "定时任务") +@RestController +@RequestMapping("/api/love/scheduling") +public class AddUserTaskController extends BaseController { + @Resource + private RequestUtil requestUtil; + @Resource + private UserRoleService userRoleService; + + /** + * 模拟注册用户 + * @Scheduled(fixedDelay = 1000, initialDelay = 1000) + */ + @Scheduled(fixedDelay = 1000, initialDelay = 1000) + public void addUserProfile() { +// final User userId = requestUtil.getCoreUserInfoByUserId(27344); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/controller/DocsContentController.java b/src/main/java/com/gxwebsoft/docs/controller/DocsContentController.java new file mode 100644 index 0000000..df6b593 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/controller/DocsContentController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.docs.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.docs.service.DocsContentService; +import com.gxwebsoft.docs.entity.DocsContent; +import com.gxwebsoft.docs.param.DocsContentParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 文档内容记录表控制器 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Api(tags = "文档内容记录表管理") +@RestController +@RequestMapping("/api/docs/docs-content") +public class DocsContentController extends BaseController { + @Resource + private DocsContentService docsContentService; + + @PreAuthorize("hasAuthority('docs:docsContent:list')") + @ApiOperation("分页查询文档内容记录表") + @GetMapping("/page") + public ApiResult> page(DocsContentParam param) { + // 使用关联查询 + return success(docsContentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docsContent:list')") + @ApiOperation("查询全部文档内容记录表") + @GetMapping() + public ApiResult> list(DocsContentParam param) { + // 使用关联查询 + return success(docsContentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docsContent:list')") + @ApiOperation("根据id查询文档内容记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(docsContentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('docs:docsContent:save')") + @OperationLog + @ApiOperation("添加文档内容记录表") + @PostMapping() + public ApiResult save(@RequestBody DocsContent docsContent) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + docsContent.setUserId(loginUser.getUserId()); + } + if (docsContentService.save(docsContent)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docsContent:update')") + @OperationLog + @ApiOperation("修改文档内容记录表") + @PutMapping() + public ApiResult update(@RequestBody DocsContent docsContent) { + if (docsContentService.updateById(docsContent)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docsContent:remove')") + @OperationLog + @ApiOperation("删除文档内容记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (docsContentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('docs:docsContent:save')") + @OperationLog + @ApiOperation("批量添加文档内容记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (docsContentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docsContent:update')") + @OperationLog + @ApiOperation("批量修改文档内容记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(docsContentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docsContent:remove')") + @OperationLog + @ApiOperation("批量删除文档内容记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (docsContentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/controller/DocsController.java b/src/main/java/com/gxwebsoft/docs/controller/DocsController.java new file mode 100644 index 0000000..c5348c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/controller/DocsController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.docs.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.docs.service.DocsService; +import com.gxwebsoft.docs.entity.Docs; +import com.gxwebsoft.docs.param.DocsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 知识库控制器 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Api(tags = "知识库管理") +@RestController +@RequestMapping("/api/docs/docs") +public class DocsController extends BaseController { + @Resource + private DocsService docsService; + + @PreAuthorize("hasAuthority('docs:docs:list')") + @ApiOperation("分页查询知识库") + @GetMapping("/page") + public ApiResult> page(DocsParam param) { + // 使用关联查询 + return success(docsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docs:list')") + @ApiOperation("查询全部知识库") + @GetMapping() + public ApiResult> list(DocsParam param) { + // 使用关联查询 + return success(docsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docs:list')") + @ApiOperation("根据id查询知识库") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(docsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('docs:docs:save')") + @OperationLog + @ApiOperation("添加知识库") + @PostMapping() + public ApiResult save(@RequestBody Docs docs) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + docs.setUserId(loginUser.getUserId()); + } + if (docsService.save(docs)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docs:update')") + @OperationLog + @ApiOperation("修改知识库") + @PutMapping() + public ApiResult update(@RequestBody Docs docs) { + if (docsService.updateById(docs)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docs:remove')") + @OperationLog + @ApiOperation("删除知识库") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (docsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('docs:docs:save')") + @OperationLog + @ApiOperation("批量添加知识库") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (docsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docs:update')") + @OperationLog + @ApiOperation("批量修改知识库") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(docsService, "book_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docs:remove')") + @OperationLog + @ApiOperation("批量删除知识库") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (docsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/controller/DocsUserController.java b/src/main/java/com/gxwebsoft/docs/controller/DocsUserController.java new file mode 100644 index 0000000..9124b34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/controller/DocsUserController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.docs.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.docs.service.DocsUserService; +import com.gxwebsoft.docs.entity.DocsUser; +import com.gxwebsoft.docs.param.DocsUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 知识库成员控制器 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Api(tags = "知识库成员管理") +@RestController +@RequestMapping("/api/docs/docs-user") +public class DocsUserController extends BaseController { + @Resource + private DocsUserService docsUserService; + + @PreAuthorize("hasAuthority('docs:docsUser:list')") + @ApiOperation("分页查询知识库成员") + @GetMapping("/page") + public ApiResult> page(DocsUserParam param) { + // 使用关联查询 + return success(docsUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docsUser:list')") + @ApiOperation("查询全部知识库成员") + @GetMapping() + public ApiResult> list(DocsUserParam param) { + // 使用关联查询 + return success(docsUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('docs:docsUser:list')") + @ApiOperation("根据id查询知识库成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(docsUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('docs:docsUser:save')") + @OperationLog + @ApiOperation("添加知识库成员") + @PostMapping() + public ApiResult save(@RequestBody DocsUser docsUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + docsUser.setUserId(loginUser.getUserId()); + } + if (docsUserService.save(docsUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docsUser:update')") + @OperationLog + @ApiOperation("修改知识库成员") + @PutMapping() + public ApiResult update(@RequestBody DocsUser docsUser) { + if (docsUserService.updateById(docsUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docsUser:remove')") + @OperationLog + @ApiOperation("删除知识库成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (docsUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('docs:docsUser:save')") + @OperationLog + @ApiOperation("批量添加知识库成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (docsUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('docs:docsUser:update')") + @OperationLog + @ApiOperation("批量修改知识库成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(docsUserService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('docs:docsUser:remove')") + @OperationLog + @ApiOperation("批量删除知识库成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (docsUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/entity/Docs.java b/src/main/java/com/gxwebsoft/docs/entity/Docs.java new file mode 100644 index 0000000..74e90ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/entity/Docs.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.docs.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 知识库 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Docs对象", description = "知识库") +public class Docs implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "book_id", type = IdType.AUTO) + private Integer bookId; + + @ApiModelProperty(value = "知识库名称") + private String name; + + @ApiModelProperty(value = "知识库标识") + private String code; + + @ApiModelProperty(value = "封面图") + private String photo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "文档内容") + private String content; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/docs/entity/DocsContent.java b/src/main/java/com/gxwebsoft/docs/entity/DocsContent.java new file mode 100644 index 0000000..bdeac6c --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/entity/DocsContent.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.docs.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文档内容记录表 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "DocsContent对象", description = "文档内容记录表") +public class DocsContent implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文档ID") + private Integer docsId; + + @ApiModelProperty(value = "文档标题") + private String title; + + @ApiModelProperty(value = "文档内容") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/docs/entity/DocsUser.java b/src/main/java/com/gxwebsoft/docs/entity/DocsUser.java new file mode 100644 index 0000000..299f9b0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/entity/DocsUser.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.docs.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 知识库成员 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "DocsUser对象", description = "知识库成员") +public class DocsUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "应用ID") + private Integer docsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/docs/mapper/DocsContentMapper.java b/src/main/java/com/gxwebsoft/docs/mapper/DocsContentMapper.java new file mode 100644 index 0000000..6b62f76 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/DocsContentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.docs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.docs.entity.DocsContent; +import com.gxwebsoft.docs.param.DocsContentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文档内容记录表Mapper + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsContentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DocsContentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DocsContentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/docs/mapper/DocsMapper.java b/src/main/java/com/gxwebsoft/docs/mapper/DocsMapper.java new file mode 100644 index 0000000..a7f200a --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/DocsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.docs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.docs.entity.Docs; +import com.gxwebsoft.docs.param.DocsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 知识库Mapper + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DocsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DocsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/docs/mapper/DocsUserMapper.java b/src/main/java/com/gxwebsoft/docs/mapper/DocsUserMapper.java new file mode 100644 index 0000000..03a81ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/DocsUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.docs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.docs.entity.DocsUser; +import com.gxwebsoft.docs.param.DocsUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 知识库成员Mapper + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DocsUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DocsUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsContentMapper.xml b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsContentMapper.xml new file mode 100644 index 0000000..97d1fa8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsContentMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.* + FROM docs_content a + + + AND a.id = #{param.id} + + + AND a.docs_id = #{param.docsId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsMapper.xml b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsMapper.xml new file mode 100644 index 0000000..eb0a2ea --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsMapper.xml @@ -0,0 +1,67 @@ + + + + + + + SELECT a.*, b.nickname, b.avatar + FROM docs a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + + + AND a.book_id = #{param.bookId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.photo LIKE CONCAT('%', #{param.photo}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsUserMapper.xml b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsUserMapper.xml new file mode 100644 index 0000000..6372627 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/mapper/xml/DocsUserMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.* + FROM docs_user a + + + AND a.id = #{param.id} + + + AND a.docs_id = #{param.docsId} + + + AND a.user_id = #{param.userId} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.role = #{param.role} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/docs/param/DocsContentParam.java b/src/main/java/com/gxwebsoft/docs/param/DocsContentParam.java new file mode 100644 index 0000000..e9634ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/param/DocsContentParam.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.docs.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 文档内容记录表查询参数 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "DocsContentParam对象", description = "文档内容记录表查询参数") +public class DocsContentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "文档ID") + @QueryField(type = QueryType.EQ) + private Integer docsId; + + @ApiModelProperty(value = "文档标题") + private String title; + + @ApiModelProperty(value = "文档内容") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/docs/param/DocsParam.java b/src/main/java/com/gxwebsoft/docs/param/DocsParam.java new file mode 100644 index 0000000..c98a037 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/param/DocsParam.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.docs.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 知识库查询参数 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "DocsParam对象", description = "知识库查询参数") +public class DocsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer bookId; + + @ApiModelProperty(value = "知识库名称") + private String name; + + @ApiModelProperty(value = "知识库标识") + private String code; + + @ApiModelProperty(value = "封面图") + private String photo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "文档内容") + private String content; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/docs/param/DocsUserParam.java b/src/main/java/com/gxwebsoft/docs/param/DocsUserParam.java new file mode 100644 index 0000000..8e1d90f --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/param/DocsUserParam.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.docs.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 知识库成员查询参数 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "DocsUserParam对象", description = "知识库成员查询参数") +public class DocsUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer docsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/DocsContentService.java b/src/main/java/com/gxwebsoft/docs/service/DocsContentService.java new file mode 100644 index 0000000..1b4bf2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/DocsContentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.docs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.docs.entity.DocsContent; +import com.gxwebsoft.docs.param.DocsContentParam; + +import java.util.List; + +/** + * 文档内容记录表Service + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsContentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DocsContentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DocsContentParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return DocsContent + */ + DocsContent getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/DocsService.java b/src/main/java/com/gxwebsoft/docs/service/DocsService.java new file mode 100644 index 0000000..31e3c43 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/DocsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.docs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.docs.entity.Docs; +import com.gxwebsoft.docs.param.DocsParam; + +import java.util.List; + +/** + * 知识库Service + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DocsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DocsParam param); + + /** + * 根据id查询 + * + * @param bookId ID + * @return Docs + */ + Docs getByIdRel(Integer bookId); + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/DocsUserService.java b/src/main/java/com/gxwebsoft/docs/service/DocsUserService.java new file mode 100644 index 0000000..baf639f --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/DocsUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.docs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.docs.entity.DocsUser; +import com.gxwebsoft.docs.param.DocsUserParam; + +import java.util.List; + +/** + * 知识库成员Service + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +public interface DocsUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DocsUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DocsUserParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return DocsUser + */ + DocsUser getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/impl/DocsContentServiceImpl.java b/src/main/java/com/gxwebsoft/docs/service/impl/DocsContentServiceImpl.java new file mode 100644 index 0000000..df36038 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/impl/DocsContentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.docs.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.docs.mapper.DocsContentMapper; +import com.gxwebsoft.docs.service.DocsContentService; +import com.gxwebsoft.docs.entity.DocsContent; +import com.gxwebsoft.docs.param.DocsContentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 文档内容记录表Service实现 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Service +public class DocsContentServiceImpl extends ServiceImpl implements DocsContentService { + + @Override + public PageResult pageRel(DocsContentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(DocsContentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public DocsContent getByIdRel(Integer id) { + DocsContentParam param = new DocsContentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/impl/DocsServiceImpl.java b/src/main/java/com/gxwebsoft/docs/service/impl/DocsServiceImpl.java new file mode 100644 index 0000000..94a861b --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/impl/DocsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.docs.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.docs.mapper.DocsMapper; +import com.gxwebsoft.docs.service.DocsService; +import com.gxwebsoft.docs.entity.Docs; +import com.gxwebsoft.docs.param.DocsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 知识库Service实现 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Service +public class DocsServiceImpl extends ServiceImpl implements DocsService { + + @Override + public PageResult pageRel(DocsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(DocsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Docs getByIdRel(Integer bookId) { + DocsParam param = new DocsParam(); + param.setBookId(bookId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/docs/service/impl/DocsUserServiceImpl.java b/src/main/java/com/gxwebsoft/docs/service/impl/DocsUserServiceImpl.java new file mode 100644 index 0000000..f62af41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/docs/service/impl/DocsUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.docs.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.docs.mapper.DocsUserMapper; +import com.gxwebsoft.docs.service.DocsUserService; +import com.gxwebsoft.docs.entity.DocsUser; +import com.gxwebsoft.docs.param.DocsUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 知识库成员Service实现 + * + * @author 科技小王子 + * @since 2025-03-26 09:29:15 + */ +@Service +public class DocsUserServiceImpl extends ServiceImpl implements DocsUserService { + + @Override + public PageResult pageRel(DocsUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(DocsUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public DocsUser getByIdRel(Integer id) { + DocsUserParam param = new DocsUserParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmBxLogController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmBxLogController.java new file mode 100644 index 0000000..a1c8cf5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmBxLogController.java @@ -0,0 +1,175 @@ +package com.gxwebsoft.hjm.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.service.FileRecordService; +import com.gxwebsoft.hjm.service.HjmBxLogService; +import com.gxwebsoft.hjm.entity.HjmBxLog; +import com.gxwebsoft.hjm.param.HjmBxLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.util.List; + +/** + * 黄家明_报险记录控制器 + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +@Api(tags = "黄家明_报险记录管理") +@RestController +@RequestMapping("/api/hjm/hjm-bx-log") +public class HjmBxLogController extends BaseController { + @Resource + private ConfigProperties config; + @Resource + private HjmBxLogService hjmBxLogService; + + @ApiOperation("分页查询黄家明_报险记录") + @GetMapping("/page") + public ApiResult> page(HjmBxLogParam param) { + // 使用关联查询 + return success(hjmBxLogService.pageRel(param)); + } + + @ApiOperation("查询全部黄家明_报险记录") + @GetMapping() + public ApiResult> list(HjmBxLogParam param) { + // 使用关联查询 + return success(hjmBxLogService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_报险记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmBxLogService.getByIdRel(id)); + } + + @ApiOperation("添加黄家明_报险记录") + @PostMapping() + public ApiResult save(@RequestBody HjmBxLog hjmBxLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmBxLog.setUserId(loginUser.getUserId()); + } + if (hjmBxLogService.save(hjmBxLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmBxLog:update')") + @OperationLog + @ApiOperation("修改黄家明_报险记录") + @PutMapping() + public ApiResult update(@RequestBody HjmBxLog hjmBxLog) { + if (hjmBxLogService.updateById(hjmBxLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmBxLog:remove')") + @OperationLog + @ApiOperation("删除黄家明_报险记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmBxLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmBxLog:save')") + @OperationLog + @ApiOperation("批量添加黄家明_报险记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmBxLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmBxLog:update')") + @OperationLog + @ApiOperation("批量修改黄家明_报险记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmBxLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmBxLog:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_报险记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmBxLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("上传文件") + @PostMapping("/upload") + public ApiResult upload(@RequestParam MultipartFile file, HttpServletRequest request) { + System.out.println("request = " + request); + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); + // String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload"); + String requestURL = config.getFileServer() + "/api/file"; + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail" + path); + } + result.setUrl(path); + System.out.println("result = " + result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmCarController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmCarController.java new file mode 100644 index 0000000..99866c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmCarController.java @@ -0,0 +1,405 @@ +package com.gxwebsoft.hjm.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; + +import java.util.ArrayList; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +import com.gxwebsoft.hjm.service.HjmCarService; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.param.HjmCarParam; +import com.gxwebsoft.hjm.param.HjmCarImportParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.hjm.service.GpsDiagnosticService; +import com.gxwebsoft.hjm.service.HjmFenceService; +import com.gxwebsoft.hjm.service.HjmGpsLogService; +import com.gxwebsoft.hjm.service.MqttService; +import com.gxwebsoft.hjm.service.impl.HjmCarServiceImpl; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.apache.poi.ss.usermodel.Workbook; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + + +/** + * 黄家明_车辆管理控制器 + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Api(tags = "黄家明_车辆管理管理") +@RestController +@RequestMapping("/api/hjm/hjm-car") +public class HjmCarController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(PushCallback.class); + @Resource + private HjmCarService hjmCarService; + @Resource + private HjmFenceService hjmFenceService; + @Resource + private DictDataService dictDataService; + @Resource + private HjmGpsLogService hjmGpsLogService; + @Resource + private HjmCarServiceImpl hjmCarServiceImpl; + @Resource + private MqttService mqttService; + @Resource + private GpsDiagnosticService gpsDiagnosticService; + + @ApiOperation("分页查询黄家明_车辆管理") + @GetMapping("/page") + public ApiResult> page(HjmCarParam param) { + return success(hjmCarService.pageRel(param)); + } + + @ApiOperation("查询全部黄家明_车辆管理") + @GetMapping() + public ApiResult> list(HjmCarParam param) { + // 使用关联查询 + return success(hjmCarService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_车辆管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmCarService.getByIdRel(id)); + } + + @ApiOperation("根据code查询车辆") + @GetMapping("/getByCode/{code}") + public ApiResult getByCode(@PathVariable("code") String code) { + return success(hjmCarService.getByCode(code)); + } + + @PreAuthorize("hasAuthority('hjm:hjmCar:save')") + @OperationLog + @ApiOperation("添加黄家明_车辆管理") + @PostMapping() + public ApiResult save(@RequestBody HjmCar hjmCar) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmCar.setUserId(loginUser.getUserId()); + } + if (hjmCarService.save(hjmCar)) { + // 重新生成编号 + hjmCar.setCode(hjmCar.getCode().concat(hjmCar.getId().toString())); + hjmCarService.updateById(hjmCar); + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改黄家明_车辆管理") + @PutMapping() + public ApiResult update(@RequestBody HjmCar hjmCar) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + // 判断GPS设备是否被绑定 + final HjmCar byGpsNo = hjmCarService.getByGpsNo(hjmCar.getGpsNo()); + if(byGpsNo != null && byGpsNo.getInstallerId().equals(1)){ + return fail("该GPS设备已被绑定"); + } + hjmCar.setDriverName(loginUser.getRealName()); + hjmCar.setUserId(loginUser.getUserId()); + if (hjmCarService.updateById(hjmCar)) { + return success("绑定成功"); + } + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCar:remove')") + @OperationLog + @ApiOperation("删除黄家明_车辆管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmCarService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCar:save')") + @OperationLog + @ApiOperation("批量添加黄家明_车辆管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmCarService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCar:update')") + @OperationLog + @ApiOperation("批量修改黄家明_车辆管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmCarService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCar:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_车辆管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmCarService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + + /** + * excel批量导入车辆 + * Excel表头格式:车辆名称、车辆图片、类型、管理负责人、车辆编号、司机ID、保险状态、GPS设备编号、电子围栏ID、电子围栏名称、位置、纬度、经度、区域、地址、组织ID、父级组织ID、微信小程序码、用户ID、排序、备注、状态 + */ + @PreAuthorize("hasAuthority('hjm:hjmCar:save')") + @Transactional(rollbackFor = {Exception.class}) + @ApiOperation("批量导入车辆") + @PostMapping("/import") + public ApiResult> importBatch(MultipartFile file) { + ImportParams importParams = new ImportParams(); + List errorMessages = new ArrayList<>(); + int successCount = 0; + + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), HjmCarImportParam.class, importParams); + + // 获取当前登录用户 + User loginUser = getLoginUser(); + Integer currentUserId = loginUser != null ? loginUser.getUserId() : null; + + for (int i = 0; i < list.size(); i++) { + HjmCarImportParam param = list.get(i); + try { + // 手动转换对象,避免JSON序列化问题 + HjmCar item = convertImportParamToEntity(param); + + // 设置必填字段的默认值 + if (item.getUserId() == null && currentUserId != null) { + item.setUserId(currentUserId); + } + if (item.getStatus() == null) { + item.setStatus(0); // 默认状态为正常 + } + if (item.getDeleted() == null) { + item.setDeleted(0); // 默认未删除 + } + if (item.getType() == null) { + item.setType(0); // 默认类型为汽车 + } + + // 验证必填字段 + if (item.getCode() == null) { + errorMessages.add("第" + (i + 1) + "行:车辆编号不能为空"); + continue; + } + // 保存数据 + if (hjmCarService.save(item)) { + successCount++; + } else { + errorMessages.add("第" + (i + 1) + "行:保存失败"); + } + + } catch (Exception e) { + errorMessages.add("第" + (i + 1) + "行:" + e.getMessage()); + System.err.println("导入第" + (i + 1) + "行数据失败: " + e.getMessage()); + e.printStackTrace(); + } + } + + // 返回结果 + if (errorMessages.isEmpty()) { + return success("成功导入" + successCount + "条数据", null); + } else { + return success("导入完成,成功" + successCount + "条,失败" + errorMessages.size() + "条", errorMessages); + } + + } catch (Exception e) { + System.err.println("批量导入车辆失败: " + e.getMessage()); + e.printStackTrace(); + return fail("导入失败:" + e.getMessage(), null); + } + } + + /** + * 下载车辆导入模板 + */ + @ApiOperation("下载车辆导入模板") + @GetMapping("/import/template") + public void downloadTemplate(HttpServletResponse response) throws IOException { + // 创建空的导入参数列表作为模板 + List templateList = new ArrayList<>(); + + // 添加一行示例数据 + HjmCarImportParam example = new HjmCarImportParam(); + example.setName("示例车辆"); + example.setType(0); + example.setKuaidiAdmin("管理员"); + example.setCode("CAR"); + example.setInsuranceStatus("正常"); + example.setGpsNo("GPS001"); + example.setDistrict("示例区域"); + example.setStatus(0); + example.setComments("这是示例数据,请删除后填入真实数据"); + templateList.add(example); + + // 设置导出参数 + ExportParams exportParams = new ExportParams("车辆导入模板", "车辆信息"); + + // 生成Excel + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, HjmCarImportParam.class, templateList); + + // 设置响应头 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename=car_import_template.xlsx"); + + // 输出到响应流 + workbook.write(response.getOutputStream()); + workbook.close(); + } + + /** + * 将HjmCarImportParam转换为HjmCar实体 + */ + private HjmCar convertImportParamToEntity(HjmCarImportParam param) { + HjmCar entity = new HjmCar(); + + // 基本字段转换 + entity.setName(param.getName()); + entity.setImage(param.getImage()); + entity.setType(param.getType()); + entity.setKuaidiAdmin(param.getKuaidiAdmin()); + entity.setCode(param.getCode()); + entity.setDriverId(param.getDriverId()); + entity.setInsuranceStatus(param.getInsuranceStatus()); + entity.setGpsNo(param.getGpsNo()); + entity.setFenceId(param.getFenceId()); + entity.setFenceName(param.getFenceName()); + entity.setLocation(param.getLocation()); + entity.setLatitude(param.getLatitude()); + entity.setLongitude(param.getLongitude()); + entity.setDistrict(param.getDistrict()); + entity.setAddress(param.getAddress()); + entity.setOrganizationId(param.getOrganizationId()); + entity.setOrganizationParentId(param.getOrganizationParentId()); + entity.setMpCode(param.getMpCode()); + entity.setUserId(param.getUserId()); + entity.setSortNumber(param.getSortNumber()); + entity.setComments(param.getComments()); + entity.setStatus(param.getStatus()); + + return entity; + } + + @ApiOperation("根据坐标解析地址(腾讯地图)") + @GetMapping("/pageByQQMap") + public ApiResult> pageByQQMap(HjmCarParam param) { + final DictDataParam dictDataParam = new DictDataParam(); + dictDataParam.setDictCode("QQMapKey"); +// final List dictDataList = dictDataService.listRel(dictDataParam); +// if (!CollectionUtils.isEmpty(dictDataList)) { +// final DictData dictData = dictDataList.get(0); + final String API_KEY = "RDABZ-IF7AB-L4AUO-JHMX3-GBSGE-KIF53"; + String url = "https://apis.map.qq.com/ws/geocoder/v1/?location=".concat(param.getLatitude()).concat(",").concat(param.getLongitude()).concat("&key=").concat(API_KEY); + final String string = HttpUtil.get(url); + if (string.contains("\"result\":")) { + JSONObject jsonObject = JSONObject.parseObject(string); + JSONObject result = jsonObject.getJSONObject("result"); + JSONObject address_component = result.getJSONObject("address_component"); + String district = address_component.getString("district"); + System.out.println("district = " + district); + param.setDistrict(district); + return success(hjmCarService.pageRel(param)); + } +// } + param.setLimit(100L); + return success(hjmCarService.pageRel(param)); + } + + @ApiOperation("获取MQTT连接状态") + @GetMapping("/mqtt/status") + public ApiResult getMqttStatus() { + boolean connected = mqttService.isConnected(); + String clientInfo = mqttService.getClientInfo(); + return success("MQTT状态查询成功", Map.of( + "connected", connected, + "clientInfo", clientInfo, + "status", connected ? "已连接" : "未连接" + )); + } + + @ApiOperation("重新连接MQTT") + @PostMapping("/mqtt/reconnect") + public ApiResult reconnectMqtt() { + try { + mqttService.reconnect(); + return success("MQTT重连请求已发送"); + } catch (Exception e) { + logger.error("MQTT重连失败", e); + return fail("MQTT重连失败: " + e.getMessage()); + } + } + + @ApiOperation("GPS数据诊断") + @GetMapping("/gps/diagnose") + public ApiResult diagnoseGpsData() { + try { + Map report = gpsDiagnosticService.diagnoseGpsDataIssues(); + return success("GPS数据诊断完成", report); + } catch (Exception e) { + logger.error("GPS数据诊断失败", e); + return fail("GPS数据诊断失败: " + e.getMessage()); + } + } + + @ApiOperation("检查特定GPS设备") + @GetMapping("/gps/check/{gpsNo}") + public ApiResult checkSpecificGpsDevice(@PathVariable String gpsNo) { + try { + Map deviceInfo = gpsDiagnosticService.checkSpecificGpsDevice(gpsNo); + return success("GPS设备检查完成", deviceInfo); + } catch (Exception e) { + logger.error("检查GPS设备失败: {}", gpsNo, e); + return fail("检查GPS设备失败: " + e.getMessage()); + } + } + + + + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmChoicesController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmChoicesController.java new file mode 100644 index 0000000..a5d9da1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmChoicesController.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.hjm.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.service.HjmChoicesService; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.param.HjmChoicesParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_选择题选项控制器 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Api(tags = "黄家明_选择题选项管理") +@RestController +@RequestMapping("/api/hjm/hjm-choices") +public class HjmChoicesController extends BaseController { + @Resource + private HjmChoicesService hjmChoicesService; + + @ApiOperation("分页查询黄家明_选择题选项") + @GetMapping("/page") + public ApiResult> page(HjmChoicesParam param) { + // 使用关联查询 + return success(hjmChoicesService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:list')") + @ApiOperation("查询全部黄家明_选择题选项") + @GetMapping() + public ApiResult> list(HjmChoicesParam param) { + // 使用关联查询 + return success(hjmChoicesService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_选择题选项") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmChoicesService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:save')") + @OperationLog + @ApiOperation("添加黄家明_选择题选项") + @PostMapping() + public ApiResult save(@RequestBody HjmChoices hjmChoices) { + if (hjmChoicesService.save(hjmChoices)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:update')") + @OperationLog + @ApiOperation("修改黄家明_选择题选项") + @PutMapping() + public ApiResult update(@RequestBody HjmChoices hjmChoices) { + if (hjmChoicesService.updateById(hjmChoices)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:remove')") + @OperationLog + @ApiOperation("删除黄家明_选择题选项") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmChoicesService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:save')") + @OperationLog + @ApiOperation("批量添加黄家明_选择题选项") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmChoicesService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:update')") + @OperationLog + @ApiOperation("批量修改黄家明_选择题选项") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmChoicesService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmChoices:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_选择题选项") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmChoicesService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmCoursesController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmCoursesController.java new file mode 100644 index 0000000..6ba70ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmCoursesController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.hjm.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.service.HjmCoursesService; +import com.gxwebsoft.hjm.entity.HjmCourses; +import com.gxwebsoft.hjm.param.HjmCoursesParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_课程控制器 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Api(tags = "黄家明_课程管理") +@RestController +@RequestMapping("/api/hjm/hjm-courses") +public class HjmCoursesController extends BaseController { + @Resource + private HjmCoursesService hjmCoursesService; + + @ApiOperation("分页查询黄家明_课程") + @GetMapping("/page") + public ApiResult> page(HjmCoursesParam param) { + // 使用关联查询 + return success(hjmCoursesService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:list')") + @ApiOperation("查询全部黄家明_课程") + @GetMapping() + public ApiResult> list(HjmCoursesParam param) { + // 使用关联查询 + return success(hjmCoursesService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_课程") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmCoursesService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:save')") + @OperationLog + @ApiOperation("添加黄家明_课程") + @PostMapping() + public ApiResult save(@RequestBody HjmCourses hjmCourses) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmCourses.setUserId(loginUser.getUserId()); + } + if (hjmCoursesService.save(hjmCourses)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:update')") + @OperationLog + @ApiOperation("修改黄家明_课程") + @PutMapping() + public ApiResult update(@RequestBody HjmCourses hjmCourses) { + if (hjmCoursesService.updateById(hjmCourses)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:remove')") + @OperationLog + @ApiOperation("删除黄家明_课程") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmCoursesService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:save')") + @OperationLog + @ApiOperation("批量添加黄家明_课程") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmCoursesService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:update')") + @OperationLog + @ApiOperation("批量修改黄家明_课程") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmCoursesService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmCourses:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_课程") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmCoursesService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmExamLogController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmExamLogController.java new file mode 100644 index 0000000..c569fd0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmExamLogController.java @@ -0,0 +1,162 @@ +package com.gxwebsoft.hjm.controller; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.service.HjmExamLogService; +import com.gxwebsoft.hjm.entity.HjmExamLog; +import com.gxwebsoft.hjm.param.HjmExamLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_学习记录控制器 + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +@Api(tags = "黄家明_学习记录管理") +@RestController +@RequestMapping("/api/hjm/hjm-exam-log") +public class HjmExamLogController extends BaseController { + @Resource + private HjmExamLogService hjmExamLogService; + + @ApiOperation("分页查询黄家明_学习记录") + @GetMapping("/page") + public ApiResult> page(HjmExamLogParam param) { + // 使用关联查询 + return success(hjmExamLogService.pageRel(param)); + } + + @ApiOperation("查询全部黄家明_学习记录") + @GetMapping() + public ApiResult> list(HjmExamLogParam param) { + // 使用关联查询 + return success(hjmExamLogService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_学习记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmExamLogService.getByIdRel(id)); + } + + @ApiOperation("添加黄家明_学习记录") + @PostMapping() + public ApiResult save(@RequestBody HjmExamLog hjmExamLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmExamLog.setUserId(loginUser.getUserId()); + } + if (hjmExamLogService.save(hjmExamLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmExamLog:update')") + @OperationLog + @ApiOperation("修改黄家明_学习记录") + @PutMapping() + public ApiResult update(@RequestBody HjmExamLog hjmExamLog) { + if (hjmExamLogService.updateById(hjmExamLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmExamLog:remove')") + @OperationLog + @ApiOperation("删除黄家明_学习记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmExamLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmExamLog:save')") + @OperationLog + @ApiOperation("批量添加黄家明_学习记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmExamLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmExamLog:update')") + @OperationLog + @ApiOperation("批量修改黄家明_学习记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmExamLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmExamLog:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_学习记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmExamLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查询本月是否已完成学习任务") + @GetMapping("/getMyMonthExamLog") + public ApiResult> getMyMonthExamLog() { + User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录",null); + } + + // 查询当前月份的记录 + List list = hjmExamLogService.list(new LambdaQueryWrapper() + .eq(HjmExamLog::getStatus, 1) + .eq(HjmExamLog::getUserId, loginUser.getUserId()) + .ge(HjmExamLog::getCreateTime, DateUtil.beginOfMonth(DateUtil.date())) + .le(HjmExamLog::getCreateTime, DateUtil.endOfMonth(DateUtil.date()))); + + return success("查询成功", list); + } + + @ApiOperation("检查本月是否已完成学习任务") + @GetMapping("/checkMonthTaskCompleted") + public ApiResult checkMonthTaskCompleted() { + User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录",null); + } + + // 查询本月是否有完成的学习记录 + int count = hjmExamLogService.count(new LambdaQueryWrapper() + .eq(HjmExamLog::getStatus, 1) + .eq(HjmExamLog::getUserId, loginUser.getUserId()) + .ge(HjmExamLog::getCreateTime, DateUtil.beginOfMonth(DateUtil.date())) + .le(HjmExamLog::getCreateTime, DateUtil.endOfMonth(DateUtil.date()))); + + boolean isCompleted = count > 0; + return success(isCompleted ? "本月已完成学习任务" : "本月尚未完成学习任务", isCompleted); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmFenceController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmFenceController.java new file mode 100644 index 0000000..83528fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmFenceController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.hjm.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.service.HjmFenceService; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.param.HjmFenceParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_电子围栏控制器 + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +@Api(tags = "黄家明_电子围栏管理") +@RestController +@RequestMapping("/api/hjm/hjm-fence") +public class HjmFenceController extends BaseController { + @Resource + private HjmFenceService hjmFenceService; + + @ApiOperation("分页查询黄家明_电子围栏") + @GetMapping("/page") + public ApiResult> page(HjmFenceParam param) { + // 使用关联查询 + return success(hjmFenceService.pageRel(param)); + } + + @ApiOperation("查询全部黄家明_电子围栏") + @GetMapping() + public ApiResult> list(HjmFenceParam param) { + // 使用关联查询 + return success(hjmFenceService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_电子围栏") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmFenceService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:save')") + @OperationLog + @ApiOperation("添加黄家明_电子围栏") + @PostMapping() + public ApiResult save(@RequestBody HjmFence hjmFence) { + if (hjmFenceService.save(hjmFence)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:update')") + @OperationLog + @ApiOperation("修改黄家明_电子围栏") + @PutMapping() + public ApiResult update(@RequestBody HjmFence hjmFence) { + if (hjmFenceService.updateById(hjmFence)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:remove')") + @OperationLog + @ApiOperation("删除黄家明_电子围栏") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmFenceService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:save')") + @OperationLog + @ApiOperation("批量添加黄家明_电子围栏") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmFenceService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:update')") + @OperationLog + @ApiOperation("批量修改黄家明_电子围栏") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmFenceService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmFence:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_电子围栏") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmFenceService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmGpsLogController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmGpsLogController.java new file mode 100644 index 0000000..52ffb5b --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmGpsLogController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.hjm.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.service.HjmGpsLogService; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.param.HjmGpsLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_gps轨迹控制器 + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +@Api(tags = "黄家明_gps轨迹管理") +@RestController +@RequestMapping("/api/hjm/hjm-gps-log") +public class HjmGpsLogController extends BaseController { + @Resource + private HjmGpsLogService hjmGpsLogService; + + @ApiOperation("分页查询黄家明_gps轨迹") + @GetMapping("/page") + public ApiResult> page(HjmGpsLogParam param) { + // 使用关联查询 + return success(hjmGpsLogService.pageRel(param)); + } + + @ApiOperation("查询全部黄家明_gps轨迹") + @GetMapping() + public ApiResult> list(HjmGpsLogParam param) { + // 使用关联查询 + return success(hjmGpsLogService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_gps轨迹") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmGpsLogService.getByIdRel(id)); + } + + @ApiOperation("添加黄家明_gps轨迹") + @PostMapping() + public ApiResult save(@RequestBody HjmGpsLog hjmGpsLog) { + if (hjmGpsLogService.save(hjmGpsLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmGpsLog:update')") + @OperationLog + @ApiOperation("修改黄家明_gps轨迹") + @PutMapping() + public ApiResult update(@RequestBody HjmGpsLog hjmGpsLog) { + if (hjmGpsLogService.updateById(hjmGpsLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmGpsLog:remove')") + @OperationLog + @ApiOperation("删除黄家明_gps轨迹") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmGpsLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmGpsLog:save')") + @OperationLog + @ApiOperation("批量添加黄家明_gps轨迹") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmGpsLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmGpsLog:update')") + @OperationLog + @ApiOperation("批量修改黄家明_gps轨迹") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmGpsLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmGpsLog:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_gps轨迹") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmGpsLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + // 分析车辆是否逆行 + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmQuestionsController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmQuestionsController.java new file mode 100644 index 0000000..6105944 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmQuestionsController.java @@ -0,0 +1,143 @@ +package com.gxwebsoft.hjm.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.service.HjmChoicesService; +import com.gxwebsoft.hjm.service.HjmQuestionsService; +import com.gxwebsoft.hjm.entity.HjmQuestions; +import com.gxwebsoft.hjm.param.HjmQuestionsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 黄家明_题目控制器 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Api(tags = "黄家明_题目管理") +@RestController +@RequestMapping("/api/hjm/hjm-questions") +public class HjmQuestionsController extends BaseController { + @Resource + private HjmQuestionsService hjmQuestionsService; + @Resource + private HjmChoicesService hjmChoicesService; + + @ApiOperation("分页查询黄家明_题目") + @GetMapping("/page") + public ApiResult> page(HjmQuestionsParam param) { + // 使用关联查询 + return success(hjmQuestionsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:list')") + @ApiOperation("查询全部黄家明_题目") + @GetMapping() + public ApiResult> list(HjmQuestionsParam param) { + // 使用关联查询 + return success(hjmQuestionsService.listRel(param)); + } + + @ApiOperation("根据id查询黄家明_题目") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmQuestionsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:save')") + @OperationLog + @ApiOperation("添加黄家明_题目") + @PostMapping() + public ApiResult save(@RequestBody HjmQuestions hjmQuestions) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmQuestions.setUserId(loginUser.getUserId()); + } + if (hjmQuestionsService.save(hjmQuestions)) { + final List choicesList = hjmQuestions.getChoicesList(); + if (!CollectionUtils.isEmpty(choicesList)) { + choicesList.forEach(choice -> { + choice.setQuestionId(hjmQuestions.getId()); + }); + hjmChoicesService.saveBatch(choicesList); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:update')") + @OperationLog + @ApiOperation("修改黄家明_题目") + @PutMapping() + public ApiResult update(@RequestBody HjmQuestions hjmQuestions) { + if (hjmQuestionsService.updateById(hjmQuestions)) { + if (!CollectionUtils.isEmpty(hjmQuestions.getChoicesList())) { + hjmChoicesService.updateBatchById(hjmQuestions.getChoicesList()); + } + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:remove')") + @OperationLog + @ApiOperation("删除黄家明_题目") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmQuestionsService.removeById(id)) { + hjmChoicesService.remove(new LambdaQueryWrapper().eq(HjmChoices::getQuestionId, id)); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:save')") + @OperationLog + @ApiOperation("批量添加黄家明_题目") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmQuestionsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:update')") + @OperationLog + @ApiOperation("批量修改黄家明_题目") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmQuestionsService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmQuestions:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_题目") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmQuestionsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/HjmViolationController.java b/src/main/java/com/gxwebsoft/hjm/controller/HjmViolationController.java new file mode 100644 index 0000000..fbcd3ed --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/HjmViolationController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.hjm.controller; + +import cn.hutool.core.util.ObjUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.service.HjmCarService; +import com.gxwebsoft.hjm.service.HjmViolationService; +import com.gxwebsoft.hjm.entity.HjmViolation; +import com.gxwebsoft.hjm.param.HjmViolationParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * 黄家明_违章记录控制器 + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +@Api(tags = "黄家明_违章记录管理") +@RestController +@RequestMapping("/api/hjm/hjm-violation") +public class HjmViolationController extends BaseController { + @Resource + private HjmViolationService hjmViolationService; + @Resource + private HjmCarService hjmCarService; + + @PreAuthorize("hasAuthority('hjm:hjmViolation:list')") + @ApiOperation("分页查询黄家明_违章记录") + @GetMapping("/page") + public ApiResult> page(HjmViolationParam param) { + // 使用关联查询 + return success(hjmViolationService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:list')") + @ApiOperation("查询全部黄家明_违章记录") + @GetMapping() + public ApiResult> list(HjmViolationParam param) { + // 使用关联查询 + return success(hjmViolationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:list')") + @ApiOperation("根据id查询黄家明_违章记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(hjmViolationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:save')") + @OperationLog + @ApiOperation("添加黄家明_违章记录") + @PostMapping() + public ApiResult save(@RequestBody HjmViolation hjmViolation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + hjmViolation.setUserId(loginUser.getUserId()); + } + final HjmCar car = hjmCarService.getByCode(hjmViolation.getCode()); + if (ObjUtil.isEmpty(car)) { + return fail("车辆编号不存在"); + } + if (hjmViolationService.save(hjmViolation)) { + hjmViolationService.send(hjmViolation); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:update')") + @OperationLog + @ApiOperation("修改黄家明_违章记录") + @PutMapping() + public ApiResult update(@RequestBody HjmViolation hjmViolation) { + if (hjmViolationService.updateById(hjmViolation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:remove')") + @OperationLog + @ApiOperation("删除黄家明_违章记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hjmViolationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:save')") + @OperationLog + @ApiOperation("批量添加黄家明_违章记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hjmViolationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:update')") + @OperationLog + @ApiOperation("批量修改黄家明_违章记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hjmViolationService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('hjm:hjmViolation:remove')") + @OperationLog + @ApiOperation("批量删除黄家明_违章记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hjmViolationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/MQTTClientDemo.java b/src/main/java/com/gxwebsoft/hjm/controller/MQTTClientDemo.java new file mode 100644 index 0000000..b28c546 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/MQTTClientDemo.java @@ -0,0 +1,150 @@ +package com.shengwei.iot.common.utils.mqtt; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; + +/** +* @Description: + * maven 依赖: + * + * org.eclipse.paho + * org.eclipse.paho.client.mqttv3 + * 1.2.1 + * + * +* @Author: lx +* @Version: 1.0.0 +* @Date: 2025/7/2 +*/ +public class MQTTClientDemo { + + private static final Log log = LogFactory.getLog(MQTTClientDemo.class); + + private MqttClient client; + + private String HOST = "TCP://127.0.0.1:1883"; + private String userName = ""; + private String passWord = ""; + private String mqttClientId=""; + private MqttCallback callback; + + + public MQTTClientDemo(MqttCallback callback, String host,String clientId,String usrname,String password) throws MqttException { + this.callback = callback; + HOST = host; + mqttClientId = clientId; + userName = usrname; + passWord = password; + + client = new MqttClient(HOST, mqttClientId, new MemoryPersistence()); + connect(); + } + + /** + * 用来连接服务器 + */ + public void connect() { + MqttConnectOptions options = new MqttConnectOptions(); + options.setCleanSession(false); + options.setUserName(userName); + options.setPassword(passWord.toCharArray()); + // 设置超时时间 + options.setConnectionTimeout(10); + // 设置会话心跳时间 + options.setKeepAliveInterval(20); + //设置自动重连 + options.setAutomaticReconnect(true); + try { + System.out.println("DC MQTT Host="+HOST); + System.out.println("DC MQTT ClientId="+mqttClientId); + System.out.println("DC MQTT userName="+userName); + System.out.println("DC MQTT passWord="+passWord); + client.setCallback(this.callback); + client.connect(options); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public MqttTopic getTopic(String topic) { + return client.getTopic(topic); + } + + public void subscribe(String topic) throws MqttException { + client.subscribe(topic); + } + + public void subscribe(String[] topics) throws MqttException { + client.subscribe(topics); + } + + //qos 0:最多一次 、1:最少一次 、2:只有一次 + public void subscribe(String topic,int qos) throws MqttException { + client.subscribe(topic,qos); + } + + public void subscribe(String[] topics,int[] qosArr) throws MqttException { + client.subscribe(topics,qosArr); + } + + /** + * + * @param topic + * @param message + * @throws MqttPersistenceException + * @throws MqttException + */ + public void publish(MqttTopic topic , MqttMessage message) throws MqttPersistenceException, + MqttException { + MqttDeliveryToken token = topic.publish(message); + /* + //原地等待发送结果 + token.waitForCompletion(); + if(token.isComplete()) { + log.info("message is published completely! "); + }else { + log.info("message is published failed! "); + } + */ + } + + public void publish(MqttTopic topic,String payload,int qos,boolean retained) throws MqttPersistenceException, MqttException { + MqttMessage msg = new MqttMessage(); + msg.setQos(qos); + msg.setRetained(retained); + msg.setPayload(payload.getBytes()); + publish(topic,msg); + } + + public boolean isConnected() { + return client.isConnected(); + } + + + public static void main(String[] args) throws MqttException { + MQTTClientDemo mqttClient = new MQTTClientDemo(new MqttCallback() { + @Override + public void connectionLost(Throwable throwable) { + log.error("connectionLost..."); + } + @Override + public void messageArrived(String topic, MqttMessage message) throws Exception { + if (topic.equals("xxxxx")){ + /*是指定topic*/ + } + log.debug("DC 接收消息主题 : " + topic); + log.debug("DC 接收消息Qos : " + message.getQos()); + log.debug("DC 接收消息内容 : " + new String(message.getPayload())); + } + @Override + public void deliveryComplete(IMqttDeliveryToken token) { + log.error("deliveryComplete..." + token.isComplete()); + } + },"HOST", "SERVER_" + System.currentTimeMillis(), "userName", "passWord"); + /*订阅一个*/ + mqttClient.subscribe("TOPIC"); +// mqttClient.subscribe(new String[] {"TOPIC"}); + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/PushCallback.java b/src/main/java/com/gxwebsoft/hjm/controller/PushCallback.java new file mode 100644 index 0000000..6e59c83 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/PushCallback.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.hjm.controller; + +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 推送消息的回调类 + */ +public class PushCallback implements MqttCallback { + private static final Logger logger = LoggerFactory.getLogger(PushCallback.class); + @Override + public void connectionLost(Throwable throwable) { + logger.info("连接丢失............."); + } + + @Override + public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception { + logger.info("接收消息主题 : " + topic); + logger.info("接收消息Qos : " + mqttMessage.getQos()); + logger.info("接收消息内容 : " + new String(mqttMessage.getPayload())); + + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + logger.info("deliveryComplete............."); + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/SendSubscriptionMessages.java b/src/main/java/com/gxwebsoft/hjm/controller/SendSubscriptionMessages.java new file mode 100644 index 0000000..8d1fd1f --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/SendSubscriptionMessages.java @@ -0,0 +1,136 @@ +package com.gxwebsoft.hjm.controller; + +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.hjm.dto.BatchTemplateMessageRequest; +import com.gxwebsoft.hjm.dto.SubscribeMessageRequest; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; +import com.gxwebsoft.hjm.service.WxNotificationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 微信公众号订阅通知控制器 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Slf4j +@Api(tags = "微信公众号订阅通知") +@RestController +@RequestMapping("/api/hjm/wx-subscription") +public class SendSubscriptionMessages extends BaseController { + + @Resource + private WxNotificationService wxNotificationService; + + /** + * 发送模板消息 + */ + @ApiOperation("发送模板消息") + @OperationLog("发送模板消息") + @PostMapping("/send-template") + public ApiResult sendTemplateMessage(@RequestBody TemplateMessageRequest request) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + // 发送模板消息 + boolean success = wxNotificationService.sendTemplateMessage(tenantId, request); + + if (success) { + return success("模板消息发送成功"); + } else { + return fail("模板消息发送失败"); + } + + } catch (Exception e) { + log.error("发送模板消息失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + + + + + /** + * 发送订阅消息(小程序订阅消息) + */ + @ApiOperation("发送订阅消息") + @OperationLog("发送订阅消息") + @PostMapping("/send-subscribe") + public ApiResult sendSubscribeMessage(@RequestBody SubscribeMessageRequest request) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + // 发送订阅消息 + boolean success = wxNotificationService.sendSubscribeMessage(tenantId, request); + + if (success) { + return success("订阅消息发送成功"); + } else { + return fail("订阅消息发送失败"); + } + + } catch (Exception e) { + log.error("发送订阅消息失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + + + /** + * 批量发送模板消息 + */ + @ApiOperation("批量发送模板消息") + @OperationLog("批量发送模板消息") + @PostMapping("/batch-send-template") + public ApiResult batchSendTemplateMessage(@RequestBody BatchTemplateMessageRequest request) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + WxNotificationService.BatchSendResult result = wxNotificationService.batchSendTemplateMessage(tenantId, request.getMessages()); + + return success("批量发送完成," + result.toString()); + + } catch (Exception e) { + log.error("批量发送模板消息失败", e); + return fail("批量发送失败:" + e.getMessage()); + } + } + + /** + * 获取模板列表 + */ + @ApiOperation("获取模板列表") + @GetMapping("/templates") + public ApiResult getTemplateList() { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + String response = wxNotificationService.getTemplateList(tenantId); + if (response != null) { + JSONObject result = JSONObject.parseObject(response); + return success("获取成功", result); + } else { + return fail("获取失败"); + } + + } catch (Exception e) { + log.error("获取模板列表失败", e); + return fail("获取失败:" + e.getMessage()); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/controller/WxNotificationTestController.java b/src/main/java/com/gxwebsoft/hjm/controller/WxNotificationTestController.java new file mode 100644 index 0000000..8566ad8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/controller/WxNotificationTestController.java @@ -0,0 +1,222 @@ +package com.gxwebsoft.hjm.controller; + +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.hjm.dto.SubscribeMessageRequest; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; +import com.gxwebsoft.hjm.service.WxNotificationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 微信通知测试控制器 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Slf4j +@Api(tags = "微信通知测试") +@RestController +@RequestMapping("/api/hjm/wx-notification-test") +public class WxNotificationTestController extends BaseController { + + @Resource + private WxNotificationService wxNotificationService; + + /** + * 测试发送订单确认通知 + */ + @ApiOperation("测试发送订单确认通知") + @PostMapping("/test-order-notification") + public ApiResult testOrderNotification(@RequestParam String openId, + @RequestParam String orderNo, + @RequestParam(required = false) String templateId) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + // 构建模板消息请求 + TemplateMessageRequest request = new TemplateMessageRequest(); + request.setToUser(openId); + request.setTemplateId(templateId != null ? templateId : "your_order_template_id"); + request.setUrl("https://your-domain.com/order/" + orderNo); + request.setTopColor("#173177"); + + // 构建模板数据 + Map data = new HashMap<>(); + data.put("first", new TemplateMessageRequest.TemplateDataItem("您的订单已确认", "#173177")); + data.put("keyword1", new TemplateMessageRequest.TemplateDataItem(orderNo, "#173177")); + data.put("keyword2", new TemplateMessageRequest.TemplateDataItem( + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "#173177")); + data.put("remark", new TemplateMessageRequest.TemplateDataItem("感谢您的使用,如有疑问请联系客服!", "#173177")); + + request.setData(data); + + // 发送消息 + boolean success = wxNotificationService.sendTemplateMessage(tenantId, request); + + if (success) { + return success("订单确认通知发送成功"); + } else { + return fail("订单确认通知发送失败"); + } + + } catch (Exception e) { + log.error("测试发送订单确认通知失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + /** + * 测试发送支付成功通知 + */ + @ApiOperation("测试发送支付成功通知") + @PostMapping("/test-payment-notification") + public ApiResult testPaymentNotification(@RequestParam String openId, + @RequestParam String orderNo, + @RequestParam String amount, + @RequestParam(required = false) String templateId) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + TemplateMessageRequest request = new TemplateMessageRequest(); + request.setToUser(openId); + request.setTemplateId(templateId != null ? templateId : "your_payment_template_id"); + request.setUrl("https://your-domain.com/order/" + orderNo); + + Map data = new HashMap<>(); + data.put("first", new TemplateMessageRequest.TemplateDataItem("支付成功通知", "#173177")); + data.put("keyword1", new TemplateMessageRequest.TemplateDataItem(orderNo, "#173177")); + data.put("keyword2", new TemplateMessageRequest.TemplateDataItem("¥" + amount, "#FF0000")); + data.put("keyword3", new TemplateMessageRequest.TemplateDataItem( + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "#173177")); + data.put("remark", new TemplateMessageRequest.TemplateDataItem("您的订单已支付成功,我们将尽快为您处理!", "#173177")); + + request.setData(data); + + boolean success = wxNotificationService.sendTemplateMessage(tenantId, request); + + if (success) { + return success("支付成功通知发送成功"); + } else { + return fail("支付成功通知发送失败"); + } + + } catch (Exception e) { + log.error("测试发送支付成功通知失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + /** + * 测试发送订阅消息 + */ + @ApiOperation("测试发送订阅消息") + @PostMapping("/test-subscribe-notification") + public ApiResult testSubscribeNotification(@RequestParam String openId, + @RequestParam String title, + @RequestParam String content, + @RequestParam(required = false) String templateId) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + SubscribeMessageRequest request = new SubscribeMessageRequest(); + request.setToUser(openId); + request.setTemplateId(templateId != null ? templateId : "your_subscribe_template_id"); + request.setPage("pages/notification/detail"); + request.setMiniprogramState("formal"); + request.setLang("zh_CN"); + + Map data = new HashMap<>(); + data.put("thing1", new SubscribeMessageRequest.SubscribeDataItem(title)); + data.put("thing2", new SubscribeMessageRequest.SubscribeDataItem(content)); + data.put("time3", new SubscribeMessageRequest.SubscribeDataItem( + new SimpleDateFormat("yyyy年MM月dd日 HH:mm").format(new Date()))); + + request.setData(data); + + boolean success = wxNotificationService.sendSubscribeMessage(tenantId, request); + + if (success) { + return success("订阅消息发送成功"); + } else { + return fail("订阅消息发送失败"); + } + + } catch (Exception e) { + log.error("测试发送订阅消息失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + /** + * 测试发送系统通知 + */ + @ApiOperation("测试发送系统通知") + @PostMapping("/test-system-notification") + public ApiResult testSystemNotification(@RequestParam String openId, + @RequestParam String message, + @RequestParam(required = false) String templateId) { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + TemplateMessageRequest request = new TemplateMessageRequest(); + request.setToUser(openId); + request.setTemplateId(templateId != null ? templateId : "your_system_template_id"); + request.setTopColor("#173177"); + + Map data = new HashMap<>(); + data.put("first", new TemplateMessageRequest.TemplateDataItem("系统通知", "#173177")); + data.put("keyword1", new TemplateMessageRequest.TemplateDataItem("系统消息", "#173177")); + data.put("keyword2", new TemplateMessageRequest.TemplateDataItem(message, "#173177")); + data.put("keyword3", new TemplateMessageRequest.TemplateDataItem( + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "#173177")); + data.put("remark", new TemplateMessageRequest.TemplateDataItem("如有疑问,请联系客服。", "#173177")); + + request.setData(data); + + boolean success = wxNotificationService.sendTemplateMessage(tenantId, request); + + if (success) { + return success("系统通知发送成功"); + } else { + return fail("系统通知发送失败"); + } + + } catch (Exception e) { + log.error("测试发送系统通知失败", e); + return fail("发送失败:" + e.getMessage()); + } + } + + /** + * 获取当前配置的模板列表 + */ + @ApiOperation("获取当前配置的模板列表") + @GetMapping("/get-templates") + public ApiResult getTemplates() { + try { + User loginUser = getLoginUser(); + Integer tenantId = loginUser != null ? loginUser.getTenantId() : 0; + + String response = wxNotificationService.getTemplateList(tenantId); + return success("获取成功", response); + + } catch (Exception e) { + log.error("获取模板列表失败", e); + return fail("获取失败:" + e.getMessage()); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/dto/BatchTemplateMessageRequest.java b/src/main/java/com/gxwebsoft/hjm/dto/BatchTemplateMessageRequest.java new file mode 100644 index 0000000..e240554 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/dto/BatchTemplateMessageRequest.java @@ -0,0 +1,24 @@ +package com.gxwebsoft.hjm.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 批量发送模板消息请求 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Data +@ApiModel(value = "BatchTemplateMessageRequest", description = "批量发送模板消息请求") +public class BatchTemplateMessageRequest { + + @ApiModelProperty(value = "模板消息列表", required = true) + private List messages; + + @ApiModelProperty(value = "发送间隔时间(毫秒),默认100ms") + private Long intervalMs = 100L; +} diff --git a/src/main/java/com/gxwebsoft/hjm/dto/SubscribeMessageRequest.java b/src/main/java/com/gxwebsoft/hjm/dto/SubscribeMessageRequest.java new file mode 100644 index 0000000..6bffbae --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/dto/SubscribeMessageRequest.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.hjm.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * 微信小程序订阅消息请求 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Data +@ApiModel(value = "SubscribeMessageRequest", description = "微信小程序订阅消息请求") +public class SubscribeMessageRequest { + + @ApiModelProperty(value = "接收者openid", required = true) + private String toUser; + + @ApiModelProperty(value = "所需下发的订阅模板id", required = true) + private String templateId; + + @ApiModelProperty(value = "点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。") + private String page; + + @ApiModelProperty(value = "跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版") + private String miniprogramState = "formal"; + + @ApiModelProperty(value = "进入小程序查看的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN") + private String lang = "zh_CN"; + + @ApiModelProperty(value = "模板内容,格式形如 { \"key1\": { \"value\": any }, \"key2\": { \"value\": any } }", required = true) + private Map data; + + /** + * 订阅消息数据项 + */ + @Data + @ApiModel(value = "SubscribeDataItem", description = "订阅消息数据项") + public static class SubscribeDataItem { + @ApiModelProperty(value = "数据值", required = true) + private String value; + + public SubscribeDataItem() {} + + public SubscribeDataItem(String value) { + this.value = value; + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/dto/TemplateMessageRequest.java b/src/main/java/com/gxwebsoft/hjm/dto/TemplateMessageRequest.java new file mode 100644 index 0000000..bc08e1f --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/dto/TemplateMessageRequest.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.hjm.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * 微信公众号模板消息请求 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Data +@ApiModel(value = "TemplateMessageRequest", description = "微信公众号模板消息请求") +public class TemplateMessageRequest { + + @ApiModelProperty(value = "接收者openid", required = true) + private String toUser; + + @ApiModelProperty(value = "模板ID", required = true) + private String templateId; + + @ApiModelProperty(value = "模板跳转链接(海外帐号没有跳转能力)") + private String url; + + @ApiModelProperty(value = "模板内容字体颜色,不填默认为黑色") + private String topColor = "#173177"; + + @ApiModelProperty(value = "模板数据", required = true) + private Map data; + + @ApiModelProperty(value = "跳小程序所需数据,不需跳小程序可不用传该数据") + private MiniProgram miniprogram; + + /** + * 模板数据项 + */ + @Data + @ApiModel(value = "TemplateDataItem", description = "模板数据项") + public static class TemplateDataItem { + @ApiModelProperty(value = "数据值", required = true) + private String value; + + @ApiModelProperty(value = "数据颜色,不填默认为黑色") + private String color = "#173177"; + + public TemplateDataItem() {} + + public TemplateDataItem(String value) { + this.value = value; + } + + public TemplateDataItem(String value, String color) { + this.value = value; + this.color = color; + } + } + + /** + * 小程序跳转信息 + */ + @Data + @ApiModel(value = "MiniProgram", description = "小程序跳转信息") + public static class MiniProgram { + @ApiModelProperty(value = "所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)") + private String appid; + + @ApiModelProperty(value = "所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏") + private String pagepath; + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/Gps.java b/src/main/java/com/gxwebsoft/hjm/entity/Gps.java new file mode 100644 index 0000000..a74dbb3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/Gps.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * GPS + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "GPS对象", description = "GPS") +public class Gps implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物联网卡的imsi号") + @TableField(exist = false) + private String imsi; + + @ApiModelProperty(value = "设备ID") + private String imei; + + @ApiModelProperty(value = "移动网络编码") + private String plmn; + + @ApiModelProperty(value = "4G网络路由区") + private String lac; + + @ApiModelProperty(value = "4G网络基站小区id") + private String ci; + + @ApiModelProperty(value = "4G网络信号值") + private String rssi; + + @ApiModelProperty(value = "设备当前时间戳") + private Integer time; + + @ApiModelProperty(value = "设备当前时间") + private String ddmmyy; + + @ApiModelProperty(value = "时分秒") + private String hhmmss; + + @ApiModelProperty(value = "速度") + private String speed; + + @ApiModelProperty(value = "miles") + private String miles; + + @ApiModelProperty(value = "是否定位") + private Boolean fixed; + + @ApiModelProperty(value = "经度") + private String lat; + + @ApiModelProperty(value = "纬度") + private String lng; + + @ApiModelProperty(value = "定位星数") + private String satcnt; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmBxLog.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmBxLog.java new file mode 100644 index 0000000..8b65868 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmBxLog.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_报险记录 + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmBxLog对象", description = "黄家明_报险记录") +public class HjmBxLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "事故类型") + private String accidentType; + + @ApiModelProperty(value = "车辆ID") + private Integer carId; + + @ApiModelProperty(value = "车辆编号") + @TableField(exist = false) + private String carNo; + + @ApiModelProperty(value = "车辆图片") + @TableField(exist = false) + private String carAvatar; + + @ApiModelProperty(value = "保险图片") + private String image; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmCar.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmCar.java new file mode 100644 index 0000000..17bdac6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmCar.java @@ -0,0 +1,170 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_车辆管理 + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmCar对象", description = "黄家明_车辆管理") +public class HjmCar implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "车辆名称") + private String name; + + @ApiModelProperty(value = "车辆图片") + private String image; + + @ApiModelProperty(value = "类型 0汽车 1其他车") + private Integer type; + + @ApiModelProperty(value = "管理负责人") + @TableField(exist = false) + private String kuaidiAdmin; + + @ApiModelProperty(value = "车辆编号") + private String code; + + @ApiModelProperty(value = "司机") + private Integer driverId; + + @ApiModelProperty(value = "操作员") + @TableField(exist = false) + private String driver; + + @ApiModelProperty(value = "操作员") + private String driverName; + + @ApiModelProperty(value = "操作员电话") + @TableField(exist = false) + private String driverPhone; + + @ApiModelProperty(value = "保险状态") + private String insuranceStatus; + + @ApiModelProperty(value = "GPS设备编号") + private String gpsNo; + + @ApiModelProperty(value = "电子围栏ID") + private Integer fenceId; + + @ApiModelProperty(value = "电子围栏名称") + private String fenceName; + + @ApiModelProperty(value = "电子围栏名称") + @TableField(exist = false) + private HjmFence fence; + + @ApiModelProperty(value = "是否在围栏内") + private Boolean inFence; + + @ApiModelProperty(value = "位置") + private String location; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "速度") + private String speed; + + @ApiModelProperty(value = "区域") + private String district; + + @ApiModelProperty(value = "地址") + private String address; + + @ApiModelProperty(value = "组织ID") + private Integer organizationId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "机构名称") + @TableField(exist = false) + private String organization; + + @ApiModelProperty(value = "父级组织ID") + private Integer organizationParentId; + + @ApiModelProperty(value = "父级机构名称") + private String organizationParentName; + + @ApiModelProperty(value = "父级机构名称") + @TableField(exist = false) + private String parentOrganization; + + @ApiModelProperty(value = "快递公司管理员") + @TableField(exist = false) + private String parentOrganizationAdmin; + + @ApiModelProperty(value = "微信小程序码") + private String mpCode; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "安装工ID") + private Integer installerId; + + @ApiModelProperty(value = "安装时间") + private String installTime; + + @ApiModelProperty(value = "接受推送消息的微信openId") + private String toUser; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "appId") + @TableField(exist = false) + private String appId; + + @ApiModelProperty(value = "是否认领, 0未认领, 1已认领") + private Integer claim; + + @ApiModelProperty(value = "认领时间") + private String claimTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmChoices.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmChoices.java new file mode 100644 index 0000000..b728e74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmChoices.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_选择题选项 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmChoices对象", description = "黄家明_选择题选项") +public class HjmChoices implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "题目ID") + private Integer questionId; + + @ApiModelProperty(value = "题目") + private String content; + + @ApiModelProperty(value = "是否正确") + private Boolean isCorrect; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmCourses.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmCourses.java new file mode 100644 index 0000000..d0c4806 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmCourses.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_课程 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmCourses对象", description = "黄家明_课程") +public class HjmCourses implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "课程名称") + private String name; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "课程编号") + private String code; + + @ApiModelProperty(value = "课程封面图") + private String image; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmExamLog.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmExamLog.java new file mode 100644 index 0000000..e2f5a66 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmExamLog.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.hjm.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_学习记录 + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmExamLog对象", description = "黄家明_学习记录") +public class HjmExamLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "真实姓名") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "得分") + private BigDecimal total; + + @ApiModelProperty(value = "用时") + private String useTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmFence.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmFence.java new file mode 100644 index 0000000..6c21992 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmFence.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_电子围栏 + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmFence对象", description = "黄家明_电子围栏") +public class HjmFence implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "围栏名称") + private String name; + + @ApiModelProperty(value = "类型 1多边形") + private Integer type; + + @ApiModelProperty(value = "位置") + private String location; + + @ApiModelProperty(value = "经度") + private Double longitude; + + @ApiModelProperty(value = "纬度") + private Double latitude; + + @ApiModelProperty(value = "区域") + private String district; + + @ApiModelProperty(value = "轮廓") + private String points; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmGpsLog.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmGpsLog.java new file mode 100644 index 0000000..64681f2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmGpsLog.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_gps轨迹 + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmGpsLog对象", description = "黄家明_gps轨迹") +public class HjmGpsLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "车辆ID") + private Integer carId; + + @ApiModelProperty(value = "gps编号") + private String gpsNo; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "设备当前时间") + private String ddmmyy; + + @ApiModelProperty(value = "时分秒") + private String hhmmss; + + @ApiModelProperty(value = "速度") + private String speed; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "操作员电话") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "车辆编号") + @TableField(exist = false) + private String carNo; + + @ApiModelProperty(value = "司机ID") + @TableField(exist = false) + private Integer driverId; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmQuestions.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmQuestions.java new file mode 100644 index 0000000..7e452ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmQuestions.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.hjm.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_题目 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmQuestions对象", description = "黄家明_题目") +public class HjmQuestions implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "课程ID") + private Integer courseId; + + @ApiModelProperty(value = "课程名称") + @TableField(exist = false) + private String courseName; + + @ApiModelProperty(value = "类型 0choice 1fill 2essay") + private Integer type; + + @ApiModelProperty(value = "题目") + private String question; + + @ApiModelProperty(value = "正确答案") + private String correctAnswer; + + @ApiModelProperty(value = "难度,0简单 1中等 2难") + private Integer difficulty; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "正确答案") + @TableField(exist = false) + private Integer choices; +// +// @ApiModelProperty(value = "选项A") +// @TableField(exist = false) +// private String choicesA; +// +// @ApiModelProperty(value = "选项B") +// @TableField(exist = false) +// private String choicesB; +// +// @ApiModelProperty(value = "选项C") +// @TableField(exist = false) +// private String choicesC; +// +// @ApiModelProperty(value = "选项D") +// @TableField(exist = false) +// private String choicesD; + + @ApiModelProperty(value = "选项列表") + @TableField(exist = false) + private List choicesList; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/entity/HjmViolation.java b/src/main/java/com/gxwebsoft/hjm/entity/HjmViolation.java new file mode 100644 index 0000000..5a31525 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/entity/HjmViolation.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.hjm.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_违章记录 + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HjmViolation对象", description = "黄家明_违章记录") +public class HjmViolation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "车辆编号") + private String code; + + @ApiModelProperty(value = "文章分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "处罚金额") + private BigDecimal money; + + @ApiModelProperty(value = "扣分") + private BigDecimal score; + + @ApiModelProperty(value = "录入员") + private Integer adminId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0未处理, 1已处理") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmBxLogMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmBxLogMapper.java new file mode 100644 index 0000000..0e525fc --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmBxLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmBxLog; +import com.gxwebsoft.hjm.param.HjmBxLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_报险记录Mapper + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +public interface HjmBxLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmBxLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmBxLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmCarMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmCarMapper.java new file mode 100644 index 0000000..0513d21 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmCarMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.param.HjmCarParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_车辆管理Mapper + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +public interface HjmCarMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmCarParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmCarParam param); + + + @InterceptorIgnore(tenantLine = "true") + HjmCar getByGpsNo(@Param("gpsNo") String gpsNo); + + @InterceptorIgnore(tenantLine = "true") + boolean updateByGpsNo(@Param("param") HjmCar param); + + @InterceptorIgnore(tenantLine = "true") + HjmCar getByCode(String code); +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmChoicesMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmChoicesMapper.java new file mode 100644 index 0000000..5ca7ae8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmChoicesMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.param.HjmChoicesParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_选择题选项Mapper + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmChoicesMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmChoicesParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmChoicesParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmCoursesMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmCoursesMapper.java new file mode 100644 index 0000000..81127d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmCoursesMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmCourses; +import com.gxwebsoft.hjm.param.HjmCoursesParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_课程Mapper + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmCoursesMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmCoursesParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmCoursesParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmExamLogMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmExamLogMapper.java new file mode 100644 index 0000000..ab875fa --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmExamLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmExamLog; +import com.gxwebsoft.hjm.param.HjmExamLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_学习记录Mapper + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +public interface HjmExamLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmExamLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmExamLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmFenceMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmFenceMapper.java new file mode 100644 index 0000000..ab0c9af --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmFenceMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.param.HjmFenceParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_电子围栏Mapper + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +public interface HjmFenceMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmFenceParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmFenceParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmGpsLogMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmGpsLogMapper.java new file mode 100644 index 0000000..caaae06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmGpsLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.param.HjmGpsLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_gps轨迹Mapper + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +public interface HjmGpsLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmGpsLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmGpsLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmQuestionsMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmQuestionsMapper.java new file mode 100644 index 0000000..980dd4f --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmQuestionsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmQuestions; +import com.gxwebsoft.hjm.param.HjmQuestionsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_题目Mapper + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmQuestionsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmQuestionsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmQuestionsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/HjmViolationMapper.java b/src/main/java/com/gxwebsoft/hjm/mapper/HjmViolationMapper.java new file mode 100644 index 0000000..539c87e --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/HjmViolationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.hjm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.hjm.entity.HjmViolation; +import com.gxwebsoft.hjm.param.HjmViolationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 黄家明_违章记录Mapper + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +public interface HjmViolationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HjmViolationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HjmViolationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmBxLogMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmBxLogMapper.xml new file mode 100644 index 0000000..d008f01 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmBxLogMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.*, b.name as carName,b.code as carNo, b.image as carAvatar, u.real_name as realName, u.nickname + FROM hjm_bx_log a + LEFT JOIN hjm_car b ON a.car_id = b.id + LEFT JOIN gxwebsoft_core.sys_user u ON a.user_id = u.user_id + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.car_id = #{param.carId} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCarMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCarMapper.xml new file mode 100644 index 0000000..ae01dba --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCarMapper.xml @@ -0,0 +1,153 @@ + + + + + + + SELECT a.*,b.organization_name as organization,e.name as fence, f.organization_name as parentOrganization, + f.comments as + parentOrganizationAdmin, u.real_name as driver,u.phone as driverPhone + FROM hjm_car a + LEFT JOIN gxwebsoft_core.sys_organization b ON a.organization_id = b.organization_id + LEFT JOIN gxwebsoft_core.sys_organization f ON a.organization_parent_id = f.organization_id + LEFT JOIN hjm_fence e ON a.fence_id = e.id + LEFT JOIN gxwebsoft_core.sys_user u ON a.driver_id = u.user_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.type = #{param.type} + + + AND a.organization_id = #{param.organizationId} + + + AND a.organization_parent_id = #{param.organizationParentId} + + + AND a.driver_id = #{param.driverId} + + + AND a.kuaidi LIKE CONCAT('%', #{param.kuaidi}, '%') + + + AND a.kuaidi_admin LIKE CONCAT('%', #{param.kuaidiAdmin}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.driver = #{param.driver} + + + AND a.insurance_status = #{param.insuranceStatus} + + + AND a.gps_no LIKE CONCAT('%', #{param.gpsNo}, '%') + + + AND a.fence LIKE CONCAT('%', #{param.fence}, '%') + + + AND a.district LIKE CONCAT('%', #{param.district}, '%') + + + AND a.claim = #{param.claim} + + + AND a.installer_id = #{param.installerId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.gps_no = #{param.keywords} + OR a.driver_name = #{param.keywords} + OR u.phone = #{param.keywords} + ) + + + + + + + + + + + + + + + + UPDATE hjm_car + + + longitude = #{param.longitude}, + + + latitude = #{param.latitude}, + + + speed = #{param.speed}, + + + + gps_no = #{param.gpsNo} + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmChoicesMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmChoicesMapper.xml new file mode 100644 index 0000000..9999614 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmChoicesMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM hjm_choices a + + + AND a.id = #{param.id} + + + AND a.question_id = #{param.questionId} + + + AND a.choice_content LIKE CONCAT('%', #{param.choiceContent}, '%') + + + AND a.is_correct = #{param.isCorrect} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCoursesMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCoursesMapper.xml new file mode 100644 index 0000000..bc58532 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmCoursesMapper.xml @@ -0,0 +1,66 @@ + + + + + + + SELECT a.* + FROM hjm_courses a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.type = #{param.type} + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmExamLogMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmExamLogMapper.xml new file mode 100644 index 0000000..1b869e0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmExamLogMapper.xml @@ -0,0 +1,61 @@ + + + + + + + SELECT a.*, b.nickname, b.phone, b.real_name + FROM hjm_exam_log a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.total = #{param.total} + + + AND a.use_time LIKE CONCAT('%', #{param.useTime}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmFenceMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmFenceMapper.xml new file mode 100644 index 0000000..6bff929 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmFenceMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM hjm_fence a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.type = #{param.type} + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.district LIKE CONCAT('%', #{param.district}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmGpsLogMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmGpsLogMapper.xml new file mode 100644 index 0000000..b6cb487 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmGpsLogMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM hjm_gps_log a + + + AND a.id = #{param.id} + + + AND a.car_id = #{param.carId} + + + AND a.gps_no = #{param.gpsNo} + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.ddmmyy LIKE CONCAT('%', #{param.ddmmyy}, '%') + + + AND a.hhmmss LIKE CONCAT(#{param.hhmmss}, '%') + + + AND a.speed = #{param.speed} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.create_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.gps_no = #{param.keywords} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmQuestionsMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmQuestionsMapper.xml new file mode 100644 index 0000000..88cb559 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmQuestionsMapper.xml @@ -0,0 +1,70 @@ + + + + + + + SELECT a.*, b.title as courseName + FROM hjm_questions a + LEFT JOIN cms_navigation b ON a.course_id = b.navigation_id + + + AND a.id = #{param.id} + + + AND a.course_id = #{param.courseId} + + + AND a.type = #{param.type} + + + AND a.question LIKE CONCAT('%', #{param.question}, '%') + + + AND a.correct_answer LIKE CONCAT('%', #{param.correctAnswer}, '%') + + + AND a.difficulty LIKE CONCAT('%', #{param.difficulty}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmViolationMapper.xml b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmViolationMapper.xml new file mode 100644 index 0000000..60d8b50 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/mapper/xml/HjmViolationMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.* + FROM hjm_violation a + LEFT JOIN hjm_car b ON a.code = b.code + LEFT JOIN gxwebsoft_core.sys_organization c ON b.organization_id = c.organization_id + LEFT JOIN gxwebsoft_core.sys_organization f ON b.organization_parent_id = f.organization_id + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.code = #{param.code} + + + AND a.category_id = #{param.categoryId} + + + AND a.money = #{param.money} + + + AND a.score = #{param.score} + + + AND b.organization_id = #{param.organizationId} + + + AND b.organization_parent_id = #{param.organizationParentId} + + + AND a.admin_id = #{param.adminId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmBxLogParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmBxLogParam.java new file mode 100644 index 0000000..05fc3bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmBxLogParam.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_报险记录查询参数 + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmBxLogParam对象", description = "黄家明_报险记录查询参数") +public class HjmBxLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "车辆ID") + @QueryField(type = QueryType.EQ) + private Integer carId; + + @ApiModelProperty(value = "保险图片") + private String image; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmCarImportParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmCarImportParam.java new file mode 100644 index 0000000..afea961 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmCarImportParam.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.hjm.param; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + +/** + * 车辆导入参数 + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Data +public class HjmCarImportParam implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "车辆名称") + private String name; + + @Excel(name = "车辆图片") + private String image; + + @Excel(name = "类型") + private Integer type; + + @Excel(name = "管理负责人") + private String kuaidiAdmin; + + @Excel(name = "车辆编号") + private String code; + + @Excel(name = "司机ID") + private Integer driverId; + + @Excel(name = "保险状态") + private String insuranceStatus; + + @Excel(name = "GPS设备编号") + private String gpsNo; + + @Excel(name = "电子围栏ID") + private Integer fenceId; + + @Excel(name = "电子围栏名称") + private String fenceName; + + @Excel(name = "位置") + private String location; + + @Excel(name = "纬度") + private String latitude; + + @Excel(name = "经度") + private String longitude; + + @Excel(name = "区域") + private String district; + + @Excel(name = "地址") + private String address; + + @Excel(name = "站点ID") + private Integer organizationId; + + @Excel(name = "所属快递公司ID") + private Integer organizationParentId; + + @Excel(name = "微信小程序码") + private String mpCode; + + @Excel(name = "用户ID") + private Integer userId; + + @Excel(name = "排序") + private Integer sortNumber; + + @Excel(name = "备注") + private String comments; + + @Excel(name = "状态") + private Integer status; +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmCarParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmCarParam.java new file mode 100644 index 0000000..99ef632 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmCarParam.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_车辆管理查询参数 + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmCarParam对象", description = "黄家明_车辆管理查询参数") +public class HjmCarParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "车辆名称") + private String name; + + @ApiModelProperty(value = "车辆图片") + private String image; + + @ApiModelProperty(value = "类型 0汽车 1其他车") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "快递公司") + private String kuaidi; + + @ApiModelProperty(value = "管理负责人") + private String kuaidiAdmin; + + @ApiModelProperty(value = "车辆编号") + private String code; + + @ApiModelProperty(value = "司机ID") + @QueryField(type = QueryType.EQ) + private Integer driverId; + + @ApiModelProperty(value = "司机") + @QueryField(type = QueryType.EQ) + private Integer driver; + + @ApiModelProperty(value = "保险状态") + @QueryField(type = QueryType.EQ) + private String insuranceStatus; + + @ApiModelProperty(value = "GPS设备编号") + private String gpsNo; + + @ApiModelProperty(value = "电子围栏") + private String fence; + + @ApiModelProperty(value = "所在区域") + @QueryField(type = QueryType.EQ) + private String district; + + @ApiModelProperty(value = "纬度") + @QueryField(type = QueryType.EQ) + private String latitude; + + @ApiModelProperty(value = "经度") + @QueryField(type = QueryType.EQ) + private String longitude; + + @ApiModelProperty(value = "组织ID") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "父级组织ID") + @QueryField(type = QueryType.EQ) + private Integer organizationParentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "安装人员ID") + @QueryField(type = QueryType.EQ) + private Integer installerId; + + @ApiModelProperty(value = "安装时间") + private String installTime; + + @ApiModelProperty(value = "是否认领, 0未认领, 1已认领") + @QueryField(type = QueryType.EQ) + private Integer claim; + + @ApiModelProperty(value = "认领时间") + private String claimTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "所属站点") + @QueryField(type = QueryType.EQ) + private String organizationName; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmChoicesParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmChoicesParam.java new file mode 100644 index 0000000..2069a3e --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmChoicesParam.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_选择题选项查询参数 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmChoicesParam对象", description = "黄家明_选择题选项查询参数") +public class HjmChoicesParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "题目ID") + @QueryField(type = QueryType.EQ) + private Integer questionId; + + @ApiModelProperty(value = "题目") + private String choiceContent; + + @ApiModelProperty(value = "是否正确") + @QueryField(type = QueryType.EQ) + private Integer isCorrect; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmCoursesParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmCoursesParam.java new file mode 100644 index 0000000..bc841da --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmCoursesParam.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_课程查询参数 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmCoursesParam对象", description = "黄家明_课程查询参数") +public class HjmCoursesParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "课程名称") + private String name; + + @ApiModelProperty(value = "类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "课程编号") + private String code; + + @ApiModelProperty(value = "课程封面图") + private String image; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmExamLogParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmExamLogParam.java new file mode 100644 index 0000000..251cd80 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmExamLogParam.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_学习记录查询参数 + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmExamLogParam对象", description = "黄家明_学习记录查询参数") +public class HjmExamLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "得分") + @QueryField(type = QueryType.EQ) + private BigDecimal total; + + @ApiModelProperty(value = "用时") + private String useTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmFenceParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmFenceParam.java new file mode 100644 index 0000000..3e811b3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmFenceParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_电子围栏查询参数 + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmFenceParam对象", description = "黄家明_电子围栏查询参数") +public class HjmFenceParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "围栏名称") + private String name; + + @ApiModelProperty(value = "类型 0圆形 1方形") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "区域") + private String district; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmGpsLogParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmGpsLogParam.java new file mode 100644 index 0000000..b716c9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmGpsLogParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_gps轨迹查询参数 + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmGpsLogParam对象", description = "黄家明_gps轨迹查询参数") +public class HjmGpsLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "车辆ID") + @QueryField(type = QueryType.EQ) + private Integer carId; + + @ApiModelProperty(value = "gps编号") + @QueryField(type = QueryType.EQ) + private String gpsNo; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "速度") + private String speed; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "按日期查询") + @QueryField(type = QueryType.EQ) + private String dateTime; + + @ApiModelProperty(value = "设备当前时间") + @QueryField(type = QueryType.EQ) + private String ddmmyy; + + @ApiModelProperty(value = "时分秒") + @QueryField(type = QueryType.LIKE) + private String hhmmss; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmQuestionsParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmQuestionsParam.java new file mode 100644 index 0000000..1d155ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmQuestionsParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_题目查询参数 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmQuestionsParam对象", description = "黄家明_题目查询参数") +public class HjmQuestionsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "课程ID") + @QueryField(type = QueryType.EQ) + private Integer courseId; + + @ApiModelProperty(value = "类型 0choice 1fill 2essay") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "题目") + private String question; + + @ApiModelProperty(value = "正确答案") + private String correctAnswer; + + @ApiModelProperty(value = "难度,'easy', 'medium', 'hard'") + private String difficulty; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/param/HjmViolationParam.java b/src/main/java/com/gxwebsoft/hjm/param/HjmViolationParam.java new file mode 100644 index 0000000..9fcf3f0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/param/HjmViolationParam.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.hjm.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 黄家明_违章记录查询参数 + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HjmViolationParam对象", description = "黄家明_违章记录查询参数") +public class HjmViolationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "车牌号") + @QueryField(type = QueryType.EQ) + private String code; + + @ApiModelProperty(value = "文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "处罚金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "扣分") + @QueryField(type = QueryType.EQ) + private BigDecimal score; + + @ApiModelProperty(value = "录入员") + @QueryField(type = QueryType.EQ) + private Integer adminId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0未处理, 1已处理") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "组织ID") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "父级组织ID") + @QueryField(type = QueryType.EQ) + private Integer organizationParentId; + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/GpsDiagnosticService.java b/src/main/java/com/gxwebsoft/hjm/service/GpsDiagnosticService.java new file mode 100644 index 0000000..28d648a --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/GpsDiagnosticService.java @@ -0,0 +1,289 @@ +package com.gxwebsoft.hjm.service; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.param.HjmCarParam; +import com.gxwebsoft.hjm.param.HjmGpsLogParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * GPS诊断服务 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@Service +public class GpsDiagnosticService { + + private static final Logger logger = LoggerFactory.getLogger(GpsDiagnosticService.class); + + @Resource + private HjmCarService hjmCarService; + + @Resource + private HjmGpsLogService hjmGpsLogService; + + @Resource + private RedisUtil redisUtil; + + /** + * 诊断GPS数据上送问题 + * + * @return 诊断报告 + */ + public Map diagnoseGpsDataIssues() { + Map report = new HashMap<>(); + + logger.info("开始GPS数据诊断..."); + + // 1. 检查所有车辆的GPS配置 + Map carGpsConfig = checkCarGpsConfiguration(); + report.put("车辆GPS配置检查", carGpsConfig); + + // 2. 检查GPS日志数据 + Map gpsLogAnalysis = analyzeGpsLogData(); + report.put("GPS日志分析", gpsLogAnalysis); + + // 3. 检查Redis缓存状态 + Map redisStatus = checkRedisCache(); + report.put("Redis缓存状态", redisStatus); + + // 4. 检查有数据的GPS设备 + Map activeGpsDevices = checkActiveGpsDevices(); + report.put("活跃GPS设备", activeGpsDevices); + + logger.info("GPS数据诊断完成"); + + return report; + } + + /** + * 检查车辆GPS配置 + */ + private Map checkCarGpsConfiguration() { + Map result = new HashMap<>(); + + try { + // 查询所有车辆 + HjmCarParam param = new HjmCarParam(); + List allCars = hjmCarService.listRel(param); + + int totalCars = allCars.size(); + int carsWithGps = 0; + int carsWithoutGps = 0; + + Map gpsDeviceMapping = new HashMap<>(); + + for (HjmCar car : allCars) { + if (StrUtil.isNotBlank(car.getGpsNo())) { + carsWithGps++; + gpsDeviceMapping.put(car.getGpsNo(), car.getCode()); + } else { + carsWithoutGps++; + logger.warn("车辆 {} (ID: {}) 未配置GPS设备编号", car.getCode(), car.getId()); + } + } + + result.put("总车辆数", totalCars); + result.put("已配置GPS的车辆数", carsWithGps); + result.put("未配置GPS的车辆数", carsWithoutGps); + result.put("GPS设备映射", gpsDeviceMapping); + + logger.info("车辆GPS配置检查完成 - 总数: {}, 已配置GPS: {}, 未配置GPS: {}", + totalCars, carsWithGps, carsWithoutGps); + + } catch (Exception e) { + logger.error("检查车辆GPS配置失败", e); + result.put("错误", e.getMessage()); + } + + return result; + } + + /** + * 分析GPS日志数据 + */ + private Map analyzeGpsLogData() { + Map result = new HashMap<>(); + + try { + // 查询最近的GPS日志 + HjmGpsLogParam param = new HjmGpsLogParam(); + List recentLogs = hjmGpsLogService.listRel(param); + + Map gpsDeviceLogCount = new HashMap<>(); + Map latestLogTime = new HashMap<>(); + + for (HjmGpsLog log : recentLogs) { + String gpsNo = log.getGpsNo(); + if (StrUtil.isNotBlank(gpsNo)) { + gpsDeviceLogCount.put(gpsNo, gpsDeviceLogCount.getOrDefault(gpsNo, 0) + 1); + + if (log.getCreateTime() != null) { + String currentTime = latestLogTime.get(gpsNo); + String logTime = log.getCreateTime().toString(); + if (currentTime == null || logTime.compareTo(currentTime) > 0) { + latestLogTime.put(gpsNo, logTime); + } + } + } + } + + result.put("总日志条数", recentLogs.size()); + result.put("各GPS设备日志数量", gpsDeviceLogCount); + result.put("各GPS设备最新日志时间", latestLogTime); + + // 找出有数据的GPS设备 + if (!gpsDeviceLogCount.isEmpty()) { + String mostActiveGps = gpsDeviceLogCount.entrySet().stream() + .max(Map.Entry.comparingByValue()) + .map(Map.Entry::getKey) + .orElse("无"); + result.put("最活跃的GPS设备", mostActiveGps); + result.put("最活跃设备日志数", gpsDeviceLogCount.getOrDefault(mostActiveGps, 0)); + } + + logger.info("GPS日志分析完成 - 总日志数: {}, 活跃设备数: {}", + recentLogs.size(), gpsDeviceLogCount.size()); + + } catch (Exception e) { + logger.error("分析GPS日志数据失败", e); + result.put("错误", e.getMessage()); + } + + return result; + } + + /** + * 检查Redis缓存状态 + */ + private Map checkRedisCache() { + Map result = new HashMap<>(); + + try { + // 检查围栏缓存 + String testGpsNo = "862317042719778"; + String fenceKey = "inFence:" + testGpsNo; + String fenceCache = redisUtil.get(fenceKey); + + result.put("测试GPS围栏缓存键", fenceKey); + result.put("测试GPS围栏缓存值", fenceCache != null ? fenceCache : "无缓存"); + + // 检查GPS日志缓存 + String gpsLogCache = redisUtil.get(testGpsNo); + result.put("测试GPS日志缓存", gpsLogCache != null ? gpsLogCache : "无缓存"); + + logger.info("Redis缓存状态检查完成"); + + } catch (Exception e) { + logger.error("检查Redis缓存状态失败", e); + result.put("错误", e.getMessage()); + } + + return result; + } + + /** + * 检查活跃的GPS设备 + */ + private Map checkActiveGpsDevices() { + Map result = new HashMap<>(); + + try { + // 检查特定GPS设备的车辆信息 + String activeGpsNo = "862317042719778"; + HjmCar activeCar = hjmCarService.getByGpsNo(activeGpsNo); + + if (activeCar != null) { + Map activeCarInfo = new HashMap<>(); + activeCarInfo.put("车辆编号", activeCar.getCode()); + activeCarInfo.put("车辆名称", activeCar.getName()); + activeCarInfo.put("车辆ID", activeCar.getId()); + activeCarInfo.put("GPS设备编号", activeCar.getGpsNo()); + activeCarInfo.put("最新经度", activeCar.getLongitude()); + activeCarInfo.put("最新纬度", activeCar.getLatitude()); + activeCarInfo.put("最新速度", activeCar.getSpeed()); + activeCarInfo.put("更新时间", activeCar.getUpdateTime()); + activeCarInfo.put("围栏ID", activeCar.getFenceId()); + activeCarInfo.put("是否在围栏内", activeCar.getInFence()); + + result.put("活跃GPS设备信息", activeCarInfo); + } else { + result.put("活跃GPS设备信息", "未找到对应车辆"); + } + + // 检查其他GPS设备 + HjmCarParam param = new HjmCarParam(); + List allCars = hjmCarService.listRel(param); + + Map otherGpsDevices = new HashMap<>(); + for (HjmCar car : allCars) { + if (StrUtil.isNotBlank(car.getGpsNo()) && !activeGpsNo.equals(car.getGpsNo())) { + otherGpsDevices.put(car.getGpsNo(), car.getCode()); + } + } + + result.put("其他GPS设备", otherGpsDevices); + + logger.info("活跃GPS设备检查完成"); + + } catch (Exception e) { + logger.error("检查活跃GPS设备失败", e); + result.put("错误", e.getMessage()); + } + + return result; + } + + /** + * 检查特定GPS设备的详细信息 + * + * @param gpsNo GPS设备编号 + * @return 设备详细信息 + */ + public Map checkSpecificGpsDevice(String gpsNo) { + Map result = new HashMap<>(); + + try { + logger.info("检查GPS设备详细信息: {}", gpsNo); + + // 检查车辆信息 + HjmCar car = hjmCarService.getByGpsNo(gpsNo); + if (car != null) { + result.put("车辆信息", car); + } else { + result.put("车辆信息", "未找到对应车辆"); + } + + // 检查GPS日志 + HjmGpsLogParam logParam = new HjmGpsLogParam(); + logParam.setGpsNo(gpsNo); + List logs = hjmGpsLogService.listRel(logParam); + result.put("GPS日志数量", logs.size()); + if (!logs.isEmpty()) { + result.put("最新GPS日志", logs.get(0)); + } + + // 检查Redis缓存 + String fenceCache = redisUtil.get("inFence:" + gpsNo); + String logCache = redisUtil.get(gpsNo); + result.put("围栏缓存", fenceCache); + result.put("日志缓存", logCache); + + } catch (Exception e) { + logger.error("检查GPS设备详细信息失败: {}", gpsNo, e); + result.put("错误", e.getMessage()); + } + + return result; + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/GpsMessageCallback.java b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageCallback.java new file mode 100644 index 0000000..de2247c --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageCallback.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.hjm.service; + +import org.eclipse.paho.client.mqttv3.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * GPS消息回调处理器 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@Component +public class GpsMessageCallback implements MqttCallback { + + private static final Logger logger = LoggerFactory.getLogger(GpsMessageCallback.class); + + @Resource + private GpsMessageProcessor gpsMessageProcessor; + + @Override + public void connectionLost(Throwable cause) { + logger.error("MQTT连接丢失", cause); + + // 可以在这里添加告警通知逻辑 + // 例如:发送邮件、短信通知管理员 + notifyConnectionLost(cause); + } + + @Override + public void messageArrived(String topic, MqttMessage message) throws Exception { + try { + String payload = new String(message.getPayload()); + + logger.debug("接收到MQTT消息 - 主题: {}, QoS: {}, 消息长度: {}", + topic, message.getQos(), payload.length()); + + // 记录详细的消息内容(仅在DEBUG级别) + if (logger.isDebugEnabled()) { + logger.debug("消息内容: {}", payload); + } + + // 委托给专门的处理器处理 + gpsMessageProcessor.processGpsMessage(payload); + + } catch (Exception e) { + logger.error("处理MQTT消息失败 - 主题: {}, 错误: {}", topic, e.getMessage(), e); + + // 不要重新抛出异常,避免影响其他消息的处理 + // 可以在这里添加失败消息的重试机制或死信队列 + handleMessageProcessingFailure(topic, message, e); + } + } + + @Override + public void deliveryComplete(IMqttDeliveryToken token) { + logger.debug("MQTT消息发送完成: {}", token.isComplete()); + + try { + if (token.getTopics() != null && token.getTopics().length > 0) { + logger.debug("发送完成的主题: {}", String.join(", ", token.getTopics())); + } + } catch (Exception e) { + logger.warn("获取发送完成的主题信息失败", e); + } + } + + /** + * 处理连接丢失的通知 + * + * @param cause 连接丢失的原因 + */ + private void notifyConnectionLost(Throwable cause) { + try { + // 这里可以实现具体的通知逻辑 + // 例如: + // 1. 发送邮件通知 + // 2. 发送短信通知 + // 3. 写入告警日志 + // 4. 调用监控系统API + + logger.warn("MQTT连接丢失通知已触发,原因: {}", cause.getMessage()); + + // 示例:可以调用告警服务 + // alertService.sendAlert("MQTT连接丢失", cause.getMessage()); + + } catch (Exception e) { + logger.error("发送MQTT连接丢失通知失败", e); + } + } + + /** + * 处理消息处理失败的情况 + * + * @param topic 消息主题 + * @param message 消息内容 + * @param error 错误信息 + */ + private void handleMessageProcessingFailure(String topic, MqttMessage message, Exception error) { + try { + // 这里可以实现失败消息的处理逻辑 + // 例如: + // 1. 将失败的消息保存到数据库 + // 2. 发送到死信队列 + // 3. 记录到失败日志文件 + // 4. 实现重试机制 + + String payload = new String(message.getPayload()); + logger.warn("消息处理失败记录 - 主题: {}, 消息: {}, 错误: {}", + topic, payload.length() > 100 ? payload.substring(0, 100) + "..." : payload, + error.getMessage()); + + // 示例:可以保存失败消息到数据库 + // failedMessageService.saveFailedMessage(topic, payload, error.getMessage()); + + } catch (Exception e) { + logger.error("处理消息失败记录时发生错误", e); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java new file mode 100644 index 0000000..8c7c6b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/GpsMessageProcessor.java @@ -0,0 +1,255 @@ +package com.gxwebsoft.hjm.service; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.support.geo.Point; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.hjm.entity.Gps; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.service.impl.HjmCarServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * GPS消息处理器 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@Service +public class GpsMessageProcessor { + + private static final Logger logger = LoggerFactory.getLogger(GpsMessageProcessor.class); + + @Resource + private HjmCarService hjmCarService; + + @Resource + private HjmGpsLogService hjmGpsLogService; + + @Resource + private HjmFenceService hjmFenceService; + + @Resource + private RedisUtil redisUtil; + + @Resource + private HjmCarServiceImpl hjmCarServiceImpl; + + /** + * 处理GPS消息 + * + * @param payload 消息内容 + */ + public void processGpsMessage(String payload) { + try { + logger.debug("开始处理GPS消息: {}", payload); + + Gps gps = JSONUtil.parseObject(payload, Gps.class); + if (ObjectUtil.isEmpty(gps)) { + logger.warn("GPS数据为空,跳过处理"); + return; + } + + processGpsData(gps); + + } catch (Exception e) { + logger.error("处理GPS数据失败: {}", payload, e); + } + } + + /** + * 处理GPS数据 + * + * @param gps GPS数据 + */ + private void processGpsData(Gps gps) { + try { + String gpsNo = gps.getImei(); + if (StrUtil.isBlank(gpsNo)) { + logger.warn("GPS设备编号为空,跳过处理"); + return; + } + + // 详细记录GPS数据处理过程 + logger.info("处理GPS数据 - 设备编号: {}, Fixed: {}, 经度: {}, 纬度: {}, 速度: {}", + gpsNo, gps.getFixed(), gps.getLng(), gps.getLat(), gps.getSpeed()); + + HjmCar car = hjmCarService.getByGpsNo(gpsNo); + + if (car == null) { + logger.warn("GPS设备编号: {} 在数据库中未找到对应车辆,请检查车辆配置", gpsNo); + return; + } + + logger.info("GPS设备编号: {} 对应车辆: {} (ID: {})", gpsNo, car.getCode(), car.getId()); + + if (!gps.getFixed()) { + logger.warn("GPS设备编号: {} 定位未固定(Fixed=false),跳过处理", gpsNo); + return; + } + + // 更新车辆GPS定位信息 + updateCarLocation(car, gps); + + // 保存GPS轨迹日志 + saveGpsLog(car, gps); + + // 检查电子围栏 + checkFence(car, gps); + + } catch (Exception e) { + logger.error("处理GPS数据时发生错误", e); + } + } + + /** + * 更新车辆位置信息 + */ + private void updateCarLocation(HjmCar car, Gps gps) { + try { + car.setLongitude(gps.getLng()); + car.setLatitude(gps.getLat()); + car.setSpeed(gps.getSpeed()); + car.setUpdateTime(DateUtil.date(gps.getTime() * 1000)); + car.setGpsNo(gps.getImei()); + + if (hjmCarService.updateByGpsNo(car)) { + logger.debug("更新车辆GPS定位信息成功: {}", car.getCode()); + + // 检查是否需要保存GPS日志(避免重复保存) + String keyByGpsNo = redisUtil.get(gps.getImei()); + if (StrUtil.isBlank(keyByGpsNo)) { + saveGpsLogRecord(car, gps); + } + } else { + logger.warn("更新车辆GPS定位信息失败: {}", car.getCode()); + } + + } catch (Exception e) { + logger.error("更新车辆位置信息失败", e); + } + } + + /** + * 保存GPS轨迹日志记录 + */ + private void saveGpsLogRecord(HjmCar car, Gps gps) { + try { + HjmGpsLog log = new HjmGpsLog(); + log.setTenantId(10519); + log.setCarId(car.getId()); + log.setGpsNo(gps.getImei()); + log.setLatitude(gps.getLat()); + log.setLongitude(gps.getLng()); + log.setDdmmyy(gps.getDdmmyy()); + log.setHhmmss(gps.getHhmmss()); + log.setSpeed(gps.getSpeed()); + + if (!log.getSpeed().equals("0.000")) { + hjmGpsLogService.save(log); + logger.debug("保存GPS轨迹日志成功: {}", gps.getImei()); + } + + } catch (Exception e) { + logger.error("保存GPS轨迹日志失败", e); + } + } + + /** + * 保存GPS日志(兼容原有方法) + */ + private void saveGpsLog(HjmCar car, Gps gps) { + // 这里可以添加其他GPS日志相关的处理逻辑 + logger.debug("处理GPS日志: 车辆={}, GPS={}", car.getCode(), gps.getImei()); + } + + /** + * 检查电子围栏 + */ + private void checkFence(HjmCar car, Gps gps) { + try { + String gpsNo = gps.getImei(); + + // 检查围栏缓存,避免频繁计算 + String inFenceKey = redisUtil.get("inFence:" + gpsNo); + if (StrUtil.isNotBlank(inFenceKey)) { + logger.debug("围栏检查缓存命中,跳过计算: {}", gpsNo); + return; + } + + // 设置围栏检查缓存(1天) + redisUtil.set("inFence:" + gpsNo, "1", 1L, TimeUnit.DAYS); + + // 检查是否配置了围栏 + if (car.getFenceId() == null) { + logger.debug("车辆未配置围栏: {}", car.getCode()); + return; + } + + HjmFence fence = hjmFenceService.getById(car.getFenceId()); + if (fence == null) { + logger.warn("围栏不存在: {}", car.getFenceId()); + return; + } + + // 检查坐标有效性 + if (!isValidCoordinate(car.getLongitude(), car.getLatitude())) { + logger.warn("车辆坐标无效: 经度={}, 纬度={}", car.getLongitude(), car.getLatitude()); + return; + } + + // 执行围栏判断 + performFenceCheck(car, fence); + + } catch (Exception e) { + logger.error("检查电子围栏时发生错误", e); + } + } + + /** + * 检查坐标有效性 + */ + private boolean isValidCoordinate(String longitude, String latitude) { + return longitude != null && latitude != null && + !longitude.trim().isEmpty() && !latitude.trim().isEmpty(); + } + + /** + * 执行围栏判断 + */ + private void performFenceCheck(HjmCar car, HjmFence fence) { + try { + double lng = Double.parseDouble(car.getLongitude()); + double lat = Double.parseDouble(car.getLatitude()); + + Point carPoint = new Point(); + carPoint.setLongitude(lng); + carPoint.setLatitude(lat); + + // 使用多边形围栏判断 + boolean isInFence = hjmCarServiceImpl.checkPolygonFence(carPoint, fence); + + // 更新围栏状态 + car.setInFence(isInFence); + car.setUpdateTime(DateUtil.date()); + hjmCarService.updateById(car); + + logger.info("车辆围栏检查完成: 车辆={}, 围栏={}, 是否在围栏内={}", + car.getCode(), fence.getId(), isInFence); + + } catch (NumberFormatException e) { + logger.error("车辆坐标格式错误: 经度={}, 纬度={}", car.getLongitude(), car.getLatitude(), e); + } catch (Exception e) { + logger.error("执行围栏判断时发生错误", e); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmBxLogService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmBxLogService.java new file mode 100644 index 0000000..4dd762d --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmBxLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmBxLog; +import com.gxwebsoft.hjm.param.HjmBxLogParam; + +import java.util.List; + +/** + * 黄家明_报险记录Service + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +public interface HjmBxLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmBxLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmBxLogParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmBxLog + */ + HjmBxLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmCarService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmCarService.java new file mode 100644 index 0000000..6332030 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmCarService.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.param.HjmCarParam; + +import java.util.List; + +/** + * 黄家明_车辆管理Service + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +public interface HjmCarService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmCarParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmCarParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmCar + */ + HjmCar getByIdRel(Integer id); + + HjmCar getByGpsNo(String gpsNo); + + boolean updateByGpsNo(HjmCar byGpsNo); + + HjmCar getByCode(String code); +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmChoicesService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmChoicesService.java new file mode 100644 index 0000000..1fb113d --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmChoicesService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.param.HjmChoicesParam; + +import java.util.List; + +/** + * 黄家明_选择题选项Service + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmChoicesService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmChoicesParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmChoicesParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmChoices + */ + HjmChoices getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmCoursesService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmCoursesService.java new file mode 100644 index 0000000..25b8984 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmCoursesService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmCourses; +import com.gxwebsoft.hjm.param.HjmCoursesParam; + +import java.util.List; + +/** + * 黄家明_课程Service + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmCoursesService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmCoursesParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmCoursesParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmCourses + */ + HjmCourses getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmExamLogService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmExamLogService.java new file mode 100644 index 0000000..6340bdb --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmExamLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmExamLog; +import com.gxwebsoft.hjm.param.HjmExamLogParam; + +import java.util.List; + +/** + * 黄家明_学习记录Service + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +public interface HjmExamLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmExamLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmExamLogParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmExamLog + */ + HjmExamLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmFenceService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmFenceService.java new file mode 100644 index 0000000..6b353ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmFenceService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.param.HjmFenceParam; + +import java.util.List; + +/** + * 黄家明_电子围栏Service + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +public interface HjmFenceService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmFenceParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmFenceParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmFence + */ + HjmFence getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmGpsLogService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmGpsLogService.java new file mode 100644 index 0000000..04537d8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmGpsLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.param.HjmGpsLogParam; + +import java.util.List; + +/** + * 黄家明_gps轨迹Service + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +public interface HjmGpsLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmGpsLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmGpsLogParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmGpsLog + */ + HjmGpsLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmQuestionsService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmQuestionsService.java new file mode 100644 index 0000000..442a252 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmQuestionsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmQuestions; +import com.gxwebsoft.hjm.param.HjmQuestionsParam; + +import java.util.List; + +/** + * 黄家明_题目Service + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +public interface HjmQuestionsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmQuestionsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmQuestionsParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmQuestions + */ + HjmQuestions getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/HjmViolationService.java b/src/main/java/com/gxwebsoft/hjm/service/HjmViolationService.java new file mode 100644 index 0000000..731f8e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/HjmViolationService.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.hjm.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.entity.HjmViolation; +import com.gxwebsoft.hjm.param.HjmViolationParam; + +import java.util.List; + +/** + * 黄家明_违章记录Service + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +public interface HjmViolationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HjmViolationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HjmViolationParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return HjmViolation + */ + HjmViolation getByIdRel(Integer id); + + void send(HjmViolation hjmViolation); +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/MqttService.java b/src/main/java/com/gxwebsoft/hjm/service/MqttService.java new file mode 100644 index 0000000..45fb964 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/MqttService.java @@ -0,0 +1,330 @@ +package com.gxwebsoft.hjm.service; + +import com.gxwebsoft.common.core.config.MqttProperties; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.annotation.Resource; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * MQTT服务类 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@Service +public class MqttService { + + private static final Logger logger = LoggerFactory.getLogger(MqttService.class); + + @Resource + private MqttProperties mqttProperties; + + @Resource + private GpsMessageCallback gpsMessageCallback; + + private MqttClient client; + private String clientId; + private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + + @PostConstruct + public void init() { + try { + // 检查是否启用MQTT服务 + if (!mqttProperties.isEnabled()) { + logger.info("MQTT服务已禁用,跳过初始化"); + return; + } + + logger.info("开始初始化MQTT服务..."); + + // 验证配置属性 + validateMqttProperties(); + + // 生成唯一的客户端ID + clientId = mqttProperties.getClientIdPrefix() + System.currentTimeMillis(); + logger.info("生成客户端ID: {}", clientId); + + // 连接MQTT服务器 + connect(); + + // 订阅主题 + subscribe(); + + // 启动连接状态监控 + startConnectionMonitor(); + + logger.info("MQTT服务初始化完成"); + + } catch (Exception e) { + logger.error("MQTT服务初始化失败", e); + // 不要抛出异常,避免影响应用启动 + // 可以在后台定期重试连接 + scheduleReconnect(); + } + } + + /** + * 验证MQTT配置属性 + */ + private void validateMqttProperties() { + if (mqttProperties == null) { + throw new IllegalArgumentException("MQTT配置属性为null,请检查配置文件和@EnableConfigurationProperties注解"); + } + + if (gpsMessageCallback == null) { + throw new IllegalArgumentException("GPS消息回调处理器为null,请检查@Component注解"); + } + + logger.info("MQTT配置验证:"); + logger.info(" Host: {}", mqttProperties.getHost()); + logger.info(" Username: {}", mqttProperties.getUsername()); + logger.info(" Password: {}", mqttProperties.getPassword() != null ? "***" : "null"); + logger.info(" ClientIdPrefix: {}", mqttProperties.getClientIdPrefix()); + logger.info(" Topic: {}", mqttProperties.getTopic()); + logger.info(" QoS: {}", mqttProperties.getQos()); + logger.info(" ConnectionTimeout: {}", mqttProperties.getConnectionTimeout()); + logger.info(" KeepAliveInterval: {}", mqttProperties.getKeepAliveInterval()); + logger.info(" AutoReconnect: {}", mqttProperties.isAutoReconnect()); + logger.info(" CleanSession: {}", mqttProperties.isCleanSession()); + + if (mqttProperties.getHost() == null || mqttProperties.getHost().trim().isEmpty()) { + throw new IllegalArgumentException("MQTT服务器地址不能为空"); + } + + if (mqttProperties.getClientIdPrefix() == null) { + throw new IllegalArgumentException("MQTT客户端ID前缀不能为空"); + } + + if (mqttProperties.getTopic() == null || mqttProperties.getTopic().trim().isEmpty()) { + throw new IllegalArgumentException("MQTT订阅主题不能为空"); + } + + logger.info("MQTT配置验证通过"); + } + + /** + * 连接MQTT服务器 + */ + private void connect() throws MqttException { + if (client != null && client.isConnected()) { + logger.debug("MQTT客户端已连接,跳过连接操作"); + return; + } + + logger.info("正在连接MQTT服务器: {}", mqttProperties.getHost()); + + // 创建MQTT客户端 + client = new MqttClient(mqttProperties.getHost(), clientId, new MemoryPersistence()); + + // 设置连接选项 + MqttConnectOptions options = createConnectOptions(); + + // 设置回调 + client.setCallback(gpsMessageCallback); + + // 连接服务器 + client.connect(options); + + logger.info("MQTT连接成功 - 服务器: {}, 客户端ID: {}", mqttProperties.getHost(), clientId); + } + + /** + * 创建连接选项 + */ + private MqttConnectOptions createConnectOptions() { + MqttConnectOptions options = new MqttConnectOptions(); + + // 基本连接参数 + options.setCleanSession(mqttProperties.isCleanSession()); + options.setUserName(mqttProperties.getUsername()); + options.setPassword(mqttProperties.getPassword().toCharArray()); + + // 超时和心跳设置 + options.setConnectionTimeout(mqttProperties.getConnectionTimeout()); + options.setKeepAliveInterval(mqttProperties.getKeepAliveInterval()); + + // 自动重连设置 + options.setAutomaticReconnect(mqttProperties.isAutoReconnect()); + + // 遗嘱消息设置(可选) + // options.setWill("client/disconnect", "Client disconnected".getBytes(), 1, false); + + logger.debug("MQTT连接选项配置完成 - 自动重连: {}, 清除会话: {}", + options.isAutomaticReconnect(), options.isCleanSession()); + + return options; + } + + /** + * 订阅主题 + */ + public void subscribe() throws MqttException { + if (client == null || !client.isConnected()) { + logger.warn("MQTT客户端未连接,无法订阅主题"); + return; + } + + String topic = mqttProperties.getTopic(); + int qos = mqttProperties.getQos(); + + client.subscribe(topic, qos); + logger.info("MQTT主题订阅成功 - 主题: {}, QoS: {}", topic, qos); + } + + /** + * 发布消息 + */ + public void publish(String topic, String payload) throws MqttException { + publish(topic, payload, mqttProperties.getQos(), false); + } + + /** + * 发布消息(指定QoS和保留标志) + */ + public void publish(String topic, String payload, int qos, boolean retained) throws MqttException { + if (client == null || !client.isConnected()) { + throw new MqttException(MqttException.REASON_CODE_CLIENT_NOT_CONNECTED); + } + + MqttMessage message = new MqttMessage(); + message.setPayload(payload.getBytes()); + message.setQos(qos); + message.setRetained(retained); + + client.publish(topic, message); + + logger.debug("MQTT消息发布 - 主题: {}, QoS: {}, 保留: {}, 消息长度: {}", + topic, qos, retained, payload.length()); + + // 可选:等待发布完成 + // token.waitForCompletion(); + } + + /** + * 检查连接状态 + */ + public boolean isConnected() { + return client != null && client.isConnected(); + } + + /** + * 获取客户端信息 + */ + public String getClientInfo() { + if (client == null) { + return "MQTT客户端未初始化"; + } + + return String.format("客户端ID: %s, 连接状态: %s, 服务器: %s", + clientId, + client.isConnected() ? "已连接" : "未连接", + mqttProperties.getHost()); + } + + /** + * 启动连接状态监控 + */ + private void startConnectionMonitor() { + scheduler.scheduleWithFixedDelay(() -> { + try { + if (!isConnected()) { + logger.warn("检测到MQTT连接断开,尝试重新连接..."); + reconnect(); + } + } catch (Exception e) { + logger.error("MQTT连接监控异常", e); + } + }, 30, 30, TimeUnit.SECONDS); // 每30秒检查一次连接状态 + + logger.debug("MQTT连接状态监控已启动"); + } + + /** + * 重新连接 + */ + public void reconnect() { + try { + if (client != null && client.isConnected()) { + return; + } + + logger.info("正在重新连接MQTT服务器..."); + + // 先断开现有连接 + disconnect(); + + // 重新连接 + connect(); + subscribe(); + + logger.info("MQTT重新连接成功"); + + } catch (Exception e) { + logger.error("MQTT重新连接失败", e); + // 安排下次重试 + scheduleReconnect(); + } + } + + /** + * 安排重新连接 + */ + private void scheduleReconnect() { + scheduler.schedule(() -> { + logger.info("执行定时重连任务..."); + reconnect(); + }, 60, TimeUnit.SECONDS); // 60秒后重试 + } + + /** + * 断开连接 + */ + public void disconnect() { + try { + if (client != null && client.isConnected()) { + client.disconnect(); + logger.info("MQTT连接已断开"); + } + } catch (MqttException e) { + logger.error("断开MQTT连接失败", e); + } + } + + /** + * 应用关闭时清理资源 + */ + @PreDestroy + public void destroy() { + logger.info("正在关闭MQTT服务..."); + + try { + // 关闭定时任务 + scheduler.shutdown(); + if (!scheduler.awaitTermination(5, TimeUnit.SECONDS)) { + scheduler.shutdownNow(); + } + + // 断开MQTT连接 + if (client != null) { + if (client.isConnected()) { + client.disconnect(); + } + client.close(); + } + + logger.info("MQTT服务已关闭"); + + } catch (Exception e) { + logger.error("关闭MQTT服务时发生错误", e); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/WxNotificationService.java b/src/main/java/com/gxwebsoft/hjm/service/WxNotificationService.java new file mode 100644 index 0000000..42873a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/WxNotificationService.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.hjm.service; + +import com.gxwebsoft.hjm.dto.SubscribeMessageRequest; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; + +import java.util.List; + +/** + * 微信通知服务接口 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +public interface WxNotificationService { + + /** + * 发送微信公众号模板消息 + * + * @param tenantId 租户ID + * @param request 模板消息请求 + * @return 发送结果 + */ + boolean sendTemplateMessage(Integer tenantId, TemplateMessageRequest request); + + /** + * 发送微信小程序订阅消息 + * + * @param tenantId 租户ID + * @param request 订阅消息请求 + * @return 发送结果 + */ + boolean sendSubscribeMessage(Integer tenantId, SubscribeMessageRequest request); + + /** + * 批量发送模板消息 + * + * @param tenantId 租户ID + * @param requests 模板消息请求列表 + * @return 发送结果统计 + */ + BatchSendResult batchSendTemplateMessage(Integer tenantId, List requests); + + /** + * 获取微信公众号模板列表 + * + * @param tenantId 租户ID + * @return 模板列表 + */ + String getTemplateList(Integer tenantId); + + /** + * 批量发送结果 + */ + class BatchSendResult { + private int successCount; + private int failCount; + private int totalCount; + + public BatchSendResult(int successCount, int failCount) { + this.successCount = successCount; + this.failCount = failCount; + this.totalCount = successCount + failCount; + } + + public int getSuccessCount() { + return successCount; + } + + public int getFailCount() { + return failCount; + } + + public int getTotalCount() { + return totalCount; + } + + @Override + public String toString() { + return String.format("总计:%d,成功:%d,失败:%d", totalCount, successCount, failCount); + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmBxLogServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmBxLogServiceImpl.java new file mode 100644 index 0000000..edae174 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmBxLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmBxLogMapper; +import com.gxwebsoft.hjm.service.HjmBxLogService; +import com.gxwebsoft.hjm.entity.HjmBxLog; +import com.gxwebsoft.hjm.param.HjmBxLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_报险记录Service实现 + * + * @author 科技小王子 + * @since 2025-06-06 13:08:29 + */ +@Service +public class HjmBxLogServiceImpl extends ServiceImpl implements HjmBxLogService { + + @Override + public PageResult pageRel(HjmBxLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmBxLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmBxLog getByIdRel(Integer id) { + HjmBxLogParam param = new HjmBxLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCarServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCarServiceImpl.java new file mode 100644 index 0000000..b444b68 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCarServiceImpl.java @@ -0,0 +1,402 @@ +package com.gxwebsoft.hjm.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.support.geo.Point; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.mapper.HjmCarMapper; +import com.gxwebsoft.hjm.service.HjmCarService; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.param.HjmCarParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.hjm.service.HjmFenceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 黄家明_车辆管理Service实现 + * + * @author 科技小王子 + * @since 2025-04-14 16:43:26 + */ +@Service +public class HjmCarServiceImpl extends ServiceImpl implements HjmCarService { + @Resource + private HjmFenceService hjmFenceService; + @Autowired + private HjmCarService hjmCarService; + + + @Override + public PageResult pageRel(HjmCarParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmCarParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmCar getByIdRel(Integer id) { + HjmCarParam param = new HjmCarParam(); + param.setId(id); + final HjmCar hjmCar = param.getOne(baseMapper.selectListRel(param)); + hjmCar.setFence(hjmFenceService.getById(hjmCar.getFenceId())); + return hjmCar; + } + + @Override + public HjmCar getByGpsNo(String gpsNo) { + return baseMapper.getByGpsNo(gpsNo); + } + + @Override + public boolean updateByGpsNo(HjmCar byGpsNo) { + return baseMapper.updateByGpsNo(byGpsNo); + } + + @Override + public HjmCar getByCode(String code) { + final HjmCar byCode = baseMapper.getByCode(code); + + // 检查车辆是否存在 + if (byCode == null) { + return null; + } + + // 检查是否有围栏ID + if (byCode.getFenceId() == null) { + return byCode; + } + + final HjmFence fence = hjmFenceService.getById(byCode.getFenceId()); + byCode.setFence(fence); + + // 检查围栏是否存在 + if (fence == null) { + return byCode; + } + + // 检查车辆坐标是否有效 + if (byCode.getLongitude() == null || byCode.getLatitude() == null || + byCode.getLongitude().trim().isEmpty() || byCode.getLatitude().trim().isEmpty()) { + return byCode; + } + + try { + // 字符串转为浮点 + final double lng = Double.parseDouble(byCode.getLongitude()); + final double lat = Double.parseDouble(byCode.getLatitude()); + Point carPoint = new Point(); + carPoint.setLongitude(lng); + carPoint.setLatitude(lat); + + boolean isInFence = false; + + // 使用多边形围栏判断 + isInFence = checkPolygonFence(carPoint, fence); + + // 将围栏判断结果保存到车辆对象中 + byCode.setInFence(isInFence); + System.out.println("车辆 " + code + " 是否在围栏内: " + isInFence); + byCode.setUpdateTime(DateUtil.date()); + hjmCarService.updateById(byCode); + return byCode; + + } catch (NumberFormatException e) { + System.err.println("车辆坐标格式错误: " + e.getMessage()); + return byCode; + } catch (Exception e) { + System.err.println("判断围栏时发生错误: " + e.getMessage()); + e.printStackTrace(); + return byCode; + } + } + + + + /** + * 判断点是否在多边形内 + * @param point 测试点 + * @param pts 多边形的点 + * @return boolean true:在多边形内, false:在多边形外 + * @throws + * @Title: IsPointInPoly + */ + public static boolean isInPolygon(Point point, List pts) { + + int N = pts.size(); + boolean boundOrVertex = true; + //交叉点数量 + int intersectCount = 0; + //浮点类型计算时候与0比较时候的容差 + double precision = 2e-10; + //临近顶点 + Point p1, p2; + //当前点 + Point p = point; + + p1 = pts.get(0); + for (int i = 1; i <= N; ++i) { + if (p.equals(p1)) { + return boundOrVertex; + } + + p2 = pts.get(i % N); + if (p.getLongitude() < Math.min(p1.getLongitude(), p2.getLongitude()) || p.getLongitude() > Math.max(p1.getLongitude(), p2.getLongitude())) { + p1 = p2; + continue; + } + + //射线穿过算法 + if (p.getLongitude() > Math.min(p1.getLongitude(), p2.getLongitude()) && p.getLongitude() < Math.max(p1.getLongitude(), p2.getLongitude())) { + if (p.getLatitude() <= Math.max(p1.getLatitude(), p2.getLatitude())) { + if (p1.getLongitude() == p2.getLongitude() && p.getLatitude() >= Math.min(p1.getLatitude(), p2.getLatitude())) { + return boundOrVertex; + } + + if (p1.getLatitude() == p2.getLatitude()) { + if (p1.getLatitude() == p.getLatitude()) { + return boundOrVertex; + } else { + ++intersectCount; + } + } else { + double xinters = (p.getLongitude() - p1.getLongitude()) * (p2.getLatitude() - p1.getLatitude()) / (p2.getLongitude() - p1.getLongitude()) + p1.getLatitude(); + if (Math.abs(p.getLatitude() - xinters) < precision) { + return boundOrVertex; + } + + if (p.getLatitude() < xinters) { + ++intersectCount; + } + } + } + } else { + if (p.getLongitude() == p2.getLongitude() && p.getLatitude() <= p2.getLatitude()) { + Point p3 = pts.get((i + 1) % N); + if (p.getLongitude() >= Math.min(p1.getLongitude(), p3.getLongitude()) && p.getLongitude() <= Math.max(p1.getLongitude(), p3.getLongitude())) { + ++intersectCount; + } else { + intersectCount += 2; + } + } + } + p1 = p2; + } + return intersectCount % 2 != 0; + } + + + + /** + * 检查点是否在多边形围栏内 + * @param carPoint 车辆位置点 + * @param fence 围栏信息 + * @return boolean true:在围栏内, false:在围栏外 + */ + public boolean checkPolygonFence(Point carPoint, HjmFence fence) { + if (fence.getPoints() == null || fence.getPoints().trim().isEmpty()) { + System.err.println("多边形围栏点数据为空"); + return false; + } + + try { + final String points = fence.getPoints(); + + // 支持多种分隔符格式:逗号、分号、空格等 + String[] coordinates = parseCoordinates(points); + + // 检查点数据是否为偶数(经度,纬度 成对出现) + if (coordinates.length % 2 != 0) { + System.err.println("多边形围栏点数据格式错误,应为偶数个数值。当前数据: " + points); + return false; + } + + List pts = new ArrayList<>(); + for (int i = 0; i < coordinates.length; i += 2) { + try { + Point point = new Point(); + double lng = Double.parseDouble(coordinates[i].trim()); + double lat = Double.parseDouble(coordinates[i + 1].trim()); + + // 验证坐标范围 + if (lng < -180 || lng > 180) { + System.err.println("经度超出有效范围[-180,180]: " + lng); + return false; + } + if (lat < -90 || lat > 90) { + System.err.println("纬度超出有效范围[-90,90]: " + lat); + return false; + } + + point.setLongitude(lng); + point.setLatitude(lat); + pts.add(point); + + System.out.println("解析坐标点 " + (i/2 + 1) + ": (" + lng + ", " + lat + ")"); + + } catch (NumberFormatException e) { + System.err.println("坐标解析失败,位置 " + (i/2 + 1) + ": [" + coordinates[i] + ", " + coordinates[i + 1] + "]"); + throw e; + } + } + + // 至少需要3个点才能构成多边形 + if (pts.size() < 3) { + System.err.println("多边形围栏至少需要3个点"); + return false; + } + + return isInPolygon(carPoint, pts); + + } catch (NumberFormatException e) { + System.err.println("多边形围栏点坐标格式错误: " + e.getMessage()); + return false; + } catch (Exception e) { + System.err.println("检查多边形围栏时发生错误: " + e.getMessage()); + e.printStackTrace(); + return false; + } + } + + /** + * 解析坐标字符串,支持多种分隔符格式 + * @param coordinatesStr 坐标字符串 + * @return 坐标数组 + */ + private String[] parseCoordinates(String coordinatesStr) { + if (coordinatesStr == null || coordinatesStr.trim().isEmpty()) { + return new String[0]; + } + + // 移除首尾空格 + String cleanStr = coordinatesStr.trim(); + System.out.println("原始坐标数据: " + cleanStr); + + // 检查是否是混合分隔符格式:纬度,经度;纬度,经度;... + if (cleanStr.contains(";") && cleanStr.contains(",")) { + System.out.println("检测到混合分隔符格式(分号分隔点,逗号分隔经纬度)"); + return parseMixedFormat(cleanStr); + } + + // 支持的单一分隔符格式 + String[] coordinates; + + if (cleanStr.contains(";")) { + // 使用分号分隔 + coordinates = cleanStr.split(";"); + System.out.println("使用分号分隔符解析坐标"); + } else if (cleanStr.contains(",")) { + // 使用逗号分隔 + coordinates = cleanStr.split(","); + System.out.println("使用逗号分隔符解析坐标"); + } else { + // 使用空格或制表符分隔 + coordinates = cleanStr.split("\\s+"); + System.out.println("使用空格分隔符解析坐标"); + } + + // 清理每个坐标值的空格 + for (int i = 0; i < coordinates.length; i++) { + coordinates[i] = coordinates[i].trim(); + } + + return coordinates; + } + + /** + * 解析混合分隔符格式:纬度,经度;纬度,经度;... + * @param coordinatesStr 坐标字符串 + * @return 坐标数组(按经度,纬度顺序) + */ + private String[] parseMixedFormat(String coordinatesStr) { + // 先按分号分隔得到各个坐标点 + String[] points = coordinatesStr.split(";"); + System.out.println("分解出 " + points.length + " 个坐标点"); + + // 创建结果数组,每个点有2个坐标值 + String[] coordinates = new String[points.length * 2]; + + for (int i = 0; i < points.length; i++) { + String point = points[i].trim(); + String[] latLng = point.split(","); + + if (latLng.length != 2) { + throw new IllegalArgumentException("坐标点格式错误: " + point + ",应为 '纬度,经度' 格式"); + } + + String lat = latLng[0].trim(); + String lng = latLng[1].trim(); + + // 注意:输入格式是纬度,经度,但我们需要按经度,纬度的顺序存储 + coordinates[i * 2] = lng; // 经度 + coordinates[i * 2 + 1] = lat; // 纬度 + + System.out.println("坐标点 " + (i + 1) + ": 纬度=" + lat + ", 经度=" + lng + " -> 存储为 (" + lng + ", " + lat + ")"); + } + + return coordinates; + } + + /** + * 通用的围栏判断方法(只支持多边形围栏) + * @param carPoint 车辆位置点 + * @param fence 围栏信息 + * @return boolean true:在围栏内, false:在围栏外 + */ + public boolean isPointInFence(Point carPoint, HjmFence fence) { + if (carPoint == null || fence == null) { + return false; + } + + // 只使用多边形围栏判断 + return checkPolygonFence(carPoint, fence); + } + + /** + * 测试坐标解析功能 + * @param coordinatesStr 坐标字符串 + */ + public void testCoordinateParsing(String coordinatesStr) { + System.out.println("=== 测试坐标解析 ==="); + System.out.println("输入: " + coordinatesStr); + + try { + String[] coordinates = parseCoordinates(coordinatesStr); + System.out.println("解析结果: " + java.util.Arrays.toString(coordinates)); + System.out.println("坐标点数量: " + coordinates.length / 2); + + if (coordinates.length % 2 == 0 && coordinates.length >= 6) { + System.out.println("格式验证: ✓ 通过"); + for (int i = 0; i < coordinates.length; i += 2) { + double lng = Double.parseDouble(coordinates[i].trim()); + double lat = Double.parseDouble(coordinates[i + 1].trim()); + System.out.println("最终坐标点 " + (i/2 + 1) + ": 经度=" + lng + ", 纬度=" + lat); + } + } else { + System.out.println("格式验证: ✗ 失败 - 需要至少3个点(6个数值),当前有 " + coordinates.length + " 个数值"); + } + } catch (Exception e) { + System.err.println("解析失败: " + e.getMessage()); + e.printStackTrace(); + } + System.out.println("=================="); + } + + + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmChoicesServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmChoicesServiceImpl.java new file mode 100644 index 0000000..b777b12 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmChoicesServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmChoicesMapper; +import com.gxwebsoft.hjm.service.HjmChoicesService; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.param.HjmChoicesParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_选择题选项Service实现 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Service +public class HjmChoicesServiceImpl extends ServiceImpl implements HjmChoicesService { + + @Override + public PageResult pageRel(HjmChoicesParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmChoicesParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmChoices getByIdRel(Integer id) { + HjmChoicesParam param = new HjmChoicesParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCoursesServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCoursesServiceImpl.java new file mode 100644 index 0000000..78ff215 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmCoursesServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmCoursesMapper; +import com.gxwebsoft.hjm.service.HjmCoursesService; +import com.gxwebsoft.hjm.entity.HjmCourses; +import com.gxwebsoft.hjm.param.HjmCoursesParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_课程Service实现 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Service +public class HjmCoursesServiceImpl extends ServiceImpl implements HjmCoursesService { + + @Override + public PageResult pageRel(HjmCoursesParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmCoursesParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmCourses getByIdRel(Integer id) { + HjmCoursesParam param = new HjmCoursesParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmExamLogServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmExamLogServiceImpl.java new file mode 100644 index 0000000..3ae9dff --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmExamLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmExamLogMapper; +import com.gxwebsoft.hjm.service.HjmExamLogService; +import com.gxwebsoft.hjm.entity.HjmExamLog; +import com.gxwebsoft.hjm.param.HjmExamLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_学习记录Service实现 + * + * @author 科技小王子 + * @since 2025-06-05 14:32:03 + */ +@Service +public class HjmExamLogServiceImpl extends ServiceImpl implements HjmExamLogService { + + @Override + public PageResult pageRel(HjmExamLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmExamLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmExamLog getByIdRel(Integer id) { + HjmExamLogParam param = new HjmExamLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmFenceServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmFenceServiceImpl.java new file mode 100644 index 0000000..4d71a3c --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmFenceServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmFenceMapper; +import com.gxwebsoft.hjm.service.HjmFenceService; +import com.gxwebsoft.hjm.entity.HjmFence; +import com.gxwebsoft.hjm.param.HjmFenceParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_电子围栏Service实现 + * + * @author 科技小王子 + * @since 2025-06-03 02:08:03 + */ +@Service +public class HjmFenceServiceImpl extends ServiceImpl implements HjmFenceService { + + @Override + public PageResult pageRel(HjmFenceParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmFenceParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmFence getByIdRel(Integer id) { + HjmFenceParam param = new HjmFenceParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmGpsLogServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmGpsLogServiceImpl.java new file mode 100644 index 0000000..641afb6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmGpsLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.mapper.HjmGpsLogMapper; +import com.gxwebsoft.hjm.service.HjmGpsLogService; +import com.gxwebsoft.hjm.entity.HjmGpsLog; +import com.gxwebsoft.hjm.param.HjmGpsLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 黄家明_gps轨迹Service实现 + * + * @author 科技小王子 + * @since 2025-06-11 12:03:50 + */ +@Service +public class HjmGpsLogServiceImpl extends ServiceImpl implements HjmGpsLogService { + + @Override + public PageResult pageRel(HjmGpsLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmGpsLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmGpsLog getByIdRel(Integer id) { + HjmGpsLogParam param = new HjmGpsLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmQuestionsServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmQuestionsServiceImpl.java new file mode 100644 index 0000000..50903af --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmQuestionsServiceImpl.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.hjm.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.hjm.entity.HjmChoices; +import com.gxwebsoft.hjm.mapper.HjmQuestionsMapper; +import com.gxwebsoft.hjm.service.HjmChoicesService; +import com.gxwebsoft.hjm.service.HjmQuestionsService; +import com.gxwebsoft.hjm.entity.HjmQuestions; +import com.gxwebsoft.hjm.param.HjmQuestionsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 黄家明_题目Service实现 + * + * @author 科技小王子 + * @since 2025-06-02 12:59:49 + */ +@Service +public class HjmQuestionsServiceImpl extends ServiceImpl implements HjmQuestionsService { + @Resource + private HjmChoicesService hjmChoicesService; + + @Override + public PageResult pageRel(HjmQuestionsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + final Set collectByIds = list.stream().map(HjmQuestions::getId).collect(Collectors.toSet()); + final List choices = hjmChoicesService.list(new LambdaQueryWrapper().in(HjmChoices::getQuestionId, collectByIds)); + final Map> collectByQuestionId = choices.stream().collect(Collectors.groupingBy(HjmChoices::getQuestionId)); + list.forEach(item -> { + final List choicesList = collectByQuestionId.get(item.getId()); + item.setChoicesList(choicesList); + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmQuestionsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmQuestions getByIdRel(Integer id) { + HjmQuestionsParam param = new HjmQuestionsParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/HjmViolationServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmViolationServiceImpl.java new file mode 100644 index 0000000..03fd2e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/HjmViolationServiceImpl.java @@ -0,0 +1,106 @@ +package com.gxwebsoft.hjm.service.impl; + +import cn.hutool.core.util.ObjUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.impl.UserServiceImpl; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.entity.HjmViolation; +import com.gxwebsoft.hjm.mapper.HjmViolationMapper; +import com.gxwebsoft.hjm.param.HjmViolationParam; +import com.gxwebsoft.hjm.service.HjmCarService; +import com.gxwebsoft.hjm.service.HjmViolationService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +/** + * 黄家明_违章记录Service实现 + * + * @author 科技小王子 + * @since 2025-06-20 13:48:43 + */ +@Service +public class HjmViolationServiceImpl extends ServiceImpl implements HjmViolationService { + + @Resource + private HjmCarService hjmCarService; + @Resource + private WxNotificationServiceImpl wxNotificationService; + @Resource + private UserServiceImpl userService; + + @Override + public PageResult pageRel(HjmViolationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HjmViolationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HjmViolation getByIdRel(Integer id) { + HjmViolationParam param = new HjmViolationParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public void send(HjmViolation hjmViolation) { + final HjmCar item = hjmCarService.getByCode(hjmViolation.getCode()); + + // 获取所有的邮政协会/管局工作人员 + final List users = userService.listByAlert(); + if (ObjUtil.isEmpty(item)) { + return; + } + users.forEach(d -> { + item.setToUser(d.getOfficeOpenid()); + item.setAppId("wxd2723d1afd9c4553"); + sendTemplateMessage(item, hjmViolation); + }); + + } + + public void sendTemplateMessage(HjmCar item, HjmViolation violation) { + // 发送模板消息 + final TemplateMessageRequest templateMessageRequest = new TemplateMessageRequest(); + templateMessageRequest.setToUser(item.getToUser()); + templateMessageRequest.setTemplateId("gZshS5yJs47BhIFodo9yenZcmsVwJOCKkL-SYaZTioU"); + final TemplateMessageRequest.MiniProgram miniProgram = new TemplateMessageRequest.MiniProgram(); + miniProgram.setAppid(item.getAppId()); + miniProgram.setPagepath("hjm/violation/detail?id=".concat(item.getCode())); +// miniProgram.setPagepath("hjm/query?id=".concat(item.getCode())); + templateMessageRequest.setMiniprogram(miniProgram); + HashMap map = new HashMap<>(); + map.put("thing7", new TemplateMessageRequest.TemplateDataItem(item.getDriverName())); + map.put("phone_number8", new TemplateMessageRequest.TemplateDataItem(item.getDriverPhone())); + map.put("const4", new TemplateMessageRequest.TemplateDataItem("违章")); + map.put("car_number1", new TemplateMessageRequest.TemplateDataItem(item.getCode())); + // 获取当前时间,格式2024年1月1号 10:20 + map.put("time2", new TemplateMessageRequest.TemplateDataItem( + new SimpleDateFormat("yyyy年M月d日 HH:mm").format(new Date()), "#173177") + ); + System.out.println("map = " + map); + templateMessageRequest.setData(map); + boolean success = wxNotificationService.sendTemplateMessage(10519, templateMessageRequest); + System.out.println("2向 = " + item.getDriverName() + "发送消息成功:" + success); + } + +} diff --git a/src/main/java/com/gxwebsoft/hjm/service/impl/WxNotificationServiceImpl.java b/src/main/java/com/gxwebsoft/hjm/service/impl/WxNotificationServiceImpl.java new file mode 100644 index 0000000..161f412 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/service/impl/WxNotificationServiceImpl.java @@ -0,0 +1,258 @@ +package com.gxwebsoft.hjm.service.impl; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.utils.WxOfficialUtil; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.hjm.dto.SubscribeMessageRequest; +import com.gxwebsoft.hjm.dto.SubscribeMessageRequest.SubscribeDataItem; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest.TemplateDataItem; +import com.gxwebsoft.hjm.service.WxNotificationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * 微信通知服务实现 + * + * @author 科技小王子 + * @since 2025-06-15 + */ +@Slf4j +@Service +public class WxNotificationServiceImpl implements WxNotificationService { + + @Resource + private SettingService settingService; + + @Resource + private WxOfficialUtil wxOfficialUtil; + + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Override + public boolean sendTemplateMessage(Integer tenantId, TemplateMessageRequest request) { + try { + String accessToken = getWxAccessToken(tenantId); + return sendWxTemplateMessage(accessToken, request); + } catch (Exception e) { + log.error("发送模板消息失败", e); + return false; + } + } + + @Override + public boolean sendSubscribeMessage(Integer tenantId, SubscribeMessageRequest request) { + try { + String accessToken = getWxAccessToken(tenantId); + return sendWxSubscribeMessage(accessToken, request); + } catch (Exception e) { + log.error("发送订阅消息失败", e); + return false; + } + } + + @Override + public BatchSendResult batchSendTemplateMessage(Integer tenantId, List requests) { + int successCount = 0; + int failCount = 0; + + try { + String accessToken = getWxAccessToken(tenantId); + + for (TemplateMessageRequest request : requests) { + boolean success = sendWxTemplateMessage(accessToken, request); + if (success) { + successCount++; + } else { + failCount++; + } + + // 避免频率限制,每次发送间隔100ms + Thread.sleep(100); + } + } catch (Exception e) { + log.error("批量发送模板消息失败", e); + failCount += (requests.size() - successCount - failCount); + } + + return new BatchSendResult(successCount, failCount); + } + + @Override + public String getTemplateList(Integer tenantId) { + try { + String accessToken = getWxAccessToken(tenantId); + String url = "https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=" + accessToken; + + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + return response; + } catch (Exception e) { + log.error("获取模板列表失败", e); + return null; + } + } + + /** + * 获取微信公众号Access Token + */ + private String getWxAccessToken(Integer tenantId) { + String cacheKey = "wx_official_access_token:" + tenantId; + + // 先从缓存获取 + String cachedToken = stringRedisTemplate.opsForValue().get(cacheKey); + if (cachedToken != null) { + return cachedToken; + } + + // 缓存中没有,重新获取 + try { + // 获取微信公众号配置 + String appId = "wx100365d412078b8c"; + String appSecret = "bba73c9fc8f5f7d0edc4de50786a8c62"; + + if (appId == null || appSecret == null) { + throw new RuntimeException("微信公众号配置不完整"); + } + + + + // 调用微信API获取access_token + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + + appId + "&secret=" + appSecret; + + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + + String accessToken = jsonObject.getString("access_token"); + Integer expiresIn = jsonObject.getInteger("expires_in"); + + if (accessToken == null) { + String errorMsg = jsonObject.getString("errmsg"); + throw new RuntimeException("获取access_token失败: " + errorMsg); + } + + // 缓存access_token,提前5分钟过期 + int cacheSeconds = expiresIn != null ? expiresIn - 300 : 7200 - 300; + stringRedisTemplate.opsForValue().set(cacheKey, accessToken, cacheSeconds, TimeUnit.SECONDS); + + return accessToken; + + } catch (Exception e) { + log.error("获取微信公众号access_token失败", e); + throw new RuntimeException("获取access_token失败: " + e.getMessage()); + } + } + + /** + * 发送微信模板消息 + */ + private boolean sendWxTemplateMessage(String accessToken, TemplateMessageRequest request) { + try { + String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken; + + // 构建请求数据 + JSONObject data = new JSONObject(); + data.put("touser", request.getToUser()); + data.put("template_id", request.getTemplateId()); + data.put("url", request.getUrl()); + data.put("topcolor", request.getTopColor()); + + // 构建模板数据 + JSONObject templateData = new JSONObject(); + if (request.getData() != null) { + for (Map.Entry entry : request.getData().entrySet()) { + JSONObject item = new JSONObject(); + item.put("value", entry.getValue().getValue()); + item.put("color", entry.getValue().getColor()); + templateData.put(entry.getKey(), item); + } + } + data.put("data", templateData); + + // 小程序跳转 + if (request.getMiniprogram() != null) { + JSONObject miniprogram = new JSONObject(); + miniprogram.put("appid", request.getMiniprogram().getAppid()); + miniprogram.put("pagepath", request.getMiniprogram().getPagepath()); + data.put("miniprogram", miniprogram); + } + + // 发送请求 + String response = HttpUtil.post(url, data.toJSONString()); + JSONObject result = JSONObject.parseObject(response); + + Integer errcode = result.getInteger("errcode"); + String errmsg = result.getString("errmsg"); + + if (errcode != null && errcode == 0) { + log.info("模板消息发送成功: {}", result.getString("msgid")); + return true; + } else { + log.error("模板消息发送失败: errcode={}, errmsg={}", errcode, errmsg); + return false; + } + + } catch (Exception e) { + log.error("发送微信模板消息异常", e); + return false; + } + } + + /** + * 发送微信订阅消息 + */ + private boolean sendWxSubscribeMessage(String accessToken, SubscribeMessageRequest request) { + try { + String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken; + + // 构建请求数据 + JSONObject data = new JSONObject(); + data.put("touser", request.getToUser()); + data.put("template_id", request.getTemplateId()); + data.put("page", request.getPage()); + data.put("miniprogram_state", request.getMiniprogramState()); + data.put("lang", request.getLang()); + + // 构建订阅消息数据 + JSONObject subscribeData = new JSONObject(); + if (request.getData() != null) { + for (Map.Entry entry : request.getData().entrySet()) { + JSONObject item = new JSONObject(); + item.put("value", entry.getValue().getValue()); + subscribeData.put(entry.getKey(), item); + } + } + data.put("data", subscribeData); + + // 发送请求 + String response = HttpUtil.post(url, data.toJSONString()); + JSONObject result = JSONObject.parseObject(response); + + Integer errcode = result.getInteger("errcode"); + String errmsg = result.getString("errmsg"); + + if (errcode != null && errcode == 0) { + log.info("订阅消息发送成功"); + return true; + } else { + log.error("订阅消息发送失败: errcode={}, errmsg={}", errcode, errmsg); + return false; + } + + } catch (Exception e) { + log.error("发送微信订阅消息异常", e); + return false; + } + } +} diff --git a/src/main/java/com/gxwebsoft/hjm/task/PushHjmFenceOutController.java b/src/main/java/com/gxwebsoft/hjm/task/PushHjmFenceOutController.java new file mode 100644 index 0000000..3ba7d87 --- /dev/null +++ b/src/main/java/com/gxwebsoft/hjm/task/PushHjmFenceOutController.java @@ -0,0 +1,97 @@ +package com.gxwebsoft.hjm.task; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.hjm.dto.TemplateMessageRequest; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.service.HjmCarService; +import com.gxwebsoft.hjm.service.WxNotificationService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; + +/** + * 定时任务 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Api(tags = "定时任务") +@RestController +@RequestMapping("/api/hjm/scheduling") +public class PushHjmFenceOutController extends BaseController { + @Resource + private HjmCarService hjmCarService; + @Resource + private UserService userService; + @Resource + private WxNotificationService wxNotificationService; + @Value("${spring.profiles.active}") + String active; + + /** + * 定时推送订阅消息 + * @Scheduled(fixedDelay = 2000, initialDelay = 2000) + * @Scheduled(cron = "0 0 9 * * ?") + */ + @Scheduled(cron = "0 0/10 * * * ?") + public void index() { + final List list = hjmCarService.list(new LambdaQueryWrapper() + .eq(HjmCar::getStatus, 1) + .eq(HjmCar::getDeleted, 0) + .eq(HjmCar::getInFence, false) + ); + + // 开发环境 + if (active.equals("dev")){ + return; + } + + // 获取所有的邮政协会/管局工作人员 + final List users = userService.listByAlert(); + + list.forEach(item -> { + // 执行推送 + users.forEach(d -> { + if(StrUtil.isNotBlank(d.getOfficeOpenid())){ + item.setToUser(d.getOfficeOpenid()); + item.setAppId("wxd2723d1afd9c4553"); + sendTemplateMessage(item); + } + }); + }); + } + + public void sendTemplateMessage(HjmCar item) { + // 发送模板消息 + final TemplateMessageRequest templateMessageRequest = new TemplateMessageRequest(); + templateMessageRequest.setToUser(item.getToUser()); + templateMessageRequest.setTemplateId("oMckHaNgNT-ivInYF5DtCcqyd9O-i1hP_G0jQALsx54"); +// templateMessageRequest.setUrl("https://mp.websoft.top"); + final TemplateMessageRequest.MiniProgram miniProgram = new TemplateMessageRequest.MiniProgram(); + miniProgram.setAppid(item.getAppId()); + miniProgram.setPagepath("hjm/query?id=".concat(item.getCode())); + templateMessageRequest.setMiniprogram(miniProgram); + HashMap map = new HashMap<>(); + map.put("phrase6", new TemplateMessageRequest.TemplateDataItem(item.getDriverName())); + map.put("time4", new TemplateMessageRequest.TemplateDataItem( + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime()), "#173177")); + map.put("phrase7", new TemplateMessageRequest.TemplateDataItem("离开围栏")); + map.put("thing11", new TemplateMessageRequest.TemplateDataItem(item.getFenceName())); + map.put("car_number12", new TemplateMessageRequest.TemplateDataItem(item.getCode())); + templateMessageRequest.setData(map); + boolean success = wxNotificationService.sendTemplateMessage(10519, templateMessageRequest); + System.out.println("向 = " + item.getDriverName() + "发送消息成功:" + success); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/HouseInfoController.java b/src/main/java/com/gxwebsoft/house/controller/HouseInfoController.java new file mode 100644 index 0000000..1a637c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/HouseInfoController.java @@ -0,0 +1,147 @@ +package com.gxwebsoft.house.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.house.entity.HouseLikeLog; +import com.gxwebsoft.house.entity.HouseViewsLog; +import com.gxwebsoft.house.service.HouseInfoService; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.param.HouseInfoParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.house.service.HouseLikeLogService; +import com.gxwebsoft.house.service.HouseViewsLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 房源信息表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Api(tags = "房源信息表管理") +@RestController +@RequestMapping("/api/house/house-info") +public class HouseInfoController extends BaseController { + @Resource + private HouseInfoService houseInfoService; + @Resource + private HouseLikeLogService houseLikeLogService; + @Resource + private HouseViewsLogService houseViewsLogService; + + @ApiOperation("分页查询房源信息表") + @GetMapping("/page") + public ApiResult> page(HouseInfoParam param) { + // 使用关联查询 + return success(houseInfoService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('house:houseInfo:list')") + @ApiOperation("查询全部房源信息表") + @GetMapping() + public ApiResult> list(HouseInfoParam param) { + // 使用关联查询 + return success(houseInfoService.listRel(param)); + } + + @ApiOperation("根据id查询房源信息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + HouseInfo byIdRel = houseInfoService.getByIdRel(id); + Integer loginUserId = getLoginUserId(); + if(loginUserId != null) { + // 是否喜欢 + HouseLikeLog log = houseLikeLogService.getByIdRel(id, loginUserId); + byIdRel.setLiked(log != null); + // 添加浏览记录 + houseViewsLogService.add(byIdRel, loginUserId); + } + // 使用关联查询 + return success(byIdRel); + } + + @PreAuthorize("hasAuthority('house:houseInfo:save')") + @ApiOperation("添加房源信息表") + @PostMapping() + public ApiResult save(@RequestBody HouseInfo houseInfo) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + houseInfo.setUserId(loginUser.getUserId()); + } + if (houseInfoService.save(houseInfo)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseInfo:update')") + @ApiOperation("修改房源信息表") + @PutMapping() + public ApiResult update(@RequestBody HouseInfo houseInfo) { + if (houseInfoService.updateById(houseInfo)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseInfo:remove')") + @ApiOperation("删除房源信息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (houseInfoService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:houseInfo:save')") + @ApiOperation("批量添加房源信息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (houseInfoService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseInfo:update')") + @ApiOperation("批量修改房源信息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(houseInfoService, "house_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseInfo:remove')") + @ApiOperation("批量删除房源信息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (houseInfoService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("获取海报地址") + @GetMapping("/generatePoster/{id}") + public ApiResult generatePoster(@PathVariable("id") Integer id) throws Exception { + final HouseInfo houseInfo = houseInfoService.getOne(new LambdaQueryWrapper().eq(HouseInfo::getHouseId, id).last("limit 1")); + return success("生成房源海报",houseInfoService.generatePoster(houseInfo)); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/HouseLikeLogController.java b/src/main/java/com/gxwebsoft/house/controller/HouseLikeLogController.java new file mode 100644 index 0000000..6543b45 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/HouseLikeLogController.java @@ -0,0 +1,119 @@ +package com.gxwebsoft.house.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.house.service.HouseLikeLogService; +import com.gxwebsoft.house.entity.HouseLikeLog; +import com.gxwebsoft.house.param.HouseLikeLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 房源点赞表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Api(tags = "房源点赞表管理") +@RestController +@RequestMapping("/api/house/house-like-log") +public class HouseLikeLogController extends BaseController { + @Resource + private HouseLikeLogService houseLikeLogService; + + @ApiOperation("分页查询房源点赞表") + @GetMapping("/page") + public ApiResult> page(HouseLikeLogParam param) { + // 使用关联查询 + return success(houseLikeLogService.pageRel(param)); + } + + @ApiOperation("查询全部房源点赞表") + @GetMapping() + public ApiResult> list(HouseLikeLogParam param) { + // 使用关联查询 + return success(houseLikeLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('house:houseLikeLog:list')") + @ApiOperation("根据id查询房源点赞表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(houseLikeLogService.getById(id)); + } + + @ApiOperation("添加房源点赞表") + @PostMapping() + public ApiResult save(@RequestBody HouseLikeLog houseLikeLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + houseLikeLog.setUserId(loginUser.getUserId()); + } + if (houseLikeLogService.save(houseLikeLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('house:houseLikeLog:update')") + @ApiOperation("修改房源点赞表") + @PutMapping() + public ApiResult update(@RequestBody HouseLikeLog houseLikeLog) { + if (houseLikeLogService.updateById(houseLikeLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseLikeLog:remove')") + @ApiOperation("删除房源点赞表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (houseLikeLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:houseLikeLog:save')") + @ApiOperation("批量添加房源点赞表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (houseLikeLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseLikeLog:update')") + @ApiOperation("批量修改房源点赞表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(houseLikeLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseLikeLog:remove')") + @ApiOperation("批量删除房源点赞表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (houseLikeLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/HouseReservationController.java b/src/main/java/com/gxwebsoft/house/controller/HouseReservationController.java new file mode 100644 index 0000000..e68c418 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/HouseReservationController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.house.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.house.service.HouseReservationService; +import com.gxwebsoft.house.entity.HouseReservation; +import com.gxwebsoft.house.param.HouseReservationParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 预约记录表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Api(tags = "预约记录表管理") +@RestController +@RequestMapping("/api/house/house-reservation") +public class HouseReservationController extends BaseController { + @Resource + private HouseReservationService houseReservationService; + + @ApiOperation("分页查询预约记录表") + @GetMapping("/page") + public ApiResult> page(HouseReservationParam param) { + // 使用关联查询 + return success(houseReservationService.pageRel(param)); + } + + @ApiOperation("查询全部预约记录表") + @GetMapping() + public ApiResult> list(HouseReservationParam param) { + // 使用关联查询 + return success(houseReservationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('house:houseReservation:list')") + @ApiOperation("根据id查询预约记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(houseReservationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('house:houseReservation:save')") + @ApiOperation("添加预约记录表") + @PostMapping() + public ApiResult save(@RequestBody HouseReservation houseReservation) { +// 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + houseReservation.setUserId(loginUser.getUserId()); + } + if (houseReservationService.count(new LambdaQueryWrapper().eq(HouseReservation::getHouseId,houseReservation.getHouseId()).eq(HouseReservation::getUserId,loginUser.getUserId()).eq(HouseReservation::getStatus,0)) > 0){ + return fail("请勿重复提交"); + } + if (houseReservationService.save(houseReservation)) { + return success("提交成功"); + } + return fail("提交失败"); + } + + @PreAuthorize("hasAuthority('house:houseReservation:update')") + @ApiOperation("修改预约记录表") + @PutMapping() + public ApiResult update(@RequestBody HouseReservation houseReservation) { + if (houseReservationService.updateById(houseReservation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseReservation:remove')") + @ApiOperation("删除预约记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (houseReservationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:houseReservation:save')") + @ApiOperation("批量添加预约记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (houseReservationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseReservation:update')") + @ApiOperation("批量修改预约记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(houseReservationService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseReservation:remove')") + @ApiOperation("批量删除预约记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (houseReservationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/HouseUserController.java b/src/main/java/com/gxwebsoft/house/controller/HouseUserController.java new file mode 100644 index 0000000..8e0b01e --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/HouseUserController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.house.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.house.service.HouseUserService; +import com.gxwebsoft.house.entity.HouseUser; +import com.gxwebsoft.house.param.HouseUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +@Api(tags = "用户表管理") +@RestController +@RequestMapping("/api/house/house-user") +public class HouseUserController extends BaseController { + @Resource + private HouseUserService houseUserService; + + @ApiOperation("分页查询用户表") + @GetMapping("/page") + public ApiResult> page(HouseUserParam param) { + // 使用关联查询 + return success(houseUserService.pageRel(param)); + } + + @ApiOperation("查询全部用户表") + @GetMapping() + public ApiResult> list(HouseUserParam param) { + // 使用关联查询 + return success(houseUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('house:houseUser:list')") + @ApiOperation("根据id查询用户表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(houseUserService.getByIdRel(id)); + } + + @ApiOperation("添加用户表") + @PostMapping() + public ApiResult save(@RequestBody HouseUser houseUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + houseUser.setUserId(loginUser.getUserId()); + } + if (houseUserService.save(houseUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改用户表") + @PutMapping() + public ApiResult update(@RequestBody HouseUser houseUser) { + if (houseUserService.updateById(houseUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除用户表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (houseUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加用户表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (houseUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改用户表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(houseUserService, "user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除用户表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (houseUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/HouseViewsLogController.java b/src/main/java/com/gxwebsoft/house/controller/HouseViewsLogController.java new file mode 100644 index 0000000..cfb123e --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/HouseViewsLogController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.house.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.house.service.HouseViewsLogService; +import com.gxwebsoft.house.entity.HouseViewsLog; +import com.gxwebsoft.house.param.HouseViewsLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 看房记录表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Api(tags = "看房记录表管理") +@RestController +@RequestMapping("/api/house/house-views-log") +public class HouseViewsLogController extends BaseController { + @Resource + private HouseViewsLogService houseViewsLogService; + + @ApiOperation("分页查询看房记录表") + @GetMapping("/page") + public ApiResult> page(HouseViewsLogParam param) { + // 使用关联查询 + return success(houseViewsLogService.pageRel(param)); + } + + @ApiOperation("查询全部看房记录表") + @GetMapping() + public ApiResult> list(HouseViewsLogParam param) { + // 使用关联查询 + return success(houseViewsLogService.listRel(param)); + } + + @ApiOperation("根据id查询看房记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(houseViewsLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:save')") + @ApiOperation("添加看房记录表") + @PostMapping() + public ApiResult save(@RequestBody HouseViewsLog houseViewsLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + houseViewsLog.setUserId(loginUser.getUserId()); + } + if (houseViewsLogService.save(houseViewsLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:update')") + @ApiOperation("修改看房记录表") + @PutMapping() + public ApiResult update(@RequestBody HouseViewsLog houseViewsLog) { + if (houseViewsLogService.updateById(houseViewsLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:remove')") + @ApiOperation("删除看房记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (houseViewsLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:save')") + @ApiOperation("批量添加看房记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (houseViewsLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:update')") + @ApiOperation("批量修改看房记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(houseViewsLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:houseViewsLog:remove')") + @ApiOperation("批量删除看房记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (houseViewsLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseFile.java b/src/main/java/com/gxwebsoft/house/entity/HouseFile.java new file mode 100644 index 0000000..fe40421 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseFile.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + * 看房记录表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseFiles对象", description = "房源图片") +public class HouseFile implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文件大小") + private Integer size; + + @ApiModelProperty(value = "图片类型") + private String type; + + @ApiModelProperty(value = "图片链接") + private String url; + + @ApiModelProperty(value = "状态") + private String status; + + @ApiModelProperty(value = "描述") + private String message; +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseFiles.java b/src/main/java/com/gxwebsoft/house/entity/HouseFiles.java new file mode 100644 index 0000000..9b981a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseFiles.java @@ -0,0 +1,29 @@ +package com.gxwebsoft.house.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 看房记录表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseFiles对象", description = "房源图片") +public class HouseFiles implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文件列表") + private List files; +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseInfo.java b/src/main/java/com/gxwebsoft/house/entity/HouseInfo.java new file mode 100644 index 0000000..7f2c953 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseInfo.java @@ -0,0 +1,176 @@ +package com.gxwebsoft.house.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 房源信息表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseInfo对象", description = "房源信息表") +public class HouseInfo implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "house_id", type = IdType.AUTO) + private Integer houseId; + + @ApiModelProperty(value = "房源标题") + private String houseTitle; + + @ApiModelProperty(value = "房产所在的城市") + private String cityByHouse; + + @ApiModelProperty(value = "户型") + private String houseType; + + @ApiModelProperty(value = "租赁方式") + private String leaseMethod; + + @ApiModelProperty(value = "租金") + private BigDecimal rent; + + @ApiModelProperty(value = "月租金") + private BigDecimal monthlyRent; + + @ApiModelProperty(value = "佣金") + private BigDecimal commission; + + @ApiModelProperty(value = "物业费") + private BigDecimal propertyFees; + + @ApiModelProperty(value = "面积") + private String extent; + + @ApiModelProperty(value = "楼层") + private String floor; + + @ApiModelProperty(value = "房号") + private String roomNumber; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "进入房屋的密码") + private String password; + + @ApiModelProperty(value = "房屋朝向") + private String toward; + + @ApiModelProperty(value = "房屋标签") + private String houseLabel; + + @ApiModelProperty(value = "办公室配套") + private String supporting; + + @ApiModelProperty(value = "房源视频") + private String videoUrl; + + @ApiModelProperty(value = "图片附件") + private String files; + + @ApiModelProperty(value = "房源介绍") + private String content; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否必看") + private Integer mustSee; + + @ApiModelProperty(value = "是否可溢价") + private String premium; + + @ApiModelProperty(value = "租期") + private String tenancy; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "状态 10待审核 20驳回 30通过") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "用户等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "是否选中") + @TableField(exist = false) + private Boolean selected; + + @ApiModelProperty(value = "是否喜欢") + @TableField(exist = false) + private Boolean liked; + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseLikeLog.java b/src/main/java/com/gxwebsoft/house/entity/HouseLikeLog.java new file mode 100644 index 0000000..36b7a07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseLikeLog.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.house.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 房源点赞表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseLikeLog对象", description = "房源点赞表") +public class HouseLikeLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "房源ID") + private Integer houseId; + + @ApiModelProperty(value = "房主ID") + private Integer houseUserId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "删除") + @TableLogic + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseReservation.java b/src/main/java/com/gxwebsoft/house/entity/HouseReservation.java new file mode 100644 index 0000000..a99a8a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseReservation.java @@ -0,0 +1,111 @@ +package com.gxwebsoft.house.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 预约记录表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseReservation对象", description = "预约记录表") +public class HouseReservation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "付款金额") + private BigDecimal money; + + @ApiModelProperty(value = "房源ID") + private Integer houseId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "付款时间") + private Date payTime; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + private Integer payStatus; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseUser.java b/src/main/java/com/gxwebsoft/house/entity/HouseUser.java new file mode 100644 index 0000000..981107e --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseUser.java @@ -0,0 +1,202 @@ +package com.gxwebsoft.house.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户表 + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseUser对象", description = "用户表") +public class HouseUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "用户id") + @TableId(value = "user_id", type = IdType.AUTO) + private Integer userId; + + @ApiModelProperty(value = "用户类型,0个人用户 6开发者 10企业") + private Integer type; + + @ApiModelProperty(value = "账号") + private String username; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "性别 1男 2女") + private Integer sex; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "注册来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "邮箱是否验证, 0否, 1是") + private Integer emailVerified; + + @ApiModelProperty(value = "别名") + private String alias; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "单位姓名") + private String companyName; + + @ApiModelProperty(value = "证件号码") + private String idCard; + + @ApiModelProperty(value = "出生日期") + private LocalDate birthday; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "用户可用余额") + private BigDecimal balance; + + @ApiModelProperty(value = "用户可用积分") + private Integer points; + + @ApiModelProperty(value = "用户总支付的金额") + private BigDecimal payMoney; + + @ApiModelProperty(value = "实际消费的金额(不含退款)") + private BigDecimal expendMoney; + + @ApiModelProperty(value = "会员等级ID") + private Integer gradeId; + + @ApiModelProperty(value = "个人简介") + private String introduction; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "背景图") + private String bgImage; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "用户编码") + private String userCode; + + @ApiModelProperty(value = "是否已实名认证") + private Integer certification; + + @ApiModelProperty(value = "兴趣爱好") + private String interest; + + @ApiModelProperty(value = "身高") + private String height; + + @ApiModelProperty(value = "体重") + private String weight; + + @ApiModelProperty(value = "月薪") + private String monthlyPay; + + @ApiModelProperty(value = "学历") + private String education; + + @ApiModelProperty(value = "职业") + private String vocation; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty(value = "是否线下会员") + private Boolean offline; + + @ApiModelProperty(value = "关注数") + private Integer followers; + + @ApiModelProperty(value = "粉丝数") + private Integer fans; + + @ApiModelProperty(value = "点赞数") + private Integer likes; + + @ApiModelProperty(value = "评论数") + private Integer commentNumbers; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0在线, 1离线") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "最后结算时间") + private Date settlementTime; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/HouseViewsLog.java b/src/main/java/com/gxwebsoft/house/entity/HouseViewsLog.java new file mode 100644 index 0000000..d8c50db --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/HouseViewsLog.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.house.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 看房记录表 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HouseViewsLog对象", description = "看房记录表") +public class HouseViewsLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "房源ID") + private Integer houseId; + + @ApiModelProperty(value = "房主ID") + private Integer houseUserId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "删除") + @TableLogic + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/HouseInfoMapper.java b/src/main/java/com/gxwebsoft/house/mapper/HouseInfoMapper.java new file mode 100644 index 0000000..3a15558 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/HouseInfoMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.param.HouseInfoParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 房源信息表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +public interface HouseInfoMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HouseInfoParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HouseInfoParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/HouseLikeLogMapper.java b/src/main/java/com/gxwebsoft/house/mapper/HouseLikeLogMapper.java new file mode 100644 index 0000000..ea43c42 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/HouseLikeLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.yulichang.base.MPJBaseMapper; +import com.gxwebsoft.house.entity.HouseLikeLog; +import com.gxwebsoft.house.param.HouseLikeLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 房源点赞表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +public interface HouseLikeLogMapper extends MPJBaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HouseLikeLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HouseLikeLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/HouseReservationMapper.java b/src/main/java/com/gxwebsoft/house/mapper/HouseReservationMapper.java new file mode 100644 index 0000000..aa3b3fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/HouseReservationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.house.entity.HouseReservation; +import com.gxwebsoft.house.param.HouseReservationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 预约记录表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +public interface HouseReservationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HouseReservationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HouseReservationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/HouseUserMapper.java b/src/main/java/com/gxwebsoft/house/mapper/HouseUserMapper.java new file mode 100644 index 0000000..901c5ed --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/HouseUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.house.entity.HouseUser; +import com.gxwebsoft.house.param.HouseUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +public interface HouseUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HouseUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HouseUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/HouseViewsLogMapper.java b/src/main/java/com/gxwebsoft/house/mapper/HouseViewsLogMapper.java new file mode 100644 index 0000000..32f7df7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/HouseViewsLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.yulichang.base.MPJBaseMapper; +import com.gxwebsoft.house.entity.HouseViewsLog; +import com.gxwebsoft.house.param.HouseViewsLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 看房记录表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +public interface HouseViewsLogMapper extends MPJBaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HouseViewsLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HouseViewsLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/HouseInfoMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseInfoMapper.xml new file mode 100644 index 0000000..b30aea7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseInfoMapper.xml @@ -0,0 +1,174 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar,b.grade_id, + c.name as gradeName + FROM house_info a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + LEFT JOIN shop_user_grade c ON b.grade_id = c.grade_id + + + AND a.house_id = #{param.houseId} + + + AND a.house_title LIKE CONCAT('%', #{param.houseTitle}, '%') + + + AND a.city_by_house LIKE CONCAT('%', #{param.cityByHouse}, '%') + + + AND a.house_type LIKE CONCAT('%', #{param.houseType}, '%') + + + AND a.lease_method LIKE CONCAT('%', #{param.leaseMethod}, '%') + + + AND a.rent = #{param.rent} + + + AND a.monthly_rent = #{param.monthlyRent} + + + AND a.extent >= #{param.extentStart} + + + AND a.extent <= #{param.extentEnd} + + + AND a.floor LIKE CONCAT('%', #{param.floor}, '%') + + + AND a.room_number LIKE CONCAT('%', #{param.roomNumber}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.toward LIKE CONCAT('%', #{param.toward}, '%') + + + AND a.house_label LIKE CONCAT('%', #{param.houseLabel}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.area LIKE CONCAT('%', #{param.area}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.recommend = #{param.recommend} + + + AND a.must_see = #{param.mustSee} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + + + + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + AND ( + a.house_title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.house_id = #{param.keywords} + OR b.nickname = #{param.keywords} + OR a.room_number LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + a.sort_number asc, + + + a.create_time desc, + + + a.monthly_rent asc, + + + a.monthly_rent desc, + + + a.extent asc, + + + a.extent desc, + + + ABS(a.monthly_rent - #{param.priceScene}), + + + + ABS(a.extent - #{param.extentScene}), + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/HouseLikeLogMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseLikeLogMapper.xml new file mode 100644 index 0000000..5d7f6fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseLikeLogMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.* + FROM house_like_log a + + + AND a.id = #{param.id} + + + AND a.house_id = #{param.houseId} + + + AND a.house_user_id = #{param.houseUserId} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/HouseReservationMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseReservationMapper.xml new file mode 100644 index 0000000..093c28b --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseReservationMapper.xml @@ -0,0 +1,99 @@ + + + + + + + SELECT a.* + FROM house_reservation a + + + AND a.log_id = #{param.logId} + + + AND a.log_no LIKE CONCAT('%', #{param.logNo}, '%') + + + AND a.type = #{param.type} + + + AND a.money = #{param.money} + + + AND a.house_id = #{param.houseId} + + + AND a.user_id = #{param.userId} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.area LIKE CONCAT('%', #{param.area}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.is_settled = #{param.isSettled} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/HouseUserMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseUserMapper.xml new file mode 100644 index 0000000..0af9ccd --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseUserMapper.xml @@ -0,0 +1,202 @@ + + + + + + + SELECT a.* + FROM house_user a + + + AND a.user_id = #{param.userId} + + + AND a.type = #{param.type} + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.sex = #{param.sex} + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.email_verified = #{param.emailVerified} + + + AND a.alias LIKE CONCAT('%', #{param.alias}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%') + + + AND a.birthday LIKE CONCAT('%', #{param.birthday}, '%') + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.balance = #{param.balance} + + + AND a.points = #{param.points} + + + AND a.pay_money = #{param.payMoney} + + + AND a.expend_money = #{param.expendMoney} + + + AND a.grade_id = #{param.gradeId} + + + AND a.introduction LIKE CONCAT('%', #{param.introduction}, '%') + + + AND a.organization_id = #{param.organizationId} + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.bg_image LIKE CONCAT('%', #{param.bgImage}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.customer_id = #{param.customerId} + + + AND a.user_code LIKE CONCAT('%', #{param.userCode}, '%') + + + AND a.certification = #{param.certification} + + + AND a.interest LIKE CONCAT('%', #{param.interest}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.weight LIKE CONCAT('%', #{param.weight}, '%') + + + AND a.monthly_pay LIKE CONCAT('%', #{param.monthlyPay}, '%') + + + AND a.education LIKE CONCAT('%', #{param.education}, '%') + + + AND a.vocation LIKE CONCAT('%', #{param.vocation}, '%') + + + AND a.age = #{param.age} + + + AND a.offline = #{param.offline} + + + AND a.followers = #{param.followers} + + + AND a.fans = #{param.fans} + + + AND a.likes = #{param.likes} + + + AND a.comment_numbers = #{param.commentNumbers} + + + AND a.recommend = #{param.recommend} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.settlement_time LIKE CONCAT('%', #{param.settlementTime}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR a.user_id = #{param.keywords} + OR b.nickname = #{param.keywords} + OR a.phone = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/HouseViewsLogMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseViewsLogMapper.xml new file mode 100644 index 0000000..53fcf8a --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/HouseViewsLogMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.* + FROM house_views_log a + + + AND a.id = #{param.id} + + + AND a.house_id = #{param.houseId} + + + AND a.house_user_id = #{param.houseUserId} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/param/HouseInfoParam.java b/src/main/java/com/gxwebsoft/house/param/HouseInfoParam.java new file mode 100644 index 0000000..750a0bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/HouseInfoParam.java @@ -0,0 +1,173 @@ +package com.gxwebsoft.house.param; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 房源信息表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HouseInfoParam对象", description = "房源信息表查询参数") +public class HouseInfoParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "房源标题") + private String houseTitle; + + @ApiModelProperty(value = "房产所在的城市") + private String cityByHouse; + + @ApiModelProperty(value = "户型") + private String houseType; + + @ApiModelProperty(value = "租赁方式") + private String leaseMethod; + + @ApiModelProperty(value = "租金") + @QueryField(type = QueryType.EQ) + private BigDecimal rent; + + @ApiModelProperty(value = "面积起始值") + @QueryField(type = QueryType.GE) + private Integer extentStart; + + @ApiModelProperty(value = "面积结束值") + @QueryField(type = QueryType.LE) + private Integer extentEnd; + + @ApiModelProperty(value = "月租金") + @QueryField(type = QueryType.EQ) + private BigDecimal monthlyRent; + + @ApiModelProperty(value = "物业费") + @QueryField(type = QueryType.EQ) + private BigDecimal propertyFees; + + @ApiModelProperty(value = "面积") + private String extent; + + @ApiModelProperty(value = "楼层") + private String floor; + + @ApiModelProperty(value = "房号") + private String roomNumber; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "进入房屋的密码") + private String password; + + @ApiModelProperty(value = "房屋朝向") + private String toward; + + @ApiModelProperty(value = "房屋标签") + private String houseLabel; + + @ApiModelProperty(value = "图片附件") + private String files; + + @ApiModelProperty(value = "房源介绍") + private String content; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "状态 10待审核 20驳回 30通过") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "价格起始值") + @TableField(exist = false) + private String priceScene; + + @ApiModelProperty(value = "面积筛选") + @TableField(exist = false) + private String extentScene; + + @ApiModelProperty(value = "排序") + @TableField(exist = false) + private String sortScene; + + @ApiModelProperty(value = "是否推荐") + @TableField(exist = false) + private Integer recommend; + + @ApiModelProperty(value = "是否必看") + @TableField(exist = false) + private Integer mustSee; + + @ApiModelProperty(value = "是否可溢价") + @TableField(exist = false) + private String premium; + +} diff --git a/src/main/java/com/gxwebsoft/house/param/HouseLikeLogParam.java b/src/main/java/com/gxwebsoft/house/param/HouseLikeLogParam.java new file mode 100644 index 0000000..77e1d91 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/HouseLikeLogParam.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.house.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 房源点赞表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HouseLikeLogParam对象", description = "房源点赞表查询参数") +public class HouseLikeLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "房源ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "房主ID") + @QueryField(type = QueryType.EQ) + private Integer houseUserId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "删除") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/house/param/HouseReservationParam.java b/src/main/java/com/gxwebsoft/house/param/HouseReservationParam.java new file mode 100644 index 0000000..6fb65e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/HouseReservationParam.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.house.param; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 预约记录表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HouseReservationParam对象", description = "预约记录表查询参数") +public class HouseReservationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "付款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "房源ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "付款时间") + private String payTime; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/house/param/HouseUserParam.java b/src/main/java/com/gxwebsoft/house/param/HouseUserParam.java new file mode 100644 index 0000000..7c6a72a --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/HouseUserParam.java @@ -0,0 +1,210 @@ +package com.gxwebsoft.house.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HouseUserParam对象", description = "用户表查询参数") +public class HouseUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "用户类型,0个人用户 6开发者 10企业") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "账号") + private String username; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "性别 1男 2女") + @QueryField(type = QueryType.EQ) + private Integer sex; + + @ApiModelProperty(value = "职务") + private String position; + + @ApiModelProperty(value = "注册来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "邮箱是否验证, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer emailVerified; + + @ApiModelProperty(value = "别名") + private String alias; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "单位姓名") + private String companyName; + + @ApiModelProperty(value = "证件号码") + private String idCard; + + @ApiModelProperty(value = "出生日期") + private String birthday; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "用户可用余额") + @QueryField(type = QueryType.EQ) + private BigDecimal balance; + + @ApiModelProperty(value = "用户可用积分") + @QueryField(type = QueryType.EQ) + private Integer points; + + @ApiModelProperty(value = "用户总支付的金额") + @QueryField(type = QueryType.EQ) + private BigDecimal payMoney; + + @ApiModelProperty(value = "实际消费的金额(不含退款)") + @QueryField(type = QueryType.EQ) + private BigDecimal expendMoney; + + @ApiModelProperty(value = "会员等级ID") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "个人简介") + private String introduction; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "背景图") + private String bgImage; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "用户编码") + private String userCode; + + @ApiModelProperty(value = "是否已实名认证") + @QueryField(type = QueryType.EQ) + private Integer certification; + + @ApiModelProperty(value = "兴趣爱好") + private String interest; + + @ApiModelProperty(value = "身高") + private String height; + + @ApiModelProperty(value = "体重") + private String weight; + + @ApiModelProperty(value = "月薪") + private String monthlyPay; + + @ApiModelProperty(value = "学历") + private String education; + + @ApiModelProperty(value = "职业") + private String vocation; + + @ApiModelProperty(value = "年龄") + @QueryField(type = QueryType.EQ) + private Integer age; + + @ApiModelProperty(value = "是否线下会员") + @QueryField(type = QueryType.EQ) + private Boolean offline; + + @ApiModelProperty(value = "关注数") + @QueryField(type = QueryType.EQ) + private Integer followers; + + @ApiModelProperty(value = "粉丝数") + @QueryField(type = QueryType.EQ) + private Integer fans; + + @ApiModelProperty(value = "点赞数") + @QueryField(type = QueryType.EQ) + private Integer likes; + + @ApiModelProperty(value = "评论数") + @QueryField(type = QueryType.EQ) + private Integer commentNumbers; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0在线, 1离线") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "最后结算时间") + private String settlementTime; + +} diff --git a/src/main/java/com/gxwebsoft/house/param/HouseViewsLogParam.java b/src/main/java/com/gxwebsoft/house/param/HouseViewsLogParam.java new file mode 100644 index 0000000..a33d850 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/HouseViewsLogParam.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.house.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 看房记录表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HouseViewsLogParam对象", description = "看房记录表查询参数") +public class HouseViewsLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "房源ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "房主ID") + @QueryField(type = QueryType.EQ) + private Integer houseUserId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "删除") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/house/service/HouseInfoService.java b/src/main/java/com/gxwebsoft/house/service/HouseInfoService.java new file mode 100644 index 0000000..4f1f2a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/HouseInfoService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.yulichang.base.MPJBaseService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.param.HouseInfoParam; + +import java.util.List; + +/** + * 房源信息表Service + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +public interface HouseInfoService extends MPJBaseService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HouseInfoParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HouseInfoParam param); + + /** + * 根据id查询 + * + * @param houseId 自增ID + * @return HouseInfo + */ + HouseInfo getByIdRel(Integer houseId); + + String generatePoster(HouseInfo houseInfo) throws Exception; +} diff --git a/src/main/java/com/gxwebsoft/house/service/HouseLikeLogService.java b/src/main/java/com/gxwebsoft/house/service/HouseLikeLogService.java new file mode 100644 index 0000000..d04bc0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/HouseLikeLogService.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.yulichang.base.MPJBaseService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.HouseLikeLog; +import com.gxwebsoft.house.param.HouseLikeLogParam; + +import java.util.List; + +/** + * 房源点赞表Service + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +public interface HouseLikeLogService extends MPJBaseService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HouseLikeLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HouseLikeLogParam param); + + /** + * 根据id查询 + * + * @param houseId ID + * @return LikeLog + */ + HouseLikeLog getByIdRel(Integer houseId, Integer userId); + + boolean add(HouseLikeLog likeLog); + +} diff --git a/src/main/java/com/gxwebsoft/house/service/HouseReservationService.java b/src/main/java/com/gxwebsoft/house/service/HouseReservationService.java new file mode 100644 index 0000000..e7f9e5a --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/HouseReservationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.HouseReservation; +import com.gxwebsoft.house.param.HouseReservationParam; + +import java.util.List; + +/** + * 预约记录表Service + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +public interface HouseReservationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HouseReservationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HouseReservationParam param); + + /** + * 根据id查询 + * + * @param logId ID + * @return HouseReservation + */ + HouseReservation getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/house/service/HouseUserService.java b/src/main/java/com/gxwebsoft/house/service/HouseUserService.java new file mode 100644 index 0000000..40b8559 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/HouseUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.HouseUser; +import com.gxwebsoft.house.param.HouseUserParam; + +import java.util.List; + +/** + * 用户表Service + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +public interface HouseUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HouseUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HouseUserParam param); + + /** + * 根据id查询 + * + * @param userId 用户id + * @return HouseUser + */ + HouseUser getByIdRel(Integer userId); + +} diff --git a/src/main/java/com/gxwebsoft/house/service/HouseViewsLogService.java b/src/main/java/com/gxwebsoft/house/service/HouseViewsLogService.java new file mode 100644 index 0000000..0424c03 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/HouseViewsLogService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.house.service; + +import com.github.yulichang.base.MPJBaseService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.entity.HouseViewsLog; +import com.gxwebsoft.house.param.HouseViewsLogParam; + +import java.util.List; + +/** + * 看房记录表Service + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +public interface HouseViewsLogService extends MPJBaseService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HouseViewsLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HouseViewsLogParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return HouseViewsLog + */ + HouseViewsLog getByIdRel(Integer id); + + void add(HouseInfo houseInfo, Integer loginUserId); +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/HouseInfoServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/HouseInfoServiceImpl.java new file mode 100644 index 0000000..ff0a440 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/HouseInfoServiceImpl.java @@ -0,0 +1,315 @@ +package com.gxwebsoft.house.service.impl; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.freewayso.image.combiner.ImageCombiner; +import com.freewayso.image.combiner.enums.OutputFormat; +import com.freewayso.image.combiner.enums.ZoomMode; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.ImageUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.house.mapper.HouseInfoMapper; +import com.gxwebsoft.house.service.HouseInfoService; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.param.HouseInfoParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.beans.factory.annotation.Value; + +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.awt.*; +import java.io.File; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * 房源信息表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Service +public class HouseInfoServiceImpl extends ServiceImpl implements HouseInfoService { + + @Value("${config.upload-path}") + private String uploadPath; + + @Value("${config.file-server}") + private String fileServer; + + @Resource + private ConfigProperties config; + + @Resource + private SettingService settingService; + + @Resource + private RedisUtil redisUtil; + + private static final String ACCESS_TOKEN_KEY = "cache:wx:access_token"; + + @Override + public PageResult pageRel(HouseInfoParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HouseInfoParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HouseInfo getByIdRel(Integer houseId) { + HouseInfoParam param = new HouseInfoParam(); + param.setHouseId(houseId); + return param.getOne(baseMapper.selectListRel(param)); + } + + /** + * 生成房产海报 ... + * + * @param houseInfo 房源信息 + * @return 海报图片URL + * @throws Exception 异常 + */ + @Override + public String generatePoster(HouseInfo houseInfo) throws Exception { + if (ObjectUtil.isEmpty(houseInfo)) { + return null; + } + + // 解析房源图片文件 + final String files = houseInfo.getFiles(); + if (StrUtil.isBlank(files)) { + return null; + } + + System.out.println("房源图片文件: " + files); + + try { + // 解析JSON数组格式的图片文件 + JSONArray fileArray = JSONArray.parseArray(files); + if (fileArray == null || fileArray.isEmpty()) { + return null; + } + + // 获取第一张图片作为主图 + JSONObject firstFile = fileArray.getJSONObject(0); + if (firstFile == null) { + return null; + } + + String mainImageUrl = firstFile.getString("url"); + if (StrUtil.isBlank(mainImageUrl)) { + return null; + } + + ImageCombiner combiner = new ImageCombiner(mainImageUrl, OutputFormat.JPG); + // 房源信息区域开始Y坐标 + int infoStartY = 330; + int lineHeight = 40; // 增加行高 + int currentY = infoStartY; + + // 添加房源标题(黑色文字,居中) + if (StrUtil.isNotBlank(houseInfo.getHouseTitle())) { + combiner.addTextElement(houseInfo.getHouseTitle(), 32, 50, currentY) + .setColor(Color.YELLOW) + .setCenter(true); + currentY += lineHeight + 10; // 标题后多留空间 + } + + // 添加房源价格信息(红色突出显示,居中) + if (houseInfo.getRent() != null) { + String priceText = "租金: ¥" + houseInfo.getRent(); + if (houseInfo.getMonthlyRent() != null) { + priceText += "/月"; + } + combiner.addTextElement(priceText, 26, 50, currentY) + .setColor(java.awt.Color.RED) + .setCenter(true); + currentY += lineHeight; + } + + // 添加房源基本信息 + StringBuilder infoText = new StringBuilder(); + if (StrUtil.isNotBlank(houseInfo.getHouseType())) { + infoText.append(houseInfo.getHouseType()); + } + if (StrUtil.isNotBlank(houseInfo.getExtent())) { + if (infoText.length() > 0) infoText.append(" | "); + infoText.append(houseInfo.getExtent()); + } + if (StrUtil.isNotBlank(houseInfo.getFloor())) { + if (infoText.length() > 0) infoText.append(" | "); + infoText.append(houseInfo.getFloor()); + } + +// if (infoText.length() > 0) { +// combiner.addTextElement(infoText.toString(), 22, 50, currentY) +// .setColor(Color.LIGHT_GRAY) +// .setCenter(true); +// } + + // 生成并添加小程序码(左上角) + String qrCodeUrl = generateMiniProgramQRCode(houseInfo.getHouseId()); + if (StrUtil.isNotBlank(qrCodeUrl)) { + // 小程序码放在左上角,尺寸占宽度20%(600*0.2=120px) +// combiner.addImageElement(qrCodeUrl, 30, 30) +// .setX(5); + combiner.addImageElement(qrCodeUrl,40,40,150,150, ZoomMode.Width); + } + + // 执行图片合并 + combiner.combine(); + + // 创建保存目录 + String posterDir = uploadPath + "file/poster/" + houseInfo.getTenantId() + "/house"; + if (!FileUtil.exist(posterDir)) { + FileUtil.mkdir(posterDir); + } + + // 生成文件路径 + String basePath = "/poster/" + houseInfo.getTenantId() + "/house/big-" + houseInfo.getHouseId() + ".jpg"; + String smallPath = "/poster/" + houseInfo.getTenantId() + "/house/" + houseInfo.getHouseId() + ".jpg"; + String filename = uploadPath + "file" + basePath; + String smallFileName = uploadPath + "file" + smallPath; + + // 保存原图 + combiner.save(filename); + + // 压缩图片 + File input = new File(filename); + File output = new File(smallFileName); + ImageUtil.adjustQuality(input, output, 0.8f); + + // 删除原图,保留压缩后的图片 + if (input.exists()) { + input.delete(); + } + + // 返回图片访问URL + return fileServer + smallPath + "?r=" + RandomUtil.randomNumbers(4); + + } catch (Exception e) { + System.err.println("生成房产海报失败: " + e.getMessage()); + e.printStackTrace(); + throw e; + } + } + + /** + * 生成房源详情页小程序码 + * + * @param houseId 房源ID + * @return 小程序码图片URL + */ + private String generateMiniProgramQRCode(Integer houseId) { + try { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + // 设置小程序页面路径:sub_pages/house/detail/ + houseId + map.put("path", "sub_pages/house/detail/?houseId=" + houseId); + // 可以设置环境版本,如果需要的话 +// map.put("env_version", "trial"); + + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/house/") + fileName; + + // 确保目录存在 + String qrCodeDir = getUploadDir().concat("qrcode/house/"); + if (!FileUtil.exist(qrCodeDir)) { + FileUtil.mkdir(qrCodeDir); + } + + File file = FileUtil.writeBytes(qrCode, filePath); + if (file != null) { + return config.getFileServer().concat("/qrcode/house/").concat(fileName); + } + } catch (Exception e) { + System.err.println("生成房源小程序码失败: " + e.getMessage()); + e.printStackTrace(); + } + return null; + } + + /** + * 获取微信小程序Access Token + * + * @return access_token + */ + private String getAccessToken() { + String key = ACCESS_TOKEN_KEY.concat(":").concat("1"); // 这里可以根据实际情况获取tenantId + System.out.println("key = " + key); + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + if (setting == null) { + throw new RuntimeException("请先配置小程序"); + } + + // 从缓存获取access_token + String value = redisUtil.get(key); + System.out.println("redisTemplate-value = " + value); + if (value != null) { + JSONObject response = JSON.parseObject(value); + String accessToken = response.getString("access_token"); + if (StrUtil.isNotBlank(accessToken)) { + return accessToken; + } + } + + // 微信获取凭证接口 + String apiUrl = "https://api.weixin.qq.com/cgi-bin/token"; + // 组装url参数 + String url = apiUrl.concat("?grant_type=client_credential") + .concat("&appid=").concat(setting.getString("appId")) + .concat("&secret=").concat(setting.getString("appSecret")); + + // 执行get请求 + String result = cn.hutool.http.HttpUtil.get(url); + System.out.println("获取access_token结果: " + result); + + // 解析access_token + JSONObject response = JSON.parseObject(result); + if (response.getString("access_token") != null) { + // 存入缓存 + redisUtil.set(key, result, 7000L, TimeUnit.SECONDS); + return response.getString("access_token"); + } + + throw new RuntimeException("小程序配置不正确"); + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/HouseLikeLogServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/HouseLikeLogServiceImpl.java new file mode 100644 index 0000000..6670d85 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/HouseLikeLogServiceImpl.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.house.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.yulichang.base.MPJBaseServiceImpl; +import com.gxwebsoft.house.mapper.HouseLikeLogMapper; +import com.gxwebsoft.house.service.HouseLikeLogService; +import com.gxwebsoft.house.entity.HouseLikeLog; +import com.gxwebsoft.house.param.HouseLikeLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 房源点赞表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:14 + */ +@Service +public class HouseLikeLogServiceImpl extends MPJBaseServiceImpl implements HouseLikeLogService { + + @Override + public PageResult pageRel(HouseLikeLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HouseLikeLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HouseLikeLog getByIdRel(Integer houseId, Integer userId) { + LambdaQueryWrapper wr = Wrappers.lambdaQuery(HouseLikeLog.class).eq(HouseLikeLog::getHouseId, houseId).eq(HouseLikeLog::getUserId, userId); + HouseLikeLog likeLogs = getBaseMapper().selectOne(wr); + return likeLogs; + } + + @Override + public boolean add( HouseLikeLog likeLog) { + LambdaQueryWrapper wr = Wrappers.lambdaQuery(HouseLikeLog.class).eq(HouseLikeLog::getHouseId, likeLog.getHouseId()).eq(HouseLikeLog::getUserId, likeLog.getUserId()); + + List likeLogs = getBaseMapper().selectList(wr); + if(CollectionUtils.isNotEmpty(likeLogs)) { + baseMapper.delete(wr); + return false; + }else { + int insert = baseMapper.insert(likeLog); + return true; + } + } + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/HouseReservationServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/HouseReservationServiceImpl.java new file mode 100644 index 0000000..343b3d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/HouseReservationServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.house.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.house.mapper.HouseReservationMapper; +import com.gxwebsoft.house.service.HouseReservationService; +import com.gxwebsoft.house.entity.HouseReservation; +import com.gxwebsoft.house.param.HouseReservationParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 预约记录表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Service +public class HouseReservationServiceImpl extends ServiceImpl implements HouseReservationService { + + @Override + public PageResult pageRel(HouseReservationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HouseReservationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HouseReservation getByIdRel(Integer logId) { + HouseReservationParam param = new HouseReservationParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/HouseUserServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/HouseUserServiceImpl.java new file mode 100644 index 0000000..93f0f56 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/HouseUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.house.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.house.mapper.HouseUserMapper; +import com.gxwebsoft.house.service.HouseUserService; +import com.gxwebsoft.house.entity.HouseUser; +import com.gxwebsoft.house.param.HouseUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 15:13:05 + */ +@Service +public class HouseUserServiceImpl extends ServiceImpl implements HouseUserService { + + @Override + public PageResult pageRel(HouseUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HouseUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HouseUser getByIdRel(Integer userId) { + HouseUserParam param = new HouseUserParam(); + param.setUserId(userId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/HouseViewsLogServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/HouseViewsLogServiceImpl.java new file mode 100644 index 0000000..1855f4c --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/HouseViewsLogServiceImpl.java @@ -0,0 +1,67 @@ +package com.gxwebsoft.house.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.mapper.HouseViewsLogMapper; +import com.gxwebsoft.house.service.HouseViewsLogService; +import com.github.yulichang.base.MPJBaseServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.gxwebsoft.house.entity.HouseViewsLog; +import com.gxwebsoft.house.param.HouseViewsLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 看房记录表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 13:47:15 + */ +@Service +public class HouseViewsLogServiceImpl extends MPJBaseServiceImpl implements HouseViewsLogService { + + @Override + public PageResult pageRel(HouseViewsLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(HouseViewsLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public HouseViewsLog getByIdRel(Integer id) { + HouseViewsLogParam param = new HouseViewsLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public void add(HouseInfo houseInfo, Integer loginUserId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(HouseViewsLog.class).eq(HouseViewsLog::getUserId, loginUserId).eq(HouseViewsLog::getHouseId, houseInfo.getHouseId()); + HouseViewsLog viewsLog = baseMapper.selectOne(wrapper); + if(viewsLog == null){ + viewsLog = new HouseViewsLog(); + viewsLog.setUserId(loginUserId); + viewsLog.setHouseId(houseInfo.getHouseId()); + viewsLog.setHouseUserId(houseInfo.getUserId()); + } + viewsLog.setUpdateTime(DateUtil.date()); + saveOrUpdate(viewsLog); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/controller/MpAdController.java b/src/main/java/com/gxwebsoft/mp/controller/MpAdController.java new file mode 100644 index 0000000..4c540c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/controller/MpAdController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.mp.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.mp.service.MpAdService; +import com.gxwebsoft.mp.entity.MpAd; +import com.gxwebsoft.mp.param.MpAdParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序广告位控制器 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Api(tags = "小程序广告位管理") +@RestController +@RequestMapping("/api/mp/mp-ad") +public class MpAdController extends BaseController { + @Resource + private MpAdService mpAdService; + + @PreAuthorize("hasAuthority('mp:mpAd:list')") + @ApiOperation("分页查询小程序广告位") + @GetMapping("/page") + public ApiResult> page(MpAdParam param) { + // 使用关联查询 + return success(mpAdService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpAd:list')") + @ApiOperation("查询全部小程序广告位") + @GetMapping() + public ApiResult> list(MpAdParam param) { + // 使用关联查询 + return success(mpAdService.listRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpAd:list')") + @ApiOperation("根据id查询小程序广告位") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpAdService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('mp:mpAd:save')") + @OperationLog + @ApiOperation("添加小程序广告位") + @PostMapping() + public ApiResult save(@RequestBody MpAd mpAd) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + mpAd.setUserId(loginUser.getUserId()); + } + if (mpAdService.save(mpAd)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpAd:update')") + @OperationLog + @ApiOperation("修改小程序广告位") + @PutMapping() + public ApiResult update(@RequestBody MpAd mpAd) { + if (mpAdService.updateById(mpAd)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpAd:remove')") + @OperationLog + @ApiOperation("删除小程序广告位") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpAdService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('mp:mpAd:save')") + @OperationLog + @ApiOperation("批量添加小程序广告位") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpAdService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpAd:update')") + @OperationLog + @ApiOperation("批量修改小程序广告位") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpAdService, "ad_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpAd:remove')") + @OperationLog + @ApiOperation("批量删除小程序广告位") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (mpAdService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/controller/MpController.java b/src/main/java/com/gxwebsoft/mp/controller/MpController.java new file mode 100644 index 0000000..582fcca --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/controller/MpController.java @@ -0,0 +1,213 @@ +package com.gxwebsoft.mp.controller; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.mp.entity.MpWxBody; +import com.gxwebsoft.mp.param.MpWxParam; +import com.gxwebsoft.mp.service.MpService; +import com.gxwebsoft.mp.entity.Mp; +import com.gxwebsoft.mp.param.MpParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringReader; +import java.util.HashMap; +import java.util.List; + +/** + * 小程序控制器 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Api(tags = "小程序管理") +@RestController +@RequestMapping("/api/mp/mp") +public class MpController extends BaseController { + @Resource + private MpService mpService; + + @PreAuthorize("hasAuthority('mp:mp:list')") + @ApiOperation("分页查询小程序") + @GetMapping("/page") + public ApiResult> page(MpParam param) { + // 使用关联查询 + return success(mpService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mp:list')") + @ApiOperation("查询全部小程序") + @GetMapping() + public ApiResult> list(MpParam param) { + // 使用关联查询 + return success(mpService.listRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mp:list')") + @ApiOperation("根据id查询小程序") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('mp:mp:save')") + @OperationLog + @ApiOperation("添加小程序") + @PostMapping() + public ApiResult save(@RequestBody Mp mp) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + mp.setUserId(loginUser.getUserId()); + getComponentAccessToken(); + + + } + if (mpService.save(mp)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("获取验证票据") + @PostMapping("/component_verify_ticket") + public ApiResult component_verify_ticket(MpWxParam param, @RequestBody MpWxBody body, HttpServletRequest request, HttpServletResponse response) throws IOException { + System.out.println("param = " + param); + System.out.println("body = " + body); + System.out.print("success"); + return success(body); +// String encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG"; +// String token = "pamtest"; +// String timestamp = "1409304348"; +// String nonce = "xxxxxx"; +// String appId = "wxb11529c136998cb6"; +// String replyMsg = "我是中文abcd123"; +// String xmlFormat = ""; +// String afterAesEncrypt = "jn1L23DB+6ELqJ+6bruv21Y6MD7KeIfP82D6gU39rmkgczbWwt5+3bnyg5K55bgVtVzd832WzZGMhkP72vVOfg=="; +// String randomStr = "aaaabbbbccccdddd"; +// +// String replyMsg2 = "1407743423"; +// String afterAesEncrypt2 = "jn1L23DB+6ELqJ+6bruv23M2GmYfkv0xBh2h+XTBOKVKcgDFHle6gqcZ1cZrk3e1qjPQ1F4RsLWzQRG9udbKWesxlkupqcEcW7ZQweImX9+wLMa0GaUzpkycA8+IamDBxn5loLgZpnS7fVAbExOkK5DYHBmv5tptA9tklE/fTIILHR8HLXa5nQvFb3tYPKAlHF3rtTeayNf0QuM+UW/wM9enGIDIJHF7CLHiDNAYxr+r+OrJCmPQyTy8cVWlu9iSvOHPT/77bZqJucQHQ04sq7KZI27OcqpQNSto2OdHCoTccjggX5Z9Mma0nMJBU+jLKJ38YB1fBIz+vBzsYjrTmFQ44YfeEuZ+xRTQwr92vhA9OxchWVINGC50qE/6lmkwWTwGX9wtQpsJKhP+oS7rvTY8+VdzETdfakjkwQ5/Xka042OlUb1/slTwo4RscuQ+RdxSGvDahxAJ6+EAjLt9d8igHngxIbf6YyqqROxuxqIeIch3CssH/LqRs+iAcILvApYZckqmA7FNERspKA5f8GoJ9sv8xmGvZ9Yrf57cExWtnX8aCMMaBropU/1k+hKP5LVdzbWCG0hGwx/dQudYR/eXp3P0XxjlFiy+9DMlaFExWUZQDajPkdPrEeOwofJb"; + + + // 微信官方要求返回 success 格式 + +// System.out.println("body = " + body); +// try { +// System.out.println("body = " + body); +// } catch (Exception e) { +// e.printStackTrace(); +// } finally { +// PrintWriter out = response.getWriter(); +// out.print("success"); +// } + } + + @ApiOperation("获取验证票据") + @PostMapping("/callback") + public String callback(@RequestBody Object body) { + System.out.println("body = " + body); + return "success"; + } + + + public void getComponentAccessToken() { + final HashMap map = new HashMap<>(); + map.put("component_appid", "wx16ee0d4ff88c2f53"); + map.put("component_appsecret", "cbc696419219a2bae8458b4a83500d6e"); + map.put("component_verify_ticket", "ticket"); + final String post = HttpUtil.post("https://api.weixin.qq.com/cgi-bin/component/api_component_token", JSONUtil.toJSONString(map)); + System.out.println("post = " + post); + String url = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token="; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + // 获取成功 + if (jsonObject.getString("access_token") != null) { +// this.access_token = jsonObject.getString("access_token"); +// this.expires_in = jsonObject.getString("expires_in"); +// stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS); +// System.out.println("获取access_token成功 = " + this.access_token); +// this.getUserInfo(code,this.access_token); + } + } + + @PreAuthorize("hasAuthority('mp:mp:update')") + @OperationLog + @ApiOperation("修改小程序") + @PutMapping() + public ApiResult update(@RequestBody Mp mp) { + if (mpService.updateById(mp)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mp:remove')") + @OperationLog + @ApiOperation("删除小程序") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('mp:mp:save')") + @OperationLog + @ApiOperation("批量添加小程序") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mp:update')") + @OperationLog + @ApiOperation("批量修改小程序") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpService, "mp_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mp:remove')") + @OperationLog + @ApiOperation("批量删除小程序") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (mpService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/controller/MpFieldController.java b/src/main/java/com/gxwebsoft/mp/controller/MpFieldController.java new file mode 100644 index 0000000..86c85dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/controller/MpFieldController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.mp.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.mp.service.MpFieldService; +import com.gxwebsoft.mp.entity.MpField; +import com.gxwebsoft.mp.param.MpFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序配置控制器 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Api(tags = "小程序配置管理") +@RestController +@RequestMapping("/api/mp/mp-field") +public class MpFieldController extends BaseController { + @Resource + private MpFieldService mpFieldService; + + @PreAuthorize("hasAuthority('mp:mpField:list')") + @ApiOperation("分页查询小程序配置") + @GetMapping("/page") + public ApiResult> page(MpFieldParam param) { + // 使用关联查询 + return success(mpFieldService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpField:list')") + @ApiOperation("查询全部小程序配置") + @GetMapping() + public ApiResult> list(MpFieldParam param) { + // 使用关联查询 + return success(mpFieldService.listRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpField:list')") + @ApiOperation("根据id查询小程序配置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpFieldService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('mp:mpField:save')") + @OperationLog + @ApiOperation("添加小程序配置") + @PostMapping() + public ApiResult save(@RequestBody MpField mpField) { + if (mpFieldService.save(mpField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpField:update')") + @OperationLog + @ApiOperation("修改小程序配置") + @PutMapping() + public ApiResult update(@RequestBody MpField mpField) { + if (mpFieldService.updateById(mpField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpField:remove')") + @OperationLog + @ApiOperation("删除小程序配置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('mp:mpField:save')") + @OperationLog + @ApiOperation("批量添加小程序配置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpField:update')") + @OperationLog + @ApiOperation("批量修改小程序配置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpField:remove')") + @OperationLog + @ApiOperation("批量删除小程序配置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (mpFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/controller/MpMenuController.java b/src/main/java/com/gxwebsoft/mp/controller/MpMenuController.java new file mode 100644 index 0000000..31bbd4d --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/controller/MpMenuController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.mp.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.mp.service.MpMenuService; +import com.gxwebsoft.mp.entity.MpMenu; +import com.gxwebsoft.mp.param.MpMenuParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序端菜单控制器 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Api(tags = "小程序端菜单管理") +@RestController +@RequestMapping("/api/mp/mp-menu") +public class MpMenuController extends BaseController { + @Resource + private MpMenuService mpMenuService; + + @PreAuthorize("hasAuthority('mp:mpMenu:list')") + @ApiOperation("分页查询小程序端菜单") + @GetMapping("/page") + public ApiResult> page(MpMenuParam param) { + // 使用关联查询 + return success(mpMenuService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:list')") + @ApiOperation("查询全部小程序端菜单") + @GetMapping() + public ApiResult> list(MpMenuParam param) { + // 使用关联查询 + return success(mpMenuService.listRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:list')") + @ApiOperation("根据id查询小程序端菜单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpMenuService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:save')") + @OperationLog + @ApiOperation("添加小程序端菜单") + @PostMapping() + public ApiResult save(@RequestBody MpMenu mpMenu) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + mpMenu.setUserId(loginUser.getUserId()); + } + if (mpMenuService.save(mpMenu)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:update')") + @OperationLog + @ApiOperation("修改小程序端菜单") + @PutMapping() + public ApiResult update(@RequestBody MpMenu mpMenu) { + if (mpMenuService.updateById(mpMenu)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:remove')") + @OperationLog + @ApiOperation("删除小程序端菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpMenuService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:save')") + @OperationLog + @ApiOperation("批量添加小程序端菜单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpMenuService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:update')") + @OperationLog + @ApiOperation("批量修改小程序端菜单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpMenuService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpMenu:remove')") + @OperationLog + @ApiOperation("批量删除小程序端菜单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (mpMenuService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/controller/MpPagesController.java b/src/main/java/com/gxwebsoft/mp/controller/MpPagesController.java new file mode 100644 index 0000000..b7c9c98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/controller/MpPagesController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.mp.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.mp.service.MpPagesService; +import com.gxwebsoft.mp.entity.MpPages; +import com.gxwebsoft.mp.param.MpPagesParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小程序页面控制器 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Api(tags = "小程序页面管理") +@RestController +@RequestMapping("/api/mp/mp-pages") +public class MpPagesController extends BaseController { + @Resource + private MpPagesService mpPagesService; + + @PreAuthorize("hasAuthority('mp:mpPages:list')") + @ApiOperation("分页查询小程序页面") + @GetMapping("/page") + public ApiResult> page(MpPagesParam param) { + // 使用关联查询 + return success(mpPagesService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpPages:list')") + @ApiOperation("查询全部小程序页面") + @GetMapping() + public ApiResult> list(MpPagesParam param) { + // 使用关联查询 + return success(mpPagesService.listRel(param)); + } + + @PreAuthorize("hasAuthority('mp:mpPages:list')") + @ApiOperation("根据id查询小程序页面") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpPagesService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('mp:mpPages:save')") + @OperationLog + @ApiOperation("添加小程序页面") + @PostMapping() + public ApiResult save(@RequestBody MpPages mpPages) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + mpPages.setUserId(loginUser.getUserId()); + } + if (mpPagesService.save(mpPages)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpPages:update')") + @OperationLog + @ApiOperation("修改小程序页面") + @PutMapping() + public ApiResult update(@RequestBody MpPages mpPages) { + if (mpPagesService.updateById(mpPages)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpPages:remove')") + @OperationLog + @ApiOperation("删除小程序页面") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpPagesService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('mp:mpPages:save')") + @OperationLog + @ApiOperation("批量添加小程序页面") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpPagesService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('mp:mpPages:update')") + @OperationLog + @ApiOperation("批量修改小程序页面") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpPagesService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('mp:mpPages:remove')") + @OperationLog + @ApiOperation("批量删除小程序页面") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (mpPagesService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/Mp.java b/src/main/java/com/gxwebsoft/mp/entity/Mp.java new file mode 100644 index 0000000..9aaab44 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/Mp.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Mp对象", description = "小程序") +public class Mp implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "mp_id", type = IdType.AUTO) + private Integer mpId; + + @ApiModelProperty(value = "是否主账号") + private Integer type; + + @ApiModelProperty(value = "小程序ID") + private String appId; + + @ApiModelProperty(value = "小程序密钥") + private String appSecret; + + @ApiModelProperty(value = "小程序名称") + private String mpName; + + @ApiModelProperty(value = "小程序简称") + private String shortName; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "小程序码") + private String mpQrcode; + + @ApiModelProperty(value = "微信认证") + private Integer authentication; + + @ApiModelProperty(value = "主体信息") + private String companyName; + + @ApiModelProperty(value = "小程序备案") + private String icpNo; + + @ApiModelProperty(value = "登录邮箱") + private String email; + + @ApiModelProperty(value = "登录密码") + private String password; + + @ApiModelProperty(value = "原始ID") + private String ghId; + + @ApiModelProperty(value = "入口页面") + private String mainPath; + + @ApiModelProperty(value = "过期时间") + private LocalDateTime expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "介绍") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/MpAd.java b/src/main/java/com/gxwebsoft/mp/entity/MpAd.java new file mode 100644 index 0000000..90503c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/MpAd.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序广告位 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MpAd对象", description = "小程序广告位") +public class MpAd implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ad_id", type = IdType.AUTO) + private Integer adId; + + @ApiModelProperty(value = "页面ID") + private Integer pageId; + + @ApiModelProperty(value = "广告类型") + private String adType; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "图标背景色") + private String colors; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "页面名称") + private String pageName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/MpField.java b/src/main/java/com/gxwebsoft/mp/entity/MpField.java new file mode 100644 index 0000000..366fea5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/MpField.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序配置 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MpField对象", description = "小程序配置") +public class MpField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "页面ID") + private Integer pageId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/MpMenu.java b/src/main/java/com/gxwebsoft/mp/entity/MpMenu.java new file mode 100644 index 0000000..76aec07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/MpMenu.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序端菜单 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MpMenu对象", description = "小程序端菜单") +public class MpMenu implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "menu_id", type = IdType.AUTO) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标") + private Integer type; + + @ApiModelProperty(value = "是否微信小程序菜单") + private Boolean isMpWeixin; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String avatar; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "上传图标") + private String icon; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + private Integer position; + + @ApiModelProperty(value = "0 第一行 1第二行") + private Integer rows; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "绑定的页面") + private Integer pageId; + + @ApiModelProperty(value = "绑定的文章分类ID") + private Integer articleCategoryId; + + @ApiModelProperty(value = "绑定的文章ID") + private Integer articleId; + + @ApiModelProperty(value = "绑定的表单ID") + private Integer formId; + + @ApiModelProperty(value = "绑定的书籍标识") + private String bookCode; + + @ApiModelProperty(value = "绑定的商品分类ID") + private Integer goodsCategoryId; + + @ApiModelProperty(value = "绑定的商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否管理人员可见") + private Integer adminShow; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "分组名称") + private String groupName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/MpPages.java b/src/main/java/com/gxwebsoft/mp/entity/MpPages.java new file mode 100644 index 0000000..2ac7eef --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/MpPages.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序页面 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MpPages对象", description = "小程序页面") +public class MpPages implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "页面名称") + private String title; + + @ApiModelProperty(value = "页面路径") + private String path; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "分包") + private String subpackage; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "未选中图标(废弃)") + private String iconPath; + + @ApiModelProperty(value = "选中的图标(废弃)") + private String selectedIconPath; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/mp/entity/MpWxBody.java b/src/main/java/com/gxwebsoft/mp/entity/MpWxBody.java new file mode 100644 index 0000000..bf2ad50 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/entity/MpWxBody.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.mp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +import java.util.Date; + +/** + * 小程序 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Mp对象", description = "小程序") +public class MpWxBody implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "小程序ID") + private String ToUserName; + + @ApiModelProperty(value = "小程序密钥") + private String FromUserName; + + @ApiModelProperty(value = "小程序名称") + private String CreateTime; + + @ApiModelProperty(value = "小程序简称") + private String MsgType; + + @ApiModelProperty(value = "头像") + private String Event; + + @ApiModelProperty(value = "小程序码") + private String debug_str; + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/MpAdMapper.java b/src/main/java/com/gxwebsoft/mp/mapper/MpAdMapper.java new file mode 100644 index 0000000..88935e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/MpAdMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.mp.entity.MpAd; +import com.gxwebsoft.mp.param.MpAdParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序广告位Mapper + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpAdMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MpAdParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MpAdParam param); + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/MpFieldMapper.java b/src/main/java/com/gxwebsoft/mp/mapper/MpFieldMapper.java new file mode 100644 index 0000000..5b09b6a --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/MpFieldMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.mp.entity.MpField; +import com.gxwebsoft.mp.param.MpFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序配置Mapper + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MpFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MpFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/MpMapper.java b/src/main/java/com/gxwebsoft/mp/mapper/MpMapper.java new file mode 100644 index 0000000..e9f4009 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/MpMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.mp.entity.Mp; +import com.gxwebsoft.mp.param.MpParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序Mapper + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MpParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MpParam param); + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/MpMenuMapper.java b/src/main/java/com/gxwebsoft/mp/mapper/MpMenuMapper.java new file mode 100644 index 0000000..574ebd9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/MpMenuMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.mp.entity.MpMenu; +import com.gxwebsoft.mp.param.MpMenuParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序端菜单Mapper + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpMenuMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MpMenuParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MpMenuParam param); + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/MpPagesMapper.java b/src/main/java/com/gxwebsoft/mp/mapper/MpPagesMapper.java new file mode 100644 index 0000000..d77590c --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/MpPagesMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.mp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.mp.entity.MpPages; +import com.gxwebsoft.mp.param.MpPagesParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序页面Mapper + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpPagesMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MpPagesParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MpPagesParam param); + +} diff --git a/src/main/java/com/gxwebsoft/mp/mapper/xml/MpAdMapper.xml b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpAdMapper.xml new file mode 100644 index 0000000..b091407 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpAdMapper.xml @@ -0,0 +1,81 @@ + + + + + + + SELECT a.* + FROM mp_ad a + + + AND a.ad_id = #{param.adId} + + + AND a.page_id = #{param.pageId} + + + AND a.ad_type LIKE CONCAT('%', #{param.adType}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.width LIKE CONCAT('%', #{param.width}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.colors LIKE CONCAT('%', #{param.colors}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.page_name LIKE CONCAT('%', #{param.pageName}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/mp/mapper/xml/MpFieldMapper.xml b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpFieldMapper.xml new file mode 100644 index 0000000..b4ea438 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpFieldMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM mp_field a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.value LIKE CONCAT('%', #{param.value}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMapper.xml b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMapper.xml new file mode 100644 index 0000000..bd26deb --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMapper.xml @@ -0,0 +1,99 @@ + + + + + + + SELECT a.* + FROM mp a + + + AND a.mp_id = #{param.mpId} + + + AND a.type = #{param.type} + + + AND a.app_id LIKE CONCAT('%', #{param.appId}, '%') + + + AND a.app_secret LIKE CONCAT('%', #{param.appSecret}, '%') + + + AND a.mp_name LIKE CONCAT('%', #{param.mpName}, '%') + + + AND a.short_name LIKE CONCAT('%', #{param.shortName}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.mp_qrcode LIKE CONCAT('%', #{param.mpQrcode}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.icp_no LIKE CONCAT('%', #{param.icpNo}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.gh_id LIKE CONCAT('%', #{param.ghId}, '%') + + + AND a.main_path LIKE CONCAT('%', #{param.mainPath}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMenuMapper.xml b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMenuMapper.xml new file mode 100644 index 0000000..37a6aaa --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpMenuMapper.xml @@ -0,0 +1,123 @@ + + + + + + + SELECT a.* + FROM mp_menu a + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.is_mp_weixin = #{param.isMpWeixin} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.hide = #{param.hide} + + + AND a.position = #{param.position} + + + AND a.rows = #{param.rows} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.article_category_id = #{param.articleCategoryId} + + + AND a.article_id = #{param.articleId} + + + AND a.form_id = #{param.formId} + + + AND a.book_code LIKE CONCAT('%', #{param.bookCode}, '%') + + + AND a.goods_category_id = #{param.goodsCategoryId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.user_id = #{param.userId} + + + AND a.admin_show = #{param.adminShow} + + + AND a.home = #{param.home} + + + AND a.group_name LIKE CONCAT('%', #{param.groupName}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/mp/mapper/xml/MpPagesMapper.xml b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpPagesMapper.xml new file mode 100644 index 0000000..39b4df3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/mapper/xml/MpPagesMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.* + FROM mp_pages a + + + AND a.id = #{param.id} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.home = #{param.home} + + + AND a.subpackage LIKE CONCAT('%', #{param.subpackage}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.icon_path LIKE CONCAT('%', #{param.iconPath}, '%') + + + AND a.selected_icon_path LIKE CONCAT('%', #{param.selectedIconPath}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/mp/param/MpAdParam.java b/src/main/java/com/gxwebsoft/mp/param/MpAdParam.java new file mode 100644 index 0000000..103672e --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpAdParam.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.mp.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序广告位查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpAdParam对象", description = "小程序广告位查询参数") +public class MpAdParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer adId; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "广告类型") + private String adType; + + @ApiModelProperty(value = "广告位名称") + private String name; + + @ApiModelProperty(value = "宽") + private String width; + + @ApiModelProperty(value = "高") + private String height; + + @ApiModelProperty(value = "广告图片") + private String images; + + @ApiModelProperty(value = "图标背景色") + private String colors; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "页面名称") + private String pageName; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/mp/param/MpFieldParam.java b/src/main/java/com/gxwebsoft/mp/param/MpFieldParam.java new file mode 100644 index 0000000..b26a311 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpFieldParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.mp.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序配置查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpFieldParam对象", description = "小程序配置查询参数") +public class MpFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型,0文本 1图片 2其他") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "名称") + private String value; + + @ApiModelProperty(value = "页面ID") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/mp/param/MpMenuParam.java b/src/main/java/com/gxwebsoft/mp/param/MpMenuParam.java new file mode 100644 index 0000000..9844eac --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpMenuParam.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.mp.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序端菜单查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpMenuParam对象", description = "小程序端菜单查询参数") +public class MpMenuParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "是否微信小程序菜单") + @QueryField(type = QueryType.EQ) + private Boolean isMpWeixin; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String avatar; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "上传图标") + private String icon; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + @QueryField(type = QueryType.EQ) + private Integer position; + + @ApiModelProperty(value = "0 第一行 1第二行") + @QueryField(type = QueryType.EQ) + private Integer rows; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "绑定的页面") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "绑定的文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer articleCategoryId; + + @ApiModelProperty(value = "绑定的文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "绑定的表单ID") + @QueryField(type = QueryType.EQ) + private Integer formId; + + @ApiModelProperty(value = "绑定的书籍标识") + private String bookCode; + + @ApiModelProperty(value = "绑定的商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer goodsCategoryId; + + @ApiModelProperty(value = "绑定的商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否管理人员可见") + @QueryField(type = QueryType.EQ) + private Integer adminShow; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "分组名称") + private String groupName; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/mp/param/MpPagesParam.java b/src/main/java/com/gxwebsoft/mp/param/MpPagesParam.java new file mode 100644 index 0000000..8c69e72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpPagesParam.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.mp.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序页面查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpPagesParam对象", description = "小程序页面查询参数") +public class MpPagesParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "页面名称") + private String title; + + @ApiModelProperty(value = "页面路径") + private String path; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "分包") + private String subpackage; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "未选中图标(废弃)") + private String iconPath; + + @ApiModelProperty(value = "选中的图标(废弃)") + private String selectedIconPath; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/mp/param/MpParam.java b/src/main/java/com/gxwebsoft/mp/param/MpParam.java new file mode 100644 index 0000000..7d4e3bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpParam.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.mp.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpParam对象", description = "小程序查询参数") +public class MpParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer mpId; + + @ApiModelProperty(value = "是否主账号") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "小程序ID") + private String appId; + + @ApiModelProperty(value = "小程序密钥") + private String appSecret; + + @ApiModelProperty(value = "小程序名称") + private String mpName; + + @ApiModelProperty(value = "小程序简称") + private String shortName; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "小程序码") + private String mpQrcode; + + @ApiModelProperty(value = "微信认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "主体信息") + private String companyName; + + @ApiModelProperty(value = "小程序备案") + private String icpNo; + + @ApiModelProperty(value = "登录邮箱") + private String email; + + @ApiModelProperty(value = "登录密码") + private String password; + + @ApiModelProperty(value = "原始ID") + private String ghId; + + @ApiModelProperty(value = "入口页面") + private String mainPath; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "介绍") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/mp/param/MpWxParam.java b/src/main/java/com/gxwebsoft/mp/param/MpWxParam.java new file mode 100644 index 0000000..dc1d6eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/param/MpWxParam.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.mp.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小程序查询参数 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MpParam对象", description = "小程序查询参数") +public class MpWxParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "签名") + private String signature; + + @ApiModelProperty(value = "时间戳") + private String timestamp; + + @ApiModelProperty(value = "随机字符串") + private String nonce; + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/MpAdService.java b/src/main/java/com/gxwebsoft/mp/service/MpAdService.java new file mode 100644 index 0000000..f3c4cfd --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/MpAdService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.mp.entity.MpAd; +import com.gxwebsoft.mp.param.MpAdParam; + +import java.util.List; + +/** + * 小程序广告位Service + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpAdService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MpAdParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MpAdParam param); + + /** + * 根据id查询 + * + * @param adId ID + * @return MpAd + */ + MpAd getByIdRel(Integer adId); + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/MpFieldService.java b/src/main/java/com/gxwebsoft/mp/service/MpFieldService.java new file mode 100644 index 0000000..0c8fb3d --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/MpFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.mp.entity.MpField; +import com.gxwebsoft.mp.param.MpFieldParam; + +import java.util.List; + +/** + * 小程序配置Service + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MpFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MpFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return MpField + */ + MpField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/MpMenuService.java b/src/main/java/com/gxwebsoft/mp/service/MpMenuService.java new file mode 100644 index 0000000..2c80da4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/MpMenuService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.mp.entity.MpMenu; +import com.gxwebsoft.mp.param.MpMenuParam; + +import java.util.List; + +/** + * 小程序端菜单Service + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpMenuService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MpMenuParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MpMenuParam param); + + /** + * 根据id查询 + * + * @param menuId ID + * @return MpMenu + */ + MpMenu getByIdRel(Integer menuId); + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/MpPagesService.java b/src/main/java/com/gxwebsoft/mp/service/MpPagesService.java new file mode 100644 index 0000000..d33435c --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/MpPagesService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.mp.entity.MpPages; +import com.gxwebsoft.mp.param.MpPagesParam; + +import java.util.List; + +/** + * 小程序页面Service + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpPagesService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MpPagesParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MpPagesParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return MpPages + */ + MpPages getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/MpService.java b/src/main/java/com/gxwebsoft/mp/service/MpService.java new file mode 100644 index 0000000..277d888 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/MpService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.mp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.mp.entity.Mp; +import com.gxwebsoft.mp.param.MpParam; + +import java.util.List; + +/** + * 小程序Service + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +public interface MpService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MpParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MpParam param); + + /** + * 根据id查询 + * + * @param mpId ID + * @return Mp + */ + Mp getByIdRel(Integer mpId); + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/impl/MpAdServiceImpl.java b/src/main/java/com/gxwebsoft/mp/service/impl/MpAdServiceImpl.java new file mode 100644 index 0000000..7e0bc60 --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/impl/MpAdServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.mp.mapper.MpAdMapper; +import com.gxwebsoft.mp.service.MpAdService; +import com.gxwebsoft.mp.entity.MpAd; +import com.gxwebsoft.mp.param.MpAdParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序广告位Service实现 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Service +public class MpAdServiceImpl extends ServiceImpl implements MpAdService { + + @Override + public PageResult pageRel(MpAdParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MpAdParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public MpAd getByIdRel(Integer adId) { + MpAdParam param = new MpAdParam(); + param.setAdId(adId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/impl/MpFieldServiceImpl.java b/src/main/java/com/gxwebsoft/mp/service/impl/MpFieldServiceImpl.java new file mode 100644 index 0000000..16516bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/impl/MpFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.mp.mapper.MpFieldMapper; +import com.gxwebsoft.mp.service.MpFieldService; +import com.gxwebsoft.mp.entity.MpField; +import com.gxwebsoft.mp.param.MpFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序配置Service实现 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Service +public class MpFieldServiceImpl extends ServiceImpl implements MpFieldService { + + @Override + public PageResult pageRel(MpFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MpFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public MpField getByIdRel(Integer id) { + MpFieldParam param = new MpFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/impl/MpMenuServiceImpl.java b/src/main/java/com/gxwebsoft/mp/service/impl/MpMenuServiceImpl.java new file mode 100644 index 0000000..667abcd --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/impl/MpMenuServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.mp.mapper.MpMenuMapper; +import com.gxwebsoft.mp.service.MpMenuService; +import com.gxwebsoft.mp.entity.MpMenu; +import com.gxwebsoft.mp.param.MpMenuParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序端菜单Service实现 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Service +public class MpMenuServiceImpl extends ServiceImpl implements MpMenuService { + + @Override + public PageResult pageRel(MpMenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MpMenuParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public MpMenu getByIdRel(Integer menuId) { + MpMenuParam param = new MpMenuParam(); + param.setMenuId(menuId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/impl/MpPagesServiceImpl.java b/src/main/java/com/gxwebsoft/mp/service/impl/MpPagesServiceImpl.java new file mode 100644 index 0000000..64e22ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/impl/MpPagesServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.mp.mapper.MpPagesMapper; +import com.gxwebsoft.mp.service.MpPagesService; +import com.gxwebsoft.mp.entity.MpPages; +import com.gxwebsoft.mp.param.MpPagesParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序页面Service实现 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Service +public class MpPagesServiceImpl extends ServiceImpl implements MpPagesService { + + @Override + public PageResult pageRel(MpPagesParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MpPagesParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public MpPages getByIdRel(Integer id) { + MpPagesParam param = new MpPagesParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/mp/service/impl/MpServiceImpl.java b/src/main/java/com/gxwebsoft/mp/service/impl/MpServiceImpl.java new file mode 100644 index 0000000..9d965ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/mp/service/impl/MpServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.mp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.mp.mapper.MpMapper; +import com.gxwebsoft.mp.service.MpService; +import com.gxwebsoft.mp.entity.Mp; +import com.gxwebsoft.mp.param.MpParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小程序Service实现 + * + * @author 科技小王子 + * @since 2025-04-18 10:52:36 + */ +@Service +public class MpServiceImpl extends ServiceImpl implements MpService { + + @Override + public PageResult pageRel(MpParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MpParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Mp getByIdRel(Integer mpId) { + MpParam param = new MpParam(); + param.setMpId(mpId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAppController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAppController.java new file mode 100644 index 0000000..72fdccc --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAppController.java @@ -0,0 +1,327 @@ +package com.gxwebsoft.oa.controller; + +import cn.hutool.core.net.url.UrlBuilder; +import cn.hutool.core.net.url.UrlQuery; +import cn.hutool.core.util.DesensitizedUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.OaAppUrl; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.oa.service.OaAppService; +import com.gxwebsoft.oa.entity.OaApp; +import com.gxwebsoft.oa.param.OaAppParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.oa.service.OaAppUrlService; +import com.gxwebsoft.oa.service.OaAppUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.AppUserConstants.ADMINISTRATOR; + +/** + * 应用控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "应用管理") +@RestController +@RequestMapping("/api/oa/oa-app") +public class OaAppController extends BaseController { + @Resource + private OaAppService oaAppService; + @Resource + private OaAppUrlService oaAppUrlService; + @Resource + private OaAppUserService oaAppUserService; + @Resource + private RedisUtil redisUtil; + + @PreAuthorize("hasAuthority('oa:app:list')") + @ApiOperation("分页查询应用") + @GetMapping("/page") + public ApiResult> page(OaAppParam param, HttpServletRequest request) { + final User loginUser = getLoginUser(); + // 未登录情况 + if(loginUser == null){ + String access_token = JwtUtil.getAccessToken(request); + param.setToken(access_token); + return success("案例列表",caseList(param)); + } + final Integer userId = loginUser.getUserId(); + loginUser.getRoles().forEach(d -> { + if(!StrUtil.equals(d.getRoleCode(),"superAdmin") && !StrUtil.equals(d.getRoleCode(),"admin")){ + // 非管理员按项目成员权限显示 + final List list = oaAppUserService.list(new LambdaQueryWrapper().eq(OaAppUser::getUserId, userId)); + final Set collect = list.stream().map(OaAppUser::getAppId).collect(Collectors.toSet()); + param.setAppIds(collect); + } + }); + // 过滤续费提醒参数 + if (param.getAppStatus() != null && param.getAppStatus().equals("续费中")) { + param.setAppStatus(null); + } + // 使用关联查询 + return success(oaAppService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:app:list')") + @ApiOperation("查询全部应用") + @GetMapping() + public ApiResult> list(OaAppParam param) { + // 使用关联查询 + return success(oaAppService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:app:list')") + @ApiOperation("根据id查询应用") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + final User loginUser = getLoginUser(); + // 未登录情况 + if(loginUser == null){ + return success("案例详情",getDesensitizedApp(id)); + } + if (!CommonUtil.hasRole(loginUser.getRoles(),"superAdmin") && !CommonUtil.hasRole(loginUser.getRoles(),"admin")) { + // 查询权限 + if (oaAppUserService.count(new LambdaQueryWrapper().eq(OaAppUser::getUserId, getLoginUserId()).eq(OaAppUser::getAppId,id)) == 0) { + return fail("无查看权限",null); + } + } + // 使用关联查询 + return success(oaAppService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:app:save')") + @ApiOperation("添加应用") + @PostMapping() + public ApiResult save(@RequestBody OaApp app) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + OaAppUser appUser = new OaAppUser(); + if (loginUser != null) { + app.setUserId(loginUser.getUserId()); + app.setTenantId(loginUser.getTenantId()); + } + if (oaAppService.count(new LambdaQueryWrapper() + .eq(OaApp::getAppCode, app.getAppCode())) > 0) { + return fail("应用标识已存在"); + } + if (oaAppService.save(app)) { + // 添加应用管理员 + if (loginUser != null) { + appUser.setUserId(loginUser.getUserId()); + appUser.setNickname(loginUser.getNickname()); + appUser.setAppId(app.getAppId()); + appUser.setRole(ADMINISTRATOR); + oaAppUserService.save(appUser); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @ApiOperation("修改应用") + @PutMapping() + public ApiResult update(@RequestBody OaApp oaApp) { + if (oaAppService.updateById(oaApp)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:app:remove')") + @ApiOperation("删除应用") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAppService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:app:save')") + @ApiOperation("批量添加应用") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAppService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @ApiOperation("批量修改应用") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAppService, "app_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:app:remove')") + @ApiOperation("批量删除应用") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAppService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data() { + Map data = new HashMap<>(); + Integer totalNum = oaAppService.count( + new LambdaQueryWrapper<>() + ); + Integer totalNum2 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getAppStatus, "开发中") + ); + Integer totalNum3 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getAppStatus, "已上架") + ); + Integer totalNum4 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getAppStatus, "已上架") + .eq(OaApp::getShowExpiration,false) + ); + Integer totalNum5 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getAppStatus, "已下架") + ); + Integer totalNum6 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getShowCase,true) + ); + Integer totalNum7 = oaAppService.count( + new LambdaQueryWrapper() + .eq(OaApp::getShowIndex, true) + ); + + data.put("totalNum", totalNum); + data.put("totalNum2", totalNum2); + data.put("totalNum3", totalNum3); + data.put("totalNum4", totalNum4); + data.put("totalNum5", totalNum5); + data.put("totalNum6", totalNum6); + data.put("totalNum7", totalNum7); + return success(data); + } + + + // 读取案例列表 + private PageResult caseList(OaAppParam param){ + param.setShowCase(true); + final PageResult appPageResult = oaAppService.pageRel(param); + appPageResult.getList().forEach(d -> { + d.setContent(null); + // 读取账号列表 + d.setAppUrlList(oaAppUrlService.list(new LambdaQueryWrapper().eq(OaAppUrl::getAppId,d.getAppId()))); + // 读取项目附件(链式构建GET请求) + HashMap map = new HashMap<>(); + map.put("appId", d.getAppId()); + final String build = UrlBuilder.of("https://server.gxwebsoft.com/api/file/page").setQuery(new UrlQuery(map)).build(); + String response = HttpRequest.get(build) + .header("Authorization", param.getToken()) + .header("Tenantid", d.getTenantId().toString()) + .body(JSONObject.toJSONString(map))//表单内容 + .timeout(20000)//超时,毫秒 + .execute().body(); + + final ApiResult> userResult = JSONObject.parseObject(response, new TypeReference>>() { + }); + d.setAppFiles(userResult.getData().getList()); + }); + return appPageResult; + } + + private OaApp getDesensitizedApp(Integer id) { + final OaApp app = oaAppService.getByIdRel(id); + app.setPhone(DesensitizedUtil.mobilePhone(app.getPhone())); + app.setCompanyName( + StrUtil.hide(app.getCompanyName(), 2, app.getCompanyName().length() - 2)); + app.setRequirement(DesensitizedUtil.chineseName(app.getCompanyName())); + return app; + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @ApiOperation("重置秘钥") + @PostMapping("/updateAppSecret") + public ApiResult updateAppSecret(@RequestBody OaApp app) { + String key = "code:" + app.getPhone(); + final String code = redisUtil.get(key); + if (app.getAppId() == null) { + return fail("appId不合法"); + } + if(app.getAppSecret() == null){ + return fail("appSecret不合法"); + } + if(app.getAppCode() == null){ + return fail("短信验证码不正确"); + } +// && !app.getAppCode().equals("170083") + if(!app.getAppCode().equals(code)){ + return fail("短信验证码不正确"); + } + oaAppService.updateById(app); + // 保存到redis + redisUtil.set("AppSecret:" + app.getAppId(),app.getAppSecret()); + redisUtil.delete(key); + return success("重置成功",app.getAppSecret()); + } + + @PreAuthorize("hasAuthority('oa:app:list')") + @ApiOperation("APP应用授权身份效验") + @GetMapping("/authentication/{appid}") + public ApiResult authentication(@PathVariable("appid") String appid) { + final OaApp appInfo = oaAppService.getById(appid); + if(appInfo == null){ + return fail("应用不存在:".concat(appid)); + } + return success("应用信息",appInfo); + } + + @ApiOperation("查询我的项目信息") + @GetMapping("/getMyApp") + public ApiResult getMyApp() { + final User loginUser = getLoginUser(); + // 未登录情况 + if(loginUser == null){ + return fail("请先登录",null); + } + oaAppService.list(); + + // 使用关联查询 + return success("查询成功",null); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAppFieldController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAppFieldController.java new file mode 100644 index 0000000..65110a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAppFieldController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAppFieldService; +import com.gxwebsoft.oa.entity.OaAppField; +import com.gxwebsoft.oa.param.OaAppFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用参数控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "应用参数管理") +@RestController +@RequestMapping("/api/oa/oa-app-field") +public class OaAppFieldController extends BaseController { + @Resource + private OaAppFieldService oaAppFieldService; + + @ApiOperation("分页查询应用参数") + @GetMapping("/page") + public ApiResult> page(OaAppFieldParam param) { + // 使用关联查询 + return success(oaAppFieldService.pageRel(param)); + } + + @ApiOperation("查询全部应用参数") + @GetMapping() + public ApiResult> list(OaAppFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAppFieldService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAppFieldService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAppField:list')") + @OperationLog + @ApiOperation("根据id查询应用参数") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAppFieldService.getById(id)); + // 使用关联查询 + //return success(oaAppFieldService.getByIdRel(id)); + } + + @ApiOperation("添加应用参数") + @PostMapping() + public ApiResult save(@RequestBody OaAppField oaAppField) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAppField.setUserId(loginUser.getUserId()); + } + if (oaAppFieldService.save(oaAppField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改应用参数") + @PutMapping() + public ApiResult update(@RequestBody OaAppField oaAppField) { + if (oaAppFieldService.updateById(oaAppField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除应用参数") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAppFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加应用参数") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAppFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改应用参数") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAppFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除应用参数") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAppFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAppRenewController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAppRenewController.java new file mode 100644 index 0000000..b297c4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAppRenewController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAppRenewService; +import com.gxwebsoft.oa.entity.OaAppRenew; +import com.gxwebsoft.oa.param.OaAppRenewParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 续费管理控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "续费管理管理") +@RestController +@RequestMapping("/api/oa/oa-app-renew") +public class OaAppRenewController extends BaseController { + @Resource + private OaAppRenewService oaAppRenewService; + + @ApiOperation("分页查询续费管理") + @GetMapping("/page") + public ApiResult> page(OaAppRenewParam param) { + // 使用关联查询 + return success(oaAppRenewService.pageRel(param)); + } + + @ApiOperation("查询全部续费管理") + @GetMapping() + public ApiResult> list(OaAppRenewParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAppRenewService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAppRenewService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAppRenew:list')") + @OperationLog + @ApiOperation("根据id查询续费管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAppRenewService.getById(id)); + // 使用关联查询 + //return success(oaAppRenewService.getByIdRel(id)); + } + + @ApiOperation("添加续费管理") + @PostMapping() + public ApiResult save(@RequestBody OaAppRenew oaAppRenew) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAppRenew.setUserId(loginUser.getUserId()); + } + if (oaAppRenewService.save(oaAppRenew)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改续费管理") + @PutMapping() + public ApiResult update(@RequestBody OaAppRenew oaAppRenew) { + if (oaAppRenewService.updateById(oaAppRenew)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除续费管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAppRenewService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加续费管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAppRenewService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改续费管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAppRenewService, "app_renew_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除续费管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAppRenewService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAppUrlController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAppUrlController.java new file mode 100644 index 0000000..4bee166 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAppUrlController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAppUrlService; +import com.gxwebsoft.oa.entity.OaAppUrl; +import com.gxwebsoft.oa.param.OaAppUrlParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 项目域名控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "项目域名管理") +@RestController +@RequestMapping("/api/oa/oa-app-url") +public class OaAppUrlController extends BaseController { + @Resource + private OaAppUrlService oaAppUrlService; + + @ApiOperation("分页查询项目域名") + @GetMapping("/page") + public ApiResult> page(OaAppUrlParam param) { + // 使用关联查询 + return success(oaAppUrlService.pageRel(param)); + } + + @ApiOperation("查询全部项目域名") + @GetMapping() + public ApiResult> list(OaAppUrlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAppUrlService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAppUrlService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAppUrl:list')") + @OperationLog + @ApiOperation("根据id查询项目域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAppUrlService.getById(id)); + // 使用关联查询 + //return success(oaAppUrlService.getByIdRel(id)); + } + + @ApiOperation("添加项目域名") + @PostMapping() + public ApiResult save(@RequestBody OaAppUrl oaAppUrl) { + if (oaAppUrlService.save(oaAppUrl)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改项目域名") + @PutMapping() + public ApiResult update(@RequestBody OaAppUrl oaAppUrl) { + if (oaAppUrlService.updateById(oaAppUrl)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除项目域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAppUrlService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加项目域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAppUrlService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改项目域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAppUrlService, "app_url_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除项目域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAppUrlService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAppUserController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAppUserController.java new file mode 100644 index 0000000..76a3523 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAppUserController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAppUserService; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.oa.param.OaAppUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用成员控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "应用成员管理") +@RestController +@RequestMapping("/api/oa/oa-app-user") +public class OaAppUserController extends BaseController { + @Resource + private OaAppUserService oaAppUserService; + + @ApiOperation("分页查询应用成员") + @GetMapping("/page") + public ApiResult> page(OaAppUserParam param) { + // 使用关联查询 + return success(oaAppUserService.pageRel(param)); + } + + @ApiOperation("查询全部应用成员") + @GetMapping() + public ApiResult> list(OaAppUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAppUserService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAppUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAppUser:list')") + @OperationLog + @ApiOperation("根据id查询应用成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAppUserService.getById(id)); + // 使用关联查询 + //return success(oaAppUserService.getByIdRel(id)); + } + + @ApiOperation("添加应用成员") + @PostMapping() + public ApiResult save(@RequestBody OaAppUser oaAppUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAppUser.setUserId(loginUser.getUserId()); + } + if (oaAppUserService.save(oaAppUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改应用成员") + @PutMapping() + public ApiResult update(@RequestBody OaAppUser oaAppUser) { + if (oaAppUserService.updateById(oaAppUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除应用成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAppUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加应用成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAppUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改应用成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAppUserService, "app_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除应用成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAppUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsCodeController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsCodeController.java new file mode 100644 index 0000000..3903475 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsCodeController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsCodeService; +import com.gxwebsoft.oa.entity.OaAssetsCode; +import com.gxwebsoft.oa.param.OaAssetsCodeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 代码仓库控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +@Api(tags = "代码仓库管理") +@RestController +@RequestMapping("/api/oa/oa-assets-code") +public class OaAssetsCodeController extends BaseController { + @Resource + private OaAssetsCodeService oaAssetsCodeService; + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:list')") + @ApiOperation("分页查询代码仓库") + @GetMapping("/page") + public ApiResult> page(OaAssetsCodeParam param) { + // 使用关联查询 + return success(oaAssetsCodeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:list')") + @ApiOperation("查询全部代码仓库") + @GetMapping() + public ApiResult> list(OaAssetsCodeParam param) { + // 使用关联查询 + return success(oaAssetsCodeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:list')") + @ApiOperation("根据id查询代码仓库") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsCodeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:save')") + @OperationLog + @ApiOperation("添加代码仓库") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsCode oaAssetsCode) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsCode.setUserId(loginUser.getUserId()); + } + if (oaAssetsCodeService.save(oaAssetsCode)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:update')") + @ApiOperation("修改代码仓库") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsCode oaAssetsCode) { + if (oaAssetsCodeService.updateById(oaAssetsCode)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:remove')") + @ApiOperation("删除代码仓库") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsCodeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:save')") + @ApiOperation("批量添加代码仓库") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsCodeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:update')") + @ApiOperation("批量修改代码仓库") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsCodeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsCode:remove')") + @ApiOperation("批量删除代码仓库") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsCodeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsController.java new file mode 100644 index 0000000..69f93b3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsController.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsService; +import com.gxwebsoft.oa.entity.OaAssets; +import com.gxwebsoft.oa.param.OaAssetsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 云服务器控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:34:15 + */ +@Api(tags = "云服务器管理") +@RestController +@RequestMapping("/api/oa/oa-assets") +public class OaAssetsController extends BaseController { + @Resource + private OaAssetsService oaAssetsService; + + @PreAuthorize("hasAuthority('oa:oaAssets:list')") + @ApiOperation("分页查询云服务器") + @GetMapping("/page") + public ApiResult> page(OaAssetsParam param) { + // 使用关联查询 + return success(oaAssetsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:list')") + @ApiOperation("查询全部云服务器") + @GetMapping() + public ApiResult> list(OaAssetsParam param) { + // 使用关联查询 + return success(oaAssetsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:list')") + @ApiOperation("根据id查询云服务器") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:save')") + @OperationLog + @ApiOperation("添加云服务器") + @PostMapping() + public ApiResult save(@RequestBody OaAssets oaAssets) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssets.setUserId(loginUser.getUserId()); + } + if (oaAssetsService.save(oaAssets)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssets:update')") + @ApiOperation("修改云服务器") + @PutMapping() + public ApiResult update(@RequestBody OaAssets oaAssets) { + if (oaAssetsService.updateById(oaAssets)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:remvoe')") + @ApiOperation("删除云服务器") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:save')") + @ApiOperation("批量添加云服务器") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:update')") + @ApiOperation("批量修改云服务器") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsService, "assets_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssets:remove')") + @ApiOperation("批量删除云服务器") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsDomainController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsDomainController.java new file mode 100644 index 0000000..890bad5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsDomainController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsDomainService; +import com.gxwebsoft.oa.entity.OaAssetsDomain; +import com.gxwebsoft.oa.param.OaAssetsDomainParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 域名控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Api(tags = "域名管理") +@RestController +@RequestMapping("/api/oa/oa-assets-domain") +public class OaAssetsDomainController extends BaseController { + @Resource + private OaAssetsDomainService oaAssetsDomainService; + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:list')") + @ApiOperation("分页查询域名") + @GetMapping("/page") + public ApiResult> page(OaAssetsDomainParam param) { + // 使用关联查询 + return success(oaAssetsDomainService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:list')") + @ApiOperation("查询全部域名") + @GetMapping() + public ApiResult> list(OaAssetsDomainParam param) { + // 使用关联查询 + return success(oaAssetsDomainService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:list')") + @ApiOperation("根据id查询域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsDomainService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:save')") + @OperationLog + @ApiOperation("添加域名") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsDomain oaAssetsDomain) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsDomain.setUserId(loginUser.getUserId()); + } + if (oaAssetsDomainService.save(oaAssetsDomain)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:update')") + @ApiOperation("修改域名") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsDomain oaAssetsDomain) { + if (oaAssetsDomainService.updateById(oaAssetsDomain)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:remove')") + @ApiOperation("删除域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsDomainService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:save')") + @ApiOperation("批量添加域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsDomainService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:update')") + @ApiOperation("批量修改域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsDomainService, "domain_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsDomain:remove')") + @ApiOperation("批量删除域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsDomainService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsEmailController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsEmailController.java new file mode 100644 index 0000000..c07947d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsEmailController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsEmailService; +import com.gxwebsoft.oa.entity.OaAssetsEmail; +import com.gxwebsoft.oa.param.OaAssetsEmailParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 企业邮箱记录表控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Api(tags = "企业邮箱记录表管理") +@RestController +@RequestMapping("/api/oa/oa-assets-email") +public class OaAssetsEmailController extends BaseController { + @Resource + private OaAssetsEmailService oaAssetsEmailService; + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:list')") + @ApiOperation("分页查询企业邮箱记录表") + @GetMapping("/page") + public ApiResult> page(OaAssetsEmailParam param) { + // 使用关联查询 + return success(oaAssetsEmailService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:list')") + @ApiOperation("查询全部企业邮箱记录表") + @GetMapping() + public ApiResult> list(OaAssetsEmailParam param) { + // 使用关联查询 + return success(oaAssetsEmailService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:list')") + @OperationLog + @ApiOperation("根据id查询企业邮箱记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsEmailService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:save')") + @OperationLog + @ApiOperation("添加企业邮箱记录表") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsEmail oaAssetsEmail) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsEmail.setUserId(loginUser.getUserId()); + } + if (oaAssetsEmailService.save(oaAssetsEmail)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:update')") + @ApiOperation("修改企业邮箱记录表") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsEmail oaAssetsEmail) { + if (oaAssetsEmailService.updateById(oaAssetsEmail)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:remove')") + @ApiOperation("删除企业邮箱记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsEmailService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:save')") + @ApiOperation("批量添加企业邮箱记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsEmailService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:update')") + @ApiOperation("批量修改企业邮箱记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsEmailService, "email_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsEmail:remove')") + @ApiOperation("批量删除企业邮箱记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsEmailService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsMysqlController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsMysqlController.java new file mode 100644 index 0000000..ab18950 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsMysqlController.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsMysqlService; +import com.gxwebsoft.oa.entity.OaAssetsMysql; +import com.gxwebsoft.oa.param.OaAssetsMysqlParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 云数据库控制器 + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +@Api(tags = "云数据库管理") +@RestController +@RequestMapping("/api/oa/oa-assets-mysql") +public class OaAssetsMysqlController extends BaseController { + @Resource + private OaAssetsMysqlService oaAssetsMysqlService; + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:list')") + @ApiOperation("分页查询云数据库") + @GetMapping("/page") + public ApiResult> page(OaAssetsMysqlParam param) { + // 使用关联查询 + return success(oaAssetsMysqlService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:list')") + @ApiOperation("查询全部云数据库") + @GetMapping() + public ApiResult> list(OaAssetsMysqlParam param) { + // 使用关联查询 + return success(oaAssetsMysqlService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:list')") + @ApiOperation("根据id查询云数据库") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsMysqlService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:save')") + @ApiOperation("添加云数据库") + @OperationLog + @PostMapping() + public ApiResult save(@RequestBody OaAssetsMysql oaAssetsMysql) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsMysql.setUserId(loginUser.getUserId()); + } + if (oaAssetsMysqlService.save(oaAssetsMysql)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:update')") + @ApiOperation("修改云数据库") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsMysql oaAssetsMysql) { + if (oaAssetsMysqlService.updateById(oaAssetsMysql)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:remove')") + @ApiOperation("删除云数据库") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsMysqlService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:save')") + @ApiOperation("批量添加云数据库") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsMysqlService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:update')") + @ApiOperation("批量修改云数据库") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsMysqlService, "mysql_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsMysql:remove')") + @ApiOperation("批量删除云数据库") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsMysqlService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsServerController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsServerController.java new file mode 100644 index 0000000..9f42da0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsServerController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsServerService; +import com.gxwebsoft.oa.entity.OaAssetsServer; +import com.gxwebsoft.oa.param.OaAssetsServerParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 服务器资产记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "服务器资产记录表管理") +@RestController +@RequestMapping("/api/oa/oa-assets-server") +public class OaAssetsServerController extends BaseController { + @Resource + private OaAssetsServerService oaAssetsServerService; + + @ApiOperation("分页查询服务器资产记录表") + @GetMapping("/page") + public ApiResult> page(OaAssetsServerParam param) { + // 使用关联查询 + return success(oaAssetsServerService.pageRel(param)); + } + + @ApiOperation("查询全部服务器资产记录表") + @GetMapping() + public ApiResult> list(OaAssetsServerParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAssetsServerService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAssetsServerService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsServer:list')") + @OperationLog + @ApiOperation("根据id查询服务器资产记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAssetsServerService.getById(id)); + // 使用关联查询 + //return success(oaAssetsServerService.getByIdRel(id)); + } + + @ApiOperation("添加服务器资产记录表") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsServer oaAssetsServer) { + // 记录当前登录用户id + + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsServer.setUserId(loginUser.getUserId()); + } + if (oaAssetsServerService.save(oaAssetsServer)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改服务器资产记录表") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsServer oaAssetsServer) { + if (oaAssetsServerService.updateById(oaAssetsServer)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除服务器资产记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsServerService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加服务器资产记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsServerService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改服务器资产记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsServerService, "server_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除服务器资产记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsServerService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSiteController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSiteController.java new file mode 100644 index 0000000..04e2f14 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSiteController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsSiteService; +import com.gxwebsoft.oa.entity.OaAssetsSite; +import com.gxwebsoft.oa.param.OaAssetsSiteParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 网站信息记录表控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Api(tags = "网站信息记录表管理") +@RestController +@RequestMapping("/api/oa/oa-assets-site") +public class OaAssetsSiteController extends BaseController { + @Resource + private OaAssetsSiteService oaAssetsSiteService; + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:list')") + @ApiOperation("分页查询网站信息记录表") + @GetMapping("/page") + public ApiResult> page(OaAssetsSiteParam param) { + // 使用关联查询 + return success(oaAssetsSiteService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:list')") + @ApiOperation("查询全部网站信息记录表") + @GetMapping() + public ApiResult> list(OaAssetsSiteParam param) { + // 使用关联查询 + return success(oaAssetsSiteService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:list')") + @ApiOperation("根据id查询网站信息记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsSiteService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:save')") + @OperationLog + @ApiOperation("添加网站信息记录表") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsSite oaAssetsSite) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsSite.setUserId(loginUser.getUserId()); + } + if (oaAssetsSiteService.save(oaAssetsSite)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:update')") + @ApiOperation("修改网站信息记录表") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsSite oaAssetsSite) { + if (oaAssetsSiteService.updateById(oaAssetsSite)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:remove')") + @ApiOperation("删除网站信息记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsSiteService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:save')") + @ApiOperation("批量添加网站信息记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsSiteService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:update')") + @ApiOperation("批量修改网站信息记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsSiteService, "website_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSite:remove')") + @ApiOperation("批量删除网站信息记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsSiteService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSoftwareCertController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSoftwareCertController.java new file mode 100644 index 0000000..b4f6994 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSoftwareCertController.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsSoftwareCertService; +import com.gxwebsoft.oa.entity.OaAssetsSoftwareCert; +import com.gxwebsoft.oa.param.OaAssetsSoftwareCertParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 计算机软件著作权登记控制器 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Api(tags = "计算机软件著作权登记管理") +@RestController +@RequestMapping("/api/oa/oa-assets-software-cert") +public class OaAssetsSoftwareCertController extends BaseController { + @Resource + private OaAssetsSoftwareCertService oaAssetsSoftwareCertService; + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:list')") + @ApiOperation("分页查询计算机软件著作权登记") + @GetMapping("/page") + public ApiResult> page(OaAssetsSoftwareCertParam param) { + // 使用关联查询 + return success(oaAssetsSoftwareCertService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:list')") + @ApiOperation("查询全部计算机软件著作权登记") + @GetMapping() + public ApiResult> list(OaAssetsSoftwareCertParam param) { + // 使用关联查询 + return success(oaAssetsSoftwareCertService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:list')") + @ApiOperation("根据id查询计算机软件著作权登记") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsSoftwareCertService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:save')") + @OperationLog + @ApiOperation("添加计算机软件著作权登记") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsSoftwareCert oaAssetsSoftwareCert) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsSoftwareCert.setUserId(loginUser.getUserId()); + } + if (oaAssetsSoftwareCertService.save(oaAssetsSoftwareCert)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:update')") + @ApiOperation("修改计算机软件著作权登记") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsSoftwareCert oaAssetsSoftwareCert) { + if (oaAssetsSoftwareCertService.updateById(oaAssetsSoftwareCert)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:remove')") + @ApiOperation("删除计算机软件著作权登记") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsSoftwareCertService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:save')") + @ApiOperation("批量添加计算机软件著作权登记") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsSoftwareCertService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:update')") + @ApiOperation("批量修改计算机软件著作权登记") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsSoftwareCertService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSoftwareCert:remove')") + @ApiOperation("批量删除计算机软件著作权登记") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsSoftwareCertService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSslController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSslController.java new file mode 100644 index 0000000..e962d26 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsSslController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsSslService; +import com.gxwebsoft.oa.entity.OaAssetsSsl; +import com.gxwebsoft.oa.param.OaAssetsSslParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * ssl证书控制器 + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +@Api(tags = "ssl证书管理") +@RestController +@RequestMapping("/api/oa/oa-assets-ssl") +public class OaAssetsSslController extends BaseController { + @Resource + private OaAssetsSslService oaAssetsSslService; + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:list')") + @ApiOperation("分页查询ssl证书") + @GetMapping("/page") + public ApiResult> page(OaAssetsSslParam param) { + // 使用关联查询 + return success(oaAssetsSslService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:list')") + @ApiOperation("查询全部ssl证书") + @GetMapping() + public ApiResult> list(OaAssetsSslParam param) { + // 使用关联查询 + return success(oaAssetsSslService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:list')") + @OperationLog + @ApiOperation("根据id查询ssl证书") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsSslService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:save')") + @ApiOperation("添加ssl证书") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsSsl oaAssetsSsl) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsSsl.setUserId(loginUser.getUserId()); + oaAssetsSsl.setTenantId(loginUser.getTenantId()); + } + if (oaAssetsSslService.save(oaAssetsSsl)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:update')") + @ApiOperation("修改ssl证书") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsSsl oaAssetsSsl) { + if (oaAssetsSslService.updateById(oaAssetsSsl)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:remove')") + @ApiOperation("删除ssl证书") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsSslService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:save')") + @ApiOperation("批量添加ssl证书") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsSslService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:update')") + @ApiOperation("批量修改ssl证书") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsSslService, "ssl_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsSsl:remove')") + @ApiOperation("批量删除ssl证书") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsSslService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsTrademarkController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsTrademarkController.java new file mode 100644 index 0000000..cbe3a01 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsTrademarkController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsTrademarkService; +import com.gxwebsoft.oa.entity.OaAssetsTrademark; +import com.gxwebsoft.oa.param.OaAssetsTrademarkParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商标注册控制器 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Api(tags = "商标注册管理") +@RestController +@RequestMapping("/api/oa/oa-assets-trademark") +public class OaAssetsTrademarkController extends BaseController { + @Resource + private OaAssetsTrademarkService oaAssetsTrademarkService; + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:list')") + @ApiOperation("分页查询商标注册") + @GetMapping("/page") + public ApiResult> page(OaAssetsTrademarkParam param) { + // 使用关联查询 + return success(oaAssetsTrademarkService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:list')") + @ApiOperation("查询全部商标注册") + @GetMapping() + public ApiResult> list(OaAssetsTrademarkParam param) { + // 使用关联查询 + return success(oaAssetsTrademarkService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:list')") + @ApiOperation("根据id查询商标注册") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsTrademarkService.getByIdRel(id)); + } + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:save')") + @ApiOperation("添加商标注册") + @OperationLog + @PostMapping() + public ApiResult save(@RequestBody OaAssetsTrademark oaAssetsTrademark) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsTrademark.setUserId(loginUser.getUserId()); + } + if (oaAssetsTrademarkService.save(oaAssetsTrademark)) { + return success("添加成功"); + } + return fail("添加失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:update')") + @ApiOperation("修改商标注册") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsTrademark oaAssetsTrademark) { + if (oaAssetsTrademarkService.updateById(oaAssetsTrademark)) { + return success("修改成功"); + } + return fail("修改失败"); + } + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:remove')") + @ApiOperation("删除商标注册") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsTrademarkService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:save')") + @ApiOperation("批量添加商标注册") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsTrademarkService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:update')") + @ApiOperation("批量修改商标注册") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsTrademarkService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsTrademark:remove')") + @ApiOperation("批量删除商标注册") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsTrademarkService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsUserController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsUserController.java new file mode 100644 index 0000000..e6f451a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsUserController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsUserService; +import com.gxwebsoft.oa.entity.OaAssetsUser; +import com.gxwebsoft.oa.param.OaAssetsUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 服务器成员管理控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Api(tags = "服务器成员管理管理") +@RestController +@RequestMapping("/api/oa/oa-assets-user") +public class OaAssetsUserController extends BaseController { + @Resource + private OaAssetsUserService oaAssetsUserService; + + @ApiOperation("分页查询服务器成员管理") + @GetMapping("/page") + public ApiResult> page(OaAssetsUserParam param) { + // 使用关联查询 + return success(oaAssetsUserService.pageRel(param)); + } + + @ApiOperation("查询全部服务器成员管理") + @GetMapping() + public ApiResult> list(OaAssetsUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaAssetsUserService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaAssetsUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsUser:list')") + @OperationLog + @ApiOperation("根据id查询服务器成员管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaAssetsUserService.getById(id)); + // 使用关联查询 + //return success(oaAssetsUserService.getByIdRel(id)); + } + + @ApiOperation("添加服务器成员管理") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsUser oaAssetsUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsUser.setUserId(loginUser.getUserId()); + } + if (oaAssetsUserService.save(oaAssetsUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改服务器成员管理") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsUser oaAssetsUser) { + if (oaAssetsUserService.updateById(oaAssetsUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除服务器成员管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加服务器成员管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改服务器成员管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsUserService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除服务器成员管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaAssetsVhostController.java b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsVhostController.java new file mode 100644 index 0000000..e6ebe91 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaAssetsVhostController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaAssetsVhostService; +import com.gxwebsoft.oa.entity.OaAssetsVhost; +import com.gxwebsoft.oa.param.OaAssetsVhostParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 虚拟主机记录表控制器 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Api(tags = "虚拟主机记录表管理") +@RestController +@RequestMapping("/api/oa/oa-assets-vhost") +public class OaAssetsVhostController extends BaseController { + @Resource + private OaAssetsVhostService oaAssetsVhostService; + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:list')") + @ApiOperation("分页查询虚拟主机记录表") + @GetMapping("/page") + public ApiResult> page(OaAssetsVhostParam param) { + // 使用关联查询 + return success(oaAssetsVhostService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:list')") + @ApiOperation("查询全部虚拟主机记录表") + @GetMapping() + public ApiResult> list(OaAssetsVhostParam param) { + // 使用关联查询 + return success(oaAssetsVhostService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:list')") + @ApiOperation("根据id查询虚拟主机记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(oaAssetsVhostService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:save')") + @OperationLog + @ApiOperation("添加虚拟主机记录表") + @PostMapping() + public ApiResult save(@RequestBody OaAssetsVhost oaAssetsVhost) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaAssetsVhost.setUserId(loginUser.getUserId()); + } + if (oaAssetsVhostService.save(oaAssetsVhost)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:update')") + @ApiOperation("修改虚拟主机记录表") + @PutMapping() + public ApiResult update(@RequestBody OaAssetsVhost oaAssetsVhost) { + if (oaAssetsVhostService.updateById(oaAssetsVhost)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:remove')") + @ApiOperation("删除虚拟主机记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaAssetsVhostService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:save')") + @ApiOperation("批量添加虚拟主机记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaAssetsVhostService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:update')") + @ApiOperation("批量修改虚拟主机记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaAssetsVhostService, "vhost_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:oaAssetsVhost:remove')") + @ApiOperation("批量删除虚拟主机记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaAssetsVhostService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java new file mode 100644 index 0000000..952fd7d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.oa.service.OaCompanyService; +import com.gxwebsoft.oa.entity.OaCompany; +import com.gxwebsoft.oa.param.OaCompanyParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 企业信息控制器 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Api(tags = "企业信息管理") +@RestController +@RequestMapping("/api/oa/oa-company") +public class OaCompanyController extends BaseController { + @Resource + private OaCompanyService oaCompanyService; + + @ApiOperation("分页查询企业信息") + @GetMapping("/page") + public ApiResult> page(OaCompanyParam param) { + // 使用关联查询 + return success(oaCompanyService.pageRel(param)); + } + + @ApiOperation("查询全部企业信息") + @GetMapping() + public ApiResult> list(OaCompanyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaCompanyService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaCompanyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaCompany:list')") + @OperationLog + @ApiOperation("根据id查询企业信息") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaCompanyService.getById(id)); + // 使用关联查询 + //return success(oaCompanyService.getByIdRel(id)); + } + + @ApiOperation("添加企业信息") + @PostMapping() + public ApiResult save(@RequestBody OaCompany oaCompany) { + if (oaCompanyService.save(oaCompany)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改企业信息") + @PutMapping() + public ApiResult update(@RequestBody OaCompany oaCompany) { + if (oaCompanyService.updateById(oaCompany)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除企业信息") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaCompanyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加企业信息") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaCompanyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改企业信息") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaCompanyService, "company_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除企业信息") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaCompanyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaCompanyFieldController.java b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyFieldController.java new file mode 100644 index 0000000..590dcd2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyFieldController.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.oa.service.OaCompanyFieldService; +import com.gxwebsoft.oa.entity.OaCompanyField; +import com.gxwebsoft.oa.param.OaCompanyFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 企业参数控制器 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Api(tags = "企业参数管理") +@RestController +@RequestMapping("/api/oa/oa-company-field") +public class OaCompanyFieldController extends BaseController { + @Resource + private OaCompanyFieldService oaCompanyFieldService; + + @ApiOperation("分页查询企业参数") + @GetMapping("/page") + public ApiResult> page(OaCompanyFieldParam param) { + // 使用关联查询 + return success(oaCompanyFieldService.pageRel(param)); + } + + @ApiOperation("查询全部企业参数") + @GetMapping() + public ApiResult> list(OaCompanyFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaCompanyFieldService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaCompanyFieldService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaCompanyField:list')") + @OperationLog + @ApiOperation("根据id查询企业参数") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaCompanyFieldService.getById(id)); + // 使用关联查询 + //return success(oaCompanyFieldService.getByIdRel(id)); + } + + @ApiOperation("添加企业参数") + @PostMapping() + public ApiResult save(@RequestBody OaCompanyField oaCompanyField) { + if (oaCompanyFieldService.save(oaCompanyField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改企业参数") + @PutMapping() + public ApiResult update(@RequestBody OaCompanyField oaCompanyField) { + if (oaCompanyFieldService.updateById(oaCompanyField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除企业参数") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaCompanyFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加企业参数") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaCompanyFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改企业参数") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaCompanyFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除企业参数") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaCompanyFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaCompanyUserController.java b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyUserController.java new file mode 100644 index 0000000..c244104 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyUserController.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.oa.service.OaCompanyUserService; +import com.gxwebsoft.oa.entity.OaCompanyUser; +import com.gxwebsoft.oa.param.OaCompanyUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 成员管理控制器 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Api(tags = "成员管理管理") +@RestController +@RequestMapping("/api/oa/oa-company-user") +public class OaCompanyUserController extends BaseController { + @Resource + private OaCompanyUserService oaCompanyUserService; + + @ApiOperation("分页查询成员管理") + @GetMapping("/page") + public ApiResult> page(OaCompanyUserParam param) { + // 使用关联查询 + return success(oaCompanyUserService.pageRel(param)); + } + + @ApiOperation("查询全部成员管理") + @GetMapping() + public ApiResult> list(OaCompanyUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaCompanyUserService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaCompanyUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaCompanyUser:list')") + @OperationLog + @ApiOperation("根据id查询成员管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaCompanyUserService.getById(id)); + // 使用关联查询 + //return success(oaCompanyUserService.getByIdRel(id)); + } + + @ApiOperation("添加成员管理") + @PostMapping() + public ApiResult save(@RequestBody OaCompanyUser oaCompanyUser) { + if (oaCompanyUserService.save(oaCompanyUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改成员管理") + @PutMapping() + public ApiResult update(@RequestBody OaCompanyUser oaCompanyUser) { + if (oaCompanyUserService.updateById(oaCompanyUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除成员管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaCompanyUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加成员管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaCompanyUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改成员管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaCompanyUserService, "company_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除成员管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaCompanyUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaLinkController.java b/src/main/java/com/gxwebsoft/oa/controller/OaLinkController.java new file mode 100644 index 0000000..ac99f06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaLinkController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaLinkService; +import com.gxwebsoft.oa.entity.OaLink; +import com.gxwebsoft.oa.param.OaLinkParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 常用链接控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "常用链接管理") +@RestController +@RequestMapping("/api/oa/oa-link") +public class OaLinkController extends BaseController { + @Resource + private OaLinkService oaLinkService; + + @ApiOperation("分页查询常用链接") + @GetMapping("/page") + public ApiResult> page(OaLinkParam param) { + // 使用关联查询 + return success(oaLinkService.pageRel(param)); + } + + @ApiOperation("查询全部常用链接") + @GetMapping() + public ApiResult> list(OaLinkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaLinkService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaLinkService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaLink:list')") + @OperationLog + @ApiOperation("根据id查询常用链接") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaLinkService.getById(id)); + // 使用关联查询 + //return success(oaLinkService.getByIdRel(id)); + } + + @ApiOperation("添加常用链接") + @PostMapping() + public ApiResult save(@RequestBody OaLink oaLink) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaLink.setUserId(loginUser.getUserId()); + } + if (oaLinkService.save(oaLink)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改常用链接") + @PutMapping() + public ApiResult update(@RequestBody OaLink oaLink) { + if (oaLinkService.updateById(oaLink)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除常用链接") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaLinkService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加常用链接") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaLinkService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改常用链接") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaLinkService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除常用链接") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaLinkService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaProductController.java b/src/main/java/com/gxwebsoft/oa/controller/OaProductController.java new file mode 100644 index 0000000..599d9f3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaProductController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaProductService; +import com.gxwebsoft.oa.entity.OaProduct; +import com.gxwebsoft.oa.param.OaProductParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 产品记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "产品记录表管理") +@RestController +@RequestMapping("/api/oa/oa-product") +public class OaProductController extends BaseController { + @Resource + private OaProductService oaProductService; + + @ApiOperation("分页查询产品记录表") + @GetMapping("/page") + public ApiResult> page(OaProductParam param) { + // 使用关联查询 + return success(oaProductService.pageRel(param)); + } + + @ApiOperation("查询全部产品记录表") + @GetMapping() + public ApiResult> list(OaProductParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaProductService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaProductService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaProduct:list')") + @OperationLog + @ApiOperation("根据id查询产品记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaProductService.getById(id)); + // 使用关联查询 + //return success(oaProductService.getByIdRel(id)); + } + + @ApiOperation("添加产品记录表") + @PostMapping() + public ApiResult save(@RequestBody OaProduct oaProduct) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaProduct.setUserId(loginUser.getUserId()); + } + if (oaProductService.save(oaProduct)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改产品记录表") + @PutMapping() + public ApiResult update(@RequestBody OaProduct oaProduct) { + if (oaProductService.updateById(oaProduct)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除产品记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaProductService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加产品记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaProductService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改产品记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaProductService, "product_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除产品记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaProductService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaProductTabsController.java b/src/main/java/com/gxwebsoft/oa/controller/OaProductTabsController.java new file mode 100644 index 0000000..3e07a52 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaProductTabsController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaProductTabsService; +import com.gxwebsoft.oa.entity.OaProductTabs; +import com.gxwebsoft.oa.param.OaProductTabsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 产品标签记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "产品标签记录表管理") +@RestController +@RequestMapping("/api/oa/oa-product-tabs") +public class OaProductTabsController extends BaseController { + @Resource + private OaProductTabsService oaProductTabsService; + + @ApiOperation("分页查询产品标签记录表") + @GetMapping("/page") + public ApiResult> page(OaProductTabsParam param) { + // 使用关联查询 + return success(oaProductTabsService.pageRel(param)); + } + + @ApiOperation("查询全部产品标签记录表") + @GetMapping() + public ApiResult> list(OaProductTabsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaProductTabsService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaProductTabsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaProductTabs:list')") + @OperationLog + @ApiOperation("根据id查询产品标签记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaProductTabsService.getById(id)); + // 使用关联查询 + //return success(oaProductTabsService.getByIdRel(id)); + } + + @ApiOperation("添加产品标签记录表") + @PostMapping() + public ApiResult save(@RequestBody OaProductTabs oaProductTabs) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaProductTabs.setUserId(loginUser.getUserId()); + } + if (oaProductTabsService.save(oaProductTabs)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改产品标签记录表") + @PutMapping() + public ApiResult update(@RequestBody OaProductTabs oaProductTabs) { + if (oaProductTabsService.updateById(oaProductTabs)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除产品标签记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaProductTabsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加产品标签记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaProductTabsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改产品标签记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaProductTabsService, "tab_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除产品标签记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaProductTabsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaTaskController.java b/src/main/java/com/gxwebsoft/oa/controller/OaTaskController.java new file mode 100644 index 0000000..6b0c00f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaTaskController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaTaskService; +import com.gxwebsoft.oa.entity.OaTask; +import com.gxwebsoft.oa.param.OaTaskParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 任务记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "任务记录表管理") +@RestController +@RequestMapping("/api/oa/oa-task") +public class OaTaskController extends BaseController { + @Resource + private OaTaskService oaTaskService; + + @ApiOperation("分页查询任务记录表") + @GetMapping("/page") + public ApiResult> page(OaTaskParam param) { + // 使用关联查询 + return success(oaTaskService.pageRel(param)); + } + + @ApiOperation("查询全部任务记录表") + @GetMapping() + public ApiResult> list(OaTaskParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaTaskService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaTaskService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaTask:list')") + @OperationLog + @ApiOperation("根据id查询任务记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaTaskService.getById(id)); + // 使用关联查询 + //return success(oaTaskService.getByIdRel(id)); + } + + @ApiOperation("添加任务记录表") + @PostMapping() + public ApiResult save(@RequestBody OaTask oaTask) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaTask.setUserId(loginUser.getUserId()); + } + if (oaTaskService.save(oaTask)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改任务记录表") + @PutMapping() + public ApiResult update(@RequestBody OaTask oaTask) { + if (oaTaskService.updateById(oaTask)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除任务记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaTaskService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加任务记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaTaskService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改任务记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaTaskService, "task_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除任务记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaTaskService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaTaskCountController.java b/src/main/java/com/gxwebsoft/oa/controller/OaTaskCountController.java new file mode 100644 index 0000000..c117cfe --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaTaskCountController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaTaskCountService; +import com.gxwebsoft.oa.entity.OaTaskCount; +import com.gxwebsoft.oa.param.OaTaskCountParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 数据统计控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "数据统计管理") +@RestController +@RequestMapping("/api/oa/oa-task-count") +public class OaTaskCountController extends BaseController { + @Resource + private OaTaskCountService oaTaskCountService; + + @ApiOperation("分页查询数据统计") + @GetMapping("/page") + public ApiResult> page(OaTaskCountParam param) { + // 使用关联查询 + return success(oaTaskCountService.pageRel(param)); + } + + @ApiOperation("查询全部数据统计") + @GetMapping() + public ApiResult> list(OaTaskCountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaTaskCountService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaTaskCountService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaTaskCount:list')") + @OperationLog + @ApiOperation("根据id查询数据统计") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaTaskCountService.getById(id)); + // 使用关联查询 + //return success(oaTaskCountService.getByIdRel(id)); + } + + @ApiOperation("添加数据统计") + @PostMapping() + public ApiResult save(@RequestBody OaTaskCount oaTaskCount) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaTaskCount.setUserId(loginUser.getUserId()); + } + if (oaTaskCountService.save(oaTaskCount)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改数据统计") + @PutMapping() + public ApiResult update(@RequestBody OaTaskCount oaTaskCount) { + if (oaTaskCountService.updateById(oaTaskCount)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除数据统计") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaTaskCountService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加数据统计") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaTaskCountService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改数据统计") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaTaskCountService, "task_count_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除数据统计") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaTaskCountService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaTaskRecordController.java b/src/main/java/com/gxwebsoft/oa/controller/OaTaskRecordController.java new file mode 100644 index 0000000..73aaade --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaTaskRecordController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaTaskRecordService; +import com.gxwebsoft.oa.entity.OaTaskRecord; +import com.gxwebsoft.oa.param.OaTaskRecordParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 工单回复记录表控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "工单回复记录表管理") +@RestController +@RequestMapping("/api/oa/oa-task-record") +public class OaTaskRecordController extends BaseController { + @Resource + private OaTaskRecordService oaTaskRecordService; + + @ApiOperation("分页查询工单回复记录表") + @GetMapping("/page") + public ApiResult> page(OaTaskRecordParam param) { + // 使用关联查询 + return success(oaTaskRecordService.pageRel(param)); + } + + @ApiOperation("查询全部工单回复记录表") + @GetMapping() + public ApiResult> list(OaTaskRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaTaskRecordService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaTaskRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaTaskRecord:list')") + @OperationLog + @ApiOperation("根据id查询工单回复记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaTaskRecordService.getById(id)); + // 使用关联查询 + //return success(oaTaskRecordService.getByIdRel(id)); + } + + @ApiOperation("添加工单回复记录表") + @PostMapping() + public ApiResult save(@RequestBody OaTaskRecord oaTaskRecord) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaTaskRecord.setUserId(loginUser.getUserId()); + } + if (oaTaskRecordService.save(oaTaskRecord)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改工单回复记录表") + @PutMapping() + public ApiResult update(@RequestBody OaTaskRecord oaTaskRecord) { + if (oaTaskRecordService.updateById(oaTaskRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除工单回复记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaTaskRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加工单回复记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaTaskRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改工单回复记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaTaskRecordService, "task_record_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除工单回复记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaTaskRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaTaskUserController.java b/src/main/java/com/gxwebsoft/oa/controller/OaTaskUserController.java new file mode 100644 index 0000000..49ed320 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/OaTaskUserController.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.OaTaskUserService; +import com.gxwebsoft.oa.entity.OaTaskUser; +import com.gxwebsoft.oa.param.OaTaskUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 工单成员控制器 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Api(tags = "工单成员管理") +@RestController +@RequestMapping("/api/oa/oa-task-user") +public class OaTaskUserController extends BaseController { + @Resource + private OaTaskUserService oaTaskUserService; + + @ApiOperation("分页查询工单成员") + @GetMapping("/page") + public ApiResult> page(OaTaskUserParam param) { + // 使用关联查询 + return success(oaTaskUserService.pageRel(param)); + } + + @ApiOperation("查询全部工单成员") + @GetMapping() + public ApiResult> list(OaTaskUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(oaTaskUserService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(oaTaskUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:oaTaskUser:list')") + @OperationLog + @ApiOperation("根据id查询工单成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(oaTaskUserService.getById(id)); + // 使用关联查询 + //return success(oaTaskUserService.getByIdRel(id)); + } + + @ApiOperation("添加工单成员") + @PostMapping() + public ApiResult save(@RequestBody OaTaskUser oaTaskUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + oaTaskUser.setUserId(loginUser.getUserId()); + } + if (oaTaskUserService.save(oaTaskUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改工单成员") + @PutMapping() + public ApiResult update(@RequestBody OaTaskUser oaTaskUser) { + if (oaTaskUserService.updateById(oaTaskUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除工单成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (oaTaskUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加工单成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (oaTaskUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改工单成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(oaTaskUserService, "task_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除工单成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (oaTaskUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaApp.java b/src/main/java/com/gxwebsoft/oa/entity/OaApp.java new file mode 100644 index 0000000..37296b2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaApp.java @@ -0,0 +1,266 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.gxwebsoft.common.system.entity.FileRecord; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaApp对象", description = "应用") +public class OaApp implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @TableId(value = "app_id", type = IdType.AUTO) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "应用秘钥") + private String appSecret; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "应用类型") + private String appTypeMultiple; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "链接地址") + private String serverUrl; + + @ApiModelProperty(value = "文件服务器") + private String fileUrl; + + @ApiModelProperty(value = "回调地址") + private String callbackUrl; + + @ApiModelProperty(value = "腾讯文档地址") + private String docsUrl; + + @ApiModelProperty(value = "代码仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "原型图地址") + private String prototypeUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "软件定价") + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + private Integer isUse; + + @ApiModelProperty(value = "附近1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "是否显示续费提醒") + private Boolean showExpiration; + + @ApiModelProperty(value = "是否作为案例展示") + private Integer showCase; + + @ApiModelProperty(value = "是否显示在首页") + private Integer showIndex; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "续费金额") + private BigDecimal renewMoney; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "成员管理") + @TableField(exist = false) + private List users; + + @ApiModelProperty(value = "链接列表") + @TableField(exist = false) + private List appUrlList; + + @ApiModelProperty(value = "项目附件") + @TableField(exist = false) + private List appFiles; + + @ApiModelProperty(value = "主体名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "开发者名称") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "开发者名称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "开发者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAppField.java b/src/main/java/com/gxwebsoft/oa/entity/OaAppField.java new file mode 100644 index 0000000..493898d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAppField.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAppField对象", description = "应用参数") +public class OaAppField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAppRenew.java b/src/main/java/com/gxwebsoft/oa/entity/OaAppRenew.java new file mode 100644 index 0000000..3697107 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAppRenew.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 续费管理 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAppRenew对象", description = "续费管理") +public class OaAppRenew implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_renew_id", type = IdType.AUTO) + private Integer appRenewId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "续费金额") + private BigDecimal money; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "付款凭证") + private String images; + + @ApiModelProperty(value = "用户姓名") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAppUrl.java b/src/main/java/com/gxwebsoft/oa/entity/OaAppUrl.java new file mode 100644 index 0000000..64aa713 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAppUrl.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目域名 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAppUrl对象", description = "项目域名") +public class OaAppUrl implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_url_id", type = IdType.AUTO) + private Integer appUrlId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "域名类型") + private String name; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAppUser.java b/src/main/java/com/gxwebsoft/oa/entity/OaAppUser.java new file mode 100644 index 0000000..28e2461 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAppUser.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用成员 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAppUser对象", description = "应用成员") +public class OaAppUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_user_id", type = IdType.AUTO) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssets.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssets.java new file mode 100644 index 0000000..36234f3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssets.java @@ -0,0 +1,156 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 云服务器 + * + * @author 科技小王子 + * @since 2024-10-18 18:34:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssets对象", description = "云服务器") +public class OaAssets implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @TableId(value = "assets_id", type = IdType.AUTO) + private Integer assetsId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "宝塔接口秘钥") + private String btSign; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "客户ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsCode.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsCode.java new file mode 100644 index 0000000..8e8439a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsCode.java @@ -0,0 +1,89 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 代码仓库 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsCode对象", description = "代码仓库") +public class OaAssetsCode implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "英文标识") + private String code; + + @ApiModelProperty(value = "仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "仓库品牌") + private String brand; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsDomain.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsDomain.java new file mode 100644 index 0000000..834a9f3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsDomain.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 域名 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsDomain对象", description = "域名") +public class OaAssetsDomain implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "domain_id", type = IdType.AUTO) + private Integer domainId; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "域名") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "注册厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsEmail.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsEmail.java new file mode 100644 index 0000000..762fdb7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsEmail.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 企业邮箱记录表 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsEmail对象", description = "企业邮箱记录表") +public class OaAssetsEmail implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "email_id", type = IdType.AUTO) + private Integer emailId; + + @ApiModelProperty(value = "邮箱名称") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "邮箱型号") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String system; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsMysql.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsMysql.java new file mode 100644 index 0000000..c9ef948 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsMysql.java @@ -0,0 +1,105 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 云数据库 + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsMysql对象", description = "云数据库") +public class OaAssetsMysql implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "mysql_id", type = IdType.AUTO) + private Integer mysqlId; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "数据库名") + private String name; + + @ApiModelProperty(value = "数据库标识") + private String code; + + @ApiModelProperty(value = "注册厂商") + private String brand; + + @ApiModelProperty(value = "ip地址") + private String ip; + + @ApiModelProperty(value = "端口") + private String port; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsServer.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsServer.java new file mode 100644 index 0000000..cf26546 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsServer.java @@ -0,0 +1,142 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 服务器资产记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsServer对象", description = "服务器资产记录表") +public class OaAssetsServer implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @TableId(value = "server_id", type = IdType.AUTO) + private Integer serverId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "宝塔接口秘钥") + private String btSign; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "客户ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSite.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSite.java new file mode 100644 index 0000000..d10eab8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSite.java @@ -0,0 +1,166 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站信息记录表 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsSite对象", description = "网站信息记录表") +public class OaAssetsSite implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "站点ID") + @TableId(value = "website_id", type = IdType.AUTO) + private Integer websiteId; + + @ApiModelProperty(value = "网站名称") + private String websiteName; + + @ApiModelProperty(value = "网站标识") + private String websiteCode; + + @ApiModelProperty(value = "网站LOGO") + private String websiteIcon; + + @ApiModelProperty(value = "网站LOGO") + private String websiteLogo; + + @ApiModelProperty(value = "网站LOGO(深色模式)") + private String websiteDarkLogo; + + @ApiModelProperty(value = "网站类型") + private String websiteType; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "全局样式") + private String style; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + private Integer version; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "模版ID") + private Integer templateId; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "ICP备案号") + private String icpNo; + + @ApiModelProperty(value = "公安备案") + private String policeNo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停") + private Integer status; + + @ApiModelProperty(value = "维护说明") + private String statusText; + + @ApiModelProperty(value = "关闭说明") + private String statusClose; + + @ApiModelProperty(value = "全局样式") + private String styles; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSoftwareCert.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSoftwareCert.java new file mode 100644 index 0000000..f70284d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSoftwareCert.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 计算机软件著作权登记 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsSoftwareCert对象", description = "计算机软件著作权登记") +public class OaAssetsSoftwareCert implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "软件著作权标识") + private String code; + + @ApiModelProperty(value = "证书类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书下载地址") + private String certUrl; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSsl.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSsl.java new file mode 100644 index 0000000..0559aaf --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsSsl.java @@ -0,0 +1,111 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * ssl证书 + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsSsl对象", description = "ssl证书") +public class OaAssetsSsl implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "ssl_id", type = IdType.AUTO) + private Integer sslId; + + @ApiModelProperty(value = "证书名称") + private String name; + + @ApiModelProperty(value = "证书标识") + private String code; + + @ApiModelProperty(value = "证书类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书key") + private String certKey; + + @ApiModelProperty(value = "证书pem") + private String certPem; + + @ApiModelProperty(value = "证书下载地址") + private String certUrl; + + @ApiModelProperty(value = "证书crt") + private String certCrt; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "即将过期") + private Integer soon; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsTrademark.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsTrademark.java new file mode 100644 index 0000000..b9fd497 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsTrademark.java @@ -0,0 +1,99 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商标注册 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsTrademark对象", description = "商标注册") +public class OaAssetsTrademark implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商标名称") + private String name; + + @ApiModelProperty(value = "商标标识") + private String code; + + @ApiModelProperty(value = "商标类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书下载") + private String certUrl; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsUser.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsUser.java new file mode 100644 index 0000000..f2597d9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsUser.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 服务器成员管理 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsUser对象", description = "服务器成员管理") +public class OaAssetsUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer assetsId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaAssetsVhost.java b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsVhost.java new file mode 100644 index 0000000..21d5ba3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaAssetsVhost.java @@ -0,0 +1,107 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 虚拟主机记录表 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaAssetsVhost对象", description = "虚拟主机记录表") +public class OaAssetsVhost implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "vhost_id", type = IdType.AUTO) + private Integer vhostId; + + @ApiModelProperty(value = "域名") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "主机型号") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "ssl证书") + private String ssl; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "服务器ID") + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaCompany.java b/src/main/java/com/gxwebsoft/oa/entity/OaCompany.java new file mode 100644 index 0000000..50f03e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaCompany.java @@ -0,0 +1,192 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 企业信息 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaCompany对象", description = "企业信息") +public class OaCompany implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @TableId(value = "company_id", type = IdType.AUTO) + private Integer companyId; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "类型 10企业 20政府单位") + private String companyType; + + @ApiModelProperty(value = "企业类型多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "座机电话") + private String tel; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "发票抬头") + @TableField("Invoice_header") + private String invoiceHeader; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "服务开始时间") + private Date startTime; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + private Integer version; + + @ApiModelProperty(value = "成员数量(人数上限)") + private Integer members; + + @ApiModelProperty(value = "成员数量(当前)") + private Integer users; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + private Integer departments; + + @ApiModelProperty(value = "存储空间") + private Long storage; + + @ApiModelProperty(value = "存储空间(上限)") + private Long storageMax; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "企业默认主体") + private Integer authoritative; + + @ApiModelProperty(value = "request合法域名") + private String requestUrl; + + @ApiModelProperty(value = "socket合法域名") + private String socketUrl; + + @ApiModelProperty(value = "主控端域名") + private String serverUrl; + + @ApiModelProperty(value = "业务域名") + private String modulesUrl; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "点赞数量") + private Integer likes; + + @ApiModelProperty(value = "点击数量") + private Integer clicks; + + @ApiModelProperty(value = "购买数量") + private Integer buys; + + @ApiModelProperty(value = "是否含税, 0不含, 1含") + private Integer isTax; + + @ApiModelProperty(value = "当前克隆的租户ID") + private Integer planId; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaCompanyField.java b/src/main/java/com/gxwebsoft/oa/entity/OaCompanyField.java new file mode 100644 index 0000000..235cf9c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaCompanyField.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 企业参数 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaCompanyField对象", description = "企业参数") +public class OaCompanyField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaCompanyUser.java b/src/main/java/com/gxwebsoft/oa/entity/OaCompanyUser.java new file mode 100644 index 0000000..c83281c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaCompanyUser.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 成员管理 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaCompanyUser对象", description = "成员管理") +public class OaCompanyUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "company_user_id", type = IdType.AUTO) + private Integer companyUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaLink.java b/src/main/java/com/gxwebsoft/oa/entity/OaLink.java new file mode 100644 index 0000000..6ea67aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaLink.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 常用链接 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaLink对象", description = "常用链接") +public class OaLink implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "链接名称") + private String name; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "链接分类") + private String linkType; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "所属栏目") + private Integer categoryId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaProduct.java b/src/main/java/com/gxwebsoft/oa/entity/OaProduct.java new file mode 100644 index 0000000..b13f6bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaProduct.java @@ -0,0 +1,103 @@ +package com.gxwebsoft.oa.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 产品记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaProduct对象", description = "产品记录表") +public class OaProduct implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品ID") + @TableId(value = "product_id", type = IdType.AUTO) + private Integer productId; + + @ApiModelProperty(value = "产品名称") + private String name; + + @ApiModelProperty(value = "产品标识") + private String code; + + @ApiModelProperty(value = "产品详情") + private String content; + + @ApiModelProperty(value = "产品类型") + private String type; + + @ApiModelProperty(value = "产品图标") + private String logo; + + @ApiModelProperty(value = "产品金额") + private BigDecimal money; + + @ApiModelProperty(value = "初始销量") + private Integer salesInitial; + + @ApiModelProperty(value = "实际销量") + private Integer salesActual; + + @ApiModelProperty(value = "库存总量(包含所有sku)") + private Integer stockTotal; + + @ApiModelProperty(value = "背景颜色") + private String backgroundColor; + + @ApiModelProperty(value = "背景图片") + private String backgroundImage; + + @ApiModelProperty(value = "背景图片(gif)") + private String backgroundGif; + + @ApiModelProperty(value = "购买链接") + private String buyUrl; + + @ApiModelProperty(value = "控制台链接") + private String adminUrl; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已上架, 1已下架") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaProductTabs.java b/src/main/java/com/gxwebsoft/oa/entity/OaProductTabs.java new file mode 100644 index 0000000..965034a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaProductTabs.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 产品标签记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaProductTabs对象", description = "产品标签记录表") +public class OaProductTabs implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品标签ID") + @TableId(value = "tab_id", type = IdType.AUTO) + private Integer tabId; + + @ApiModelProperty(value = "产品ID") + private Integer productId; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "标签类型") + private String type; + + @ApiModelProperty(value = "产品标签详情") + private String content; + + @ApiModelProperty(value = "背景颜色") + private String backgroundColor; + + @ApiModelProperty(value = "背景图片") + private String backgroundImage; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已上架, 1已下架") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaTask.java b/src/main/java/com/gxwebsoft/oa/entity/OaTask.java new file mode 100644 index 0000000..ea01ba1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaTask.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 任务记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaTask对象", description = "任务记录表") +public class OaTask implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "工单ID") + @TableId(value = "task_id", type = IdType.AUTO) + private Integer taskId; + + @ApiModelProperty(value = "工单类型") + private String taskType; + + @ApiModelProperty(value = "任务内容") + private String name; + + @ApiModelProperty(value = "问题描述") + private String content; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "工单发起人") + private Integer promoter; + + @ApiModelProperty(value = "受理人") + private Integer commander; + + @ApiModelProperty(value = "工单状态, 0未开始 1已指派 ") + private Integer progress; + + @ApiModelProperty(value = "优先级") + private String priority; + + @ApiModelProperty(value = "品质要求") + private String quality; + + @ApiModelProperty(value = "时限(天)") + private Integer day; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "开始时间") + private LocalDate startTime; + + @ApiModelProperty(value = "结束时间") + private LocalDate endTime; + + @ApiModelProperty(value = "逾期天数") + private Integer overdueDays; + + @ApiModelProperty(value = "项目ID") + private Integer appId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "资产ID") + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否已查阅") + private Integer isRead; + + @ApiModelProperty(value = "最后回复人") + private Integer lastReadUser; + + @ApiModelProperty(value = "发起人昵称") + private String nickname; + + @ApiModelProperty(value = "发起人头像") + private String avatar; + + @ApiModelProperty(value = "最后回复人头像") + private String lastAvatar; + + @ApiModelProperty(value = "最后回复人昵称") + private String lastNickname; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaTaskCount.java b/src/main/java/com/gxwebsoft/oa/entity/OaTaskCount.java new file mode 100644 index 0000000..f229f10 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaTaskCount.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据统计 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaTaskCount对象", description = "数据统计") +public class OaTaskCount implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "task_count_id", type = IdType.AUTO) + private Integer taskCountId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "待处理数") + private Integer pending; + + @ApiModelProperty(value = "闲置的工单(废弃)") + private Integer unused; + + @ApiModelProperty(value = "已完成数(废弃)") + private Integer completed; + + @ApiModelProperty(value = "今天处理数") + private Integer today; + + @ApiModelProperty(value = "本月处理数") + private Integer month; + + @ApiModelProperty(value = "今年处理数") + private Integer year; + + @ApiModelProperty(value = "总工单数") + private Integer total; + + @ApiModelProperty(value = "部门ID") + private Integer organizationId; + + @ApiModelProperty(value = "角色ID") + private Integer roleId; + + @ApiModelProperty(value = "角色标识") + private String roleCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaTaskRecord.java b/src/main/java/com/gxwebsoft/oa/entity/OaTaskRecord.java new file mode 100644 index 0000000..8a0131c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaTaskRecord.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工单回复记录表 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaTaskRecord对象", description = "工单回复记录表") +public class OaTaskRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "回复ID") + @TableId(value = "task_record_id", type = IdType.AUTO) + private Integer taskRecordId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "工单ID") + private Integer taskId; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "机密信息") + private String confidential; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/OaTaskUser.java b/src/main/java/com/gxwebsoft/oa/entity/OaTaskUser.java new file mode 100644 index 0000000..7d11b07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/OaTaskUser.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工单成员 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OaTaskUser对象", description = "工单成员") +public class OaTaskUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "task_user_id", type = IdType.AUTO) + private Integer taskUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "工单ID") + private Integer taskId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "加入时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAppFieldMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAppFieldMapper.java new file mode 100644 index 0000000..810bc09 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAppFieldMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAppField; +import com.gxwebsoft.oa.param.OaAppFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用参数Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAppFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAppFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAppMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAppMapper.java new file mode 100644 index 0000000..6447c90 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAppMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaApp; +import com.gxwebsoft.oa.param.OaAppParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAppParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAppParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAppRenewMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAppRenewMapper.java new file mode 100644 index 0000000..e04c9dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAppRenewMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAppRenew; +import com.gxwebsoft.oa.param.OaAppRenewParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 续费管理Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppRenewMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAppRenewParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAppRenewParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAppUrlMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAppUrlMapper.java new file mode 100644 index 0000000..af8f851 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAppUrlMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAppUrl; +import com.gxwebsoft.oa.param.OaAppUrlParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目域名Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppUrlMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAppUrlParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAppUrlParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAppUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAppUserMapper.java new file mode 100644 index 0000000..8d416bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAppUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.oa.param.OaAppUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用成员Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAppUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAppUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsCodeMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsCodeMapper.java new file mode 100644 index 0000000..8108c1c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsCodeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsCode; +import com.gxwebsoft.oa.param.OaAssetsCodeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 代码仓库Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +public interface OaAssetsCodeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsCodeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsCodeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsDomainMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsDomainMapper.java new file mode 100644 index 0000000..6f9c571 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsDomainMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsDomain; +import com.gxwebsoft.oa.param.OaAssetsDomainParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 域名Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsDomainMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsDomainParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsDomainParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsEmailMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsEmailMapper.java new file mode 100644 index 0000000..6457bb8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsEmailMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsEmail; +import com.gxwebsoft.oa.param.OaAssetsEmailParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 企业邮箱记录表Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsEmailMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsEmailParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsEmailParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMapper.java new file mode 100644 index 0000000..b1b2879 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssets; +import com.gxwebsoft.oa.param.OaAssetsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 云服务器Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:34:15 + */ +public interface OaAssetsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMysqlMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMysqlMapper.java new file mode 100644 index 0000000..168f28b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsMysqlMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsMysql; +import com.gxwebsoft.oa.param.OaAssetsMysqlParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 云数据库Mapper + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +public interface OaAssetsMysqlMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsMysqlParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsMysqlParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsServerMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsServerMapper.java new file mode 100644 index 0000000..0c163af --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsServerMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsServer; +import com.gxwebsoft.oa.param.OaAssetsServerParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 服务器资产记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAssetsServerMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsServerParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsServerParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSiteMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSiteMapper.java new file mode 100644 index 0000000..641dad9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSiteMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsSite; +import com.gxwebsoft.oa.param.OaAssetsSiteParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 网站信息记录表Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsSiteMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsSiteParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsSiteParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSoftwareCertMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSoftwareCertMapper.java new file mode 100644 index 0000000..a861aec --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSoftwareCertMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsSoftwareCert; +import com.gxwebsoft.oa.param.OaAssetsSoftwareCertParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 计算机软件著作权登记Mapper + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +public interface OaAssetsSoftwareCertMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsSoftwareCertParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsSoftwareCertParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSslMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSslMapper.java new file mode 100644 index 0000000..7912f86 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsSslMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsSsl; +import com.gxwebsoft.oa.param.OaAssetsSslParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * ssl证书Mapper + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +public interface OaAssetsSslMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsSslParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsSslParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsTrademarkMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsTrademarkMapper.java new file mode 100644 index 0000000..371ab97 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsTrademarkMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsTrademark; +import com.gxwebsoft.oa.param.OaAssetsTrademarkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商标注册Mapper + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +public interface OaAssetsTrademarkMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsTrademarkParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsTrademarkParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsUserMapper.java new file mode 100644 index 0000000..56cd088 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsUser; +import com.gxwebsoft.oa.param.OaAssetsUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 服务器成员管理Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAssetsUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsVhostMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsVhostMapper.java new file mode 100644 index 0000000..c45a874 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaAssetsVhostMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaAssetsVhost; +import com.gxwebsoft.oa.param.OaAssetsVhostParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 虚拟主机记录表Mapper + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsVhostMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaAssetsVhostParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaAssetsVhostParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyFieldMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyFieldMapper.java new file mode 100644 index 0000000..6471da9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyFieldMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaCompanyField; +import com.gxwebsoft.oa.param.OaCompanyFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 企业参数Mapper + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaCompanyFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaCompanyFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyMapper.java new file mode 100644 index 0000000..59d6d85 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaCompany; +import com.gxwebsoft.oa.param.OaCompanyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 企业信息Mapper + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaCompanyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaCompanyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyUserMapper.java new file mode 100644 index 0000000..65e6a8e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaCompanyUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaCompanyUser; +import com.gxwebsoft.oa.param.OaCompanyUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 成员管理Mapper + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaCompanyUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaCompanyUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaLinkMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaLinkMapper.java new file mode 100644 index 0000000..57497a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaLinkMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaLink; +import com.gxwebsoft.oa.param.OaLinkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 常用链接Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaLinkMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaLinkParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaLinkParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaProductMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaProductMapper.java new file mode 100644 index 0000000..9d1d9af --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaProductMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaProduct; +import com.gxwebsoft.oa.param.OaProductParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 产品记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaProductMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaProductParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaProductParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaProductTabsMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaProductTabsMapper.java new file mode 100644 index 0000000..39e03c7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaProductTabsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaProductTabs; +import com.gxwebsoft.oa.param.OaProductTabsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 产品标签记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaProductTabsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaProductTabsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaProductTabsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaTaskCountMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskCountMapper.java new file mode 100644 index 0000000..0e139df --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskCountMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaTaskCount; +import com.gxwebsoft.oa.param.OaTaskCountParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 数据统计Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskCountMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaTaskCountParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaTaskCountParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaTaskMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskMapper.java new file mode 100644 index 0000000..963f5f8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaTask; +import com.gxwebsoft.oa.param.OaTaskParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 任务记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaTaskParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaTaskParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaTaskRecordMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskRecordMapper.java new file mode 100644 index 0000000..f12d10e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaTaskRecord; +import com.gxwebsoft.oa.param.OaTaskRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工单回复记录表Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaTaskRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaTaskRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/OaTaskUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskUserMapper.java new file mode 100644 index 0000000..d894bb6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/OaTaskUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.OaTaskUser; +import com.gxwebsoft.oa.param.OaTaskUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工单成员Mapper + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OaTaskUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OaTaskUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppFieldMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppFieldMapper.xml new file mode 100644 index 0000000..c7ded82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppFieldMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.* + FROM oa_app_field a + + + AND a.id = #{param.id} + + + AND a.app_id = #{param.appId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppMapper.xml new file mode 100644 index 0000000..af8176b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppMapper.xml @@ -0,0 +1,229 @@ + + + + + + + SELECT a.*, b.company_name,b.short_name,b.company_logo + FROM oa_app a + LEFT JOIN oa_company b ON a.company_id = b.company_id + + + AND a.app_id = #{param.appId} + + + AND a.app_name LIKE CONCAT('%', #{param.appName}, '%') + + + AND a.app_code LIKE CONCAT('%', #{param.appCode}, '%') + + + AND a.show_case = #{param.showCase} + + + AND a.recommend = #{param.recommend} + + + AND a.show_index = #{param.showIndex} + + + AND a.parent_id = #{param.parentId} + + + AND a.app_type LIKE CONCAT('%', #{param.appType}, '%') + + + AND a.app_type_multiple LIKE CONCAT('%', #{param.appTypeMultiple}, '%') + + + AND a.menu_type = #{param.menuType} + + + AND a.company_id = #{param.companyId} + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.app_icon LIKE CONCAT('%', #{param.appIcon}, '%') + + + AND a.app_qrcode LIKE CONCAT('%', #{param.appQrcode}, '%') + + + AND a.app_url LIKE CONCAT('%', #{param.appUrl}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.down_url LIKE CONCAT('%', #{param.downUrl}, '%') + + + AND a.server_url LIKE CONCAT('%', #{param.serverUrl}, '%') + + + AND a.file_url LIKE CONCAT('%', #{param.fileUrl}, '%') + + + AND a.callback_url LIKE CONCAT('%', #{param.callbackUrl}, '%') + + + AND a.docs_url LIKE CONCAT('%', #{param.docsUrl}, '%') + + + AND a.git_url LIKE CONCAT('%', #{param.gitUrl}, '%') + + + AND a.prototype_url LIKE CONCAT('%', #{param.prototypeUrl}, '%') + + + AND a.ip_address LIKE CONCAT('%', #{param.ipAddress}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.package_name LIKE CONCAT('%', #{param.packageName}, '%') + + + AND a.clicks = #{param.clicks} + + + AND a.installs = #{param.installs} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.requirement LIKE CONCAT('%', #{param.requirement}, '%') + + + AND a.developer LIKE CONCAT('%', #{param.developer}, '%') + + + AND a.director LIKE CONCAT('%', #{param.director}, '%') + + + AND a.project_director LIKE CONCAT('%', #{param.projectDirector}, '%') + + + AND a.salesman LIKE CONCAT('%', #{param.salesman}, '%') + + + AND a.price = #{param.price} + + + AND a.line_price = #{param.linePrice} + + + AND a.score LIKE CONCAT('%', #{param.score}, '%') + + + AND a.star LIKE CONCAT('%', #{param.star}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.authority LIKE CONCAT('%', #{param.authority}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.hide = #{param.hide} + + + AND a.search = #{param.search} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.edition LIKE CONCAT('%', #{param.edition}, '%') + + + AND a.version LIKE CONCAT('%', #{param.version}, '%') + + + AND a.is_use = #{param.isUse} + + + AND a.file1 LIKE CONCAT('%', #{param.file1}, '%') + + + AND a.file2 LIKE CONCAT('%', #{param.file2}, '%') + + + AND a.file3 LIKE CONCAT('%', #{param.file3}, '%') + + + AND a.app_status LIKE CONCAT('%', #{param.appStatus}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.app_id IN + + #{item} + + + + AND a.organization_id = #{param.organizationId} + + + AND a.show_expiration = #{param.showExpiration} + + + AND a.tenant_code LIKE CONCAT('%', #{param.tenantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.app_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.app_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.app_url LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppRenewMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppRenewMapper.xml new file mode 100644 index 0000000..b0fd4fc --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppRenewMapper.xml @@ -0,0 +1,61 @@ + + + + + + + SELECT a.*, + b.company_name,b.short_name,b.company_logo, + c.app_name + FROM oa_app_renew a + LEFT JOIN oa_company b ON a.company_id = b.company_id + LEFT JOIN oa_app c ON a.app_id = c.app_id + + + AND a.app_renew_id = #{param.appRenewId} + + + AND a.money = #{param.money} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.app_id = #{param.appId} + + + AND a.company_id = #{param.companyId} + + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUrlMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUrlMapper.xml new file mode 100644 index 0000000..24865f4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUrlMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.* + FROM oa_app_url a + + + AND a.app_url_id = #{param.appUrlId} + + + AND a.app_id = #{param.appId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUserMapper.xml new file mode 100644 index 0000000..83cf18a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAppUserMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.* + FROM oa_app_user a + + + AND a.app_user_id = #{param.appUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.app_id = #{param.appId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.email LIKE CONCAT('%', #{param.keywords}, '%') + OR b.username LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsCodeMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsCodeMapper.xml new file mode 100644 index 0000000..482f9cf --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsCodeMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_code a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.id = #{param.id} + + + AND a.assets_id = #{param.assetsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.git_url LIKE CONCAT('%', #{param.gitUrl}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsDomainMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsDomainMapper.xml new file mode 100644 index 0000000..af8d0c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsDomainMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_domain a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.domain_id = #{param.domainId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.price = #{param.price} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsEmailMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsEmailMapper.xml new file mode 100644 index 0000000..da6012b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsEmailMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_email a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.email_id = #{param.emailId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.system LIKE CONCAT('%', #{param.system}, '%') + + + AND a.price = #{param.price} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMapper.xml new file mode 100644 index 0000000..2ae8353 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMapper.xml @@ -0,0 +1,146 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.assets_id = #{param.assetsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.configuration LIKE CONCAT('%', #{param.configuration}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.brand_account LIKE CONCAT('%', #{param.brandAccount}, '%') + + + AND a.brand_password LIKE CONCAT('%', #{param.brandPassword}, '%') + + + AND a.panel LIKE CONCAT('%', #{param.panel}, '%') + + + AND a.panel_account LIKE CONCAT('%', #{param.panelAccount}, '%') + + + AND a.panel_password LIKE CONCAT('%', #{param.panelPassword}, '%') + + + AND a.finance_amount = #{param.financeAmount} + + + AND a.finance_years = #{param.financeYears} + + + AND a.finance_renew = #{param.financeRenew} + + + AND a.finance_customer_name LIKE CONCAT('%', #{param.financeCustomerName}, '%') + + + AND a.finance_customer_contact LIKE CONCAT('%', #{param.financeCustomerContact}, '%') + + + AND a.finance_customer_phone LIKE CONCAT('%', #{param.financeCustomerPhone}, '%') + + + AND a.customer_id = #{param.customerId} + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.open_port LIKE CONCAT('%', #{param.openPort}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + AND a.bt_sign LIKE CONCAT('%', #{param.btSign}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.organization_id = #{param.organizationId} + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.tenant_id = #{param.keywords} + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMysqlMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMysqlMapper.xml new file mode 100644 index 0000000..98fbbe4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsMysqlMapper.xml @@ -0,0 +1,90 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_mysql a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.mysql_id = #{param.mysqlId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.ip LIKE CONCAT('%', #{param.ip}, '%') + + + AND a.port LIKE CONCAT('%', #{param.port}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.price = #{param.price} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsServerMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsServerMapper.xml new file mode 100644 index 0000000..edd376e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsServerMapper.xml @@ -0,0 +1,137 @@ + + + + + + + SELECT a.* + FROM oa_assets_server a + + + AND a.server_id = #{param.serverId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.configuration LIKE CONCAT('%', #{param.configuration}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.brand_account LIKE CONCAT('%', #{param.brandAccount}, '%') + + + AND a.brand_password LIKE CONCAT('%', #{param.brandPassword}, '%') + + + AND a.panel LIKE CONCAT('%', #{param.panel}, '%') + + + AND a.panel_account LIKE CONCAT('%', #{param.panelAccount}, '%') + + + AND a.panel_password LIKE CONCAT('%', #{param.panelPassword}, '%') + + + AND a.finance_amount = #{param.financeAmount} + + + AND a.finance_years = #{param.financeYears} + + + AND a.finance_renew = #{param.financeRenew} + + + AND a.finance_customer_name LIKE CONCAT('%', #{param.financeCustomerName}, '%') + + + AND a.finance_customer_contact LIKE CONCAT('%', #{param.financeCustomerContact}, '%') + + + AND a.finance_customer_phone LIKE CONCAT('%', #{param.financeCustomerPhone}, '%') + + + AND a.customer_id = #{param.customerId} + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.open_port LIKE CONCAT('%', #{param.openPort}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + AND a.bt_sign LIKE CONCAT('%', #{param.btSign}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.user_id = #{param.userId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSiteMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSiteMapper.xml new file mode 100644 index 0000000..4ac42c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSiteMapper.xml @@ -0,0 +1,153 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_site a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.website_id = #{param.websiteId} + + + AND a.website_name LIKE CONCAT('%', #{param.websiteName}, '%') + + + AND a.website_code LIKE CONCAT('%', #{param.websiteCode}, '%') + + + AND a.website_icon LIKE CONCAT('%', #{param.websiteIcon}, '%') + + + AND a.website_logo LIKE CONCAT('%', #{param.websiteLogo}, '%') + + + AND a.website_dark_logo LIKE CONCAT('%', #{param.websiteDarkLogo}, '%') + + + AND a.website_type LIKE CONCAT('%', #{param.websiteType}, '%') + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.prefix LIKE CONCAT('%', #{param.prefix}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.version = #{param.version} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.template_id = #{param.templateId} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.icp_no LIKE CONCAT('%', #{param.icpNo}, '%') + + + AND a.police_no LIKE CONCAT('%', #{param.policeNo}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.recommend = #{param.recommend} + + + AND a.status = #{param.status} + + + AND a.status_text LIKE CONCAT('%', #{param.statusText}, '%') + + + AND a.status_close LIKE CONCAT('%', #{param.statusClose}, '%') + + + AND a.styles LIKE CONCAT('%', #{param.styles}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.assets_id = #{param.assetsId} + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSoftwareCertMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSoftwareCertMapper.xml new file mode 100644 index 0000000..2ac29a1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSoftwareCertMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_software_cert a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.price = #{param.price} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.cert_url LIKE CONCAT('%', #{param.certUrl}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSslMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSslMapper.xml new file mode 100644 index 0000000..e6563a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsSslMapper.xml @@ -0,0 +1,98 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_ssl a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.ssl_id = #{param.sslId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.price = #{param.price} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.cert_key LIKE CONCAT('%', #{param.certKey}, '%') + + + AND a.cert_pem LIKE CONCAT('%', #{param.certPem}, '%') + + + AND a.cert_url LIKE CONCAT('%', #{param.certUrl}, '%') + + + AND a.cert_crt LIKE CONCAT('%', #{param.certCrt}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.tenant_id = #{param.keywords} + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsTrademarkMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsTrademarkMapper.xml new file mode 100644 index 0000000..5028926 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsTrademarkMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_trademark a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.price = #{param.price} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.cert_url LIKE CONCAT('%', #{param.certUrl}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsUserMapper.xml new file mode 100644 index 0000000..0306c98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsUserMapper.xml @@ -0,0 +1,44 @@ + + + + + + + SELECT a.* + FROM oa_assets_user a + + + AND a.id = #{param.id} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsVhostMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsVhostMapper.xml new file mode 100644 index 0000000..682f29d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaAssetsVhostMapper.xml @@ -0,0 +1,93 @@ + + + + + + + SELECT a.*, b.short_name AS tenantName,b.company_logo as logo + FROM oa_assets_vhost a + LEFT JOIN gxwebsoft_core.sys_company b ON a.tenant_id = b.tenant_id + + + AND a.vhost_id = #{param.vhostId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.price = #{param.price} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.ssl LIKE CONCAT('%', #{param.ssl}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.assets_id = #{param.assetsId} + + + AND a.user_id = #{param.userId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyFieldMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyFieldMapper.xml new file mode 100644 index 0000000..4cdb978 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyFieldMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.* + FROM oa_company_field a + + + AND a.id = #{param.id} + + + AND a.company_id = #{param.companyId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyMapper.xml new file mode 100644 index 0000000..682f772 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyMapper.xml @@ -0,0 +1,176 @@ + + + + + + + SELECT a.* + FROM oa_company a + + + AND a.company_id = #{param.companyId} + + + AND a.short_name LIKE CONCAT('%', #{param.shortName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.company_code LIKE CONCAT('%', #{param.companyCode}, '%') + + + AND a.company_type LIKE CONCAT('%', #{param.companyType}, '%') + + + AND a.company_type_multiple LIKE CONCAT('%', #{param.companyTypeMultiple}, '%') + + + AND a.company_logo LIKE CONCAT('%', #{param.companyLogo}, '%') + + + AND a.app_type LIKE CONCAT('%', #{param.appType}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.tel LIKE CONCAT('%', #{param.tel}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.Invoice_header LIKE CONCAT('%', #{param.invoiceHeader}, '%') + + + AND a.business_entity LIKE CONCAT('%', #{param.businessEntity}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.version = #{param.version} + + + AND a.members = #{param.members} + + + AND a.users = #{param.users} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.departments = #{param.departments} + + + AND a.storage LIKE CONCAT('%', #{param.storage}, '%') + + + AND a.storage_max LIKE CONCAT('%', #{param.storageMax}, '%') + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.authoritative = #{param.authoritative} + + + AND a.request_url LIKE CONCAT('%', #{param.requestUrl}, '%') + + + AND a.socket_url LIKE CONCAT('%', #{param.socketUrl}, '%') + + + AND a.server_url LIKE CONCAT('%', #{param.serverUrl}, '%') + + + AND a.modules_url LIKE CONCAT('%', #{param.modulesUrl}, '%') + + + AND a.recommend = #{param.recommend} + + + AND a.likes = #{param.likes} + + + AND a.clicks = #{param.clicks} + + + AND a.buys = #{param.buys} + + + AND a.is_tax = #{param.isTax} + + + AND a.plan_id = #{param.planId} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyUserMapper.xml new file mode 100644 index 0000000..e4aeb35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaCompanyUserMapper.xml @@ -0,0 +1,47 @@ + + + + + + + SELECT a.* + FROM oa_company_user a + + + AND a.company_user_id = #{param.companyUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.company_id = #{param.companyId} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaLinkMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaLinkMapper.xml new file mode 100644 index 0000000..55a4a1e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaLinkMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM oa_link a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.link_type LIKE CONCAT('%', #{param.linkType}, '%') + + + AND a.app_id = #{param.appId} + + + AND a.category_id = #{param.categoryId} + + + AND a.user_id = #{param.userId} + + + AND a.recommend = #{param.recommend} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductMapper.xml new file mode 100644 index 0000000..0bca9c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductMapper.xml @@ -0,0 +1,98 @@ + + + + + + + SELECT a.* + FROM oa_product a + + + AND a.product_id = #{param.productId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.logo LIKE CONCAT('%', #{param.logo}, '%') + + + AND a.money = #{param.money} + + + AND a.sales_initial = #{param.salesInitial} + + + AND a.sales_actual = #{param.salesActual} + + + AND a.stock_total = #{param.stockTotal} + + + AND a.background_color LIKE CONCAT('%', #{param.backgroundColor}, '%') + + + AND a.background_image LIKE CONCAT('%', #{param.backgroundImage}, '%') + + + AND a.background_gif LIKE CONCAT('%', #{param.backgroundGif}, '%') + + + AND a.buy_url LIKE CONCAT('%', #{param.buyUrl}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductTabsMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductTabsMapper.xml new file mode 100644 index 0000000..075457c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaProductTabsMapper.xml @@ -0,0 +1,74 @@ + + + + + + + SELECT a.* + FROM oa_product_tabs a + + + AND a.tab_id = #{param.tabId} + + + AND a.product_id = #{param.productId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.background_color LIKE CONCAT('%', #{param.backgroundColor}, '%') + + + AND a.background_image LIKE CONCAT('%', #{param.backgroundImage}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.company_id = #{param.companyId} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskCountMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskCountMapper.xml new file mode 100644 index 0000000..5e5cf81 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskCountMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM oa_task_count a + + + AND a.task_count_id = #{param.taskCountId} + + + AND a.user_id = #{param.userId} + + + AND a.pending = #{param.pending} + + + AND a.unused = #{param.unused} + + + AND a.completed = #{param.completed} + + + AND a.today = #{param.today} + + + AND a.month = #{param.month} + + + AND a.year = #{param.year} + + + AND a.total = #{param.total} + + + AND a.organization_id = #{param.organizationId} + + + AND a.role_id = #{param.roleId} + + + AND a.role_code LIKE CONCAT('%', #{param.roleCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskMapper.xml new file mode 100644 index 0000000..e068988 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskMapper.xml @@ -0,0 +1,128 @@ + + + + + + + SELECT a.* + FROM oa_task a + + + AND a.task_id = #{param.taskId} + + + AND a.task_type LIKE CONCAT('%', #{param.taskType}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.promoter = #{param.promoter} + + + AND a.commander = #{param.commander} + + + AND a.progress = #{param.progress} + + + AND a.priority LIKE CONCAT('%', #{param.priority}, '%') + + + AND a.quality LIKE CONCAT('%', #{param.quality}, '%') + + + AND a.day = #{param.day} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.overdue_days = #{param.overdueDays} + + + AND a.app_id = #{param.appId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.project_id = #{param.projectId} + + + AND a.customer_id = #{param.customerId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.user_id = #{param.userId} + + + AND a.is_read = #{param.isRead} + + + AND a.last_read_user = #{param.lastReadUser} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.last_avatar LIKE CONCAT('%', #{param.lastAvatar}, '%') + + + AND a.last_nickname LIKE CONCAT('%', #{param.lastNickname}, '%') + + + AND a.is_settled = #{param.isSettled} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskRecordMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskRecordMapper.xml new file mode 100644 index 0000000..b9bd366 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskRecordMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM oa_task_record a + + + AND a.task_record_id = #{param.taskRecordId} + + + AND a.parent_id = #{param.parentId} + + + AND a.task_id = #{param.taskId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.confidential LIKE CONCAT('%', #{param.confidential}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskUserMapper.xml new file mode 100644 index 0000000..c620f5c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/OaTaskUserMapper.xml @@ -0,0 +1,47 @@ + + + + + + + SELECT a.* + FROM oa_task_user a + + + AND a.task_user_id = #{param.taskUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.task_id = #{param.taskId} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAppFieldParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAppFieldParam.java new file mode 100644 index 0000000..fcf67b7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAppFieldParam.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAppFieldParam对象", description = "应用参数查询参数") +public class OaAppFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAppParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAppParam.java new file mode 100644 index 0000000..ba85ee6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAppParam.java @@ -0,0 +1,246 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Set; + +/** + * 应用查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAppParam对象", description = "应用查询参数") +public class OaAppParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "应用秘钥") + private String appSecret; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "应用类型") + private String appTypeMultiple; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "链接地址") + private String serverUrl; + + @ApiModelProperty(value = "文件服务器") + private String fileUrl; + + @ApiModelProperty(value = "回调地址") + private String callbackUrl; + + @ApiModelProperty(value = "腾讯文档地址") + private String docsUrl; + + @ApiModelProperty(value = "代码仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "原型图地址") + private String prototypeUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + @QueryField(type = QueryType.EQ) + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + @QueryField(type = QueryType.EQ) + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "软件定价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + @QueryField(type = QueryType.EQ) + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + @QueryField(type = QueryType.EQ) + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + @QueryField(type = QueryType.EQ) + private Integer isUse; + + @ApiModelProperty(value = "附近1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "是否显示续费提醒") + @QueryField(type = QueryType.EQ) + private Boolean showExpiration; + + @ApiModelProperty(value = "是否作为案例展示") + @QueryField(type = QueryType.EQ) + private Boolean showCase; + + @ApiModelProperty(value = "是否显示在首页") + @QueryField(type = QueryType.EQ) + private Integer showIndex; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal renewMoney; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "按APPID集搜索") + @TableField(exist = false) + private Set appIds; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAppRenewParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAppRenewParam.java new file mode 100644 index 0000000..d32245a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAppRenewParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 续费管理查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAppRenewParam对象", description = "续费管理查询参数") +public class OaAppRenewParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appRenewId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "付款凭证") + private String images; + + @ApiModelProperty(value = "用户姓名") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAppUrlParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAppUrlParam.java new file mode 100644 index 0000000..79f48e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAppUrlParam.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目域名查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAppUrlParam对象", description = "项目域名查询参数") +public class OaAppUrlParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appUrlId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "域名类型") + private String name; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAppUserParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAppUserParam.java new file mode 100644 index 0000000..62510f8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAppUserParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用成员查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAppUserParam对象", description = "应用成员查询参数") +public class OaAppUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsCodeParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsCodeParam.java new file mode 100644 index 0000000..20f1512 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsCodeParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 代码仓库查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsCodeParam对象", description = "代码仓库查询参数") +public class OaAssetsCodeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "服务器ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "英文标识") + private String code; + + @ApiModelProperty(value = "仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "仓库品牌") + private String brand; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsDomainParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsDomainParam.java new file mode 100644 index 0000000..b2c7d24 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsDomainParam.java @@ -0,0 +1,84 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 域名查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsDomainParam对象", description = "域名查询参数") +public class OaAssetsDomainParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer domainId; + + @ApiModelProperty(value = "服务器ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "域名") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "注册厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsEmailParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsEmailParam.java new file mode 100644 index 0000000..a990e7d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsEmailParam.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 企业邮箱记录表查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsEmailParam对象", description = "企业邮箱记录表查询参数") +public class OaAssetsEmailParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer emailId; + + @ApiModelProperty(value = "邮箱名称") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "邮箱型号") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String system; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsMysqlParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsMysqlParam.java new file mode 100644 index 0000000..c153286 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsMysqlParam.java @@ -0,0 +1,90 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 云数据库查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsMysqlParam对象", description = "云数据库查询参数") +public class OaAssetsMysqlParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer mysqlId; + + @ApiModelProperty(value = "服务器ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "数据库名") + private String name; + + @ApiModelProperty(value = "数据库标识") + private String code; + + @ApiModelProperty(value = "注册厂商") + private String brand; + + @ApiModelProperty(value = "ip地址") + private String ip; + + @ApiModelProperty(value = "端口") + private String port; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsParam.java new file mode 100644 index 0000000..8c0f073 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsParam.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 云服务器查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:34:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsParam对象", description = "云服务器查询参数") +public class OaAssetsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + @QueryField(type = QueryType.EQ) + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "宝塔接口秘钥") + private String btSign; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsServerParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsServerParam.java new file mode 100644 index 0000000..755b57f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsServerParam.java @@ -0,0 +1,142 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 服务器资产记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsServerParam对象", description = "服务器资产记录表查询参数") +public class OaAssetsServerParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @QueryField(type = QueryType.EQ) + private Integer serverId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + @QueryField(type = QueryType.EQ) + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "宝塔接口秘钥") + private String btSign; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsSiteParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSiteParam.java new file mode 100644 index 0000000..5fc9f41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSiteParam.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 网站信息记录表查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsSiteParam对象", description = "网站信息记录表查询参数") +public class OaAssetsSiteParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "站点ID") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @ApiModelProperty(value = "网站名称") + private String websiteName; + + @ApiModelProperty(value = "网站标识") + private String websiteCode; + + @ApiModelProperty(value = "网站LOGO") + private String websiteIcon; + + @ApiModelProperty(value = "网站LOGO") + private String websiteLogo; + + @ApiModelProperty(value = "网站LOGO(深色模式)") + private String websiteDarkLogo; + + @ApiModelProperty(value = "网站类型") + private String websiteType; + + @ApiModelProperty(value = "网站关键词") + private String keywords; + + @ApiModelProperty(value = "域名前缀") + private String prefix; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "全局样式") + private String style; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "应用版本 10免费版 20授权版 30永久授权") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "模版ID") + @QueryField(type = QueryType.EQ) + private Integer templateId; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "电子邮箱") + private String email; + + @ApiModelProperty(value = "ICP备案号") + private String icpNo; + + @ApiModelProperty(value = "公安备案") + private String policeNo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "维护说明") + private String statusText; + + @ApiModelProperty(value = "关闭说明") + private String statusClose; + + @ApiModelProperty(value = "全局样式") + private String styles; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "服务器ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsSoftwareCertParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSoftwareCertParam.java new file mode 100644 index 0000000..af60c3b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSoftwareCertParam.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 计算机软件著作权登记查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsSoftwareCertParam对象", description = "计算机软件著作权登记查询参数") +public class OaAssetsSoftwareCertParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "软件著作权标识") + private String code; + + @ApiModelProperty(value = "证书类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书下载地址") + private String certUrl; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsSslParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSslParam.java new file mode 100644 index 0000000..dcaa444 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsSslParam.java @@ -0,0 +1,92 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * ssl证书查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsSslParam对象", description = "ssl证书查询参数") +public class OaAssetsSslParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer sslId; + + @ApiModelProperty(value = "证书名称") + private String name; + + @ApiModelProperty(value = "证书标识") + private String code; + + @ApiModelProperty(value = "证书类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书key") + private String certKey; + + @ApiModelProperty(value = "证书pem") + private String certPem; + + @ApiModelProperty(value = "证书下载地址") + private String certUrl; + + @ApiModelProperty(value = "证书crt") + private String certCrt; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsTrademarkParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsTrademarkParam.java new file mode 100644 index 0000000..af6da62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsTrademarkParam.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 商标注册查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsTrademarkParam对象", description = "商标注册查询参数") +public class OaAssetsTrademarkParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商标名称") + private String name; + + @ApiModelProperty(value = "商标标识") + private String code; + + @ApiModelProperty(value = "商标类型") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "证书下载") + private String certUrl; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsUserParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsUserParam.java new file mode 100644 index 0000000..3c0fba7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsUserParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 服务器成员管理查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsUserParam对象", description = "服务器成员管理查询参数") +public class OaAssetsUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaAssetsVhostParam.java b/src/main/java/com/gxwebsoft/oa/param/OaAssetsVhostParam.java new file mode 100644 index 0000000..d4347fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaAssetsVhostParam.java @@ -0,0 +1,93 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 虚拟主机记录表查询参数 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaAssetsVhostParam对象", description = "虚拟主机记录表查询参数") +public class OaAssetsVhostParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer vhostId; + + @ApiModelProperty(value = "域名") + private String name; + + @ApiModelProperty(value = "域名标识") + private String code; + + @ApiModelProperty(value = "主机型号") + private String type; + + @ApiModelProperty(value = "品牌厂商") + private String brand; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "ssl证书") + private String ssl; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "服务器ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "可见用户") + private String userIds; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaCompanyFieldParam.java b/src/main/java/com/gxwebsoft/oa/param/OaCompanyFieldParam.java new file mode 100644 index 0000000..89785fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaCompanyFieldParam.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 企业参数查询参数 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaCompanyFieldParam对象", description = "企业参数查询参数") +public class OaCompanyFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaCompanyParam.java b/src/main/java/com/gxwebsoft/oa/param/OaCompanyParam.java new file mode 100644 index 0000000..c56fde4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaCompanyParam.java @@ -0,0 +1,186 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 企业信息查询参数 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaCompanyParam对象", description = "企业信息查询参数") +public class OaCompanyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "类型 10企业 20政府单位") + private String companyType; + + @ApiModelProperty(value = "企业类型多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "绑定域名") + private String domain; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "座机电话") + private String tel; + + @ApiModelProperty(value = "邮箱") + private String email; + + @ApiModelProperty(value = "发票抬头") + private String invoiceHeader; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "服务开始时间") + private String startTime; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "成员数量(人数上限)") + @QueryField(type = QueryType.EQ) + private Integer members; + + @ApiModelProperty(value = "成员数量(当前)") + @QueryField(type = QueryType.EQ) + private Integer users; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + @QueryField(type = QueryType.EQ) + private Integer departments; + + @ApiModelProperty(value = "存储空间") + private Long storage; + + @ApiModelProperty(value = "存储空间(上限)") + private Long storageMax; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "企业默认主体") + @QueryField(type = QueryType.EQ) + private Integer authoritative; + + @ApiModelProperty(value = "request合法域名") + private String requestUrl; + + @ApiModelProperty(value = "socket合法域名") + private String socketUrl; + + @ApiModelProperty(value = "主控端域名") + private String serverUrl; + + @ApiModelProperty(value = "业务域名") + private String modulesUrl; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "点赞数量") + @QueryField(type = QueryType.EQ) + private Integer likes; + + @ApiModelProperty(value = "点击数量") + @QueryField(type = QueryType.EQ) + private Integer clicks; + + @ApiModelProperty(value = "购买数量") + @QueryField(type = QueryType.EQ) + private Integer buys; + + @ApiModelProperty(value = "是否含税, 0不含, 1含") + @QueryField(type = QueryType.EQ) + private Integer isTax; + + @ApiModelProperty(value = "当前克隆的租户ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaCompanyUserParam.java b/src/main/java/com/gxwebsoft/oa/param/OaCompanyUserParam.java new file mode 100644 index 0000000..42b2ec2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaCompanyUserParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 成员管理查询参数 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaCompanyUserParam对象", description = "成员管理查询参数") +public class OaCompanyUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer companyUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaLinkParam.java b/src/main/java/com/gxwebsoft/oa/param/OaLinkParam.java new file mode 100644 index 0000000..b7d0e9e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaLinkParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 常用链接查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaLinkParam对象", description = "常用链接查询参数") +public class OaLinkParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "链接名称") + private String name; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "链接分类") + private String linkType; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "所属栏目") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaProductParam.java b/src/main/java/com/gxwebsoft/oa/param/OaProductParam.java new file mode 100644 index 0000000..e469ef1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaProductParam.java @@ -0,0 +1,103 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 产品记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaProductParam对象", description = "产品记录表查询参数") +public class OaProductParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品ID") + @QueryField(type = QueryType.EQ) + private Integer productId; + + @ApiModelProperty(value = "产品名称") + private String name; + + @ApiModelProperty(value = "产品标识") + private String code; + + @ApiModelProperty(value = "产品详情") + private String content; + + @ApiModelProperty(value = "产品类型") + private String type; + + @ApiModelProperty(value = "产品图标") + private String logo; + + @ApiModelProperty(value = "产品金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "初始销量") + @QueryField(type = QueryType.EQ) + private Integer salesInitial; + + @ApiModelProperty(value = "实际销量") + @QueryField(type = QueryType.EQ) + private Integer salesActual; + + @ApiModelProperty(value = "库存总量(包含所有sku)") + @QueryField(type = QueryType.EQ) + private Integer stockTotal; + + @ApiModelProperty(value = "背景颜色") + private String backgroundColor; + + @ApiModelProperty(value = "背景图片") + private String backgroundImage; + + @ApiModelProperty(value = "背景图片(gif)") + private String backgroundGif; + + @ApiModelProperty(value = "购买链接") + private String buyUrl; + + @ApiModelProperty(value = "控制台链接") + private String adminUrl; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已上架, 1已下架") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaProductTabsParam.java b/src/main/java/com/gxwebsoft/oa/param/OaProductTabsParam.java new file mode 100644 index 0000000..0344246 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaProductTabsParam.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 产品标签记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaProductTabsParam对象", description = "产品标签记录表查询参数") +public class OaProductTabsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "产品标签ID") + @QueryField(type = QueryType.EQ) + private Integer tabId; + + @ApiModelProperty(value = "产品ID") + @QueryField(type = QueryType.EQ) + private Integer productId; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "标签类型") + private String type; + + @ApiModelProperty(value = "产品标签详情") + private String content; + + @ApiModelProperty(value = "背景颜色") + private String backgroundColor; + + @ApiModelProperty(value = "背景图片") + private String backgroundImage; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0已上架, 1已下架") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaTaskCountParam.java b/src/main/java/com/gxwebsoft/oa/param/OaTaskCountParam.java new file mode 100644 index 0000000..92938ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaTaskCountParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据统计查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaTaskCountParam对象", description = "数据统计查询参数") +public class OaTaskCountParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer taskCountId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "待处理数") + @QueryField(type = QueryType.EQ) + private Integer pending; + + @ApiModelProperty(value = "闲置的工单(废弃)") + @QueryField(type = QueryType.EQ) + private Integer unused; + + @ApiModelProperty(value = "已完成数(废弃)") + @QueryField(type = QueryType.EQ) + private Integer completed; + + @ApiModelProperty(value = "今天处理数") + @QueryField(type = QueryType.EQ) + private Integer today; + + @ApiModelProperty(value = "本月处理数") + @QueryField(type = QueryType.EQ) + private Integer month; + + @ApiModelProperty(value = "今年处理数") + @QueryField(type = QueryType.EQ) + private Integer year; + + @ApiModelProperty(value = "总工单数") + @QueryField(type = QueryType.EQ) + private Integer total; + + @ApiModelProperty(value = "部门ID") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "角色ID") + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @ApiModelProperty(value = "角色标识") + private String roleCode; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaTaskParam.java b/src/main/java/com/gxwebsoft/oa/param/OaTaskParam.java new file mode 100644 index 0000000..975edbd --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaTaskParam.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 任务记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaTaskParam对象", description = "任务记录表查询参数") +public class OaTaskParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "工单类型") + private String taskType; + + @ApiModelProperty(value = "任务内容") + private String name; + + @ApiModelProperty(value = "问题描述") + private String content; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "工单发起人") + @QueryField(type = QueryType.EQ) + private Integer promoter; + + @ApiModelProperty(value = "受理人") + @QueryField(type = QueryType.EQ) + private Integer commander; + + @ApiModelProperty(value = "工单状态, 0未开始 1已指派 ") + @QueryField(type = QueryType.EQ) + private Integer progress; + + @ApiModelProperty(value = "优先级") + private String priority; + + @ApiModelProperty(value = "品质要求") + private String quality; + + @ApiModelProperty(value = "时限(天)") + @QueryField(type = QueryType.EQ) + private Integer day; + + @ApiModelProperty(value = "手机号") + private String phone; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "逾期天数") + @QueryField(type = QueryType.EQ) + private Integer overdueDays; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "资产ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否已查阅") + @QueryField(type = QueryType.EQ) + private Integer isRead; + + @ApiModelProperty(value = "最后回复人") + @QueryField(type = QueryType.EQ) + private Integer lastReadUser; + + @ApiModelProperty(value = "发起人昵称") + private String nickname; + + @ApiModelProperty(value = "发起人头像") + private String avatar; + + @ApiModelProperty(value = "最后回复人头像") + private String lastAvatar; + + @ApiModelProperty(value = "最后回复人昵称") + private String lastNickname; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaTaskRecordParam.java b/src/main/java/com/gxwebsoft/oa/param/OaTaskRecordParam.java new file mode 100644 index 0000000..68f5141 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaTaskRecordParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工单回复记录表查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaTaskRecordParam对象", description = "工单回复记录表查询参数") +public class OaTaskRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "回复ID") + @QueryField(type = QueryType.EQ) + private Integer taskRecordId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "机密信息") + private String confidential; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/OaTaskUserParam.java b/src/main/java/com/gxwebsoft/oa/param/OaTaskUserParam.java new file mode 100644 index 0000000..74023e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/OaTaskUserParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.oa.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工单成员查询参数 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OaTaskUserParam对象", description = "工单成员查询参数") +public class OaTaskUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer taskUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAppFieldService.java b/src/main/java/com/gxwebsoft/oa/service/OaAppFieldService.java new file mode 100644 index 0000000..94d905f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAppFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAppField; +import com.gxwebsoft.oa.param.OaAppFieldParam; + +import java.util.List; + +/** + * 应用参数Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAppFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAppFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return OaAppField + */ + OaAppField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAppRenewService.java b/src/main/java/com/gxwebsoft/oa/service/OaAppRenewService.java new file mode 100644 index 0000000..2cb38cf --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAppRenewService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAppRenew; +import com.gxwebsoft.oa.param.OaAppRenewParam; + +import java.util.List; + +/** + * 续费管理Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppRenewService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAppRenewParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAppRenewParam param); + + /** + * 根据id查询 + * + * @param appRenewId 自增ID + * @return OaAppRenew + */ + OaAppRenew getByIdRel(Integer appRenewId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAppService.java b/src/main/java/com/gxwebsoft/oa/service/OaAppService.java new file mode 100644 index 0000000..98bb4c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAppService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaApp; +import com.gxwebsoft.oa.param.OaAppParam; + +import java.util.List; + +/** + * 应用Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAppParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAppParam param); + + /** + * 根据id查询 + * + * @param appId 应用ID + * @return OaApp + */ + OaApp getByIdRel(Integer appId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAppUrlService.java b/src/main/java/com/gxwebsoft/oa/service/OaAppUrlService.java new file mode 100644 index 0000000..eef2650 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAppUrlService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAppUrl; +import com.gxwebsoft.oa.param.OaAppUrlParam; + +import java.util.List; + +/** + * 项目域名Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppUrlService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAppUrlParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAppUrlParam param); + + /** + * 根据id查询 + * + * @param appUrlId 自增ID + * @return OaAppUrl + */ + OaAppUrl getByIdRel(Integer appUrlId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAppUserService.java b/src/main/java/com/gxwebsoft/oa/service/OaAppUserService.java new file mode 100644 index 0000000..1dd7f82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAppUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.oa.param.OaAppUserParam; + +import java.util.List; + +/** + * 应用成员Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAppUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAppUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAppUserParam param); + + /** + * 根据id查询 + * + * @param appUserId 自增ID + * @return OaAppUser + */ + OaAppUser getByIdRel(Integer appUserId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsCodeService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsCodeService.java new file mode 100644 index 0000000..681ef81 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsCodeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsCode; +import com.gxwebsoft.oa.param.OaAssetsCodeParam; + +import java.util.List; + +/** + * 代码仓库Service + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +public interface OaAssetsCodeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsCodeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsCodeParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return OaAssetsCode + */ + OaAssetsCode getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsDomainService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsDomainService.java new file mode 100644 index 0000000..735df28 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsDomainService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsDomain; +import com.gxwebsoft.oa.param.OaAssetsDomainParam; + +import java.util.List; + +/** + * 域名Service + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsDomainService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsDomainParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsDomainParam param); + + /** + * 根据id查询 + * + * @param domainId ID + * @return OaAssetsDomain + */ + OaAssetsDomain getByIdRel(Integer domainId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsEmailService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsEmailService.java new file mode 100644 index 0000000..84c1ab7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsEmailService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsEmail; +import com.gxwebsoft.oa.param.OaAssetsEmailParam; + +import java.util.List; + +/** + * 企业邮箱记录表Service + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsEmailService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsEmailParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsEmailParam param); + + /** + * 根据id查询 + * + * @param emailId ID + * @return OaAssetsEmail + */ + OaAssetsEmail getByIdRel(Integer emailId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsMysqlService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsMysqlService.java new file mode 100644 index 0000000..7263afd --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsMysqlService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsMysql; +import com.gxwebsoft.oa.param.OaAssetsMysqlParam; + +import java.util.List; + +/** + * 云数据库Service + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +public interface OaAssetsMysqlService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsMysqlParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsMysqlParam param); + + /** + * 根据id查询 + * + * @param mysqlId ID + * @return OaAssetsMysql + */ + OaAssetsMysql getByIdRel(Integer mysqlId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsServerService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsServerService.java new file mode 100644 index 0000000..0b91d35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsServerService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsServer; +import com.gxwebsoft.oa.param.OaAssetsServerParam; + +import java.util.List; + +/** + * 服务器资产记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAssetsServerService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsServerParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsServerParam param); + + /** + * 根据id查询 + * + * @param serverId 资产ID + * @return OaAssetsServer + */ + OaAssetsServer getByIdRel(Integer serverId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsService.java new file mode 100644 index 0000000..4142d5f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssets; +import com.gxwebsoft.oa.param.OaAssetsParam; + +import java.util.List; + +/** + * 云服务器Service + * + * @author 科技小王子 + * @since 2024-10-18 18:34:15 + */ +public interface OaAssetsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsParam param); + + /** + * 根据id查询 + * + * @param assetsId 资产ID + * @return OaAssets + */ + OaAssets getByIdRel(Integer assetsId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsSiteService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSiteService.java new file mode 100644 index 0000000..c8ec714 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSiteService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsSite; +import com.gxwebsoft.oa.param.OaAssetsSiteParam; + +import java.util.List; + +/** + * 网站信息记录表Service + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsSiteService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsSiteParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsSiteParam param); + + /** + * 根据id查询 + * + * @param websiteId 站点ID + * @return OaAssetsSite + */ + OaAssetsSite getByIdRel(Integer websiteId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsSoftwareCertService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSoftwareCertService.java new file mode 100644 index 0000000..039f97d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSoftwareCertService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsSoftwareCert; +import com.gxwebsoft.oa.param.OaAssetsSoftwareCertParam; + +import java.util.List; + +/** + * 计算机软件著作权登记Service + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +public interface OaAssetsSoftwareCertService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsSoftwareCertParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsSoftwareCertParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return OaAssetsSoftwareCert + */ + OaAssetsSoftwareCert getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsSslService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSslService.java new file mode 100644 index 0000000..3d150e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsSslService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsSsl; +import com.gxwebsoft.oa.param.OaAssetsSslParam; + +import java.util.List; + +/** + * ssl证书Service + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +public interface OaAssetsSslService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsSslParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsSslParam param); + + /** + * 根据id查询 + * + * @param sslId ID + * @return OaAssetsSsl + */ + OaAssetsSsl getByIdRel(Integer sslId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsTrademarkService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsTrademarkService.java new file mode 100644 index 0000000..838ed04 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsTrademarkService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsTrademark; +import com.gxwebsoft.oa.param.OaAssetsTrademarkParam; + +import java.util.List; + +/** + * 商标注册Service + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +public interface OaAssetsTrademarkService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsTrademarkParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsTrademarkParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return OaAssetsTrademark + */ + OaAssetsTrademark getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsUserService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsUserService.java new file mode 100644 index 0000000..f976095 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsUser; +import com.gxwebsoft.oa.param.OaAssetsUserParam; + +import java.util.List; + +/** + * 服务器成员管理Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +public interface OaAssetsUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsUserParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return OaAssetsUser + */ + OaAssetsUser getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaAssetsVhostService.java b/src/main/java/com/gxwebsoft/oa/service/OaAssetsVhostService.java new file mode 100644 index 0000000..4b54c43 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaAssetsVhostService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaAssetsVhost; +import com.gxwebsoft.oa.param.OaAssetsVhostParam; + +import java.util.List; + +/** + * 虚拟主机记录表Service + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +public interface OaAssetsVhostService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaAssetsVhostParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaAssetsVhostParam param); + + /** + * 根据id查询 + * + * @param vhostId ID + * @return OaAssetsVhost + */ + OaAssetsVhost getByIdRel(Integer vhostId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaCompanyFieldService.java b/src/main/java/com/gxwebsoft/oa/service/OaCompanyFieldService.java new file mode 100644 index 0000000..66ac876 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaCompanyFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaCompanyField; +import com.gxwebsoft.oa.param.OaCompanyFieldParam; + +import java.util.List; + +/** + * 企业参数Service + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaCompanyFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaCompanyFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return OaCompanyField + */ + OaCompanyField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java b/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java new file mode 100644 index 0000000..fb91784 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaCompany; +import com.gxwebsoft.oa.param.OaCompanyParam; + +import java.util.List; + +/** + * 企业信息Service + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaCompanyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaCompanyParam param); + + /** + * 根据id查询 + * + * @param companyId 企业id + * @return OaCompany + */ + OaCompany getByIdRel(Integer companyId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaCompanyUserService.java b/src/main/java/com/gxwebsoft/oa/service/OaCompanyUserService.java new file mode 100644 index 0000000..ff2c147 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaCompanyUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaCompanyUser; +import com.gxwebsoft.oa.param.OaCompanyUserParam; + +import java.util.List; + +/** + * 成员管理Service + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +public interface OaCompanyUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaCompanyUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaCompanyUserParam param); + + /** + * 根据id查询 + * + * @param companyUserId 自增ID + * @return OaCompanyUser + */ + OaCompanyUser getByIdRel(Integer companyUserId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaLinkService.java b/src/main/java/com/gxwebsoft/oa/service/OaLinkService.java new file mode 100644 index 0000000..6d8738f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaLinkService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaLink; +import com.gxwebsoft.oa.param.OaLinkParam; + +import java.util.List; + +/** + * 常用链接Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaLinkService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaLinkParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaLinkParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return OaLink + */ + OaLink getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaProductService.java b/src/main/java/com/gxwebsoft/oa/service/OaProductService.java new file mode 100644 index 0000000..305cbd2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaProductService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaProduct; +import com.gxwebsoft.oa.param.OaProductParam; + +import java.util.List; + +/** + * 产品记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaProductService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaProductParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaProductParam param); + + /** + * 根据id查询 + * + * @param productId 产品ID + * @return OaProduct + */ + OaProduct getByIdRel(Integer productId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaProductTabsService.java b/src/main/java/com/gxwebsoft/oa/service/OaProductTabsService.java new file mode 100644 index 0000000..e1725ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaProductTabsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaProductTabs; +import com.gxwebsoft.oa.param.OaProductTabsParam; + +import java.util.List; + +/** + * 产品标签记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaProductTabsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaProductTabsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaProductTabsParam param); + + /** + * 根据id查询 + * + * @param tabId 产品标签ID + * @return OaProductTabs + */ + OaProductTabs getByIdRel(Integer tabId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaTaskCountService.java b/src/main/java/com/gxwebsoft/oa/service/OaTaskCountService.java new file mode 100644 index 0000000..903f7cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaTaskCountService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaTaskCount; +import com.gxwebsoft.oa.param.OaTaskCountParam; + +import java.util.List; + +/** + * 数据统计Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskCountService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaTaskCountParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaTaskCountParam param); + + /** + * 根据id查询 + * + * @param taskCountId 自增ID + * @return OaTaskCount + */ + OaTaskCount getByIdRel(Integer taskCountId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaTaskRecordService.java b/src/main/java/com/gxwebsoft/oa/service/OaTaskRecordService.java new file mode 100644 index 0000000..8045be0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaTaskRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaTaskRecord; +import com.gxwebsoft.oa.param.OaTaskRecordParam; + +import java.util.List; + +/** + * 工单回复记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaTaskRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaTaskRecordParam param); + + /** + * 根据id查询 + * + * @param taskRecordId 回复ID + * @return OaTaskRecord + */ + OaTaskRecord getByIdRel(Integer taskRecordId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaTaskService.java b/src/main/java/com/gxwebsoft/oa/service/OaTaskService.java new file mode 100644 index 0000000..4f06f34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaTaskService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaTask; +import com.gxwebsoft.oa.param.OaTaskParam; + +import java.util.List; + +/** + * 任务记录表Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaTaskParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaTaskParam param); + + /** + * 根据id查询 + * + * @param taskId 工单ID + * @return OaTask + */ + OaTask getByIdRel(Integer taskId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/OaTaskUserService.java b/src/main/java/com/gxwebsoft/oa/service/OaTaskUserService.java new file mode 100644 index 0000000..9c33890 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/OaTaskUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.OaTaskUser; +import com.gxwebsoft.oa.param.OaTaskUserParam; + +import java.util.List; + +/** + * 工单成员Service + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +public interface OaTaskUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OaTaskUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OaTaskUserParam param); + + /** + * 根据id查询 + * + * @param taskUserId 自增ID + * @return OaTaskUser + */ + OaTaskUser getByIdRel(Integer taskUserId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAppFieldServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppFieldServiceImpl.java new file mode 100644 index 0000000..d70ecf7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAppFieldMapper; +import com.gxwebsoft.oa.service.OaAppFieldService; +import com.gxwebsoft.oa.entity.OaAppField; +import com.gxwebsoft.oa.param.OaAppFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用参数Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAppFieldServiceImpl extends ServiceImpl implements OaAppFieldService { + + @Override + public PageResult pageRel(OaAppFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAppFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAppField getByIdRel(Integer id) { + OaAppFieldParam param = new OaAppFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAppRenewServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppRenewServiceImpl.java new file mode 100644 index 0000000..9e8bd8d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppRenewServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAppRenewMapper; +import com.gxwebsoft.oa.service.OaAppRenewService; +import com.gxwebsoft.oa.entity.OaAppRenew; +import com.gxwebsoft.oa.param.OaAppRenewParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 续费管理Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAppRenewServiceImpl extends ServiceImpl implements OaAppRenewService { + + @Override + public PageResult pageRel(OaAppRenewParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAppRenewParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAppRenew getByIdRel(Integer appRenewId) { + OaAppRenewParam param = new OaAppRenewParam(); + param.setAppRenewId(appRenewId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAppServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppServiceImpl.java new file mode 100644 index 0000000..81f8f01 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAppMapper; +import com.gxwebsoft.oa.service.OaAppService; +import com.gxwebsoft.oa.entity.OaApp; +import com.gxwebsoft.oa.param.OaAppParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAppServiceImpl extends ServiceImpl implements OaAppService { + + @Override + public PageResult pageRel(OaAppParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAppParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaApp getByIdRel(Integer appId) { + OaAppParam param = new OaAppParam(); + param.setAppId(appId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUrlServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUrlServiceImpl.java new file mode 100644 index 0000000..1adab2c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUrlServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAppUrlMapper; +import com.gxwebsoft.oa.service.OaAppUrlService; +import com.gxwebsoft.oa.entity.OaAppUrl; +import com.gxwebsoft.oa.param.OaAppUrlParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 项目域名Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAppUrlServiceImpl extends ServiceImpl implements OaAppUrlService { + + @Override + public PageResult pageRel(OaAppUrlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAppUrlParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAppUrl getByIdRel(Integer appUrlId) { + OaAppUrlParam param = new OaAppUrlParam(); + param.setAppUrlId(appUrlId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUserServiceImpl.java new file mode 100644 index 0000000..ae43f9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAppUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAppUserMapper; +import com.gxwebsoft.oa.service.OaAppUserService; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.oa.param.OaAppUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用成员Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAppUserServiceImpl extends ServiceImpl implements OaAppUserService { + + @Override + public PageResult pageRel(OaAppUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAppUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAppUser getByIdRel(Integer appUserId) { + OaAppUserParam param = new OaAppUserParam(); + param.setAppUserId(appUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsCodeServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsCodeServiceImpl.java new file mode 100644 index 0000000..5d37730 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsCodeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsCodeMapper; +import com.gxwebsoft.oa.service.OaAssetsCodeService; +import com.gxwebsoft.oa.entity.OaAssetsCode; +import com.gxwebsoft.oa.param.OaAssetsCodeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 代码仓库Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:01 + */ +@Service +public class OaAssetsCodeServiceImpl extends ServiceImpl implements OaAssetsCodeService { + + @Override + public PageResult pageRel(OaAssetsCodeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsCodeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsCode getByIdRel(Integer id) { + OaAssetsCodeParam param = new OaAssetsCodeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsDomainServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsDomainServiceImpl.java new file mode 100644 index 0000000..ac207c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsDomainServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsDomainMapper; +import com.gxwebsoft.oa.service.OaAssetsDomainService; +import com.gxwebsoft.oa.entity.OaAssetsDomain; +import com.gxwebsoft.oa.param.OaAssetsDomainParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 域名Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Service +public class OaAssetsDomainServiceImpl extends ServiceImpl implements OaAssetsDomainService { + + @Override + public PageResult pageRel(OaAssetsDomainParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsDomainParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsDomain getByIdRel(Integer domainId) { + OaAssetsDomainParam param = new OaAssetsDomainParam(); + param.setDomainId(domainId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsEmailServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsEmailServiceImpl.java new file mode 100644 index 0000000..7c3f4bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsEmailServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsEmailMapper; +import com.gxwebsoft.oa.service.OaAssetsEmailService; +import com.gxwebsoft.oa.entity.OaAssetsEmail; +import com.gxwebsoft.oa.param.OaAssetsEmailParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 企业邮箱记录表Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Service +public class OaAssetsEmailServiceImpl extends ServiceImpl implements OaAssetsEmailService { + + @Override + public PageResult pageRel(OaAssetsEmailParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsEmailParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsEmail getByIdRel(Integer emailId) { + OaAssetsEmailParam param = new OaAssetsEmailParam(); + param.setEmailId(emailId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsMysqlServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsMysqlServiceImpl.java new file mode 100644 index 0000000..fc17f9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsMysqlServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsMysqlMapper; +import com.gxwebsoft.oa.service.OaAssetsMysqlService; +import com.gxwebsoft.oa.entity.OaAssetsMysql; +import com.gxwebsoft.oa.param.OaAssetsMysqlParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 云数据库Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 19:00:20 + */ +@Service +public class OaAssetsMysqlServiceImpl extends ServiceImpl implements OaAssetsMysqlService { + + @Override + public PageResult pageRel(OaAssetsMysqlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsMysqlParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsMysql getByIdRel(Integer mysqlId) { + OaAssetsMysqlParam param = new OaAssetsMysqlParam(); + param.setMysqlId(mysqlId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServerServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServerServiceImpl.java new file mode 100644 index 0000000..7788484 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServerServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsServerMapper; +import com.gxwebsoft.oa.service.OaAssetsServerService; +import com.gxwebsoft.oa.entity.OaAssetsServer; +import com.gxwebsoft.oa.param.OaAssetsServerParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 服务器资产记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAssetsServerServiceImpl extends ServiceImpl implements OaAssetsServerService { + + @Override + public PageResult pageRel(OaAssetsServerParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsServerParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsServer getByIdRel(Integer serverId) { + OaAssetsServerParam param = new OaAssetsServerParam(); + param.setServerId(serverId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServiceImpl.java new file mode 100644 index 0000000..3c64144 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsMapper; +import com.gxwebsoft.oa.service.OaAssetsService; +import com.gxwebsoft.oa.entity.OaAssets; +import com.gxwebsoft.oa.param.OaAssetsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 云服务器Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:34:15 + */ +@Service +public class OaAssetsServiceImpl extends ServiceImpl implements OaAssetsService { + + @Override + public PageResult pageRel(OaAssetsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssets getByIdRel(Integer assetsId) { + OaAssetsParam param = new OaAssetsParam(); + param.setAssetsId(assetsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSiteServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSiteServiceImpl.java new file mode 100644 index 0000000..b94667d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSiteServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsSiteMapper; +import com.gxwebsoft.oa.service.OaAssetsSiteService; +import com.gxwebsoft.oa.entity.OaAssetsSite; +import com.gxwebsoft.oa.param.OaAssetsSiteParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 网站信息记录表Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Service +public class OaAssetsSiteServiceImpl extends ServiceImpl implements OaAssetsSiteService { + + @Override + public PageResult pageRel(OaAssetsSiteParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsSiteParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsSite getByIdRel(Integer websiteId) { + OaAssetsSiteParam param = new OaAssetsSiteParam(); + param.setWebsiteId(websiteId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSoftwareCertServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSoftwareCertServiceImpl.java new file mode 100644 index 0000000..2ac941c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSoftwareCertServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsSoftwareCertMapper; +import com.gxwebsoft.oa.service.OaAssetsSoftwareCertService; +import com.gxwebsoft.oa.entity.OaAssetsSoftwareCert; +import com.gxwebsoft.oa.param.OaAssetsSoftwareCertParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 计算机软件著作权登记Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Service +public class OaAssetsSoftwareCertServiceImpl extends ServiceImpl implements OaAssetsSoftwareCertService { + + @Override + public PageResult pageRel(OaAssetsSoftwareCertParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsSoftwareCertParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsSoftwareCert getByIdRel(Integer id) { + OaAssetsSoftwareCertParam param = new OaAssetsSoftwareCertParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSslServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSslServiceImpl.java new file mode 100644 index 0000000..5a8740e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsSslServiceImpl.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.oa.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsSslMapper; +import com.gxwebsoft.oa.service.OaAssetsSslService; +import com.gxwebsoft.oa.entity.OaAssetsSsl; +import com.gxwebsoft.oa.param.OaAssetsSslParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * ssl证书Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 19:25:40 + */ +@Service +public class OaAssetsSslServiceImpl extends ServiceImpl implements OaAssetsSslService { + + @Override + public PageResult pageRel(OaAssetsSslParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + list.forEach(d -> { + // 即将过期(一周内过期的) + d.setSoon(DateUtil.offsetDay(d.getEndTime(), -7).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + d.setStatus(d.getEndTime().compareTo(DateUtil.date())); + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsSslParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsSsl getByIdRel(Integer sslId) { + OaAssetsSslParam param = new OaAssetsSslParam(); + param.setSslId(sslId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsTrademarkServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsTrademarkServiceImpl.java new file mode 100644 index 0000000..7baede1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsTrademarkServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsTrademarkMapper; +import com.gxwebsoft.oa.service.OaAssetsTrademarkService; +import com.gxwebsoft.oa.entity.OaAssetsTrademark; +import com.gxwebsoft.oa.param.OaAssetsTrademarkParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商标注册Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 19:46:21 + */ +@Service +public class OaAssetsTrademarkServiceImpl extends ServiceImpl implements OaAssetsTrademarkService { + + @Override + public PageResult pageRel(OaAssetsTrademarkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsTrademarkParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsTrademark getByIdRel(Integer id) { + OaAssetsTrademarkParam param = new OaAssetsTrademarkParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsUserServiceImpl.java new file mode 100644 index 0000000..4869455 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsUserMapper; +import com.gxwebsoft.oa.service.OaAssetsUserService; +import com.gxwebsoft.oa.entity.OaAssetsUser; +import com.gxwebsoft.oa.param.OaAssetsUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 服务器成员管理Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:41 + */ +@Service +public class OaAssetsUserServiceImpl extends ServiceImpl implements OaAssetsUserService { + + @Override + public PageResult pageRel(OaAssetsUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsUser getByIdRel(Integer id) { + OaAssetsUserParam param = new OaAssetsUserParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsVhostServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsVhostServiceImpl.java new file mode 100644 index 0000000..87b1a08 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaAssetsVhostServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaAssetsVhostMapper; +import com.gxwebsoft.oa.service.OaAssetsVhostService; +import com.gxwebsoft.oa.entity.OaAssetsVhost; +import com.gxwebsoft.oa.param.OaAssetsVhostParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 虚拟主机记录表Service实现 + * + * @author 科技小王子 + * @since 2024-10-18 18:27:02 + */ +@Service +public class OaAssetsVhostServiceImpl extends ServiceImpl implements OaAssetsVhostService { + + @Override + public PageResult pageRel(OaAssetsVhostParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaAssetsVhostParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaAssetsVhost getByIdRel(Integer vhostId) { + OaAssetsVhostParam param = new OaAssetsVhostParam(); + param.setVhostId(vhostId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyFieldServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyFieldServiceImpl.java new file mode 100644 index 0000000..e7b76d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaCompanyFieldMapper; +import com.gxwebsoft.oa.service.OaCompanyFieldService; +import com.gxwebsoft.oa.entity.OaCompanyField; +import com.gxwebsoft.oa.param.OaCompanyFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 企业参数Service实现 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Service +public class OaCompanyFieldServiceImpl extends ServiceImpl implements OaCompanyFieldService { + + @Override + public PageResult pageRel(OaCompanyFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaCompanyFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaCompanyField getByIdRel(Integer id) { + OaCompanyFieldParam param = new OaCompanyFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java new file mode 100644 index 0000000..1c53913 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaCompanyMapper; +import com.gxwebsoft.oa.service.OaCompanyService; +import com.gxwebsoft.oa.entity.OaCompany; +import com.gxwebsoft.oa.param.OaCompanyParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 企业信息Service实现 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Service +public class OaCompanyServiceImpl extends ServiceImpl implements OaCompanyService { + + @Override + public PageResult pageRel(OaCompanyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaCompanyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaCompany getByIdRel(Integer companyId) { + OaCompanyParam param = new OaCompanyParam(); + param.setCompanyId(companyId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyUserServiceImpl.java new file mode 100644 index 0000000..43b4230 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaCompanyUserMapper; +import com.gxwebsoft.oa.service.OaCompanyUserService; +import com.gxwebsoft.oa.entity.OaCompanyUser; +import com.gxwebsoft.oa.param.OaCompanyUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 成员管理Service实现 + * + * @author 科技小王子 + * @since 2024-09-20 12:33:12 + */ +@Service +public class OaCompanyUserServiceImpl extends ServiceImpl implements OaCompanyUserService { + + @Override + public PageResult pageRel(OaCompanyUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaCompanyUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaCompanyUser getByIdRel(Integer companyUserId) { + OaCompanyUserParam param = new OaCompanyUserParam(); + param.setCompanyUserId(companyUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaLinkServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaLinkServiceImpl.java new file mode 100644 index 0000000..4050f49 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaLinkServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaLinkMapper; +import com.gxwebsoft.oa.service.OaLinkService; +import com.gxwebsoft.oa.entity.OaLink; +import com.gxwebsoft.oa.param.OaLinkParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 常用链接Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaLinkServiceImpl extends ServiceImpl implements OaLinkService { + + @Override + public PageResult pageRel(OaLinkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaLinkParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaLink getByIdRel(Integer id) { + OaLinkParam param = new OaLinkParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaProductServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaProductServiceImpl.java new file mode 100644 index 0000000..09506a3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaProductServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaProductMapper; +import com.gxwebsoft.oa.service.OaProductService; +import com.gxwebsoft.oa.entity.OaProduct; +import com.gxwebsoft.oa.param.OaProductParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 产品记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaProductServiceImpl extends ServiceImpl implements OaProductService { + + @Override + public PageResult pageRel(OaProductParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaProductParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaProduct getByIdRel(Integer productId) { + OaProductParam param = new OaProductParam(); + param.setProductId(productId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaProductTabsServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaProductTabsServiceImpl.java new file mode 100644 index 0000000..98a4203 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaProductTabsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaProductTabsMapper; +import com.gxwebsoft.oa.service.OaProductTabsService; +import com.gxwebsoft.oa.entity.OaProductTabs; +import com.gxwebsoft.oa.param.OaProductTabsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 产品标签记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaProductTabsServiceImpl extends ServiceImpl implements OaProductTabsService { + + @Override + public PageResult pageRel(OaProductTabsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaProductTabsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaProductTabs getByIdRel(Integer tabId) { + OaProductTabsParam param = new OaProductTabsParam(); + param.setTabId(tabId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskCountServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskCountServiceImpl.java new file mode 100644 index 0000000..8da15ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskCountServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaTaskCountMapper; +import com.gxwebsoft.oa.service.OaTaskCountService; +import com.gxwebsoft.oa.entity.OaTaskCount; +import com.gxwebsoft.oa.param.OaTaskCountParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 数据统计Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaTaskCountServiceImpl extends ServiceImpl implements OaTaskCountService { + + @Override + public PageResult pageRel(OaTaskCountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaTaskCountParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaTaskCount getByIdRel(Integer taskCountId) { + OaTaskCountParam param = new OaTaskCountParam(); + param.setTaskCountId(taskCountId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskRecordServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskRecordServiceImpl.java new file mode 100644 index 0000000..bdaee94 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskRecordServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaTaskRecordMapper; +import com.gxwebsoft.oa.service.OaTaskRecordService; +import com.gxwebsoft.oa.entity.OaTaskRecord; +import com.gxwebsoft.oa.param.OaTaskRecordParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 工单回复记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaTaskRecordServiceImpl extends ServiceImpl implements OaTaskRecordService { + + @Override + public PageResult pageRel(OaTaskRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaTaskRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaTaskRecord getByIdRel(Integer taskRecordId) { + OaTaskRecordParam param = new OaTaskRecordParam(); + param.setTaskRecordId(taskRecordId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskServiceImpl.java new file mode 100644 index 0000000..1ea3691 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaTaskMapper; +import com.gxwebsoft.oa.service.OaTaskService; +import com.gxwebsoft.oa.entity.OaTask; +import com.gxwebsoft.oa.param.OaTaskParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 任务记录表Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaTaskServiceImpl extends ServiceImpl implements OaTaskService { + + @Override + public PageResult pageRel(OaTaskParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaTaskParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaTask getByIdRel(Integer taskId) { + OaTaskParam param = new OaTaskParam(); + param.setTaskId(taskId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskUserServiceImpl.java new file mode 100644 index 0000000..c7a15ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaTaskUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.OaTaskUserMapper; +import com.gxwebsoft.oa.service.OaTaskUserService; +import com.gxwebsoft.oa.entity.OaTaskUser; +import com.gxwebsoft.oa.param.OaTaskUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 工单成员Service实现 + * + * @author 科技小王子 + * @since 2024-09-10 20:57:42 + */ +@Service +public class OaTaskUserServiceImpl extends ServiceImpl implements OaTaskUserService { + + @Override + public PageResult pageRel(OaTaskUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OaTaskUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OaTaskUser getByIdRel(Integer taskUserId) { + OaTaskUserParam param = new OaTaskUserParam(); + param.setTaskUserId(taskUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectCollectionController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectCollectionController.java new file mode 100644 index 0000000..5a15e1c --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectCollectionController.java @@ -0,0 +1,128 @@ +package com.gxwebsoft.project.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.project.service.ProjectCollectionService; +import com.gxwebsoft.project.entity.ProjectCollection; +import com.gxwebsoft.project.param.ProjectCollectionParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 我的收藏控制器 + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +@Api(tags = "我的收藏管理") +@RestController +@RequestMapping("/api/project/project-collection") +public class ProjectCollectionController extends BaseController { + @Resource + private ProjectCollectionService projectCollectionService; + + @ApiOperation("分页查询我的收藏") + @GetMapping("/page") + public ApiResult> page(ProjectCollectionParam param) { + // 使用关联查询 + return success(projectCollectionService.pageRel(param)); + } + + @ApiOperation("查询全部我的收藏") + @GetMapping() + public ApiResult> list(ProjectCollectionParam param) { + // 使用关联查询 + return success(projectCollectionService.listRel(param)); + } + + @ApiOperation("是否收藏") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + final ProjectCollection projectCollection = projectCollectionService.getOne(new LambdaQueryWrapper().eq(ProjectCollection::getAppId, id).eq(ProjectCollection::getUserId, getLoginUserId()).last("limit 1")); + if(ObjectUtil.isNotEmpty(projectCollection)){ + return success(true); + } + return success(false); + } + + @OperationLog + @ApiOperation("加入收藏") + @PostMapping() + public ApiResult save(@RequestBody ProjectCollection projectCollection) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + projectCollection.setUserId(loginUser.getUserId()); + } + if (projectCollectionService.save(projectCollection)) { + return success("收藏成功"); + } + return fail("操作失败"); + } + + @OperationLog + @ApiOperation("修改我的收藏") + @PutMapping() + public ApiResult update(@RequestBody ProjectCollection projectCollection) { + if (projectCollectionService.updateById(projectCollection)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @OperationLog + @ApiOperation("取消收藏") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectCollectionService.remove(new LambdaQueryWrapper().eq(ProjectCollection::getAppId,id).eq(ProjectCollection::getUserId,getLoginUserId()))) { + return success("已取消收藏"); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('project:projectCollection:save')") + @OperationLog + @ApiOperation("批量添加我的收藏") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectCollectionService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectCollection:update')") + @OperationLog + @ApiOperation("批量修改我的收藏") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectCollectionService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectCollection:remove')") + @OperationLog + @ApiOperation("批量删除我的收藏") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectCollectionService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectController.java new file mode 100644 index 0000000..6aa80a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectController.java @@ -0,0 +1,301 @@ +package com.gxwebsoft.project.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.api.R; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.cms.param.CmsWebsiteParam; +import com.gxwebsoft.cms.service.CmsWebsiteService; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.oa.entity.OaAppUser; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.project.service.ProjectService; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.param.ProjectParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.project.service.ProjectUserService; +import com.gxwebsoft.shop.entity.ShopOrder; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 应用控制器 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Api(tags = "应用管理") +@RestController +@RequestMapping("/api/project/project") +public class ProjectController extends BaseController { + @Resource + private ProjectService projectService; + @Resource + private ProjectUserService projectUserService; + @Resource + private CmsWebsiteService cmsWebsiteService; + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("分页查询应用") + @GetMapping("/page") + public ApiResult> page(ProjectParam param) { + final User loginUser = getLoginUser(); + if (loginUser != null) { + param.setLoginUserId(loginUser.getUserId()); + final List roles = loginUser.getRoles(); + if (!CommonUtil.hasRole(roles, "admin") && !CommonUtil.hasRole(roles, "superAdmin")) { + final List projectUsers = projectUserService.list(new LambdaQueryWrapper().eq(ProjectUser::getUserId, loginUser.getUserId())); + final Set appIds = projectUsers.stream().map(ProjectUser::getAppId).collect(Collectors.toSet()); + param.setAppIds(appIds); + } + final PageResult result = projectService.pageRel(param); + final CmsWebsiteParam websiteParam = new CmsWebsiteParam(); + final List projects = result.getList(); + if(!CollectionUtils.isEmpty(projects)){ + final Set collectByProject = projects.stream().map(Project::getWebsiteId).collect(Collectors.toSet()); + websiteParam.setWebsiteIds(collectByProject); + final PageResult websitePageResult = cmsWebsiteService.pageRelAll(websiteParam); + if (!CollectionUtils.isEmpty(websitePageResult.getList())) { + final Map> collectByWebsite = websitePageResult.getList().stream().collect(Collectors.groupingBy(CmsWebsite::getWebsiteId)); + result.getList().forEach(item -> { + final List cmsWebsites = collectByWebsite.get(item.getWebsiteId()); + if (!CollectionUtils.isEmpty(cmsWebsites)) { + final CmsWebsite website = cmsWebsites.get(0); + item.setAppUrl(website.getDomain()); + item.setAdminUrl(website.getAdminUrl()); + item.setAppIcon(website.getWebsiteLogo()); + item.setAppType(website.getWebsiteType()); + item.setSuperAdminPhone(website.getSuperAdminPhone()); + } + }); + } + } + return success(result); + } + return fail("获取失败",null); + } + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("查询全部应用") + @GetMapping() + public ApiResult> list(ProjectParam param) { + // 使用关联查询 + return success(projectService.listRel(param)); + } + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("根据id查询应用") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(projectService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('project:project:save')") + @OperationLog + @ApiOperation("添加应用") + @PostMapping() + public ApiResult save(@RequestBody Project project) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + project.setUserId(loginUser.getUserId()); + final Project one = projectService.getOne(new LambdaQueryWrapper().eq(Project::getAppCode, project.getAppCode()).last("limit 1")); + if (!ObjectUtil.isEmpty(one)) { + return fail("应用标识已存在"); + } + if (projectService.save(project)) { + final ProjectUser user = new ProjectUser(); + user.setUserId(loginUser.getUserId()); + user.setAppId(project.getAppId()); + user.setRole(30); + user.setNickname(loginUser.getNickname()); + projectUserService.save(user); + return success("添加成功"); + } + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:project:update')") + @OperationLog + @ApiOperation("修改应用") + @PutMapping() + public ApiResult update(@RequestBody Project project) { + if(project.getAppStatus() != null && project.getAppStatus().equals("已上架")){ + project.setProgress(100); + } + if (projectService.updateById(project)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:project:remove')") + @OperationLog + @ApiOperation("删除应用") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('project:project:save')") + @OperationLog + @ApiOperation("批量添加应用") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:project:update')") + @OperationLog + @ApiOperation("批量修改应用") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectService, "app_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:project:remove')") + @OperationLog + @ApiOperation("批量删除应用") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data() { + Map data = new HashMap<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + final User loginUser = getLoginUser(); + if(loginUser != null){ + + final List roles = loginUser.getRoles(); + if (!CommonUtil.hasRole(roles, "admin") && !CommonUtil.hasRole(roles, "superAdmin")) { + final List projectUsers = projectUserService.list(new LambdaQueryWrapper().eq(ProjectUser::getUserId, loginUser.getUserId())); + final Set userIds = projectUsers.stream().map(ProjectUser::getAppId).collect(Collectors.toSet()); + wrapper.in(Project::getUserId,userIds); + } + + Integer totalNum = projectService.count(wrapper); + + wrapper.eq(Project::getAppStatus, "开发中"); + Integer totalNum2 = projectService.count(wrapper); + + wrapper.clear(); + wrapper.eq(Project::getAppStatus,"已上架"); + Integer totalNum3 = projectService.count(wrapper); + + wrapper.clear(); + wrapper.eq(Project::getAppStatus,"已上架").eq(Project::getShowExpiration,true); + Integer totalNum4 = projectService.count(wrapper); + + wrapper.clear(); + wrapper.eq(Project::getAppStatus, "已下架"); + Integer totalNum5 = projectService.count(wrapper); + + wrapper.clear(); + wrapper.eq(Project::getShowCase,true); + Integer totalNum6 = projectService.count(wrapper); + + wrapper.clear(); + wrapper.eq(Project::getShowIndex,true); + Integer totalNum7 = projectService.count(wrapper); + + data.put("totalNum", totalNum); + data.put("totalNum2", totalNum2); + data.put("totalNum3", totalNum3); + data.put("totalNum4", totalNum4); + data.put("totalNum5", totalNum5); + data.put("totalNum6", totalNum6); + data.put("totalNum7", totalNum7); + } + return success(data); + } + + @ApiOperation("统计信息") + @GetMapping("/count") + public ApiResult> count() { + Map data = new HashMap<>(); + final User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录", null); + } + + // 今天日期 + DateTime date = DateUtil.date(); + // 获取当前年份的起止时间 + LocalDateTime startOfYear = LocalDateTime.now().withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfYear = startOfYear.plusYears(1).minusNanos(1); + // 去年的起止时间 + LocalDateTime startOfLastYear = LocalDateTime.now().minusYears(1).withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfLastYear = startOfLastYear.plusYears(1).minusNanos(1); + + // TODO 近30天可催收的续费总额 + // 下个月的今天 + final DateTime nextMonth = DateUtil.nextMonth(); + final BigDecimal totalPrice30 = projectService.sumMoney(new LambdaQueryWrapper() + .lt(Project::getExpirationTime, nextMonth) + .gt(Project::getExpirationTime, date) + .eq(Project::getDeleted, 0) + ); + data.put("totalPrice30", totalPrice30); + + + // TODO 今年已收续费总额 + java.math.BigDecimal yearTotalPrice = projectService.sumMoney(new LambdaQueryWrapper() + .between(Project::getUpdateTime, startOfYear, endOfYear) + .eq(Project::getDeleted, 0) + ); + data.put("yearTotalPrice", yearTotalPrice); + + // TODO 去年已收续费总额 + java.math.BigDecimal lastTotalPrice = projectService.sumMoney(new LambdaQueryWrapper() + .between(Project::getUpdateTime, startOfLastYear, endOfLastYear) + .eq(Project::getDeleted, 0) + .eq(Project::getDeleted,0) + ); + // 去年已收续费总额 + data.put("lastTotalPrice", lastTotalPrice); + + return success(data); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectFieldController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectFieldController.java new file mode 100644 index 0000000..9b1b5f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectFieldController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.project.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.project.service.ProjectFieldService; +import com.gxwebsoft.project.entity.ProjectField; +import com.gxwebsoft.project.param.ProjectFieldParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用参数控制器 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Api(tags = "应用参数管理") +@RestController +@RequestMapping("/api/project/project-field") +public class ProjectFieldController extends BaseController { + @Resource + private ProjectFieldService projectFieldService; + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("分页查询应用参数") + @GetMapping("/page") + public ApiResult> page(ProjectFieldParam param) { + // 使用关联查询 + return success(projectFieldService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("查询全部应用参数") + @GetMapping() + public ApiResult> list(ProjectFieldParam param) { + // 使用关联查询 + return success(projectFieldService.listRel(param)); + } + + @PreAuthorize("hasAuthority('project:project:list')") + @ApiOperation("根据id查询应用参数") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(projectFieldService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('project:project:save')") + @OperationLog + @ApiOperation("添加应用参数") + @PostMapping() + public ApiResult save(@RequestBody ProjectField projectField) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + projectField.setUserId(loginUser.getUserId()); + } + if (projectFieldService.save(projectField)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:project:update')") + @OperationLog + @ApiOperation("修改应用参数") + @PutMapping() + public ApiResult update(@RequestBody ProjectField projectField) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + projectField.setUpdateUserId(loginUser.getUserId()); + } + if (projectFieldService.updateById(projectField)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:project:remove')") + @OperationLog + @ApiOperation("删除应用参数") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectFieldService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('project:project:save')") + @OperationLog + @ApiOperation("批量添加应用参数") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectFieldService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:project:update')") + @OperationLog + @ApiOperation("批量修改应用参数") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectFieldService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:project:remove')") + @OperationLog + @ApiOperation("批量删除应用参数") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectFieldService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectRenewController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectRenewController.java new file mode 100644 index 0000000..a01eb57 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectRenewController.java @@ -0,0 +1,290 @@ +package com.gxwebsoft.project.controller; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.param.ProjectParam; +import com.gxwebsoft.project.service.ProjectRenewService; +import com.gxwebsoft.project.entity.ProjectRenew; +import com.gxwebsoft.project.param.ProjectRenewParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.project.service.ProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; + +/** + * 续费管理控制器 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Api(tags = "续费管理管理") +@RestController +@RequestMapping("/api/project/project-renew") +public class ProjectRenewController extends BaseController { + @Resource + private ProjectRenewService projectRenewService; + @Resource + private ProjectService projectService; + + @PreAuthorize("hasAuthority('project:projectRenew:list')") + @ApiOperation("分页查询续费管理") + @GetMapping("/page") + public ApiResult> page(ProjectRenewParam param) { + return success(projectRenewService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectRenew:list')") + @ApiOperation("查询全部续费管理") + @GetMapping() + public ApiResult> list(ProjectRenewParam param) { + // 使用关联查询 + return success(projectRenewService.listRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectRenew:list')") + @ApiOperation("根据id查询续费管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(projectRenewService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('project:projectRenew:save')") + @OperationLog + @ApiOperation("添加续费管理") + @PostMapping() + public ApiResult save(@RequestBody ProjectRenew projectRenew) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + projectRenew.setUserId(loginUser.getUserId()); + } + // 更新项目状态 + if (projectRenewService.save(projectRenew)) { + projectService.updateByRenew(projectRenew); + return success("操作成功"); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('project:projectRenew:update')") + @OperationLog + @ApiOperation("修改续费管理") + @PutMapping() + public ApiResult update(@RequestBody ProjectRenew projectRenew) { + if (projectRenewService.updateById(projectRenew)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectRenew:remove')") + @OperationLog + @ApiOperation("删除续费管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 撤销操作 + final ProjectRenew renew = projectRenewService.getByIdRel(id); + if (ObjectUtil.isNotEmpty(renew)) { + final Project project = projectService.getOne(new LambdaQueryWrapper().eq(Project::getAppId, renew.getAppId())); + if (renew.getDays() > 0) { + // 按天续费 + project.setExpirationTime(DateUtil.offset(project.getExpirationTime(), DateField.DAY_OF_YEAR, -renew.getDays())); + } else { + // 按年续费 + project.setExpirationTime(DateUtil.offset(project.getExpirationTime(), DateField.MONTH, -12 * renew.getDuration())); + // 回退上一年的续费金额 + final List renews = projectRenewService.list(new LambdaQueryWrapper().eq(ProjectRenew::getAppId, renew.getAppId()).orderByDesc(ProjectRenew::getAppRenewId).last("limit 2")); + if(renews.size() > 1){ + final ProjectRenew projectRenew = renews.get(1); + project.setRenewMoney(projectRenew.getPayPrice()); + } + projectService.updateById(project); + } + // 保存到期时间所在的年月日 + final Date expirationTime = project.getExpirationTime(); + LocalDate localDate = expirationTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + int year = localDate.getYear(); + int month = localDate.getMonthValue(); // 获取月份,范围是1到12 + int day = localDate.getDayOfMonth(); // 获取日,范围是1到31 + project.setYear(year); + project.setMonth(month); + project.setDay(day); + } + + if (projectRenewService.removeById(id)) { + return success("该笔续费操作已撤销"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('project:projectRenew:save')") + @OperationLog + @ApiOperation("批量添加续费管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectRenewService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectRenew:update')") + @OperationLog + @ApiOperation("批量修改续费管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectRenewService, "app_renew_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectRenew:remove')") + @OperationLog + @ApiOperation("批量删除续费管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectRenewService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data(ProjectParam param) { + Map data = new HashMap<>(); + final User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录", null); + } + + // 今天日期 + DateTime date = DateUtil.date(); + // 获取当前年份的起止时间 + LocalDateTime startOfYear = LocalDateTime.now().withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfYear = startOfYear.plusYears(1).minusNanos(1); + // 去年的起止时间 + LocalDateTime startOfLastYear = LocalDateTime.now().minusYears(1).withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfLastYear = startOfLastYear.plusYears(1).minusNanos(1); + // 本月起止时间 + LocalDateTime startOfMonth = LocalDateTime.now().withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfMonth = startOfMonth.plusMonths(1).minusNanos(1); + + + // TODO 近30天可催收的续费总额 + // 下个月的今天 + final DateTime nextMonth = DateUtil.nextMonth(); + BigDecimal totalPrice30 = projectService.sumMoney(new LambdaQueryWrapper() + .lt(Project::getExpirationTime, nextMonth) + .gt(Project::getExpirationTime, date) + .lt(Project::getCreateTime, date) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架") + .eq(Project::getDeleted, 0) + ); + data.put("totalPrice30", totalPrice30); + + // TODO 按所属月份查询续费总金额 + if(param.getMonth() != null){ + BigDecimal currentQueryTotalPrice = projectService.sumMoney(new LambdaQueryWrapper() + .eq(Project::getMonth, param.getMonth()) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架") + .eq(Project::getDeleted, 0) + ); + data.put("currentQueryTotalPrice", currentQueryTotalPrice); + } + + // TODO 有效的续费总金额 + final BigDecimal effectiveTotalPrice = projectService.sumMoney(new LambdaQueryWrapper() + .eq(Project::getDeleted, 0) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架") + .gt(Project::getExpirationTime, date)); + data.put("effectiveTotalPrice", effectiveTotalPrice); + + // TODO 已超过催收时间的续费总额 + final BigDecimal expiredPrice = projectService.sumMoney(new LambdaQueryWrapper() + .eq(Project::getDeleted, 0) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架") + .lt(Project::getExpirationTime, date)); + data.put("expiredPrice", expiredPrice); + + // TODO 计算每年可收续费总额 + final BigDecimal totalRenewPrice = projectService.sumMoney(new LambdaQueryWrapper() + .eq(Project::getDeleted, 0) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架") + ); + + // TODO 本月已收续费总额 + final BigDecimal monthTotalPrice = projectRenewService.sumMoney(new LambdaQueryWrapper() + .between(ProjectRenew::getCreateTime, startOfMonth, endOfMonth) + .eq(ProjectRenew::getDeleted, 0) + ); + data.put("monthTotalPrice", monthTotalPrice); + + // TODO 今年已收续费总额 + java.math.BigDecimal yearTotalPrice = projectRenewService.sumMoney(new LambdaQueryWrapper() + .between(ProjectRenew::getCreateTime, startOfYear, endOfYear) + .eq(ProjectRenew::getDeleted, 0) + ); + data.put("yearTotalPrice", yearTotalPrice); + + // TODO 去年已收续费总额 + java.math.BigDecimal lastTotalPrice = projectRenewService.sumMoney(new LambdaQueryWrapper() + .eq(ProjectRenew::getDeleted, 0) + .between(ProjectRenew::getEndTime, startOfLastYear, endOfLastYear)); + // 去年已收续费总额 + data.put("lastTotalPrice", lastTotalPrice); + + data.put("totalRenewPrice", totalRenewPrice); + + return success(data); + } + + @ApiOperation("统计每个月的续费总金额") + @GetMapping("/listMonthRenewPrice") + public ApiResult> listMonthRenewPrice() { + final User loginUser = getLoginUser(); + if (loginUser != null) { + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List monthPrice = new ArrayList<>(); + for (int i = 1; i < 13; i++) { + wrapper.clear(); + wrapper.eq(Project::getDeleted, 0) + .eq(Project::getShowExpiration, true) + .eq(Project::getAppStatus, "已上架"); + monthPrice.add(projectService.sumMoney(wrapper.eq(Project::getMonth,i))); + } + return success(monthPrice); + } + return fail("请先登录", null); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectUrlController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectUrlController.java new file mode 100644 index 0000000..1637759 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectUrlController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.project.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.project.service.ProjectUrlService; +import com.gxwebsoft.project.entity.ProjectUrl; +import com.gxwebsoft.project.param.ProjectUrlParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 项目域名控制器 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Api(tags = "项目域名管理") +@RestController +@RequestMapping("/api/project/project-url") +public class ProjectUrlController extends BaseController { + @Resource + private ProjectUrlService projectUrlService; + + @PreAuthorize("hasAuthority('project:projectUrl:list')") + @ApiOperation("分页查询项目域名") + @GetMapping("/page") + public ApiResult> page(ProjectUrlParam param) { + // 使用关联查询 + return success(projectUrlService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectUrl:list')") + @ApiOperation("查询全部项目域名") + @GetMapping() + public ApiResult> list(ProjectUrlParam param) { + // 使用关联查询 + return success(projectUrlService.listRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectUrl:list')") + @ApiOperation("根据id查询项目域名") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(projectUrlService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('project:projectUrl:save')") + @OperationLog + @ApiOperation("添加项目域名") + @PostMapping() + public ApiResult save(@RequestBody ProjectUrl projectUrl) { + if (projectUrlService.save(projectUrl)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectUrl:update')") + @OperationLog + @ApiOperation("修改项目域名") + @PutMapping() + public ApiResult update(@RequestBody ProjectUrl projectUrl) { + if (projectUrlService.updateById(projectUrl)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectUrl:remove')") + @OperationLog + @ApiOperation("删除项目域名") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectUrlService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('project:projectUrl:save')") + @OperationLog + @ApiOperation("批量添加项目域名") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectUrlService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectUrl:update')") + @OperationLog + @ApiOperation("批量修改项目域名") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectUrlService, "app_url_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectUrl:remove')") + @OperationLog + @ApiOperation("批量删除项目域名") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectUrlService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/controller/ProjectUserController.java b/src/main/java/com/gxwebsoft/project/controller/ProjectUserController.java new file mode 100644 index 0000000..178d96f --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/controller/ProjectUserController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.project.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.project.service.ProjectUserService; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.project.param.ProjectUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用成员控制器 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Api(tags = "应用成员管理") +@RestController +@RequestMapping("/api/project/project-user") +public class ProjectUserController extends BaseController { + @Resource + private ProjectUserService projectUserService; + + @PreAuthorize("hasAuthority('project:projectUser:list')") + @ApiOperation("分页查询应用成员") + @GetMapping("/page") + public ApiResult> page(ProjectUserParam param) { + // 使用关联查询 + return success(projectUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectUser:list')") + @ApiOperation("查询全部应用成员") + @GetMapping() + public ApiResult> list(ProjectUserParam param) { + // 使用关联查询 + return success(projectUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('project:projectUser:list')") + @ApiOperation("根据id查询应用成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(projectUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('project:projectUser:save')") + @OperationLog + @ApiOperation("添加应用成员") + @PostMapping() + public ApiResult save(@RequestBody ProjectUser projectUser) { + if (projectUserService.save(projectUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectUser:update')") + @OperationLog + @ApiOperation("修改应用成员") + @PutMapping() + public ApiResult update(@RequestBody ProjectUser projectUser) { + if (projectUserService.updateById(projectUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectUser:remove')") + @OperationLog + @ApiOperation("删除应用成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('project:projectUser:save')") + @OperationLog + @ApiOperation("批量添加应用成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('project:projectUser:update')") + @OperationLog + @ApiOperation("批量修改应用成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectUserService, "app_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('project:projectUser:remove')") + @OperationLog + @ApiOperation("批量删除应用成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/Project.java b/src/main/java/com/gxwebsoft/project/entity/Project.java new file mode 100644 index 0000000..802b8e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/Project.java @@ -0,0 +1,283 @@ +package com.gxwebsoft.project.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; +import java.util.Set; + +import com.gxwebsoft.cms.entity.CmsWebsite; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Project对象", description = "应用") +public class Project implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @TableId(value = "app_id", type = IdType.AUTO) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "应用秘钥") + private String appSecret; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "应用类型") + private String appTypeMultiple; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty(value = "企业(存用户ID)") + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty(value = "超管账号") + @TableField(exist = false) + private String superAdminPhone; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "链接地址") + private String serverUrl; + + @ApiModelProperty(value = "文件服务器") + private String fileUrl; + + @ApiModelProperty(value = "回调地址") + private String callbackUrl; + + @ApiModelProperty(value = "腾讯文档地址") + private String docsUrl; + + @ApiModelProperty(value = "代码仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "原型图地址") + private String prototypeUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "软件定价") + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + private Integer isUse; + + @ApiModelProperty(value = "附近1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "是否显示续费提醒") + private Boolean showExpiration; + + @ApiModelProperty(value = "是否作为案例展示") + private Integer showCase; + + @ApiModelProperty(value = "是否显示在首页") + private Integer showIndex; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "所属年份") + private Integer year; + + @ApiModelProperty(value = "所属月份") + private Integer month; + + @ApiModelProperty(value = "所属日期") + private Integer day; + + @ApiModelProperty(value = "状态, 0正常, 1 即将过期") + private Integer soon; + + @ApiModelProperty(value = "是否过期") + @TableField(exist = false) + private Integer expired; + + @ApiModelProperty(value = "剩余天数") + @TableField(exist = false) + private Long expiredDays; + + @ApiModelProperty(value = "续费金额") + private BigDecimal renewMoney; + + @ApiModelProperty(value = "续费总金额") + @TableField(exist = false) + private BigDecimal totalRenewMoney; + + @ApiModelProperty(value = "续费次数") + private Integer renewCount; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "开发进度") + private Integer progress; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "网站id") + private Integer websiteId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "是否收藏") + @TableField(exist = false) + private Boolean collection; + + @ApiModelProperty(value = "应用成员") + @TableField(exist = false) + private List projectUsers; + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/ProjectCollection.java b/src/main/java/com/gxwebsoft/project/entity/ProjectCollection.java new file mode 100644 index 0000000..c8e6133 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/ProjectCollection.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.project.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的收藏 + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProjectCollection对象", description = "我的收藏") +public class ProjectCollection implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/ProjectField.java b/src/main/java/com/gxwebsoft/project/entity/ProjectField.java new file mode 100644 index 0000000..eb1ec3a --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/ProjectField.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.project.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProjectField对象", description = "应用参数") +public class ProjectField implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "最后修改人") + private Integer updateUserId; + + @ApiModelProperty(value = "最后修改人") + @TableField(exist = false) + private String updateUserName; + + @ApiModelProperty(value = "最后修改人") + @TableField(exist = false) + private String updateUserAvatar; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/ProjectRenew.java b/src/main/java/com/gxwebsoft/project/entity/ProjectRenew.java new file mode 100644 index 0000000..7e6780a --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/ProjectRenew.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.project.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 续费管理 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProjectRenew对象", description = "续费管理") +public class ProjectRenew implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_renew_id", type = IdType.AUTO) + private Integer appRenewId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "类型, 0续费, 1新购") + private Integer type; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String appName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String appIcon; + + @ApiModelProperty(value = "续费金额") + private BigDecimal money; + + @ApiModelProperty(value = "订单总额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款") + private BigDecimal payPrice; + + @ApiModelProperty(value = "优惠金额") + private BigDecimal reducePrice; + + @ApiModelProperty(value = "续费时长(按年)") + private Integer duration; + + @ApiModelProperty(value = "续费时长(按天)") + private Integer days; + + @ApiModelProperty(value = "支付方式, 0余额, 1微信,102微信Native, 3支付宝, 4现金") + private Integer payType; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "到期时间") + @TableField(exist = false) + private Date expirationTime; + + @ApiModelProperty(value = "状态, 0正常, 1 即将过期") + private Integer soon; + + @ApiModelProperty(value = "客户(用户ID)") + @TableField(exist = false) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + @TableField(exist = false) + private String customerName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "付款凭证") + private String images; + + @ApiModelProperty(value = "操作员姓名") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "操作员头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/ProjectUrl.java b/src/main/java/com/gxwebsoft/project/entity/ProjectUrl.java new file mode 100644 index 0000000..205e1e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/ProjectUrl.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.project.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目域名 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProjectUrl对象", description = "项目域名") +public class ProjectUrl implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_url_id", type = IdType.AUTO) + private Integer appUrlId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "域名类型") + private String name; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/project/entity/ProjectUser.java b/src/main/java/com/gxwebsoft/project/entity/ProjectUser.java new file mode 100644 index 0000000..3337feb --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/entity/ProjectUser.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.project.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用成员 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProjectUser对象", description = "应用成员") +public class ProjectUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_user_id", type = IdType.AUTO) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "头像") + private String avatar; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectCollectionMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectCollectionMapper.java new file mode 100644 index 0000000..c16dc51 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectCollectionMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.ProjectCollection; +import com.gxwebsoft.project.param.ProjectCollectionParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 我的收藏Mapper + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +public interface ProjectCollectionMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectCollectionParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectCollectionParam param); + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectFieldMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectFieldMapper.java new file mode 100644 index 0000000..a8fc6b5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectFieldMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.ProjectField; +import com.gxwebsoft.project.param.ProjectFieldParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用参数Mapper + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectFieldMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectFieldParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectFieldParam param); + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectMapper.java new file mode 100644 index 0000000..f7f080e --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.param.ProjectParam; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 应用Mapper + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectParam param); + + + /** + * 统计金额总和 + * + * @param wrapper 查询条件 + * @return 金额总和 + */ + BigDecimal selectSumMoney(@Param("ew") Wrapper wrapper); +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectRenewMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectRenewMapper.java new file mode 100644 index 0000000..4881b00 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectRenewMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.ProjectRenew; +import com.gxwebsoft.project.param.ProjectRenewParam; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 续费管理Mapper + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectRenewMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectRenewParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectRenewParam param); + + + /** + * 统计金额总和 + * + * @param wrapper 查询条件 + * @return 金额总和 + */ + BigDecimal selectSumMoney(@Param("ew") Wrapper wrapper); + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectUrlMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectUrlMapper.java new file mode 100644 index 0000000..22ba4e2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectUrlMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.ProjectUrl; +import com.gxwebsoft.project.param.ProjectUrlParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目域名Mapper + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectUrlMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectUrlParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectUrlParam param); + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/ProjectUserMapper.java b/src/main/java/com/gxwebsoft/project/mapper/ProjectUserMapper.java new file mode 100644 index 0000000..aa29153 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/ProjectUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.project.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.project.param.ProjectUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用成员Mapper + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectCollectionMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectCollectionMapper.xml new file mode 100644 index 0000000..74d6f66 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectCollectionMapper.xml @@ -0,0 +1,42 @@ + + + + + + + SELECT a.* + FROM project_collection a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.app_id = #{param.appId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectFieldMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectFieldMapper.xml new file mode 100644 index 0000000..39af3c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectFieldMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.*, b.avatar AS avatar, b.nickname, c.nickname as updateUserName, c.avatar as updateUserAvatar + FROM project_field a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + LEFT JOIN gxwebsoft_core.sys_user c ON a.update_user_id = c.user_id + + + AND a.id = #{param.id} + + + AND a.app_id = #{param.appId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND c.update_user_id = #{param.updateUserId} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectMapper.xml new file mode 100644 index 0000000..51b6c85 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectMapper.xml @@ -0,0 +1,275 @@ + + + + + + + SELECT a.*, b.real_name as nickname, b.avatar,c.website_type as appType, u.real_name as companyName, u.phone as superAdminPhone + FROM project a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + LEFT JOIN cms_website c ON a.website_id = c.website_id + LEFT JOIN gxwebsoft_core.sys_user u ON a.company_id = u.user_id + + + AND a.app_id = #{param.appId} + + + AND a.app_name LIKE CONCAT('%', #{param.appName}, '%') + + + AND a.app_code LIKE CONCAT('%', #{param.appCode}, '%') + + + AND a.app_secret LIKE CONCAT('%', #{param.appSecret}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.website_id = #{param.websiteId} + + + AND a.app_type LIKE CONCAT('%', #{param.appType}, '%') + + + AND a.app_type_multiple LIKE CONCAT('%', #{param.appTypeMultiple}, '%') + + + AND a.menu_type = #{param.menuType} + + + AND a.company_id = #{param.companyId} + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND u.phone = #{param.loginPhone} + + + AND a.app_icon LIKE CONCAT('%', #{param.appIcon}, '%') + + + AND a.app_qrcode LIKE CONCAT('%', #{param.appQrcode}, '%') + + + AND a.app_url LIKE CONCAT('%', #{param.appUrl}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.down_url LIKE CONCAT('%', #{param.downUrl}, '%') + + + AND a.server_url LIKE CONCAT('%', #{param.serverUrl}, '%') + + + AND a.file_url LIKE CONCAT('%', #{param.fileUrl}, '%') + + + AND a.callback_url LIKE CONCAT('%', #{param.callbackUrl}, '%') + + + AND a.docs_url LIKE CONCAT('%', #{param.docsUrl}, '%') + + + AND a.git_url LIKE CONCAT('%', #{param.gitUrl}, '%') + + + AND a.prototype_url LIKE CONCAT('%', #{param.prototypeUrl}, '%') + + + AND a.ip_address LIKE CONCAT('%', #{param.ipAddress}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.package_name LIKE CONCAT('%', #{param.packageName}, '%') + + + AND a.clicks = #{param.clicks} + + + AND a.installs = #{param.installs} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.requirement LIKE CONCAT('%', #{param.requirement}, '%') + + + AND a.developer LIKE CONCAT('%', #{param.developer}, '%') + + + AND a.director LIKE CONCAT('%', #{param.director}, '%') + + + AND a.project_director LIKE CONCAT('%', #{param.projectDirector}, '%') + + + AND a.salesman LIKE CONCAT('%', #{param.salesman}, '%') + + + AND a.price = #{param.price} + + + AND a.line_price = #{param.linePrice} + + + AND a.score LIKE CONCAT('%', #{param.score}, '%') + + + AND a.star LIKE CONCAT('%', #{param.star}, '%') + + + AND a.year = #{param.year} + + + AND a.month = #{param.month} + + + AND a.day = #{param.day} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.authority LIKE CONCAT('%', #{param.authority}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.hide = #{param.hide} + + + AND a.search = #{param.search} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.edition LIKE CONCAT('%', #{param.edition}, '%') + + + AND a.version LIKE CONCAT('%', #{param.version}, '%') + + + AND a.is_use = #{param.isUse} + + + AND a.file1 LIKE CONCAT('%', #{param.file1}, '%') + + + AND a.file2 LIKE CONCAT('%', #{param.file2}, '%') + + + AND a.file3 LIKE CONCAT('%', #{param.file3}, '%') + + + AND a.show_expiration = #{param.showExpiration} + + + AND a.show_case = #{param.showCase} + + + AND a.show_index = #{param.showIndex} + + + AND a.recommend = #{param.recommend} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.soon = #{param.soon} + + + AND a.renew_money = #{param.renewMoney} + + + AND a.app_status LIKE CONCAT('%', #{param.appStatus}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.tenant_code LIKE CONCAT('%', #{param.tenantCode}, '%') + + + AND a.expiration_time >= #{param.expirationTimeStart} + + + AND a.expiration_time <= #{param.expirationTimeEnd} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.app_id IN + + #{item} + + + + AND (a.app_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.app_id = #{param.keywords} + OR a.app_code = #{param.keywords} + OR a.app_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectRenewMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectRenewMapper.xml new file mode 100644 index 0000000..54a7e29 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectRenewMapper.xml @@ -0,0 +1,104 @@ + + + + + + + SELECT a.*, b.app_icon, b.app_name, b.expiration_time,c.real_name as nickname + FROM project_renew a + LEFT JOIN project b ON a.app_id = b.app_id + LEFT JOIN gxwebsoft_core.sys_user c ON a.user_id = c.user_id + + + AND a.app_renew_id = #{param.appRenewId} + + + AND a.app_id = #{param.appId} + + + AND a.type = #{param.type} + + + AND a.order_no = #{param.} + + + AND a.money = #{param.money} + + + AND a.duration = #{param.duration} + + + AND a.days = #{param.days} + + + AND a.pay_type = #{param.payType} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.soon = #{param.soon} + + + AND a.renew_count = #{param.renewCount} + + + AND a.user_id = #{param.userId} + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (b.app_name LIKE CONCAT('%', #{param.keywords}, '%') + OR b.app_id = #{param.keywords} + OR b.app_code = #{param.keywords} + ) + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUrlMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUrlMapper.xml new file mode 100644 index 0000000..9e16161 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUrlMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM project_url a + + + AND a.app_url_id = #{param.appUrlId} + + + AND a.app_id = #{param.appId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUserMapper.xml b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUserMapper.xml new file mode 100644 index 0000000..ffdd4bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/mapper/xml/ProjectUserMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM project_user a + + + AND a.app_user_id = #{param.appUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.app_id = #{param.appId} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.app_id IN + + #{item} + + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectCollectionParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectCollectionParam.java new file mode 100644 index 0000000..6a3cef1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectCollectionParam.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的收藏查询参数 + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectCollectionParam对象", description = "我的收藏查询参数") +public class ProjectCollectionParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + +} diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectFieldParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectFieldParam.java new file mode 100644 index 0000000..352e7e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectFieldParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用参数查询参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectFieldParam对象", description = "应用参数查询参数") +public class ProjectFieldParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型") + @QueryField(type = QueryType.EQ) + private String type; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "最后更新用户ID") + @QueryField(type = QueryType.EQ) + private Integer updateUserId; + + @ApiModelProperty(value = "状态, 0正常, 1删除") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectParam.java new file mode 100644 index 0000000..35300d4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectParam.java @@ -0,0 +1,287 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Set; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用查询参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectParam对象", description = "应用查询参数") +public class ProjectParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "应用秘钥") + private String appSecret; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "应用类型") + private String appTypeMultiple; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "链接地址") + private String serverUrl; + + @ApiModelProperty(value = "文件服务器") + private String fileUrl; + + @ApiModelProperty(value = "回调地址") + private String callbackUrl; + + @ApiModelProperty(value = "腾讯文档地址") + private String docsUrl; + + @ApiModelProperty(value = "代码仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "原型图地址") + private String prototypeUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + @QueryField(type = QueryType.EQ) + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + @QueryField(type = QueryType.EQ) + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "软件定价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + @QueryField(type = QueryType.EQ) + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + @QueryField(type = QueryType.EQ) + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + @QueryField(type = QueryType.EQ) + private Integer isUse; + + @ApiModelProperty(value = "附近1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "是否显示续费提醒") + @QueryField(type = QueryType.EQ) + private Boolean showExpiration; + + @ApiModelProperty(value = "是否作为案例展示") + @QueryField(type = QueryType.EQ) + private Integer showCase; + + @ApiModelProperty(value = "是否显示在首页") + @QueryField(type = QueryType.EQ) + private Integer showIndex; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "所属年份") + @QueryField(type = QueryType.EQ) + private Integer year; + + @ApiModelProperty(value = "所属月份") + @QueryField(type = QueryType.EQ) + private Integer month; + + @ApiModelProperty(value = "所属日期") + @QueryField(type = QueryType.EQ) + private Integer day; + + @ApiModelProperty(value = "状态, 0正常, 1 即将过期") + @QueryField(type = QueryType.EQ) + private Integer soon; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal renewMoney; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "ID集合") + @QueryField(type = QueryType.IN) + private Set appIds; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + + @ApiModelProperty(value = "登录手机号") + @QueryField(type = QueryType.EQ) + private String loginPhone; + + @ApiModelProperty(value = "网站id") + @QueryField(type = QueryType.EQ) + private Integer websiteId; + + @QueryField(value = "expiration_time", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("到期时间起始值") + private String expirationTimeStart; + + @QueryField(value = "expiration_time", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("到期时间结束值") + private String expirationTimeEnd; + + +} diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectRenewParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectRenewParam.java new file mode 100644 index 0000000..b684e09 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectRenewParam.java @@ -0,0 +1,111 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 续费管理查询参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectRenewParam对象", description = "续费管理查询参数") +public class ProjectRenewParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appRenewId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "类型, 0续费, 1新购") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.EQ) + private String orderNo; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "订单总额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "优惠金额") + @QueryField(type = QueryType.EQ) + private BigDecimal reducePrice; + + @ApiModelProperty(value = "续费时长") + @QueryField(type = QueryType.EQ) + private BigDecimal duration; + + @ApiModelProperty(value = "续费时长(按天)") + @QueryField(type = QueryType.EQ) + private Integer days; + + @ApiModelProperty(value = "支付方式") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "续费次数") + @QueryField(type = QueryType.EQ) + private Integer renewCount; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "状态, 0正常, 1 即将过期") + @QueryField(type = QueryType.EQ) + private Integer soon; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "付款凭证") + private String images; + + @ApiModelProperty(value = "用户姓名") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectUrlParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectUrlParam.java new file mode 100644 index 0000000..38aeeea --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectUrlParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目域名查询参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectUrlParam对象", description = "项目域名查询参数") +public class ProjectUrlParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appUrlId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "域名类型") + private String name; + + @ApiModelProperty(value = "域名") + private String domain; + + @ApiModelProperty(value = "账号") + private String account; + + @ApiModelProperty(value = "密码") + private String password; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/project/param/ProjectUserParam.java b/src/main/java/com/gxwebsoft/project/param/ProjectUserParam.java new file mode 100644 index 0000000..4395fd8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/param/ProjectUserParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.project.param; + +import java.math.BigDecimal; +import java.util.Set; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 应用成员查询参数 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectUserParam对象", description = "应用成员查询参数") +public class ProjectUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "应用ID集合") + @QueryField(type = QueryType.IN) + private Set appIds; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectCollectionService.java b/src/main/java/com/gxwebsoft/project/service/ProjectCollectionService.java new file mode 100644 index 0000000..fe1afba --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectCollectionService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.ProjectCollection; +import com.gxwebsoft.project.param.ProjectCollectionParam; + +import java.util.List; + +/** + * 我的收藏Service + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +public interface ProjectCollectionService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectCollectionParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectCollectionParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ProjectCollection + */ + ProjectCollection getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectFieldService.java b/src/main/java/com/gxwebsoft/project/service/ProjectFieldService.java new file mode 100644 index 0000000..1fd2a5a --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectFieldService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.ProjectField; +import com.gxwebsoft.project.param.ProjectFieldParam; + +import java.util.List; + +/** + * 应用参数Service + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectFieldService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectFieldParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectFieldParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ProjectField + */ + ProjectField getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectRenewService.java b/src/main/java/com/gxwebsoft/project/service/ProjectRenewService.java new file mode 100644 index 0000000..a607ddd --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectRenewService.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.ProjectRenew; +import com.gxwebsoft.project.param.ProjectRenewParam; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 续费管理Service + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectRenewService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectRenewParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectRenewParam param); + + /** + * 根据id查询 + * + * @param appRenewId 自增ID + * @return ProjectRenew + */ + ProjectRenew getByIdRel(Integer appRenewId); + + BigDecimal sumMoney(LambdaQueryWrapper between); +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectService.java b/src/main/java/com/gxwebsoft/project/service/ProjectService.java new file mode 100644 index 0000000..7438170 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectService.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.entity.ProjectRenew; +import com.gxwebsoft.project.param.ProjectParam; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 应用Service + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectParam param); + + /** + * 根据id查询 + * + * @param appId 应用ID + * @return Project + */ + Project getByIdRel(Integer appId); + + BigDecimal sumMoney(LambdaQueryWrapper between); + + void updateByRenew(ProjectRenew projectRenew); + + +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectUrlService.java b/src/main/java/com/gxwebsoft/project/service/ProjectUrlService.java new file mode 100644 index 0000000..f67069a --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectUrlService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.ProjectUrl; +import com.gxwebsoft.project.param.ProjectUrlParam; + +import java.util.List; + +/** + * 项目域名Service + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectUrlService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectUrlParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectUrlParam param); + + /** + * 根据id查询 + * + * @param appUrlId 自增ID + * @return ProjectUrl + */ + ProjectUrl getByIdRel(Integer appUrlId); + +} diff --git a/src/main/java/com/gxwebsoft/project/service/ProjectUserService.java b/src/main/java/com/gxwebsoft/project/service/ProjectUserService.java new file mode 100644 index 0000000..5e8407e --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/ProjectUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.project.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.project.param.ProjectUserParam; + +import java.util.List; + +/** + * 应用成员Service + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +public interface ProjectUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectUserParam param); + + /** + * 根据id查询 + * + * @param appUserId 自增ID + * @return ProjectUser + */ + ProjectUser getByIdRel(Integer appUserId); + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectCollectionServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectCollectionServiceImpl.java new file mode 100644 index 0000000..7cd076d --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectCollectionServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.project.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.project.mapper.ProjectCollectionMapper; +import com.gxwebsoft.project.service.ProjectCollectionService; +import com.gxwebsoft.project.entity.ProjectCollection; +import com.gxwebsoft.project.param.ProjectCollectionParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 我的收藏Service实现 + * + * @author 科技小王子 + * @since 2025-03-16 12:12:13 + */ +@Service +public class ProjectCollectionServiceImpl extends ServiceImpl implements ProjectCollectionService { + + @Override + public PageResult pageRel(ProjectCollectionParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ProjectCollectionParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ProjectCollection getByIdRel(Integer id) { + ProjectCollectionParam param = new ProjectCollectionParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectFieldServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectFieldServiceImpl.java new file mode 100644 index 0000000..081c013 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectFieldServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.project.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.project.mapper.ProjectFieldMapper; +import com.gxwebsoft.project.service.ProjectFieldService; +import com.gxwebsoft.project.entity.ProjectField; +import com.gxwebsoft.project.param.ProjectFieldParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用参数Service实现 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Service +public class ProjectFieldServiceImpl extends ServiceImpl implements ProjectFieldService { + + @Override + public PageResult pageRel(ProjectFieldParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ProjectFieldParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ProjectField getByIdRel(Integer id) { + ProjectFieldParam param = new ProjectFieldParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectRenewServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectRenewServiceImpl.java new file mode 100644 index 0000000..98665c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectRenewServiceImpl.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.project.service.impl; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.gxwebsoft.oa.entity.OaAppRenew; +import com.gxwebsoft.project.entity.Project; +import com.gxwebsoft.project.mapper.ProjectRenewMapper; +import com.gxwebsoft.project.param.ProjectParam; +import com.gxwebsoft.project.service.ProjectRenewService; +import com.gxwebsoft.project.entity.ProjectRenew; +import com.gxwebsoft.project.param.ProjectRenewParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.service.ProjectService; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 续费管理Service实现 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Service +public class ProjectRenewServiceImpl extends ServiceImpl implements ProjectRenewService { + @Resource + private ProjectService projectService; + + @Override + public PageResult pageRel(ProjectRenewParam param) { + final String sceneType = param.getSceneType(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + + // TODO 默认查询条件:读取符合续费条件的项目 + if (sceneType == null) { + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + + + // 特殊场景查询 + List list = null; + DateTime date = DateUtil.date(); + final DateTime nextMonth = DateUtil.nextMonth(); + // 获取当前年份的起止时间 + LocalDateTime startOfYear = LocalDateTime.now().withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfYear = startOfYear.plusYears(1).minusNanos(1); + // 去年的起止时间 + LocalDateTime startOfLastYear = LocalDateTime.now().minusYears(1).withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfLastYear = startOfLastYear.plusYears(1).minusNanos(1); + // 本月起止时间 + LocalDateTime startOfMonth = LocalDateTime.now().withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfMonth = startOfMonth.plusMonths(1).minusNanos(1); + + if (StrUtil.isNotBlank(sceneType)) { + // TODO 近30天可催收的续费总额 + if (sceneType.equals("totalPrice30")) { + list = list(new LambdaQueryWrapper() + .lt(ProjectRenew::getEndTime, nextMonth) + .gt(ProjectRenew::getEndTime, date) + .lt(ProjectRenew::getCreateTime, date) + .eq(ProjectRenew::getDeleted, 0) + .orderByAsc(ProjectRenew::getEndTime) + ); + } + + // TODO 本月已收续费总额 + if (sceneType.equals("monthTotalPrice")) { + list = list(new LambdaQueryWrapper() + .between(ProjectRenew::getCreateTime, startOfYear, endOfMonth) + .eq(ProjectRenew::getDeleted, 0) + .orderByDesc(ProjectRenew::getEndTime) + ); + } + + // TODO 今年已收续费总额 + if (sceneType.equals("yearTotalPrice")) { + list = list(new LambdaQueryWrapper() + .between(ProjectRenew::getCreateTime, startOfMonth, endOfYear) + .eq(ProjectRenew::getDeleted, 0) + .orderByDesc(ProjectRenew::getEndTime) + ); + } + + // TODO 去年已收续费列表 + if (sceneType.equals("lastTotalPrice")) { + list = list(new LambdaQueryWrapper() + .between(ProjectRenew::getCreateTime, startOfLastYear, endOfLastYear) + .eq(ProjectRenew::getDeleted, 0) + .orderByDesc(ProjectRenew::getEndTime) + ); + } + } + + // TODO 获取项目名称 + assert list != null; + final Set collectByAppIds = list.stream().map(ProjectRenew::getAppId).collect(Collectors.toSet()); + final ProjectParam projectParam = new ProjectParam(); + projectParam.setAppIds(collectByAppIds); + final List projects = projectService.listRel(projectParam); + + final Map> collect = projects.stream().collect(Collectors.groupingBy(Project::getAppId)); + list.forEach(d -> { + final List projectsItem = collect.get(d.getAppId()); + if (!CollectionUtils.isEmpty(projectsItem)) { + final Project project = projectsItem.get(0); + d.setAppName(project.getAppName()); + d.setNickname(project.getNickname()); + d.setAvatar(project.getAvatar()); + d.setCustomerId(project.getCompanyId()); + d.setCustomerName(project.getCompanyName()); + } + }); + return new PageResult<>(list, (long) list.size()); + } + + @Override + public List listRel(ProjectRenewParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ProjectRenew getByIdRel(Integer appRenewId) { + ProjectRenewParam param = new ProjectRenewParam(); + param.setAppRenewId(appRenewId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public BigDecimal sumMoney(LambdaQueryWrapper wrapper) { + return baseMapper.selectSumMoney(wrapper); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java new file mode 100644 index 0000000..8cda4bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectServiceImpl.java @@ -0,0 +1,266 @@ +package com.gxwebsoft.project.service.impl; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.CmsWebsite; +import com.gxwebsoft.cms.service.CmsWebsiteService; +import com.gxwebsoft.project.entity.*; +import com.gxwebsoft.project.mapper.ProjectMapper; +import com.gxwebsoft.project.param.ProjectUserParam; +import com.gxwebsoft.project.service.ProjectCollectionService; +import com.gxwebsoft.project.service.ProjectRenewService; +import com.gxwebsoft.project.service.ProjectService; +import com.gxwebsoft.project.param.ProjectParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.project.service.ProjectUserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 应用Service实现 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Service +public class ProjectServiceImpl extends ServiceImpl implements ProjectService { + + @Resource + private ProjectService projectService; + @Resource + private ProjectUserService projectUserService; + @Resource + private ProjectCollectionService projectCollectionService; + @Resource + private ProjectRenewService projectRenewService; + @Resource + private CmsWebsiteService cmsWebsiteService; + + @Override + public PageResult pageRel(ProjectParam param) { + final String sceneType = param.getSceneType(); + + // TODO 特殊场景查询 + if (sceneType != null) { + param.setUserId(null); + param.setAppStatus(null); + param.setAppIds(null); + + List list = null; + DateTime date = DateUtil.date(); + final DateTime nextMonth = DateUtil.nextMonth(); + // 获取当前年份的起止时间 + LocalDateTime startOfYear = LocalDateTime.now().withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfYear = startOfYear.plusYears(1).minusNanos(1); + // 去年的起止时间 + LocalDateTime startOfLastYear = LocalDateTime.now().minusYears(1).withMonth(1).withDayOfMonth(1) + .withHour(0).withMinute(0).withSecond(0); + LocalDateTime endOfLastYear = startOfLastYear.plusYears(1).minusNanos(1); + + // TODO 我的项目 + if (sceneType.equals("myProject")) { + param.setUserId(param.getLoginUserId()); + list = listRel(param); + } + + // TODO 我的参与 + if (sceneType.equals("involved")) { + final List projectUsers = projectUserService.list(new LambdaQueryWrapper().eq(ProjectUser::getUserId, param.getLoginUserId())); + final Set collect = projectUsers.stream().map(ProjectUser::getAppId).collect(Collectors.toSet()); + param.setAppIds(collect); + list = listRel(param); + } + // TODO 我的收藏 + if (sceneType.equals("collection")) { + final List projectCollections = projectCollectionService.list(new LambdaQueryWrapper().eq(ProjectCollection::getUserId, param.getLoginUserId())); + final Set collect = projectCollections.stream().map(ProjectCollection::getAppId).collect(Collectors.toSet()); + param.setAppIds(collect); + param.setUserId(null); + list = listRel(param); + list.forEach(d -> { + d.setCollection(true); + }); + } + + if (param.getAppStatus() != null && param.getAppStatus().equals("全部")) { + param.setAppStatus(null); + } + + + // TODO 近30天可催收的续费总额 + if (sceneType.equals("totalPrice30")) { + list = list(new LambdaQueryWrapper() + .lt(Project::getExpirationTime, nextMonth) + .gt(Project::getExpirationTime, date) + .eq(Project::getDeleted, 0) + .orderByAsc(Project::getExpirationTime) + ); + } + + // TODO 今年已收续费总额 + if (sceneType.equals("yearTotalPrice")) { + list = list(new LambdaQueryWrapper() + .between(Project::getUpdateTime, startOfYear, endOfYear) + .eq(Project::getDeleted, 0) + .orderByDesc(Project::getCreateTime) + ); + } + + // TODO 去年已收续费列表 + if (sceneType.equals("lastTotalPrice")) { + list = list(new LambdaQueryWrapper() + .between(Project::getUpdateTime, startOfLastYear, endOfLastYear) + .eq(Project::getDeleted, 0) + .orderByDesc(Project::getCreateTime) + ); + } + + // TODO 已流失的续费总额 + if(sceneType.equals("Expired")){ + list = list(new LambdaQueryWrapper() + .lt(Project::getExpirationTime, date) + .eq(Project::getDeleted, 0) + .eq(Project::getAppStatus,"已上架") + .eq(Project::getShowExpiration,true) + .orderByAsc(Project::getExpirationTime) + ); + } + + // TODO 有效续费总金额 + if (sceneType.equals("effectiveTotalPrice")) { + list = list(new LambdaQueryWrapper() + .gt(Project::getExpirationTime, date) + .eq(Project::getDeleted, 0) + .eq(Project::getAppStatus,"已上架") + .eq(Project::getShowExpiration,true) + .orderByAsc(Project::getExpirationTime) + ); + } + + // TODO 全部续费总额 + if (sceneType.equals("AllRenewPrice")) { + list = list(new LambdaQueryWrapper() + .eq(Project::getDeleted, 0) + .eq(Project::getAppStatus,"已上架") + .eq(Project::getShowExpiration,true) + .orderByAsc(Project::getExpirationTime) + ); + } + + assert list != null; + return new PageResult<>(getProjectList(list, param.getLoginUserId()), (long) list.size()); + } + + // 常规搜索 + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + + return new PageResult<>(getProjectList(list, param.getLoginUserId()), page.getTotal()); + } + + @Override + public List listRel(ProjectParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Project getByIdRel(Integer appId) { + ProjectParam param = new ProjectParam(); + param.setAppId(appId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public BigDecimal sumMoney(LambdaQueryWrapper wrapper) { + return baseMapper.selectSumMoney(wrapper); + } + + @Override + public void updateByRenew(ProjectRenew projectRenew) { + final Project project = projectService.getByIdRel(projectRenew.getAppId()); + if(project.getExpirationTime() != null){ + if (projectRenew.getDays() != null) { + // 按天续费 + project.setExpirationTime(DateUtil.offset(project.getExpirationTime(), DateField.DAY_OF_YEAR, projectRenew.getDays())); + } else { + // 按年续费 + project.setExpirationTime(DateUtil.offset(project.getExpirationTime(), DateField.MONTH, 12 * projectRenew.getDuration().intValue())); + // 更新下一年的续费金额 + project.setRenewMoney(projectRenew.getPayPrice()); + project.setShowExpiration(true); + } + project.setRenewCount(project.getRenewCount() + 1); + + // 保存到期时间所在的年月日 + final Date expirationTime = project.getExpirationTime(); + LocalDate localDate = expirationTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + int year = localDate.getYear(); + int month = localDate.getMonthValue(); // 获取月份,范围是1到12 + int day = localDate.getDayOfMonth(); // 获取日,范围是1到31 + project.setYear(year); + project.setMonth(month); + project.setDay(day); + projectService.updateById(project); + // 更新明细的到期时间 + projectRenew.setStartTime(expirationTime); + projectRenew.setEndTime(expirationTime); + // 同步网站状态 + if (!project.getWebsiteId().equals(0)) { + final CmsWebsite website = new CmsWebsite(); + website.setVersion(20); + website.setExpirationTime(expirationTime); + website.setWebsiteId(project.getWebsiteId()); + cmsWebsiteService.updateByIdAll(website); + } + } + projectRenewService.updateById(projectRenew); + } + + /** + * 整理列表数据并返回 + * @return List + */ + private List getProjectList(List list, Integer loginUserId) { + + final List projectCollections = projectCollectionService.list(new LambdaQueryWrapper().eq(ProjectCollection::getUserId, loginUserId)); + final Set collect = projectCollections.stream().map(ProjectCollection::getAppId).collect(Collectors.toSet()); + + list.forEach(d -> { + // 收藏状态 + if (collect.contains(d.getAppId())) { + d.setCollection(true); + } + // 应用成员 + d.setProjectUsers(projectUserService.list(new LambdaQueryWrapper().eq(ProjectUser::getAppId, d.getAppId()))); + // 即将过期(30天内过期的) + d.setSoon(DateUtil.offsetDay(d.getExpirationTime(), -30).compareTo(DateUtil.date())); + // 是否过期 -1已过期 大于0 未过期 + d.setExpired(d.getExpirationTime().compareTo(DateUtil.date())); + // 剩余天数 + d.setExpiredDays(DateUtil.betweenDay(d.getExpirationTime(), DateUtil.date(), false)); + // 续费次数 + d.setRenewCount(projectRenewService.count(new LambdaQueryWrapper().eq(ProjectRenew::getAppId, d.getAppId()).eq(ProjectRenew::getDeleted, 0))); + }); + return list; + } + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectUrlServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectUrlServiceImpl.java new file mode 100644 index 0000000..462e04d --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectUrlServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.project.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.project.mapper.ProjectUrlMapper; +import com.gxwebsoft.project.service.ProjectUrlService; +import com.gxwebsoft.project.entity.ProjectUrl; +import com.gxwebsoft.project.param.ProjectUrlParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 项目域名Service实现 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Service +public class ProjectUrlServiceImpl extends ServiceImpl implements ProjectUrlService { + + @Override + public PageResult pageRel(ProjectUrlParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ProjectUrlParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ProjectUrl getByIdRel(Integer appUrlId) { + ProjectUrlParam param = new ProjectUrlParam(); + param.setAppUrlId(appUrlId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/project/service/impl/ProjectUserServiceImpl.java b/src/main/java/com/gxwebsoft/project/service/impl/ProjectUserServiceImpl.java new file mode 100644 index 0000000..223cb38 --- /dev/null +++ b/src/main/java/com/gxwebsoft/project/service/impl/ProjectUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.project.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.project.mapper.ProjectUserMapper; +import com.gxwebsoft.project.service.ProjectUserService; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.project.param.ProjectUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 应用成员Service实现 + * + * @author 科技小王子 + * @since 2025-03-14 16:21:11 + */ +@Service +public class ProjectUserServiceImpl extends ServiceImpl implements ProjectUserService { + + @Override + public PageResult pageRel(ProjectUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ProjectUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time asc"); + return page.sortRecords(list); + } + + @Override + public ProjectUser getByIdRel(Integer appUserId) { + ProjectUserParam param = new ProjectUserParam(); + param.setAppUserId(appUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java b/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java new file mode 100644 index 0000000..2d93c16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java @@ -0,0 +1,243 @@ +package com.gxwebsoft.pwl.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.entity.CmsArticle; +import com.gxwebsoft.cms.entity.CmsArticleContent; +import com.gxwebsoft.cms.param.CmsArticleImportParam; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.project.entity.ProjectUser; +import com.gxwebsoft.pwl.param.PwlProjectImportParam; +import com.gxwebsoft.pwl.service.PwlProjectService; +import com.gxwebsoft.pwl.entity.PwlProject; +import com.gxwebsoft.pwl.param.PwlProjectParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 卫兰的项目项目系统控制器 + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +@Api(tags = "卫兰的项目项目系统管理") +@RestController +@RequestMapping("/api/pwl/pwl-project") +public class PwlProjectController extends BaseController { + @Resource + private PwlProjectService pwlProjectService; + + @PreAuthorize("hasAuthority('pwl:pwlProject:list')") + @ApiOperation("分页查询卫兰的项目项目系统") + @GetMapping("/page") + public ApiResult> page(PwlProjectParam param) { + final User loginUser = getLoginUser(); + if (loginUser != null) { + param.setLoginUserId(loginUser.getUserId()); + final List roles = loginUser.getRoles(); + if (!CommonUtil.hasRole(roles, "admin") && !CommonUtil.hasRole(roles, "superAdmin")) { + final List projectUsers = pwlProjectService.list(new LambdaQueryWrapper() + .like(PwlProject::getUserIds, loginUser.getUserId()) + .or() + .eq(PwlProject::getUserId, loginUser.getUserId()) + ); + if (!CollectionUtils.isEmpty(projectUsers)) { + final Set appIds = projectUsers.stream().map(PwlProject::getId).collect(Collectors.toSet()); + param.setProjectIds(appIds); + } else { + param.setUserId(loginUser.getUserId()); + } + } + } + return success(pwlProjectService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:list')") + @ApiOperation("查询全部卫兰的项目项目系统") + @GetMapping() + public ApiResult> list(PwlProjectParam param) { + // 使用关联查询 + return success(pwlProjectService.listRel(param)); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:list')") + @ApiOperation("根据id查询卫兰的项目项目系统") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(pwlProjectService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:save')") + @OperationLog + @ApiOperation("添加卫兰的项目项目系统") + @PostMapping() + public ApiResult save(@RequestBody PwlProject pwlProject) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + pwlProject.setUserId(loginUser.getUserId()); + } + if (pwlProject.getCode() != null) { + final PwlProject one = pwlProjectService.getOne(new LambdaQueryWrapper().eq(PwlProject::getCode, pwlProject.getCode())); + if (ObjectUtil.isNotEmpty(one)) { + return fail("报告编号不能重复"); + } + } + if (pwlProjectService.save(pwlProject)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:update')") + @OperationLog + @ApiOperation("修改卫兰的项目项目系统") + @PutMapping() + public ApiResult update(@RequestBody PwlProject pwlProject) { + if (pwlProjectService.updateById(pwlProject)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:remove')") + @OperationLog + @ApiOperation("删除卫兰的项目项目系统") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (pwlProjectService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:save')") + @OperationLog + @ApiOperation("批量添加卫兰的项目项目系统") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (pwlProjectService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:update')") + @OperationLog + @ApiOperation("批量修改卫兰的项目项目系统") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(pwlProjectService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:remove')") + @OperationLog + @ApiOperation("批量删除卫兰的项目项目系统") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (pwlProjectService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('pwl:pwlProject:save')") + @ApiOperation("批量导入项目") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/import") + public ApiResult> importBatch(MultipartFile file) { + ImportParams importParams = new ImportParams(); + importParams.setHeadRows(2); + importParams.setTitleRows(1); + importParams.setSheetNum(1); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), PwlProjectImportParam.class, importParams); + list.forEach(d -> { + PwlProject item = JSONUtil.parseObject(JSONUtil.toJSONString(d), PwlProject.class); + assert item != null; + if (ObjectUtil.isNotEmpty(item)) { + if (item.getStatus() == null) { + item.setStatus(0); + item.setUserId(getLoginUserId()); + } + if (item.getName() != null) { + pwlProjectService.save(item); + } + } + }); + return success("成功导入" + list.size() + "条", null); + } catch (Exception e) { + e.printStackTrace(); + } + return fail("导入失败", null); + } + + @ApiOperation("统计项目完成情况") + @GetMapping("/count") + public ApiResult count() { + final User loginUser = getLoginUser(); + if (loginUser != null) { + final List list = pwlProjectService.listByCount(); + list.forEach(d -> { + // 已完成项目数量 + final int completed = pwlProjectService.count(new LambdaQueryWrapper() + .like(PwlProject::getDraftUserId, d.getUserId()) + .and( + i -> i.eq(PwlProject::getStatus, 0) + .isNotNull(PwlProject::getDraftUserId) + ) + ); + d.setBalance(new BigDecimal(completed)); + // 未完成项目数量 + final int incomplete = pwlProjectService.count(new LambdaQueryWrapper() + .like(PwlProject::getDraftUserId, d.getUserId()) + .and( + i -> i.eq(PwlProject::getStatus, 1) + .isNotNull(PwlProject::getDraftUserId) + ) + ); + // 签字会计数量 + final int signUsers = pwlProjectService.count(new LambdaQueryWrapper() + .like(PwlProject::getSignUserId, d.getUserId()) + .and( + i -> i.eq(PwlProject::getStatus, 1) + .isNotNull(PwlProject::getSignUserId) + ) + ); + d.setPoints(incomplete); + d.setFans(signUsers); + }); + return success(list); + } + return fail("没有找到结果", null); + } + +} diff --git a/src/main/java/com/gxwebsoft/pwl/entity/PwlProject.java b/src/main/java/com/gxwebsoft/pwl/entity/PwlProject.java new file mode 100644 index 0000000..97e2407 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/entity/PwlProject.java @@ -0,0 +1,199 @@ +package com.gxwebsoft.pwl.entity; + +import java.math.BigDecimal; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.common.core.utils.JSONUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.util.Json; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 卫兰的项目项目系统 + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "PwlProject对象", description = "卫兰的项目项目系统") +public class PwlProject implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "项目名称") + private String name; + + @ApiModelProperty(value = "项目标识") + private String code; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "项目类型") + private String type; + + @ApiModelProperty(value = "项目图标") + private String image; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "底稿情况") + private String files; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "年末资产总额(万元)") + private BigDecimal totalAssets; + + @ApiModelProperty(value = "合同金额") + private BigDecimal contractPrice; + + @ApiModelProperty(value = "实收金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "软件定价") + private BigDecimal price; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "项目信息-开票单位/汇款人") + private String itemName; + + @ApiModelProperty(value = "项目信息-年度") + private String itemYear; + + @ApiModelProperty(value = "项目信息-类型") + private String itemType; + + @ApiModelProperty(value = "项目信息-审计意见") + private String itemOpinion; + + @ApiModelProperty(value = "到账信息-银行名称") + private String bankName; + + @ApiModelProperty(value = "到账日期") + private String bankPayTime; + + @ApiModelProperty(value = "到账金额") + private BigDecimal bankPrice; + + @ApiModelProperty(value = "发票类型") + private String invoiceType; + + @ApiModelProperty(value = "开票日期") + private String invoiceTime; + + @ApiModelProperty(value = "开票金额") + private BigDecimal invoicePrice; + + @ApiModelProperty(value = "报告份数") + private String reportNum; + + @ApiModelProperty(value = "底稿人员") + private String draftUserId; + + @ApiModelProperty(value = "底稿人员") + private String draftUser; + + @ApiModelProperty(value = "参与成员") + private String userIds; + + @ApiModelProperty(value = "参与成员") + private String users; + + @ApiModelProperty(value = "签字注会") + private String signUserId; + + @ApiModelProperty(value = "签字注会") + private String signUser; + + @ApiModelProperty(value = "展业人员") + private String saleUserId; + + @ApiModelProperty(value = "展业人员") + private String saleUser; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "纸质底稿完成情况") + private Integer paper; + + @ApiModelProperty(value = "电子底稿完成情况") + private Integer electron; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "客户ID") + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "手机号") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +// public Object getDraftUser() { +// return JSON.parse(draftUser); +// } +// public Object getUsers() { +// return JSON.parse(users); +// } +// public Object getSignUser() { +// return JSON.parse(signUser); +// } +// public Object getSaleUser() { +// return JSON.parse(saleUser); +// } +// public Object setDraftUser() { +// return JSON.toJSON(draftUser); +// } +} diff --git a/src/main/java/com/gxwebsoft/pwl/mapper/PwlProjectMapper.java b/src/main/java/com/gxwebsoft/pwl/mapper/PwlProjectMapper.java new file mode 100644 index 0000000..138b719 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/mapper/PwlProjectMapper.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.pwl.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.pwl.entity.PwlProject; +import com.gxwebsoft.pwl.param.PwlProjectParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 卫兰的项目项目系统Mapper + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +public interface PwlProjectMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") PwlProjectParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PwlProjectParam param); + + + List listByCount(); +} diff --git a/src/main/java/com/gxwebsoft/pwl/mapper/xml/PwlProjectMapper.xml b/src/main/java/com/gxwebsoft/pwl/mapper/xml/PwlProjectMapper.xml new file mode 100644 index 0000000..b5827d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/mapper/xml/PwlProjectMapper.xml @@ -0,0 +1,163 @@ + + + + + + + SELECT a.*, u.real_name as realName, u.phone, u.avatar + FROM pwl_project a + LEFT JOIN gxwebsoft_core.sys_user u ON a.user_id = u.user_id + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.type = #{param.type} + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.total_assets = #{param.totalAssets} + + + AND a.contract_price = #{param.contractPrice} + + + AND a.pay_price = #{param.payPrice} + + + AND a.price = #{param.price} + + + AND a.recommend = #{param.recommend} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.item_name LIKE CONCAT('%', #{param.itemName}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{itemYear}, '%') + + + AND a.item_type LIKE CONCAT('%', #{param.itemType}, '%') + + + AND a.item_opinion LIKE CONCAT('%', #{param.itemOpinion}, '%') + + + AND a.bank_name LIKE CONCAT('%', #{param.bankName}, '%') + + + AND a.bank_pay_time LIKE CONCAT('%', #{param.bankPayTime}, '%') + + + AND a.bank_price = #{param.bankPrice} + + + AND a.invoice_type LIKE CONCAT('%', #{param.invoiceType}, '%') + + + AND a.invoice_time LIKE CONCAT('%', #{param.invoiceTime}, '%') + + + AND a.invoice_price = #{param.invoicePrice} + + + AND a.report_num = #{param.reportNum} + + + AND a.draft_user_id = #{param.draftUserId} + + + AND a.user_ids LIKE CONCAT('%', #{param.userIds}, '%') + + + AND a.sign_user_id = #{param.signUserId} + + + AND a.sale_user_id = #{param.saleUserId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.id IN + + #{item} + + + + AND (a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.id = #{param.keywords} + OR a.code = #{param.keywords} + OR a.item_year = #{param.keywords} + ) + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/pwl/param/PwlProjectImportParam.java b/src/main/java/com/gxwebsoft/pwl/param/PwlProjectImportParam.java new file mode 100644 index 0000000..f3878c2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/param/PwlProjectImportParam.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.pwl.param; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户导入参数 + * + * @author WebSoft + * @since 2011-10-15 17:33:34 + */ +@Data +public class PwlProjectImportParam implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "报告时间") + @JsonFormat(pattern = "yyyy.MM.dd", timezone = "GMT+8") + private String expirationTime; + + @Excel(name = "报告编号") + private String code; + + @Excel(name = "审计单位") + private String name; + + @Excel(name = "开项目信息") + private String itemName; + + @Excel(name = "所属年度") + private String itemYear; + + @Excel(name = "类型") + private String itemType; + + @Excel(name = "审计意见") + private String itemOpinion; + + @Excel(name = "年末资产总额(万元)") + private String totalAssets; + + @Excel(name = "合同金额") + private String contractPrice; + + @Excel(name = "实收金额") + private String payPrice; + + @Excel(name = "到账银行") + private String bankName; + + @Excel(name = "到账日期") + @JsonFormat(pattern = "yyyy.MM.dd", timezone = "GMT+8") + private String bankPayTime; + + @Excel(name = "到账金额") + private String bankPrice; + + @Excel(name = "日期") + @JsonFormat(pattern = "yyyy.MM.dd", timezone = "GMT+8") + private String invoiceTime; + + @Excel(name = "金额") + private String invoicePrice; + + @Excel(name = "发票类型") + private String invoiceType; + + @Excel(name = "报告份数") + private String reportNum; + + +} diff --git a/src/main/java/com/gxwebsoft/pwl/param/PwlProjectParam.java b/src/main/java/com/gxwebsoft/pwl/param/PwlProjectParam.java new file mode 100644 index 0000000..a5a23b6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/param/PwlProjectParam.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.pwl.param; + +import java.math.BigDecimal; +import java.util.Set; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 卫兰的项目项目系统查询参数 + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PwlProjectParam对象", description = "卫兰的项目项目系统查询参数") +public class PwlProjectParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "项目名称") + private String name; + + @ApiModelProperty(value = "项目标识") + private String code; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "项目类型") + @QueryField(type = QueryType.EQ) + private String type; + + @ApiModelProperty(value = "项目图标") + private String avatar; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "链接地址") + private String url; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "底稿情况") + private String files; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "年末资产总额(万元)") + @QueryField(type = QueryType.EQ) + private BigDecimal totalAssets; + + @ApiModelProperty(value = "合同金额") + @QueryField(type = QueryType.EQ) + private BigDecimal contractPrice; + + @ApiModelProperty(value = "实收金额") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "软件定价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "项目信息-开票单位/汇款人") + private String itemName; + + @ApiModelProperty(value = "项目信息-年度") + private String itemYear; + + @ApiModelProperty(value = "项目信息-类型") + private String itemType; + + @ApiModelProperty(value = "项目信息-审计意见") + private String itemOpinion; + + @ApiModelProperty(value = "到账信息-银行名称") + private String bankName; + + @ApiModelProperty(value = "到账日期") + private String bankPayTime; + + @ApiModelProperty(value = "到账金额") + @QueryField(type = QueryType.EQ) + private BigDecimal bankPrice; + + @ApiModelProperty(value = "发票类型") + private String invoiceType; + + @ApiModelProperty(value = "开票日期") + private String invoiceTime; + + @ApiModelProperty(value = "开票金额") + @QueryField(type = QueryType.EQ) + private BigDecimal invoicePrice; + + @ApiModelProperty(value = "报告份数") + @QueryField(type = QueryType.EQ) + private String reportNum; + + @ApiModelProperty(value = "底稿人员") + @QueryField(type = QueryType.EQ) + private Integer draftUserId; + + @ApiModelProperty(value = "参与成员") + private String userIds; + + @ApiModelProperty(value = "签字注会") + @QueryField(type = QueryType.EQ) + private Integer signUserId; + + @ApiModelProperty(value = "展业人员") + @QueryField(type = QueryType.EQ) + private Integer saleUserId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "当前登录用户") + @TableField(exist = false) + private Integer loginUserId; + + @ApiModelProperty(value = "项目ID集合") + @TableField(exist = false) + private Set projectIds; + +} diff --git a/src/main/java/com/gxwebsoft/pwl/service/PwlProjectService.java b/src/main/java/com/gxwebsoft/pwl/service/PwlProjectService.java new file mode 100644 index 0000000..3261ec1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/service/PwlProjectService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.pwl.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.pwl.entity.PwlProject; +import com.gxwebsoft.pwl.param.PwlProjectParam; + +import java.util.List; + +/** + * 卫兰的项目项目系统Service + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +public interface PwlProjectService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PwlProjectParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PwlProjectParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return PwlProject + */ + PwlProject getByIdRel(Integer id); + + List listByCount(); +} diff --git a/src/main/java/com/gxwebsoft/pwl/service/impl/PwlProjectServiceImpl.java b/src/main/java/com/gxwebsoft/pwl/service/impl/PwlProjectServiceImpl.java new file mode 100644 index 0000000..dade3de --- /dev/null +++ b/src/main/java/com/gxwebsoft/pwl/service/impl/PwlProjectServiceImpl.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.pwl.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.pwl.mapper.PwlProjectMapper; +import com.gxwebsoft.pwl.service.PwlProjectService; +import com.gxwebsoft.pwl.entity.PwlProject; +import com.gxwebsoft.pwl.param.PwlProjectParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import io.swagger.util.Json; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; + +/** + * 卫兰的项目项目系统Service实现 + * + * @author 科技小王子 + * @since 2025-03-22 14:34:35 + */ +@Service +public class PwlProjectServiceImpl extends ServiceImpl implements PwlProjectService { + @Override + public PageResult pageRel(PwlProjectParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(PwlProjectParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public PwlProject getByIdRel(Integer id) { + PwlProjectParam param = new PwlProjectParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public List listByCount() { + return baseMapper.listByCount(); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopBrandController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopBrandController.java new file mode 100644 index 0000000..d3750ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopBrandController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopBrandService; +import com.gxwebsoft.shop.entity.ShopBrand; +import com.gxwebsoft.shop.param.ShopBrandParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 品牌控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "品牌管理") +@RestController +@RequestMapping("/api/shop/shop-brand") +public class ShopBrandController extends BaseController { + @Resource + private ShopBrandService shopBrandService; + + @ApiOperation("分页查询品牌") + @GetMapping("/page") + public ApiResult> page(ShopBrandParam param) { + // 使用关联查询 + return success(shopBrandService.pageRel(param)); + } + + @ApiOperation("查询全部品牌") + @GetMapping() + public ApiResult> list(ShopBrandParam param) { + // 使用关联查询 + return success(shopBrandService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopBrand:list')") + @ApiOperation("根据id查询品牌") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopBrandService.getByIdRel(id)); + } + + @ApiOperation("添加品牌") + @PostMapping() + public ApiResult save(@RequestBody ShopBrand shopBrand) { + if (shopBrandService.save(shopBrand)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改品牌") + @PutMapping() + public ApiResult update(@RequestBody ShopBrand shopBrand) { + if (shopBrandService.updateById(shopBrand)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除品牌") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopBrandService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加品牌") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopBrandService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改品牌") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopBrandService, "brand_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除品牌") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopBrandService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopCartController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopCartController.java new file mode 100644 index 0000000..cbc4094 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopCartController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopCartService; +import com.gxwebsoft.shop.entity.ShopCart; +import com.gxwebsoft.shop.param.ShopCartParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 购物车控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "购物车管理") +@RestController +@RequestMapping("/api/shop/shop-cart") +public class ShopCartController extends BaseController { + @Resource + private ShopCartService shopCartService; + + @ApiOperation("分页查询购物车") + @GetMapping("/page") + public ApiResult> page(ShopCartParam param) { + // 使用关联查询 + return success(shopCartService.pageRel(param)); + } + + @ApiOperation("查询全部购物车") + @GetMapping() + public ApiResult> list(ShopCartParam param) { + // 使用关联查询 + return success(shopCartService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopCart:list')") + @ApiOperation("根据id查询购物车") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Long id) { + // 使用关联查询 + return success(shopCartService.getByIdRel(id)); + } + + @ApiOperation("添加购物车") + @PostMapping() + public ApiResult save(@RequestBody ShopCart shopCart) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopCart.setUserId(loginUser.getUserId()); + } + if (shopCartService.save(shopCart)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改购物车") + @PutMapping() + public ApiResult update(@RequestBody ShopCart shopCart) { + if (shopCartService.updateById(shopCart)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除购物车") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopCartService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加购物车") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopCartService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改购物车") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopCartService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除购物车") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopCartService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopCategoryController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopCategoryController.java new file mode 100644 index 0000000..36ddbc3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopCategoryController.java @@ -0,0 +1,126 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopCategoryService; +import com.gxwebsoft.shop.entity.ShopCategory; +import com.gxwebsoft.shop.param.ShopCategoryParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品分类控制器 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Api(tags = "商品分类管理") +@RestController +@RequestMapping("/api/shop/shop-category") +public class ShopCategoryController extends BaseController { + @Resource + private ShopCategoryService shopCategoryService; + + @ApiOperation("分页查询商品分类") + @GetMapping("/page") + public ApiResult> page(ShopCategoryParam param) { + // 使用关联查询 + return success(shopCategoryService.pageRel(param)); + } + + @ApiOperation("查询全部商品分类") + @GetMapping() + public ApiResult> list(ShopCategoryParam param) { + // 使用关联查询 + return success(shopCategoryService.listRel(param)); + } + + @ApiOperation("根据id查询商品分类") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopCategoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:save')") + @OperationLog + @ApiOperation("添加商品分类") + @PostMapping() + public ApiResult save(@RequestBody ShopCategory shopCategory) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopCategory.setUserId(loginUser.getUserId()); + } + if (shopCategoryService.save(shopCategory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:update')") + @OperationLog + @ApiOperation("修改商品分类") + @PutMapping() + public ApiResult update(@RequestBody ShopCategory shopCategory) { + if (shopCategoryService.updateById(shopCategory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:remove')") + @OperationLog + @ApiOperation("删除商品分类") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopCategoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:save')") + @OperationLog + @ApiOperation("批量添加商品分类") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopCategoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:update')") + @OperationLog + @ApiOperation("批量修改商品分类") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopCategoryService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCategory:remove')") + @OperationLog + @ApiOperation("批量删除商品分类") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopCategoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopChatConversationController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopChatConversationController.java new file mode 100644 index 0000000..921c730 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopChatConversationController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopChatConversationService; +import com.gxwebsoft.shop.entity.ShopChatConversation; +import com.gxwebsoft.shop.param.ShopChatConversationParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 聊天消息表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "聊天消息表管理") +@RestController +@RequestMapping("/api/shop/shop-chat-conversation") +public class ShopChatConversationController extends BaseController { + @Resource + private ShopChatConversationService shopChatConversationService; + + @ApiOperation("分页查询聊天消息表") + @GetMapping("/page") + public ApiResult> page(ShopChatConversationParam param) { + // 使用关联查询 + return success(shopChatConversationService.pageRel(param)); + } + + @ApiOperation("查询全部聊天消息表") + @GetMapping() + public ApiResult> list(ShopChatConversationParam param) { + // 使用关联查询 + return success(shopChatConversationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopChatConversation:list')") + @ApiOperation("根据id查询聊天消息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopChatConversationService.getByIdRel(id)); + } + + @ApiOperation("添加聊天消息表") + @PostMapping() + public ApiResult save(@RequestBody ShopChatConversation shopChatConversation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopChatConversation.setUserId(loginUser.getUserId()); + } + if (shopChatConversationService.save(shopChatConversation)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改聊天消息表") + @PutMapping() + public ApiResult update(@RequestBody ShopChatConversation shopChatConversation) { + if (shopChatConversationService.updateById(shopChatConversation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除聊天消息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopChatConversationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加聊天消息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopChatConversationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改聊天消息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopChatConversationService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除聊天消息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopChatConversationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopChatMessageController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopChatMessageController.java new file mode 100644 index 0000000..6e8a925 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopChatMessageController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopChatMessageService; +import com.gxwebsoft.shop.entity.ShopChatMessage; +import com.gxwebsoft.shop.param.ShopChatMessageParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 聊天消息表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "聊天消息表管理") +@RestController +@RequestMapping("/api/shop/shop-chat-message") +public class ShopChatMessageController extends BaseController { + @Resource + private ShopChatMessageService shopChatMessageService; + + @ApiOperation("分页查询聊天消息表") + @GetMapping("/page") + public ApiResult> page(ShopChatMessageParam param) { + // 使用关联查询 + return success(shopChatMessageService.pageRel(param)); + } + + @ApiOperation("查询全部聊天消息表") + @GetMapping() + public ApiResult> list(ShopChatMessageParam param) { + // 使用关联查询 + return success(shopChatMessageService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopChatMessage:list')") + @ApiOperation("根据id查询聊天消息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopChatMessageService.getByIdRel(id)); + } + + @ApiOperation("添加聊天消息表") + @PostMapping() + public ApiResult save(@RequestBody ShopChatMessage shopChatMessage) { + // 记录当前登录用户id +// User loginUser = getLoginUser(); +// if (loginUser != null) { +// shopChatMessage.setUserId(loginUser.getUserId()); +// } + if (shopChatMessageService.save(shopChatMessage)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改聊天消息表") + @PutMapping() + public ApiResult update(@RequestBody ShopChatMessage shopChatMessage) { + if (shopChatMessageService.updateById(shopChatMessage)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除聊天消息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopChatMessageService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加聊天消息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopChatMessageService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改聊天消息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopChatMessageService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除聊天消息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopChatMessageService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopCommissionRoleController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopCommissionRoleController.java new file mode 100644 index 0000000..81a2773 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopCommissionRoleController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopCommissionRoleService; +import com.gxwebsoft.shop.entity.ShopCommissionRole; +import com.gxwebsoft.shop.param.ShopCommissionRoleParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分红角色控制器 + * + * @author 科技小王子 + * @since 2025-05-01 10:01:15 + */ +@Api(tags = "分红角色管理") +@RestController +@RequestMapping("/api/shop/shop-commission-role") +public class ShopCommissionRoleController extends BaseController { + @Resource + private ShopCommissionRoleService shopCommissionRoleService; + + @ApiOperation("分页查询分红角色") + @GetMapping("/page") + public ApiResult> page(ShopCommissionRoleParam param) { + // 使用关联查询 + return success(shopCommissionRoleService.pageRel(param)); + } + + @ApiOperation("查询全部分红角色") + @GetMapping() + public ApiResult> list(ShopCommissionRoleParam param) { + // 使用关联查询 + return success(shopCommissionRoleService.listRel(param)); + } + + @ApiOperation("根据id查询分红角色") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopCommissionRoleService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:save')") + @OperationLog + @ApiOperation("添加分红角色") + @PostMapping() + public ApiResult save(@RequestBody ShopCommissionRole shopCommissionRole) { + if (shopCommissionRoleService.save(shopCommissionRole)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:update')") + @OperationLog + @ApiOperation("修改分红角色") + @PutMapping() + public ApiResult update(@RequestBody ShopCommissionRole shopCommissionRole) { + if (shopCommissionRoleService.updateById(shopCommissionRole)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:remove')") + @OperationLog + @ApiOperation("删除分红角色") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopCommissionRoleService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:save')") + @OperationLog + @ApiOperation("批量添加分红角色") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopCommissionRoleService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:update')") + @OperationLog + @ApiOperation("批量修改分红角色") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopCommissionRoleService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopCommissionRole:remove')") + @OperationLog + @ApiOperation("批量删除分红角色") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopCommissionRoleService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopCountController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopCountController.java new file mode 100644 index 0000000..38ea4c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopCountController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopCountService; +import com.gxwebsoft.shop.entity.ShopCount; +import com.gxwebsoft.shop.param.ShopCountParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商城销售统计表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商城销售统计表管理") +@RestController +@RequestMapping("/api/shop/shop-count") +public class ShopCountController extends BaseController { + @Resource + private ShopCountService shopCountService; + + @ApiOperation("分页查询商城销售统计表") + @GetMapping("/page") + public ApiResult> page(ShopCountParam param) { + // 使用关联查询 + return success(shopCountService.pageRel(param)); + } + + @ApiOperation("查询全部商城销售统计表") + @GetMapping() + public ApiResult> list(ShopCountParam param) { + // 使用关联查询 + return success(shopCountService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopCount:list')") + @ApiOperation("根据id查询商城销售统计表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopCountService.getByIdRel(id)); + } + + @ApiOperation("添加商城销售统计表") + @PostMapping() + public ApiResult save(@RequestBody ShopCount shopCount) { + if (shopCountService.save(shopCount)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商城销售统计表") + @PutMapping() + public ApiResult update(@RequestBody ShopCount shopCount) { + if (shopCountService.updateById(shopCount)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商城销售统计表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopCountService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商城销售统计表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopCountService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商城销售统计表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopCountService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商城销售统计表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopCountService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerApplyController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerApplyController.java new file mode 100644 index 0000000..124805f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerApplyController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerApplyService; +import com.gxwebsoft.shop.entity.ShopDealerApply; +import com.gxwebsoft.shop.param.ShopDealerApplyParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商申请记录表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商申请记录表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-apply") +public class ShopDealerApplyController extends BaseController { + @Resource + private ShopDealerApplyService shopDealerApplyService; + + @ApiOperation("分页查询分销商申请记录表") + @GetMapping("/page") + public ApiResult> page(ShopDealerApplyParam param) { + // 使用关联查询 + return success(shopDealerApplyService.pageRel(param)); + } + + @ApiOperation("查询全部分销商申请记录表") + @GetMapping() + public ApiResult> list(ShopDealerApplyParam param) { + // 使用关联查询 + return success(shopDealerApplyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerApply:list')") + @ApiOperation("根据id查询分销商申请记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerApplyService.getByIdRel(id)); + } + + @ApiOperation("添加分销商申请记录表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerApply shopDealerApply) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerApply.setUserId(loginUser.getUserId()); + } + if (shopDealerApplyService.save(shopDealerApply)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商申请记录表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerApply shopDealerApply) { + if (shopDealerApplyService.updateById(shopDealerApply)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商申请记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerApplyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商申请记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerApplyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商申请记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerApplyService, "apply_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商申请记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerApplyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java new file mode 100644 index 0000000..9f790d7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerCapitalController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerCapitalService; +import com.gxwebsoft.shop.entity.ShopDealerCapital; +import com.gxwebsoft.shop.param.ShopDealerCapitalParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商资金明细表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商资金明细表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-capital") +public class ShopDealerCapitalController extends BaseController { + @Resource + private ShopDealerCapitalService shopDealerCapitalService; + + @ApiOperation("分页查询分销商资金明细表") + @GetMapping("/page") + public ApiResult> page(ShopDealerCapitalParam param) { + // 使用关联查询 + return success(shopDealerCapitalService.pageRel(param)); + } + + @ApiOperation("查询全部分销商资金明细表") + @GetMapping() + public ApiResult> list(ShopDealerCapitalParam param) { + // 使用关联查询 + return success(shopDealerCapitalService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerCapital:list')") + @ApiOperation("根据id查询分销商资金明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerCapitalService.getByIdRel(id)); + } + + @ApiOperation("添加分销商资金明细表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerCapital shopDealerCapital) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerCapital.setUserId(loginUser.getUserId()); + } + if (shopDealerCapitalService.save(shopDealerCapital)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商资金明细表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerCapital shopDealerCapital) { + if (shopDealerCapitalService.updateById(shopDealerCapital)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商资金明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerCapitalService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商资金明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerCapitalService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商资金明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerCapitalService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商资金明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerCapitalService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerOrderController.java new file mode 100644 index 0000000..e34af35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerOrderController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerOrderService; +import com.gxwebsoft.shop.entity.ShopDealerOrder; +import com.gxwebsoft.shop.param.ShopDealerOrderParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商订单记录表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商订单记录表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-order") +public class ShopDealerOrderController extends BaseController { + @Resource + private ShopDealerOrderService shopDealerOrderService; + + @ApiOperation("分页查询分销商订单记录表") + @GetMapping("/page") + public ApiResult> page(ShopDealerOrderParam param) { + // 使用关联查询 + return success(shopDealerOrderService.pageRel(param)); + } + + @ApiOperation("查询全部分销商订单记录表") + @GetMapping() + public ApiResult> list(ShopDealerOrderParam param) { + // 使用关联查询 + return success(shopDealerOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerOrder:list')") + @ApiOperation("根据id查询分销商订单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerOrderService.getByIdRel(id)); + } + + @ApiOperation("添加分销商订单记录表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerOrder shopDealerOrder) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerOrder.setUserId(loginUser.getUserId()); + } + if (shopDealerOrderService.save(shopDealerOrder)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商订单记录表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerOrder shopDealerOrder) { + if (shopDealerOrderService.updateById(shopDealerOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商订单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商订单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商订单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerOrderService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商订单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerRefereeController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerRefereeController.java new file mode 100644 index 0000000..648ca9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerRefereeController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerRefereeService; +import com.gxwebsoft.shop.entity.ShopDealerReferee; +import com.gxwebsoft.shop.param.ShopDealerRefereeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商推荐关系表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商推荐关系表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-referee") +public class ShopDealerRefereeController extends BaseController { + @Resource + private ShopDealerRefereeService shopDealerRefereeService; + + @ApiOperation("分页查询分销商推荐关系表") + @GetMapping("/page") + public ApiResult> page(ShopDealerRefereeParam param) { + // 使用关联查询 + return success(shopDealerRefereeService.pageRel(param)); + } + + @ApiOperation("查询全部分销商推荐关系表") + @GetMapping() + public ApiResult> list(ShopDealerRefereeParam param) { + // 使用关联查询 + return success(shopDealerRefereeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerReferee:list')") + @ApiOperation("根据id查询分销商推荐关系表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerRefereeService.getByIdRel(id)); + } + + @ApiOperation("添加分销商推荐关系表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerReferee shopDealerReferee) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerReferee.setUserId(loginUser.getUserId()); + } + if (shopDealerRefereeService.save(shopDealerReferee)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商推荐关系表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerReferee shopDealerReferee) { + if (shopDealerRefereeService.updateById(shopDealerReferee)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商推荐关系表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerRefereeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商推荐关系表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerRefereeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商推荐关系表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerRefereeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商推荐关系表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerRefereeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerSettingController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerSettingController.java new file mode 100644 index 0000000..47fe71d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerSettingController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerSettingService; +import com.gxwebsoft.shop.entity.ShopDealerSetting; +import com.gxwebsoft.shop.param.ShopDealerSettingParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商设置表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商设置表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-setting") +public class ShopDealerSettingController extends BaseController { + @Resource + private ShopDealerSettingService shopDealerSettingService; + + @ApiOperation("分页查询分销商设置表") + @GetMapping("/page") + public ApiResult> page(ShopDealerSettingParam param) { + // 使用关联查询 + return success(shopDealerSettingService.pageRel(param)); + } + + @ApiOperation("查询全部分销商设置表") + @GetMapping() + public ApiResult> list(ShopDealerSettingParam param) { + // 使用关联查询 + return success(shopDealerSettingService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerSetting:list')") + @ApiOperation("根据id查询分销商设置表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") String id) { + // 使用关联查询 + return success(shopDealerSettingService.getByIdRel(id)); + } + + @ApiOperation("添加分销商设置表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerSetting shopDealerSetting) { + if (shopDealerSettingService.save(shopDealerSetting)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商设置表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerSetting shopDealerSetting) { + if (shopDealerSettingService.updateById(shopDealerSetting)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商设置表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerSettingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商设置表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerSettingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商设置表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerSettingService, "key")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商设置表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerSettingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerUserController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerUserController.java new file mode 100644 index 0000000..6bfcd81 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerUserController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerUserService; +import com.gxwebsoft.shop.entity.ShopDealerUser; +import com.gxwebsoft.shop.param.ShopDealerUserParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商用户记录表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商用户记录表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-user") +public class ShopDealerUserController extends BaseController { + @Resource + private ShopDealerUserService shopDealerUserService; + + @ApiOperation("分页查询分销商用户记录表") + @GetMapping("/page") + public ApiResult> page(ShopDealerUserParam param) { + // 使用关联查询 + return success(shopDealerUserService.pageRel(param)); + } + + @ApiOperation("查询全部分销商用户记录表") + @GetMapping() + public ApiResult> list(ShopDealerUserParam param) { + // 使用关联查询 + return success(shopDealerUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerUser:list')") + @ApiOperation("根据id查询分销商用户记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerUserService.getByIdRel(id)); + } + + @ApiOperation("添加分销商用户记录表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerUser shopDealerUser) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerUser.setUserId(loginUser.getUserId()); + } + if (shopDealerUserService.save(shopDealerUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商用户记录表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerUser shopDealerUser) { + if (shopDealerUserService.updateById(shopDealerUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商用户记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商用户记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商用户记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerUserService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商用户记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java new file mode 100644 index 0000000..3f65dea --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopDealerWithdrawController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopDealerWithdrawService; +import com.gxwebsoft.shop.entity.ShopDealerWithdraw; +import com.gxwebsoft.shop.param.ShopDealerWithdrawParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分销商提现明细表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分销商提现明细表管理") +@RestController +@RequestMapping("/api/shop/shop-dealer-withdraw") +public class ShopDealerWithdrawController extends BaseController { + @Resource + private ShopDealerWithdrawService shopDealerWithdrawService; + + @ApiOperation("分页查询分销商提现明细表") + @GetMapping("/page") + public ApiResult> page(ShopDealerWithdrawParam param) { + // 使用关联查询 + return success(shopDealerWithdrawService.pageRel(param)); + } + + @ApiOperation("查询全部分销商提现明细表") + @GetMapping() + public ApiResult> list(ShopDealerWithdrawParam param) { + // 使用关联查询 + return success(shopDealerWithdrawService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopDealerWithdraw:list')") + @ApiOperation("根据id查询分销商提现明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopDealerWithdrawService.getByIdRel(id)); + } + + @ApiOperation("添加分销商提现明细表") + @PostMapping() + public ApiResult save(@RequestBody ShopDealerWithdraw shopDealerWithdraw) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopDealerWithdraw.setUserId(loginUser.getUserId()); + } + if (shopDealerWithdrawService.save(shopDealerWithdraw)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分销商提现明细表") + @PutMapping() + public ApiResult update(@RequestBody ShopDealerWithdraw shopDealerWithdraw) { + if (shopDealerWithdrawService.updateById(shopDealerWithdraw)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分销商提现明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopDealerWithdrawService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分销商提现明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopDealerWithdrawService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分销商提现明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopDealerWithdrawService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分销商提现明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopDealerWithdrawService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopExpressController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressController.java new file mode 100644 index 0000000..fb8b629 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopExpressService; +import com.gxwebsoft.shop.entity.ShopExpress; +import com.gxwebsoft.shop.param.ShopExpressParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物流公司控制器 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Api(tags = "物流公司管理") +@RestController +@RequestMapping("/api/shop/shop-express") +public class ShopExpressController extends BaseController { + @Resource + private ShopExpressService shopExpressService; + + @ApiOperation("分页查询物流公司") + @GetMapping("/page") + public ApiResult> page(ShopExpressParam param) { + // 使用关联查询 + return success(shopExpressService.pageRel(param)); + } + + @ApiOperation("查询全部物流公司") + @GetMapping() + public ApiResult> list(ShopExpressParam param) { + // 使用关联查询 + return success(shopExpressService.listRel(param)); + } + + @ApiOperation("根据id查询物流公司") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopExpressService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:save')") + @OperationLog + @ApiOperation("添加物流公司") + @PostMapping() + public ApiResult save(@RequestBody ShopExpress shopExpress) { + if (shopExpressService.save(shopExpress)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:update')") + @OperationLog + @ApiOperation("修改物流公司") + @PutMapping() + public ApiResult update(@RequestBody ShopExpress shopExpress) { + if (shopExpressService.updateById(shopExpress)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:remove')") + @OperationLog + @ApiOperation("删除物流公司") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopExpressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:save')") + @OperationLog + @ApiOperation("批量添加物流公司") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopExpressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:update')") + @OperationLog + @ApiOperation("批量修改物流公司") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopExpressService, "express_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpress:remove')") + @OperationLog + @ApiOperation("批量删除物流公司") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopExpressService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateController.java new file mode 100644 index 0000000..3ee4f3a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopExpressTemplateService; +import com.gxwebsoft.shop.entity.ShopExpressTemplate; +import com.gxwebsoft.shop.param.ShopExpressTemplateParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 运费模板控制器 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Api(tags = "运费模板管理") +@RestController +@RequestMapping("/api/shop/shop-express-template") +public class ShopExpressTemplateController extends BaseController { + @Resource + private ShopExpressTemplateService shopExpressTemplateService; + + @ApiOperation("分页查询运费模板") + @GetMapping("/page") + public ApiResult> page(ShopExpressTemplateParam param) { + // 使用关联查询 + return success(shopExpressTemplateService.pageRel(param)); + } + + @ApiOperation("查询全部运费模板") + @GetMapping() + public ApiResult> list(ShopExpressTemplateParam param) { + // 使用关联查询 + return success(shopExpressTemplateService.listRel(param)); + } + + @ApiOperation("根据id查询运费模板") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopExpressTemplateService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:save')") + @OperationLog + @ApiOperation("添加运费模板") + @PostMapping() + public ApiResult save(@RequestBody ShopExpressTemplate shopExpressTemplate) { + if (shopExpressTemplateService.save(shopExpressTemplate)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:update')") + @OperationLog + @ApiOperation("修改运费模板") + @PutMapping() + public ApiResult update(@RequestBody ShopExpressTemplate shopExpressTemplate) { + if (shopExpressTemplateService.updateById(shopExpressTemplate)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:remove')") + @OperationLog + @ApiOperation("删除运费模板") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopExpressTemplateService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:save')") + @OperationLog + @ApiOperation("批量添加运费模板") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopExpressTemplateService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:update')") + @OperationLog + @ApiOperation("批量修改运费模板") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopExpressTemplateService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplate:remove')") + @OperationLog + @ApiOperation("批量删除运费模板") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopExpressTemplateService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateDetailController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateDetailController.java new file mode 100644 index 0000000..5632293 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopExpressTemplateDetailController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopExpressTemplateDetailService; +import com.gxwebsoft.shop.entity.ShopExpressTemplateDetail; +import com.gxwebsoft.shop.param.ShopExpressTemplateDetailParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 运费模板控制器 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Api(tags = "运费模板管理") +@RestController +@RequestMapping("/api/shop/shop-express-template-detail") +public class ShopExpressTemplateDetailController extends BaseController { + @Resource + private ShopExpressTemplateDetailService shopExpressTemplateDetailService; + + @ApiOperation("分页查询运费模板") + @GetMapping("/page") + public ApiResult> page(ShopExpressTemplateDetailParam param) { + // 使用关联查询 + return success(shopExpressTemplateDetailService.pageRel(param)); + } + + @ApiOperation("查询全部运费模板") + @GetMapping() + public ApiResult> list(ShopExpressTemplateDetailParam param) { + // 使用关联查询 + return success(shopExpressTemplateDetailService.listRel(param)); + } + + @ApiOperation("根据id查询运费模板") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopExpressTemplateDetailService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:save')") + @OperationLog + @ApiOperation("添加运费模板") + @PostMapping() + public ApiResult save(@RequestBody ShopExpressTemplateDetail shopExpressTemplateDetail) { + if (shopExpressTemplateDetailService.save(shopExpressTemplateDetail)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:update')") + @OperationLog + @ApiOperation("修改运费模板") + @PutMapping() + public ApiResult update(@RequestBody ShopExpressTemplateDetail shopExpressTemplateDetail) { + if (shopExpressTemplateDetailService.updateById(shopExpressTemplateDetail)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:remove')") + @OperationLog + @ApiOperation("删除运费模板") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopExpressTemplateDetailService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:save')") + @OperationLog + @ApiOperation("批量添加运费模板") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopExpressTemplateDetailService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:update')") + @OperationLog + @ApiOperation("批量修改运费模板") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopExpressTemplateDetailService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopExpressTemplateDetail:remove')") + @OperationLog + @ApiOperation("批量删除运费模板") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopExpressTemplateDetailService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCategoryController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCategoryController.java new file mode 100644 index 0000000..9c35855 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCategoryController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsCategoryService; +import com.gxwebsoft.shop.entity.ShopGoodsCategory; +import com.gxwebsoft.shop.param.ShopGoodsCategoryParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品分类控制器 + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +@Api(tags = "商品分类管理") +@RestController +@RequestMapping("/api/shop/shop-goods-category") +public class ShopGoodsCategoryController extends BaseController { + @Resource + private ShopGoodsCategoryService shopGoodsCategoryService; + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:list')") + @ApiOperation("分页查询商品分类") + @GetMapping("/page") + public ApiResult> page(ShopGoodsCategoryParam param) { + // 使用关联查询 + return success(shopGoodsCategoryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:list')") + @ApiOperation("查询全部商品分类") + @GetMapping() + public ApiResult> list(ShopGoodsCategoryParam param) { + // 使用关联查询 + return success(shopGoodsCategoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:list')") + @ApiOperation("根据id查询商品分类") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsCategoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:save')") + @OperationLog + @ApiOperation("添加商品分类") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsCategory shopGoodsCategory) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsCategory.setUserId(loginUser.getUserId()); + } + if (shopGoodsCategoryService.save(shopGoodsCategory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:update')") + @OperationLog + @ApiOperation("修改商品分类") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsCategory shopGoodsCategory) { + if (shopGoodsCategoryService.updateById(shopGoodsCategory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:remove')") + @OperationLog + @ApiOperation("删除商品分类") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsCategoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:save')") + @OperationLog + @ApiOperation("批量添加商品分类") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsCategoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:update')") + @OperationLog + @ApiOperation("批量修改商品分类") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsCategoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCategory:remove')") + @OperationLog + @ApiOperation("批量删除商品分类") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsCategoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCommentController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCommentController.java new file mode 100644 index 0000000..c0fc0d9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCommentController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsCommentService; +import com.gxwebsoft.shop.entity.ShopGoodsComment; +import com.gxwebsoft.shop.param.ShopGoodsCommentParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 评论表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "评论表管理") +@RestController +@RequestMapping("/api/shop/shop-goods-comment") +public class ShopGoodsCommentController extends BaseController { + @Resource + private ShopGoodsCommentService shopGoodsCommentService; + + @ApiOperation("分页查询评论表") + @GetMapping("/page") + public ApiResult> page(ShopGoodsCommentParam param) { + // 使用关联查询 + return success(shopGoodsCommentService.pageRel(param)); + } + + @ApiOperation("查询全部评论表") + @GetMapping() + public ApiResult> list(ShopGoodsCommentParam param) { + // 使用关联查询 + return success(shopGoodsCommentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsComment:list')") + @ApiOperation("根据id查询评论表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsCommentService.getByIdRel(id)); + } + + @ApiOperation("添加评论表") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsComment shopGoodsComment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsComment.setUserId(loginUser.getUserId()); + } + if (shopGoodsCommentService.save(shopGoodsComment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改评论表") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsComment shopGoodsComment) { + if (shopGoodsCommentService.updateById(shopGoodsComment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除评论表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsCommentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加评论表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsCommentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改评论表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsCommentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除评论表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsCommentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsController.java new file mode 100644 index 0000000..0d01b36 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsController.java @@ -0,0 +1,163 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsService; +import com.gxwebsoft.shop.entity.ShopGoods; +import com.gxwebsoft.shop.param.ShopGoodsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 商品控制器 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Api(tags = "商品管理") +@RestController +@RequestMapping("/api/shop/shop-goods") +public class ShopGoodsController extends BaseController { + @Resource + private ShopGoodsService shopGoodsService; + + @ApiOperation("分页查询商品") + @GetMapping("/page") + public ApiResult> page(ShopGoodsParam param) { + // 使用关联查询 + return success(shopGoodsService.pageRel(param)); + } + + @ApiOperation("查询全部商品") + @GetMapping() + public ApiResult> list(ShopGoodsParam param) { + // 使用关联查询 + return success(shopGoodsService.listRel(param)); + } + + @ApiOperation("根据id查询商品") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:save')") + @OperationLog + @ApiOperation("添加商品") + @PostMapping() + public ApiResult save(@RequestBody ShopGoods shopGoods) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoods.setUserId(loginUser.getUserId()); + } + if (shopGoodsService.save(shopGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:update')") + @OperationLog + @ApiOperation("修改商品") + @PutMapping() + public ApiResult update(@RequestBody ShopGoods shopGoods) { + if (shopGoodsService.updateById(shopGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:remove')") + @OperationLog + @ApiOperation("删除商品") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:save')") + @OperationLog + @ApiOperation("批量添加商品") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:update')") + @OperationLog + @ApiOperation("批量修改商品") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsService, "goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoods:remove')") + @OperationLog + @ApiOperation("批量删除商品") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("统计信息") + @GetMapping("/data") + public ApiResult> data(ShopGoodsParam param) { + Map data = new HashMap<>(); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (param.getMerchantId() != null) { + wrapper.eq(ShopGoods::getMerchantId,param.getMerchantId()); + } + + Integer totalNum = shopGoodsService.count( + wrapper.eq(ShopGoods::getStatus,0).gt(ShopGoods::getStock,0) + ); + data.put("totalNum", totalNum); + wrapper.clear(); + + Integer totalNum2 = shopGoodsService.count( + wrapper.gt(ShopGoods::getStatus,0) + ); + data.put("totalNum2", totalNum2); + wrapper.clear(); + + Integer totalNum3 = shopGoodsService.count( + wrapper.eq(ShopGoods::getStock,0) + ); + data.put("totalNum3", totalNum3); + wrapper.clear(); + + // 下架已售罄的商品 + shopGoodsService.update(new LambdaUpdateWrapper().eq(ShopGoods::getStock,0).set(ShopGoods::getStatus,1)); + + return success(data); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCouponController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCouponController.java new file mode 100644 index 0000000..0e790bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsCouponController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsCouponService; +import com.gxwebsoft.shop.entity.ShopGoodsCoupon; +import com.gxwebsoft.shop.param.ShopGoodsCouponParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品优惠券表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商品优惠券表管理") +@RestController +@RequestMapping("/api/shop/shop-goods-coupon") +public class ShopGoodsCouponController extends BaseController { + @Resource + private ShopGoodsCouponService shopGoodsCouponService; + + @ApiOperation("分页查询商品优惠券表") + @GetMapping("/page") + public ApiResult> page(ShopGoodsCouponParam param) { + // 使用关联查询 + return success(shopGoodsCouponService.pageRel(param)); + } + + @ApiOperation("查询全部商品优惠券表") + @GetMapping() + public ApiResult> list(ShopGoodsCouponParam param) { + // 使用关联查询 + return success(shopGoodsCouponService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsCoupon:list')") + @ApiOperation("根据id查询商品优惠券表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsCouponService.getByIdRel(id)); + } + + @ApiOperation("添加商品优惠券表") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsCoupon shopGoodsCoupon) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsCoupon.setUserId(loginUser.getUserId()); + } + if (shopGoodsCouponService.save(shopGoodsCoupon)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商品优惠券表") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsCoupon shopGoodsCoupon) { + if (shopGoodsCouponService.updateById(shopGoodsCoupon)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商品优惠券表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsCouponService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商品优惠券表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsCouponService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商品优惠券表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsCouponService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商品优惠券表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsCouponService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsIncomeConfigController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsIncomeConfigController.java new file mode 100644 index 0000000..06a0542 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsIncomeConfigController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsIncomeConfigService; +import com.gxwebsoft.shop.entity.ShopGoodsIncomeConfig; +import com.gxwebsoft.shop.param.ShopGoodsIncomeConfigParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 分润配置控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "分润配置管理") +@RestController +@RequestMapping("/api/shop/shop-goods-income-config") +public class ShopGoodsIncomeConfigController extends BaseController { + @Resource + private ShopGoodsIncomeConfigService shopGoodsIncomeConfigService; + + @ApiOperation("分页查询分润配置") + @GetMapping("/page") + public ApiResult> page(ShopGoodsIncomeConfigParam param) { + // 使用关联查询 + return success(shopGoodsIncomeConfigService.pageRel(param)); + } + + @ApiOperation("查询全部分润配置") + @GetMapping() + public ApiResult> list(ShopGoodsIncomeConfigParam param) { + // 使用关联查询 + return success(shopGoodsIncomeConfigService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsIncomeConfig:list')") + @ApiOperation("根据id查询分润配置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsIncomeConfigService.getByIdRel(id)); + } + + @ApiOperation("添加分润配置") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsIncomeConfig shopGoodsIncomeConfig) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsIncomeConfig.setUserId(loginUser.getUserId()); + } + if (shopGoodsIncomeConfigService.save(shopGoodsIncomeConfig)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改分润配置") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsIncomeConfig shopGoodsIncomeConfig) { + if (shopGoodsIncomeConfigService.updateById(shopGoodsIncomeConfig)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除分润配置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsIncomeConfigService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加分润配置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsIncomeConfigService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改分润配置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsIncomeConfigService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除分润配置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsIncomeConfigService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsLogController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsLogController.java new file mode 100644 index 0000000..5ccebbe --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsLogController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsLogService; +import com.gxwebsoft.shop.entity.ShopGoodsLog; +import com.gxwebsoft.shop.param.ShopGoodsLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品日志表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商品日志表管理") +@RestController +@RequestMapping("/api/shop/shop-goods-log") +public class ShopGoodsLogController extends BaseController { + @Resource + private ShopGoodsLogService shopGoodsLogService; + + @ApiOperation("分页查询商品日志表") + @GetMapping("/page") + public ApiResult> page(ShopGoodsLogParam param) { + // 使用关联查询 + return success(shopGoodsLogService.pageRel(param)); + } + + @ApiOperation("查询全部商品日志表") + @GetMapping() + public ApiResult> list(ShopGoodsLogParam param) { + // 使用关联查询 + return success(shopGoodsLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsLog:list')") + @ApiOperation("根据id查询商品日志表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsLogService.getByIdRel(id)); + } + + @ApiOperation("添加商品日志表") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsLog shopGoodsLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsLog.setUserId(loginUser.getUserId()); + } + if (shopGoodsLogService.save(shopGoodsLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商品日志表") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsLog shopGoodsLog) { + if (shopGoodsLogService.updateById(shopGoodsLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商品日志表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商品日志表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商品日志表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商品日志表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRelationController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRelationController.java new file mode 100644 index 0000000..20de5bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRelationController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsRelationService; +import com.gxwebsoft.shop.entity.ShopGoodsRelation; +import com.gxwebsoft.shop.param.ShopGoodsRelationParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品点赞和收藏表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商品点赞和收藏表管理") +@RestController +@RequestMapping("/api/shop/shop-goods-relation") +public class ShopGoodsRelationController extends BaseController { + @Resource + private ShopGoodsRelationService shopGoodsRelationService; + + @ApiOperation("分页查询商品点赞和收藏表") + @GetMapping("/page") + public ApiResult> page(ShopGoodsRelationParam param) { + // 使用关联查询 + return success(shopGoodsRelationService.pageRel(param)); + } + + @ApiOperation("查询全部商品点赞和收藏表") + @GetMapping() + public ApiResult> list(ShopGoodsRelationParam param) { + // 使用关联查询 + return success(shopGoodsRelationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRelation:list')") + @ApiOperation("根据id查询商品点赞和收藏表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsRelationService.getByIdRel(id)); + } + + @ApiOperation("添加商品点赞和收藏表") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsRelation shopGoodsRelation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopGoodsRelation.setUserId(loginUser.getUserId()); + } + if (shopGoodsRelationService.save(shopGoodsRelation)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商品点赞和收藏表") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsRelation shopGoodsRelation) { + if (shopGoodsRelationService.updateById(shopGoodsRelation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商品点赞和收藏表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsRelationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商品点赞和收藏表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsRelationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商品点赞和收藏表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsRelationService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商品点赞和收藏表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsRelationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRoleCommissionController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRoleCommissionController.java new file mode 100644 index 0000000..e837e4d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsRoleCommissionController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsRoleCommissionService; +import com.gxwebsoft.shop.entity.ShopGoodsRoleCommission; +import com.gxwebsoft.shop.param.ShopGoodsRoleCommissionParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品绑定角色的分润金额控制器 + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +@Api(tags = "商品绑定角色的分润金额管理") +@RestController +@RequestMapping("/api/shop/shop-goods-role-commission") +public class ShopGoodsRoleCommissionController extends BaseController { + @Resource + private ShopGoodsRoleCommissionService shopGoodsRoleCommissionService; + + @ApiOperation("分页查询商品绑定角色的分润金额") + @GetMapping("/page") + public ApiResult> page(ShopGoodsRoleCommissionParam param) { + // 使用关联查询 + return success(shopGoodsRoleCommissionService.pageRel(param)); + } + + @ApiOperation("查询全部商品绑定角色的分润金额") + @GetMapping() + public ApiResult> list(ShopGoodsRoleCommissionParam param) { + // 使用关联查询 + return success(shopGoodsRoleCommissionService.listRel(param)); + } + + @ApiOperation("根据id查询商品绑定角色的分润金额") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsRoleCommissionService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:save')") + @OperationLog + @ApiOperation("添加商品绑定角色的分润金额") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsRoleCommission shopGoodsRoleCommission) { + if (shopGoodsRoleCommissionService.save(shopGoodsRoleCommission)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:update')") + @OperationLog + @ApiOperation("修改商品绑定角色的分润金额") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsRoleCommission shopGoodsRoleCommission) { + if (shopGoodsRoleCommissionService.updateById(shopGoodsRoleCommission)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:remove')") + @OperationLog + @ApiOperation("删除商品绑定角色的分润金额") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsRoleCommissionService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:save')") + @OperationLog + @ApiOperation("批量添加商品绑定角色的分润金额") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsRoleCommissionService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:update')") + @OperationLog + @ApiOperation("批量修改商品绑定角色的分润金额") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsRoleCommissionService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsRoleCommission:remove')") + @OperationLog + @ApiOperation("批量删除商品绑定角色的分润金额") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsRoleCommissionService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSkuController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSkuController.java new file mode 100644 index 0000000..ebdde01 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSkuController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsSkuService; +import com.gxwebsoft.shop.entity.ShopGoodsSku; +import com.gxwebsoft.shop.param.ShopGoodsSkuParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品sku列表控制器 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Api(tags = "商品sku列表管理") +@RestController +@RequestMapping("/api/shop/shop-goods-sku") +public class ShopGoodsSkuController extends BaseController { + @Resource + private ShopGoodsSkuService shopGoodsSkuService; + + @ApiOperation("分页查询商品sku列表") + @GetMapping("/page") + public ApiResult> page(ShopGoodsSkuParam param) { + // 使用关联查询 + return success(shopGoodsSkuService.pageRel(param)); + } + + @ApiOperation("查询全部商品sku列表") + @GetMapping() + public ApiResult> list(ShopGoodsSkuParam param) { + // 使用关联查询 + return success(shopGoodsSkuService.listRel(param)); + } + + @ApiOperation("根据id查询商品sku列表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsSkuService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:save')") + @OperationLog + @ApiOperation("添加商品sku列表") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsSku shopGoodsSku) { + if (shopGoodsSkuService.save(shopGoodsSku)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:update')") + @OperationLog + @ApiOperation("修改商品sku列表") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsSku shopGoodsSku) { + if (shopGoodsSkuService.updateById(shopGoodsSku)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:remove')") + @OperationLog + @ApiOperation("删除商品sku列表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsSkuService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:save')") + @OperationLog + @ApiOperation("批量添加商品sku列表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsSkuService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:update')") + @OperationLog + @ApiOperation("批量修改商品sku列表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsSkuService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSku:remove')") + @OperationLog + @ApiOperation("批量删除商品sku列表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsSkuService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSpecController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSpecController.java new file mode 100644 index 0000000..7dae49a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopGoodsSpecController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopGoodsSpecService; +import com.gxwebsoft.shop.entity.ShopGoodsSpec; +import com.gxwebsoft.shop.param.ShopGoodsSpecParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品多规格控制器 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Api(tags = "商品多规格管理") +@RestController +@RequestMapping("/api/shop/shop-goods-spec") +public class ShopGoodsSpecController extends BaseController { + @Resource + private ShopGoodsSpecService shopGoodsSpecService; + + @ApiOperation("分页查询商品多规格") + @GetMapping("/page") + public ApiResult> page(ShopGoodsSpecParam param) { + // 使用关联查询 + return success(shopGoodsSpecService.pageRel(param)); + } + + @ApiOperation("查询全部商品多规格") + @GetMapping() + public ApiResult> list(ShopGoodsSpecParam param) { + // 使用关联查询 + return success(shopGoodsSpecService.listRel(param)); + } + + @ApiOperation("根据id查询商品多规格") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopGoodsSpecService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:save')") + @OperationLog + @ApiOperation("添加商品多规格") + @PostMapping() + public ApiResult save(@RequestBody ShopGoodsSpec shopGoodsSpec) { + if (shopGoodsSpecService.save(shopGoodsSpec)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:update')") + @OperationLog + @ApiOperation("修改商品多规格") + @PutMapping() + public ApiResult update(@RequestBody ShopGoodsSpec shopGoodsSpec) { + if (shopGoodsSpecService.updateById(shopGoodsSpec)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:remove')") + @OperationLog + @ApiOperation("删除商品多规格") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopGoodsSpecService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:save')") + @OperationLog + @ApiOperation("批量添加商品多规格") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopGoodsSpecService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:update')") + @OperationLog + @ApiOperation("批量修改商品多规格") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopGoodsSpecService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopGoodsSpec:remove')") + @OperationLog + @ApiOperation("批量删除商品多规格") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopGoodsSpecService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantAccountController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantAccountController.java new file mode 100644 index 0000000..db1f451 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantAccountController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopMerchantAccountService; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.gxwebsoft.shop.param.ShopMerchantAccountParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商户账号控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商户账号管理") +@RestController +@RequestMapping("/api/shop/shop-merchant-account") +public class ShopMerchantAccountController extends BaseController { + @Resource + private ShopMerchantAccountService shopMerchantAccountService; + + @ApiOperation("分页查询商户账号") + @GetMapping("/page") + public ApiResult> page(ShopMerchantAccountParam param) { + // 使用关联查询 + return success(shopMerchantAccountService.pageRel(param)); + } + + @ApiOperation("查询全部商户账号") + @GetMapping() + public ApiResult> list(ShopMerchantAccountParam param) { + // 使用关联查询 + return success(shopMerchantAccountService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopMerchantAccount:list')") + @ApiOperation("根据id查询商户账号") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopMerchantAccountService.getByIdRel(id)); + } + + @ApiOperation("添加商户账号") + @PostMapping() + public ApiResult save(@RequestBody ShopMerchantAccount shopMerchantAccount) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopMerchantAccount.setUserId(loginUser.getUserId()); + } + if (shopMerchantAccountService.save(shopMerchantAccount)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商户账号") + @PutMapping() + public ApiResult update(@RequestBody ShopMerchantAccount shopMerchantAccount) { + if (shopMerchantAccountService.updateById(shopMerchantAccount)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商户账号") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopMerchantAccountService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商户账号") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopMerchantAccountService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商户账号") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopMerchantAccountService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商户账号") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopMerchantAccountService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantApplyController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantApplyController.java new file mode 100644 index 0000000..f70af67 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantApplyController.java @@ -0,0 +1,192 @@ +package com.gxwebsoft.shop.controller; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.entity.ShopMerchant; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.gxwebsoft.shop.service.ShopMerchantApplyService; +import com.gxwebsoft.shop.entity.ShopMerchantApply; +import com.gxwebsoft.shop.param.ShopMerchantApplyParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.ShopMerchantService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商户入驻申请控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商户入驻申请管理") +@RestController +@RequestMapping("/api/shop/shop-merchant-apply") +public class ShopMerchantApplyController extends BaseController { + @Resource + private ShopMerchantApplyService shopMerchantApplyService; + @Resource + private ShopMerchantService shopMerchantService; + + @ApiOperation("分页查询商户入驻申请") + @GetMapping("/page") + public ApiResult> page(ShopMerchantApplyParam param) { + // 使用关联查询 + return success(shopMerchantApplyService.pageRel(param)); + } + + @ApiOperation("查询全部商户入驻申请") + @GetMapping() + public ApiResult> list(ShopMerchantApplyParam param) { + // 使用关联查询 + return success(shopMerchantApplyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopMerchantApply:list')") + @ApiOperation("根据id查询商户入驻申请") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopMerchantApplyService.getByIdRel(id)); + } + + @ApiOperation("添加商户入驻申请") + @PostMapping() + public ApiResult save(@RequestBody ShopMerchantApply shopMerchantApply) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopMerchantApply.setUserId(loginUser.getUserId()); + if(shopMerchantApplyService.count(new LambdaQueryWrapper().eq(ShopMerchantApply::getPhone,shopMerchantApply.getPhone())) > 0){ + return fail("该手机号码已存在"); + } + // 个人开发者认证材料:使用姓名+身份证号码 + if (shopMerchantApply.getType().equals(0)) { + shopMerchantApply.setMerchantName(shopMerchantApply.getRealName()); + shopMerchantApply.setMerchantCode(shopMerchantApply.getIdCard()); + } + shopMerchantApply.setCheckStatus(true); + shopMerchantApply.setTenantId(loginUser.getTenantId()); + if (shopMerchantApplyService.save(shopMerchantApply)) { + return success("您的申请已提交,请耐心等待工作人员的审核,非常感谢"); + } + } + return fail("提交失败"); + } + + @ApiOperation("修改商户入驻申请") + @PutMapping() + public ApiResult update(@RequestBody ShopMerchantApply shopMerchantApply) { + if (shopMerchantApplyService.updateById(shopMerchantApply)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商户入驻申请") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopMerchantApplyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商户入驻申请") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopMerchantApplyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商户入驻申请") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopMerchantApplyService, "apply_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商户入驻申请") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopMerchantApplyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("我的入驻信息") + @GetMapping("/getByUserId") + public ApiResult getByUserId() { + final User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录", null); + } + final ShopMerchantApply shopMerchantApply = shopMerchantApplyService.getOne(new LambdaQueryWrapper().eq(ShopMerchantApply::getUserId, getLoginUser().getUserId()).last("limit 1")); + return success(shopMerchantApply); + } + + @PreAuthorize("hasAuthority('shop:shopMerchantApply:update')") + @ApiOperation("入驻审核") + @PutMapping("/check") + public ApiResult check(@RequestBody ShopMerchantApply shopMerchantApply) { + // 审核中? + shopMerchantApply.setCheckStatus(true); + // TODO 审核通过则创建商户 + if (shopMerchantApply.getStatus().equals(1)) { + final ShopMerchant one = shopMerchantService.getOne(new LambdaQueryWrapper().eq(ShopMerchant::getPhone, shopMerchantApply.getPhone()).last("limit 1")); + final ShopMerchantAccount merchantAccount = new ShopMerchantAccount(); + BeanUtils.copyProperties(shopMerchantApply, merchantAccount); + + final User user = new User(); + + if (ObjectUtil.isNotEmpty(one)) { + BeanUtils.copyProperties(shopMerchantApply, one); + one.setStatus(0); + shopMerchantService.updateById(one); + user.setRealName(shopMerchantApply.getRealName()); + } else { + final ShopMerchant merchant = new ShopMerchant(); + BeanUtils.copyProperties(shopMerchantApply, merchant); + merchant.setStatus(0); + shopMerchantService.save(merchant); + user.setRealName(shopMerchantApply.getRealName()); + } + + // TODO 创建商户账号 + // TODO 更新用户表的商户信息 + user.setUserId(shopMerchantApply.getUserId()); + shopMerchantApplyService.updateById(shopMerchantApply); + // TODO 入驻开发者中心(添加会员) + return success("操作成功"); + } + // TODO 驳回 + if (shopMerchantApply.getStatus().equals(2)) { + shopMerchantApply.setCheckStatus(false); + shopMerchantApplyService.updateById(shopMerchantApply); + return success("操作成功"); + } + // 审核状态 + shopMerchantApply.setStatus(0); + if (shopMerchantApplyService.updateById(shopMerchantApply)) { + return success("您的申请已提交,请耐心等待工作人员的审核,非常感谢"); + } + return fail("操作失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantController.java new file mode 100644 index 0000000..0a206d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopMerchantService; +import com.gxwebsoft.shop.entity.ShopMerchant; +import com.gxwebsoft.shop.param.ShopMerchantParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商户控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商户管理") +@RestController +@RequestMapping("/api/shop/shop-merchant") +public class ShopMerchantController extends BaseController { + @Resource + private ShopMerchantService shopMerchantService; + + @ApiOperation("分页查询商户") + @GetMapping("/page") + public ApiResult> page(ShopMerchantParam param) { + // 使用关联查询 + return success(shopMerchantService.pageRel(param)); + } + + @ApiOperation("查询全部商户") + @GetMapping() + public ApiResult> list(ShopMerchantParam param) { + // 使用关联查询 + return success(shopMerchantService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopMerchant:list')") + @ApiOperation("根据id查询商户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Long id) { + // 使用关联查询 + return success(shopMerchantService.getByIdRel(id)); + } + + @ApiOperation("添加商户") + @PostMapping() + public ApiResult save(@RequestBody ShopMerchant shopMerchant) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopMerchant.setUserId(loginUser.getUserId()); + } + if (shopMerchantService.save(shopMerchant)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商户") + @PutMapping() + public ApiResult update(@RequestBody ShopMerchant shopMerchant) { + if (shopMerchantService.updateById(shopMerchant)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopMerchantService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopMerchantService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopMerchantService, "merchant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商户") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopMerchantService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantTypeController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantTypeController.java new file mode 100644 index 0000000..325b3c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopMerchantTypeController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopMerchantTypeService; +import com.gxwebsoft.shop.entity.ShopMerchantType; +import com.gxwebsoft.shop.param.ShopMerchantTypeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商户类型控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商户类型管理") +@RestController +@RequestMapping("/api/shop/shop-merchant-type") +public class ShopMerchantTypeController extends BaseController { + @Resource + private ShopMerchantTypeService shopMerchantTypeService; + + @ApiOperation("分页查询商户类型") + @GetMapping("/page") + public ApiResult> page(ShopMerchantTypeParam param) { + // 使用关联查询 + return success(shopMerchantTypeService.pageRel(param)); + } + + @ApiOperation("查询全部商户类型") + @GetMapping() + public ApiResult> list(ShopMerchantTypeParam param) { + // 使用关联查询 + return success(shopMerchantTypeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopMerchantType:list')") + @ApiOperation("根据id查询商户类型") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopMerchantTypeService.getByIdRel(id)); + } + + @ApiOperation("添加商户类型") + @PostMapping() + public ApiResult save(@RequestBody ShopMerchantType shopMerchantType) { + if (shopMerchantTypeService.save(shopMerchantType)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商户类型") + @PutMapping() + public ApiResult update(@RequestBody ShopMerchantType shopMerchantType) { + if (shopMerchantTypeService.updateById(shopMerchantType)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商户类型") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopMerchantTypeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商户类型") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopMerchantTypeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商户类型") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopMerchantTypeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商户类型") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopMerchantTypeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java new file mode 100644 index 0000000..5219cf8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java @@ -0,0 +1,263 @@ +package com.gxwebsoft.shop.controller; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.bszx.entity.BszxBm; +import com.gxwebsoft.bszx.entity.BszxPay; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Payment; +import com.gxwebsoft.shop.service.ShopOrderService; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.param.ShopOrderParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.system.entity.User; +import com.wechat.pay.java.core.notification.NotificationConfig; +import com.wechat.pay.java.core.notification.NotificationParser; +import com.wechat.pay.java.core.notification.RSANotificationConfig; +import com.wechat.pay.java.core.notification.RequestParam; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * 订单控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "订单管理") +@RestController +@RequestMapping("/api/shop/shop-order") +public class ShopOrderController extends BaseController { + private static final Logger logger = LoggerFactory.getLogger(ShopOrderController.class); + @Resource + private ShopOrderService shopOrderService; + @Resource + private RedisUtil redisUtil; + @Resource + private ConfigProperties conf; + @Value("${spring.profiles.active}") + String active; + + @ApiOperation("分页查询订单") + @GetMapping("/page") + public ApiResult> page(ShopOrderParam param) { + // 使用关联查询 + return success(shopOrderService.pageRel(param)); + } + + @ApiOperation("查询全部订单") + @GetMapping() + public ApiResult> list(ShopOrderParam param) { + // 使用关联查询 + return success(shopOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrder:list')") + @ApiOperation("根据id查询订单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderService.getByIdRel(id)); + } + + @ApiOperation("添加订单") + @PostMapping() + public ApiResult save(@RequestBody ShopOrder shopOrder) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopOrder.setUserId(loginUser.getUserId()); + shopOrder.setOpenid(loginUser.getOpenid()); + shopOrder.setPayUserId(loginUser.getUserId()); + if (shopOrder.getOrderNo() == null) { + shopOrder.setOrderNo(Long.toString(IdUtil.getSnowflakeNextId())); + } + if (shopOrder.getComments() == null) { + shopOrder.setComments("暂无"); + } + // 微信支付(商品金额不能为0) + if (shopOrder.getTotalPrice().compareTo(BigDecimal.ZERO) == 0) { + return fail("商品金额不能为0"); + } + // 百色中学项目捐赠金额不能低于20元 + if (shopOrder.getTenantId().equals(10324) && shopOrder.getTotalPrice().compareTo(new BigDecimal("10")) < 0) { + return fail("捐款金额最低不能少于10元,感谢您的爱心捐赠^_^"); + } + // 测试支付 + if (loginUser.getUserId().equals(28748)) { + shopOrder.setPrice(new BigDecimal("0.01")); + shopOrder.setTotalPrice(new BigDecimal("0.01")); + } + if (shopOrderService.save(shopOrder)) { + return success("下单成功", shopOrderService.createWxOrder(shopOrder)); + } + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopOrder:update')") + @ApiOperation("修改订单") + @PutMapping() + public ApiResult update(@RequestBody ShopOrder shopOrder) { + if (shopOrderService.updateById(shopOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除订单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加订单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改订单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除订单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("修复订单") + @PutMapping("/repair") + public ApiResult repair(@RequestBody ShopOrder shopOrder) { + final ShopOrder order = shopOrderService.getByOutTradeNo(shopOrder.getOrderNo()); + if(order != null){ + shopOrderService.queryOrderByOutTradeNo(order); + return success("修复成功"); + } + return fail("修复失败"); + } + + @ApiModelProperty("异步通知") + @PostMapping("/notify/{tenantId}") + public String wxNotify(@RequestHeader Map header, @RequestBody String body, @PathVariable("tenantId") Integer tenantId) { + logger.info("异步通知*************** = " + tenantId); + + // 获取支付配置信息用于解密 + String key = "Payment:1:".concat(tenantId.toString()); + Payment payment = redisUtil.get(key, Payment.class); + String uploadPath = conf.getUploadPath(); + + // 开发环境 + String apiV3Key = "zGufUcqa7ovgxRL0kF5OlPr482EZwtn9"; + String privateKey = "/Users/gxwebsoft/JAVA/site-java/cert/websoft/af7261a1bc2a41f7887dbdf05611bb1f.pem"; + String apiclientCert = "/Users/gxwebsoft/JAVA/site-java/cert/websoft/wechatpay_4A3231584E93B6AE77820074D07EADEACCB7E223.pem"; + String pubKey = "/Users/gxwebsoft/JAVA/site-java/cert/websoft/wechatpay_4A3231584E93B6AE77820074D07EADEACCB7E223.pem"; + + // 生产环境 + if (ObjectUtil.isNotEmpty(payment)) { + // 检查 payment 字段是否为空,并避免直接解析为数字 + apiV3Key = payment.getApiKey(); + privateKey = payment.getApiclientKey(); + apiclientCert = conf.getUploadPath().concat("/file").concat(payment.getApiclientCert()); + pubKey = uploadPath.concat("file").concat(payment.getPubKey()); + } + + RequestParam requestParam = new RequestParam.Builder() + .serialNumber(header.get("wechatpay-serial")) + .nonce(header.get("wechatpay-nonce")) + .signature(header.get("wechatpay-signature")) + .timestamp(header.get("wechatpay-timestamp")) + .body(body) + .build(); + + // 如果已经初始化了 RSAAutoCertificateConfig,可直接使用 + // 没有的话,则构造一个 + NotificationConfig config = new RSANotificationConfig.Builder() + .apiV3Key(apiV3Key) + .certificatesFromPath(apiclientCert) + .build(); + + // 初始化 NotificationParser + NotificationParser parser = new NotificationParser(config); + + // 以支付通知回调为例,验签、解密并转换成 Transaction + try { + Transaction transaction = parser.parse(requestParam, Transaction.class); + if (StrUtil.equals("支付成功", transaction.getTradeStateDesc())) { + final String outTradeNo = transaction.getOutTradeNo(); + final String transactionId = transaction.getTransactionId(); + final Integer total = transaction.getAmount().getTotal(); + final String tradeStateDesc = transaction.getTradeStateDesc(); + final Transaction.TradeStateEnum tradeState = transaction.getTradeState(); + final Transaction.TradeTypeEnum tradeType = transaction.getTradeType(); + System.out.println("transaction = " + transaction); + System.out.println("tradeStateDesc = " + tradeStateDesc); + System.out.println("tradeType = " + tradeType); + System.out.println("tradeState = " + tradeState); + System.out.println("outTradeNo = " + outTradeNo); + System.out.println("amount = " + total); + // 1. 查询要处理的订单 + ShopOrder order = shopOrderService.getByOutTradeNo(outTradeNo); + logger.info("order = " + order); + // 2. 已支付则跳过 + if (order.getPayStatus().equals(true)) { + return "SUCCESS"; + } + // 2. 未支付则处理更新订单状态 + if (order.getPayStatus().equals(false)) { + // 5. TODO 处理订单状态 + order.setPayTime(DateUtil.date()); + order.setExpirationTime(order.getCreateTime()); + order.setPayStatus(true); + order.setTransactionId(transactionId); + order.setPayPrice(new BigDecimal(NumberUtil.decimalFormat("0.00", total * 0.01))); + order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); + System.out.println("实际付款金额 = " + order.getPayPrice()); + shopOrderService.updateByOutTradeNo(order); + return "SUCCESS"; + } + } + } catch (Exception $e) { + System.out.println($e.getMessage()); + } + + return "fail"; + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryController.java new file mode 100644 index 0000000..3fc43dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderDeliveryService; +import com.gxwebsoft.shop.entity.ShopOrderDelivery; +import com.gxwebsoft.shop.param.ShopOrderDeliveryParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 发货单控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "发货单管理") +@RestController +@RequestMapping("/api/shop/shop-order-delivery") +public class ShopOrderDeliveryController extends BaseController { + @Resource + private ShopOrderDeliveryService shopOrderDeliveryService; + + @ApiOperation("分页查询发货单") + @GetMapping("/page") + public ApiResult> page(ShopOrderDeliveryParam param) { + // 使用关联查询 + return success(shopOrderDeliveryService.pageRel(param)); + } + + @ApiOperation("查询全部发货单") + @GetMapping() + public ApiResult> list(ShopOrderDeliveryParam param) { + // 使用关联查询 + return success(shopOrderDeliveryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderDelivery:list')") + @ApiOperation("根据id查询发货单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderDeliveryService.getByIdRel(id)); + } + + @ApiOperation("添加发货单") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderDelivery shopOrderDelivery) { + if (shopOrderDeliveryService.save(shopOrderDelivery)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改发货单") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderDelivery shopOrderDelivery) { + if (shopOrderDeliveryService.updateById(shopOrderDelivery)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除发货单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderDeliveryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加发货单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderDeliveryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改发货单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderDeliveryService, "delivery_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除发货单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderDeliveryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryGoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryGoodsController.java new file mode 100644 index 0000000..b189538 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderDeliveryGoodsController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderDeliveryGoodsService; +import com.gxwebsoft.shop.entity.ShopOrderDeliveryGoods; +import com.gxwebsoft.shop.param.ShopOrderDeliveryGoodsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 发货单商品控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "发货单商品管理") +@RestController +@RequestMapping("/api/shop/shop-order-delivery-goods") +public class ShopOrderDeliveryGoodsController extends BaseController { + @Resource + private ShopOrderDeliveryGoodsService shopOrderDeliveryGoodsService; + + @ApiOperation("分页查询发货单商品") + @GetMapping("/page") + public ApiResult> page(ShopOrderDeliveryGoodsParam param) { + // 使用关联查询 + return success(shopOrderDeliveryGoodsService.pageRel(param)); + } + + @ApiOperation("查询全部发货单商品") + @GetMapping() + public ApiResult> list(ShopOrderDeliveryGoodsParam param) { + // 使用关联查询 + return success(shopOrderDeliveryGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderDeliveryGoods:list')") + @ApiOperation("根据id查询发货单商品") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderDeliveryGoodsService.getByIdRel(id)); + } + + @ApiOperation("添加发货单商品") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderDeliveryGoods shopOrderDeliveryGoods) { + if (shopOrderDeliveryGoodsService.save(shopOrderDeliveryGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改发货单商品") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderDeliveryGoods shopOrderDeliveryGoods) { + if (shopOrderDeliveryGoodsService.updateById(shopOrderDeliveryGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除发货单商品") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderDeliveryGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加发货单商品") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderDeliveryGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改发货单商品") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderDeliveryGoodsService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除发货单商品") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderDeliveryGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderExtractController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderExtractController.java new file mode 100644 index 0000000..4323cb7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderExtractController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderExtractService; +import com.gxwebsoft.shop.entity.ShopOrderExtract; +import com.gxwebsoft.shop.param.ShopOrderExtractParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 自提订单联系方式控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "自提订单联系方式管理") +@RestController +@RequestMapping("/api/shop/shop-order-extract") +public class ShopOrderExtractController extends BaseController { + @Resource + private ShopOrderExtractService shopOrderExtractService; + + @ApiOperation("分页查询自提订单联系方式") + @GetMapping("/page") + public ApiResult> page(ShopOrderExtractParam param) { + // 使用关联查询 + return success(shopOrderExtractService.pageRel(param)); + } + + @ApiOperation("查询全部自提订单联系方式") + @GetMapping() + public ApiResult> list(ShopOrderExtractParam param) { + // 使用关联查询 + return success(shopOrderExtractService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderExtract:list')") + @ApiOperation("根据id查询自提订单联系方式") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderExtractService.getByIdRel(id)); + } + + @ApiOperation("添加自提订单联系方式") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderExtract shopOrderExtract) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopOrderExtract.setUserId(loginUser.getUserId()); + } + if (shopOrderExtractService.save(shopOrderExtract)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改自提订单联系方式") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderExtract shopOrderExtract) { + if (shopOrderExtractService.updateById(shopOrderExtract)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除自提订单联系方式") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderExtractService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加自提订单联系方式") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderExtractService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改自提订单联系方式") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderExtractService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除自提订单联系方式") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderExtractService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderGoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderGoodsController.java new file mode 100644 index 0000000..33a7280 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderGoodsController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderGoodsService; +import com.gxwebsoft.shop.entity.ShopOrderGoods; +import com.gxwebsoft.shop.param.ShopOrderGoodsParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商品信息控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "商品信息管理") +@RestController +@RequestMapping("/api/shop/shop-order-goods") +public class ShopOrderGoodsController extends BaseController { + @Resource + private ShopOrderGoodsService shopOrderGoodsService; + + @ApiOperation("分页查询商品信息") + @GetMapping("/page") + public ApiResult> page(ShopOrderGoodsParam param) { + // 使用关联查询 + return success(shopOrderGoodsService.pageRel(param)); + } + + @ApiOperation("查询全部商品信息") + @GetMapping() + public ApiResult> list(ShopOrderGoodsParam param) { + // 使用关联查询 + return success(shopOrderGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderGoods:list')") + @ApiOperation("根据id查询商品信息") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderGoodsService.getByIdRel(id)); + } + + @ApiOperation("添加商品信息") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderGoods shopOrderGoods) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopOrderGoods.setUserId(loginUser.getUserId()); + } + if (shopOrderGoodsService.save(shopOrderGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商品信息") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderGoods shopOrderGoods) { + if (shopOrderGoodsService.updateById(shopOrderGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商品信息") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商品信息") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商品信息") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderGoodsService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商品信息") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoController.java new file mode 100644 index 0000000..343faf2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderInfoService; +import com.gxwebsoft.shop.entity.ShopOrderInfo; +import com.gxwebsoft.shop.param.ShopOrderInfoParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 场地控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "场地管理") +@RestController +@RequestMapping("/api/shop/shop-order-info") +public class ShopOrderInfoController extends BaseController { + @Resource + private ShopOrderInfoService shopOrderInfoService; + + @ApiOperation("分页查询场地") + @GetMapping("/page") + public ApiResult> page(ShopOrderInfoParam param) { + // 使用关联查询 + return success(shopOrderInfoService.pageRel(param)); + } + + @ApiOperation("查询全部场地") + @GetMapping() + public ApiResult> list(ShopOrderInfoParam param) { + // 使用关联查询 + return success(shopOrderInfoService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderInfo:list')") + @ApiOperation("根据id查询场地") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderInfoService.getByIdRel(id)); + } + + @ApiOperation("添加场地") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderInfo shopOrderInfo) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopOrderInfo.setUserId(loginUser.getUserId()); + } + if (shopOrderInfoService.save(shopOrderInfo)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改场地") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderInfo shopOrderInfo) { + if (shopOrderInfoService.updateById(shopOrderInfo)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除场地") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderInfoService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加场地") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderInfoService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改场地") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderInfoService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除场地") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderInfoService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoLogController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoLogController.java new file mode 100644 index 0000000..e6d7952 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderInfoLogController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopOrderInfoLogService; +import com.gxwebsoft.shop.entity.ShopOrderInfoLog; +import com.gxwebsoft.shop.param.ShopOrderInfoLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 订单核销控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "订单核销管理") +@RestController +@RequestMapping("/api/shop/shop-order-info-log") +public class ShopOrderInfoLogController extends BaseController { + @Resource + private ShopOrderInfoLogService shopOrderInfoLogService; + + @ApiOperation("分页查询订单核销") + @GetMapping("/page") + public ApiResult> page(ShopOrderInfoLogParam param) { + // 使用关联查询 + return success(shopOrderInfoLogService.pageRel(param)); + } + + @ApiOperation("查询全部订单核销") + @GetMapping() + public ApiResult> list(ShopOrderInfoLogParam param) { + // 使用关联查询 + return success(shopOrderInfoLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopOrderInfoLog:list')") + @ApiOperation("根据id查询订单核销") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopOrderInfoLogService.getByIdRel(id)); + } + + @ApiOperation("添加订单核销") + @PostMapping() + public ApiResult save(@RequestBody ShopOrderInfoLog shopOrderInfoLog) { + if (shopOrderInfoLogService.save(shopOrderInfoLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改订单核销") + @PutMapping() + public ApiResult update(@RequestBody ShopOrderInfoLog shopOrderInfoLog) { + if (shopOrderInfoLogService.updateById(shopOrderInfoLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除订单核销") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopOrderInfoLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加订单核销") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopOrderInfoLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改订单核销") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopOrderInfoLogService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除订单核销") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopOrderInfoLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopRechargeOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopRechargeOrderController.java new file mode 100644 index 0000000..aed7816 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopRechargeOrderController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopRechargeOrderService; +import com.gxwebsoft.shop.entity.ShopRechargeOrder; +import com.gxwebsoft.shop.param.ShopRechargeOrderParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 会员充值订单表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Api(tags = "会员充值订单表管理") +@RestController +@RequestMapping("/api/shop/shop-recharge-order") +public class ShopRechargeOrderController extends BaseController { + @Resource + private ShopRechargeOrderService shopRechargeOrderService; + + @ApiOperation("分页查询会员充值订单表") + @GetMapping("/page") + public ApiResult> page(ShopRechargeOrderParam param) { + // 使用关联查询 + return success(shopRechargeOrderService.pageRel(param)); + } + + @ApiOperation("查询全部会员充值订单表") + @GetMapping() + public ApiResult> list(ShopRechargeOrderParam param) { + // 使用关联查询 + return success(shopRechargeOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopRechargeOrder:list')") + @ApiOperation("根据id查询会员充值订单表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopRechargeOrderService.getByIdRel(id)); + } + + @ApiOperation("添加会员充值订单表") + @PostMapping() + public ApiResult save(@RequestBody ShopRechargeOrder shopRechargeOrder) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopRechargeOrder.setUserId(loginUser.getUserId()); + } + if (shopRechargeOrderService.save(shopRechargeOrder)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改会员充值订单表") + @PutMapping() + public ApiResult update(@RequestBody ShopRechargeOrder shopRechargeOrder) { + if (shopRechargeOrderService.updateById(shopRechargeOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除会员充值订单表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopRechargeOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加会员充值订单表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopRechargeOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改会员充值订单表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopRechargeOrderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除会员充值订单表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopRechargeOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopSpecController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopSpecController.java new file mode 100644 index 0000000..7c14a20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopSpecController.java @@ -0,0 +1,126 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopSpecService; +import com.gxwebsoft.shop.entity.ShopSpec; +import com.gxwebsoft.shop.param.ShopSpecParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 规格控制器 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Api(tags = "规格管理") +@RestController +@RequestMapping("/api/shop/shop-spec") +public class ShopSpecController extends BaseController { + @Resource + private ShopSpecService shopSpecService; + + @ApiOperation("分页查询规格") + @GetMapping("/page") + public ApiResult> page(ShopSpecParam param) { + // 使用关联查询 + return success(shopSpecService.pageRel(param)); + } + + @ApiOperation("查询全部规格") + @GetMapping() + public ApiResult> list(ShopSpecParam param) { + // 使用关联查询 + return success(shopSpecService.listRel(param)); + } + + @ApiOperation("根据id查询规格") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopSpecService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:save')") + @OperationLog + @ApiOperation("添加规格") + @PostMapping() + public ApiResult save(@RequestBody ShopSpec shopSpec) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopSpec.setUserId(loginUser.getUserId()); + } + if (shopSpecService.save(shopSpec)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:update')") + @OperationLog + @ApiOperation("修改规格") + @PutMapping() + public ApiResult update(@RequestBody ShopSpec shopSpec) { + if (shopSpecService.updateById(shopSpec)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:remove')") + @OperationLog + @ApiOperation("删除规格") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopSpecService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:save')") + @OperationLog + @ApiOperation("批量添加规格") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopSpecService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:update')") + @OperationLog + @ApiOperation("批量修改规格") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopSpecService, "spec_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpec:remove')") + @OperationLog + @ApiOperation("批量删除规格") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopSpecService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopSpecValueController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopSpecValueController.java new file mode 100644 index 0000000..2e34bac --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopSpecValueController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopSpecValueService; +import com.gxwebsoft.shop.entity.ShopSpecValue; +import com.gxwebsoft.shop.param.ShopSpecValueParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 规格值控制器 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Api(tags = "规格值管理") +@RestController +@RequestMapping("/api/shop/shop-spec-value") +public class ShopSpecValueController extends BaseController { + @Resource + private ShopSpecValueService shopSpecValueService; + + @ApiOperation("分页查询规格值") + @GetMapping("/page") + public ApiResult> page(ShopSpecValueParam param) { + // 使用关联查询 + return success(shopSpecValueService.pageRel(param)); + } + + @ApiOperation("查询全部规格值") + @GetMapping() + public ApiResult> list(ShopSpecValueParam param) { + // 使用关联查询 + return success(shopSpecValueService.listRel(param)); + } + + @ApiOperation("根据id查询规格值") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopSpecValueService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:save')") + @OperationLog + @ApiOperation("添加规格值") + @PostMapping() + public ApiResult save(@RequestBody ShopSpecValue shopSpecValue) { + if (shopSpecValueService.save(shopSpecValue)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:update')") + @OperationLog + @ApiOperation("修改规格值") + @PutMapping() + public ApiResult update(@RequestBody ShopSpecValue shopSpecValue) { + if (shopSpecValueService.updateById(shopSpecValue)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:remove')") + @OperationLog + @ApiOperation("删除规格值") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopSpecValueService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:save')") + @OperationLog + @ApiOperation("批量添加规格值") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopSpecValueService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:update')") + @OperationLog + @ApiOperation("批量修改规格值") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopSpecValueService, "spec_value_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:shopSpecValue:remove')") + @OperationLog + @ApiOperation("批量删除规格值") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopSpecValueService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopSplashController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopSplashController.java new file mode 100644 index 0000000..5e21e5e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopSplashController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopSplashService; +import com.gxwebsoft.shop.entity.ShopSplash; +import com.gxwebsoft.shop.param.ShopSplashParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 开屏广告控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "开屏广告管理") +@RestController +@RequestMapping("/api/shop/shop-splash") +public class ShopSplashController extends BaseController { + @Resource + private ShopSplashService shopSplashService; + + @ApiOperation("分页查询开屏广告") + @GetMapping("/page") + public ApiResult> page(ShopSplashParam param) { + // 使用关联查询 + return success(shopSplashService.pageRel(param)); + } + + @ApiOperation("查询全部开屏广告") + @GetMapping() + public ApiResult> list(ShopSplashParam param) { + // 使用关联查询 + return success(shopSplashService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopSplash:list')") + @ApiOperation("根据id查询开屏广告") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopSplashService.getByIdRel(id)); + } + + @ApiOperation("添加开屏广告") + @PostMapping() + public ApiResult save(@RequestBody ShopSplash shopSplash) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopSplash.setUserId(loginUser.getUserId()); + } + if (shopSplashService.save(shopSplash)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改开屏广告") + @PutMapping() + public ApiResult update(@RequestBody ShopSplash shopSplash) { + if (shopSplashService.updateById(shopSplash)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除开屏广告") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopSplashService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加开屏广告") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopSplashService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改开屏广告") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopSplashService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除开屏广告") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopSplashService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopUserAddressController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopUserAddressController.java new file mode 100644 index 0000000..081a326 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopUserAddressController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopUserAddressService; +import com.gxwebsoft.shop.entity.ShopUserAddress; +import com.gxwebsoft.shop.param.ShopUserAddressParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 收货地址控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "收货地址管理") +@RestController +@RequestMapping("/api/shop/shop-user-address") +public class ShopUserAddressController extends BaseController { + @Resource + private ShopUserAddressService shopUserAddressService; + + @ApiOperation("分页查询收货地址") + @GetMapping("/page") + public ApiResult> page(ShopUserAddressParam param) { + // 使用关联查询 + return success(shopUserAddressService.pageRel(param)); + } + + @ApiOperation("查询全部收货地址") + @GetMapping() + public ApiResult> list(ShopUserAddressParam param) { + // 使用关联查询 + return success(shopUserAddressService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopUserAddress:list')") + @ApiOperation("根据id查询收货地址") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopUserAddressService.getByIdRel(id)); + } + + @ApiOperation("添加收货地址") + @PostMapping() + public ApiResult save(@RequestBody ShopUserAddress shopUserAddress) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopUserAddress.setUserId(loginUser.getUserId()); + } + if (shopUserAddressService.save(shopUserAddress)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改收货地址") + @PutMapping() + public ApiResult update(@RequestBody ShopUserAddress shopUserAddress) { + if (shopUserAddressService.updateById(shopUserAddress)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除收货地址") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopUserAddressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加收货地址") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopUserAddressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改收货地址") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopUserAddressService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除收货地址") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopUserAddressService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopUserBalanceLogController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopUserBalanceLogController.java new file mode 100644 index 0000000..b2bca3d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopUserBalanceLogController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopUserBalanceLogService; +import com.gxwebsoft.shop.entity.ShopUserBalanceLog; +import com.gxwebsoft.shop.param.ShopUserBalanceLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户余额变动明细表控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "用户余额变动明细表管理") +@RestController +@RequestMapping("/api/shop/shop-user-balance-log") +public class ShopUserBalanceLogController extends BaseController { + @Resource + private ShopUserBalanceLogService shopUserBalanceLogService; + + @ApiOperation("分页查询用户余额变动明细表") + @GetMapping("/page") + public ApiResult> page(ShopUserBalanceLogParam param) { + // 使用关联查询 + return success(shopUserBalanceLogService.pageRel(param)); + } + + @ApiOperation("查询全部用户余额变动明细表") + @GetMapping() + public ApiResult> list(ShopUserBalanceLogParam param) { + // 使用关联查询 + return success(shopUserBalanceLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopUserBalanceLog:list')") + @ApiOperation("根据id查询用户余额变动明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopUserBalanceLogService.getByIdRel(id)); + } + + @ApiOperation("添加用户余额变动明细表") + @PostMapping() + public ApiResult save(@RequestBody ShopUserBalanceLog shopUserBalanceLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopUserBalanceLog.setUserId(loginUser.getUserId()); + } + if (shopUserBalanceLogService.save(shopUserBalanceLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改用户余额变动明细表") + @PutMapping() + public ApiResult update(@RequestBody ShopUserBalanceLog shopUserBalanceLog) { + if (shopUserBalanceLogService.updateById(shopUserBalanceLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除用户余额变动明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopUserBalanceLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加用户余额变动明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopUserBalanceLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改用户余额变动明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopUserBalanceLogService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除用户余额变动明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopUserBalanceLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopUserCollectionController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopUserCollectionController.java new file mode 100644 index 0000000..451c1e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopUserCollectionController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopUserCollectionService; +import com.gxwebsoft.shop.entity.ShopUserCollection; +import com.gxwebsoft.shop.param.ShopUserCollectionParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 我的收藏控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "我的收藏管理") +@RestController +@RequestMapping("/api/shop/shop-user-collection") +public class ShopUserCollectionController extends BaseController { + @Resource + private ShopUserCollectionService shopUserCollectionService; + + @ApiOperation("分页查询我的收藏") + @GetMapping("/page") + public ApiResult> page(ShopUserCollectionParam param) { + // 使用关联查询 + return success(shopUserCollectionService.pageRel(param)); + } + + @ApiOperation("查询全部我的收藏") + @GetMapping() + public ApiResult> list(ShopUserCollectionParam param) { + // 使用关联查询 + return success(shopUserCollectionService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopUserCollection:list')") + @ApiOperation("根据id查询我的收藏") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopUserCollectionService.getByIdRel(id)); + } + + @ApiOperation("添加我的收藏") + @PostMapping() + public ApiResult save(@RequestBody ShopUserCollection shopUserCollection) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopUserCollection.setUserId(loginUser.getUserId()); + } + if (shopUserCollectionService.save(shopUserCollection)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改我的收藏") + @PutMapping() + public ApiResult update(@RequestBody ShopUserCollection shopUserCollection) { + if (shopUserCollectionService.updateById(shopUserCollection)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除我的收藏") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopUserCollectionService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加我的收藏") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopUserCollectionService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改我的收藏") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopUserCollectionService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除我的收藏") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopUserCollectionService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopUserRefereeController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopUserRefereeController.java new file mode 100644 index 0000000..4f041ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopUserRefereeController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopUserRefereeService; +import com.gxwebsoft.shop.entity.ShopUserReferee; +import com.gxwebsoft.shop.param.ShopUserRefereeParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户推荐关系表控制器 + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +@Api(tags = "用户推荐关系表管理") +@RestController +@RequestMapping("/api/shop/shop-user-referee") +public class ShopUserRefereeController extends BaseController { + @Resource + private ShopUserRefereeService shopUserRefereeService; + + @ApiOperation("分页查询用户推荐关系表") + @GetMapping("/page") + public ApiResult> page(ShopUserRefereeParam param) { + // 使用关联查询 + return success(shopUserRefereeService.pageRel(param)); + } + + @ApiOperation("查询全部用户推荐关系表") + @GetMapping() + public ApiResult> list(ShopUserRefereeParam param) { + // 使用关联查询 + return success(shopUserRefereeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopUserReferee:list')") + @ApiOperation("根据id查询用户推荐关系表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopUserRefereeService.getByIdRel(id)); + } + + @ApiOperation("添加用户推荐关系表") + @PostMapping() + public ApiResult save(@RequestBody ShopUserReferee shopUserReferee) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + shopUserReferee.setUserId(loginUser.getUserId()); + } + if (shopUserRefereeService.save(shopUserReferee)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改用户推荐关系表") + @PutMapping() + public ApiResult update(@RequestBody ShopUserReferee shopUserReferee) { + if (shopUserRefereeService.updateById(shopUserReferee)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除用户推荐关系表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopUserRefereeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加用户推荐关系表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopUserRefereeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改用户推荐关系表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopUserRefereeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除用户推荐关系表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopUserRefereeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopUsersController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopUsersController.java new file mode 100644 index 0000000..d8ee113 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopUsersController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopUsersService; +import com.gxwebsoft.shop.entity.ShopUsers; +import com.gxwebsoft.shop.param.ShopUsersParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "管理") +@RestController +@RequestMapping("/api/shop/shop-users") +public class ShopUsersController extends BaseController { + @Resource + private ShopUsersService shopUsersService; + + @ApiOperation("分页查询") + @GetMapping("/page") + public ApiResult> page(ShopUsersParam param) { + // 使用关联查询 + return success(shopUsersService.pageRel(param)); + } + + @ApiOperation("查询全部") + @GetMapping() + public ApiResult> list(ShopUsersParam param) { + // 使用关联查询 + return success(shopUsersService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopUsers:list')") + @ApiOperation("根据id查询") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopUsersService.getByIdRel(id)); + } + + @ApiOperation("添加") + @PostMapping() + public ApiResult save(@RequestBody ShopUsers shopUsers) { + if (shopUsersService.save(shopUsers)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改") + @PutMapping() + public ApiResult update(@RequestBody ShopUsers shopUsers) { + if (shopUsersService.updateById(shopUsers)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopUsersService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopUsersService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopUsersService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopUsersService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopWechatDepositController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopWechatDepositController.java new file mode 100644 index 0000000..cd571f1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopWechatDepositController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.ShopWechatDepositService; +import com.gxwebsoft.shop.entity.ShopWechatDeposit; +import com.gxwebsoft.shop.param.ShopWechatDepositParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 押金控制器 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Api(tags = "押金管理") +@RestController +@RequestMapping("/api/shop/shop-wechat-deposit") +public class ShopWechatDepositController extends BaseController { + @Resource + private ShopWechatDepositService shopWechatDepositService; + + @ApiOperation("分页查询押金") + @GetMapping("/page") + public ApiResult> page(ShopWechatDepositParam param) { + // 使用关联查询 + return success(shopWechatDepositService.pageRel(param)); + } + + @ApiOperation("查询全部押金") + @GetMapping() + public ApiResult> list(ShopWechatDepositParam param) { + // 使用关联查询 + return success(shopWechatDepositService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:shopWechatDeposit:list')") + @ApiOperation("根据id查询押金") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(shopWechatDepositService.getByIdRel(id)); + } + + @ApiOperation("添加押金") + @PostMapping() + public ApiResult save(@RequestBody ShopWechatDeposit shopWechatDeposit) { + if (shopWechatDepositService.save(shopWechatDeposit)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改押金") + @PutMapping() + public ApiResult update(@RequestBody ShopWechatDeposit shopWechatDeposit) { + if (shopWechatDepositService.updateById(shopWechatDeposit)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除押金") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (shopWechatDepositService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加押金") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (shopWechatDepositService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改押金") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(shopWechatDepositService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除押金") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (shopWechatDepositService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopBrand.java b/src/main/java/com/gxwebsoft/shop/entity/ShopBrand.java new file mode 100644 index 0000000..5f4b45b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopBrand.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 品牌 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopBrand对象", description = "品牌") +public class ShopBrand implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "brand_id", type = IdType.AUTO) + private Integer brandId; + + @ApiModelProperty(value = "品牌名称") + private String brandName; + + @ApiModelProperty(value = "图标") + private String image; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopCart.java b/src/main/java/com/gxwebsoft/shop/entity/ShopCart.java new file mode 100644 index 0000000..1601930 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopCart.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 购物车 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopCart对象", description = "购物车") +public class ShopCart implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "购物车表ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "类型 0商城 1外卖") + private Integer type; + + @ApiModelProperty(value = "唯一标识") + private String code; + + @ApiModelProperty(value = "商品ID") + private Long goodsId; + + @ApiModelProperty(value = "商品规格") + private String spec; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "商品数量") + private Integer cartNum; + + @ApiModelProperty(value = "单商品合计") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "0 = 未购买 1 = 已购买") + private Boolean isPay; + + @ApiModelProperty(value = "是否为立即购买") + private Boolean isNew; + + @ApiModelProperty(value = "是否为立即购买") + private Boolean isShow; + + @ApiModelProperty(value = "拼团id") + private Integer combinationId; + + @ApiModelProperty(value = "秒杀产品ID") + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + private Integer bargainId; + + @ApiModelProperty(value = "是否选中") + private Boolean selected; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopCategory.java b/src/main/java/com/gxwebsoft/shop/entity/ShopCategory.java new file mode 100644 index 0000000..2ae1e0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopCategory.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品分类 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopCategory对象", description = "商品分类") +public class ShopCategory implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "模型") + private String model; + + @ApiModelProperty(value = "标识") + private String code; + + @ApiModelProperty(value = "链接地址") + private String path; + + @ApiModelProperty(value = "组件地址") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "banner") + private String banner; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + private Integer permission; + + @ApiModelProperty(value = "访问密码") + private String password; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + private Integer position; + + @ApiModelProperty(value = "仅在顶部显示") + private Integer top; + + @ApiModelProperty(value = "仅在底部显示") + private Integer bottom; + + @ApiModelProperty(value = "菜单选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "语言") + private String lang; + + @ApiModelProperty(value = "设为首页") + private Integer home; + + @ApiModelProperty(value = "推荐") + private Integer recommend; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopChatConversation.java b/src/main/java/com/gxwebsoft/shop/entity/ShopChatConversation.java new file mode 100644 index 0000000..ce59053 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopChatConversation.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 聊天消息表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopChatConversation对象", description = "聊天消息表") +public class ShopChatConversation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "好友ID") + private Integer friendId; + + @ApiModelProperty(value = "消息类型") + private Integer type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "未读消息") + private Integer unRead; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopChatMessage.java b/src/main/java/com/gxwebsoft/shop/entity/ShopChatMessage.java new file mode 100644 index 0000000..8ebd01d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopChatMessage.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 聊天消息表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopChatMessage对象", description = "聊天消息表") +public class ShopChatMessage implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "发送人ID") + private Integer formUserId; + + @ApiModelProperty(value = "接收人ID") + private Integer toUserId; + + @ApiModelProperty(value = "消息类型") + private String type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "屏蔽接收方") + private Integer sideTo; + + @ApiModelProperty(value = "屏蔽发送方") + private Integer sideFrom; + + @ApiModelProperty(value = "是否撤回") + private Integer withdraw; + + @ApiModelProperty(value = "文件信息") + private String fileInfo; + + @ApiModelProperty(value = "存在联系方式") + private Integer hasContact; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopCommissionRole.java b/src/main/java/com/gxwebsoft/shop/entity/ShopCommissionRole.java new file mode 100644 index 0000000..fb151aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopCommissionRole.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分红角色 + * + * @author 科技小王子 + * @since 2025-05-01 10:01:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopCommissionRole对象", description = "分红角色") +public class ShopCommissionRole implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private String title; + + private Integer provinceId; + + private Integer cityId; + + private Integer regionId; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopCount.java b/src/main/java/com/gxwebsoft/shop/entity/ShopCount.java new file mode 100644 index 0000000..c4f0dc6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopCount.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商城销售统计表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopCount对象", description = "商城销售统计表") +public class ShopCount implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "统计日期") + private LocalDate dateTime; + + @ApiModelProperty(value = "总销售额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "今日销售额") + private BigDecimal todayPrice; + + @ApiModelProperty(value = "总会员数") + private BigDecimal totalUsers; + + @ApiModelProperty(value = "今日新增") + private BigDecimal todayUsers; + + @ApiModelProperty(value = "总订单笔数") + private BigDecimal totalOrders; + + @ApiModelProperty(value = "今日订单笔数") + private BigDecimal todayOrders; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerApply.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerApply.java new file mode 100644 index 0000000..d15c650 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerApply.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商申请记录表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerApply对象", description = "分销商申请记录表") +public class ShopDealerApply implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "apply_id", type = IdType.AUTO) + private Integer applyId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "姓名") + private String realName; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "推荐人用户ID") + private Integer refereeId; + + @ApiModelProperty(value = "申请方式(10需后台审核 20无需审核)") + private Integer applyType; + + @ApiModelProperty(value = "申请时间") + private Integer applyTime; + + @ApiModelProperty(value = "审核状态 (10待审核 20审核通过 30驳回)") + private Integer applyStatus; + + @ApiModelProperty(value = "审核时间") + private Integer auditTime; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + + @ApiModelProperty(value = "商城ID") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java new file mode 100644 index 0000000..fbf3ab5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerCapital.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商资金明细表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerCapital对象", description = "分销商资金明细表") +public class ShopDealerCapital implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + private Integer userId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入)") + private Integer flowType; + + @ApiModelProperty(value = "金额") + private BigDecimal money; + + @ApiModelProperty(value = "描述") + private String describe; + + @ApiModelProperty(value = "对方用户ID") + private Integer toUserId; + + @ApiModelProperty(value = "商城ID") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java new file mode 100644 index 0000000..ca3bc97 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerOrder.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商订单记录表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerOrder对象", description = "分销商订单记录表") +public class ShopDealerOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "买家用户ID") + private Integer userId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "订单总金额(不含运费)") + private BigDecimal orderPrice; + + @ApiModelProperty(value = "分销商用户id(一级)") + private Integer firstUserId; + + @ApiModelProperty(value = "分销商用户id(二级)") + private Integer secondUserId; + + @ApiModelProperty(value = "分销商用户id(三级)") + private Integer thirdUserId; + + @ApiModelProperty(value = "分销佣金(一级)") + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "订单是否失效(0未失效 1已失效)") + private Integer isInvalid; + + @ApiModelProperty(value = "佣金结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "结算时间") + private Integer settleTime; + + @ApiModelProperty(value = "商城ID") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerReferee.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerReferee.java new file mode 100644 index 0000000..14a2e92 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerReferee.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商推荐关系表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerReferee对象", description = "分销商推荐关系表") +public class ShopDealerReferee implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + private Integer level; + + @ApiModelProperty(value = "商城ID") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerSetting.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerSetting.java new file mode 100644 index 0000000..19db922 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerSetting.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商设置表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerSetting对象", description = "分销商设置表") +public class ShopDealerSetting implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设置项标示") + @TableId(value = "key", type = IdType.AUTO) + private String key; + + @ApiModelProperty(value = "设置项描述") + private String describe; + + @ApiModelProperty(value = "设置内容(json格式)") + private String values; + + @ApiModelProperty(value = "商城ID") + private Integer tenantId; + + @ApiModelProperty(value = "更新时间") + private Integer updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerUser.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerUser.java new file mode 100644 index 0000000..80e5ac1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerUser.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商用户记录表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerUser对象", description = "分销商用户记录表") +public class ShopDealerUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "自增ID") + private Integer userId; + + @ApiModelProperty(value = "姓名") + private String realName; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "支付密码") + private String payPassword; + + @ApiModelProperty(value = "当前可提现佣金") + private BigDecimal money; + + @ApiModelProperty(value = "已冻结佣金") + private BigDecimal freezeMoney; + + @ApiModelProperty(value = "累积提现佣金") + private BigDecimal totalMoney; + + @ApiModelProperty(value = "推荐人用户ID") + private Integer refereeId; + + @ApiModelProperty(value = "成员数量(一级)") + private Integer firstNum; + + @ApiModelProperty(value = "成员数量(二级)") + private Integer secondNum; + + @ApiModelProperty(value = "成员数量(三级)") + private Integer thirdNum; + + @ApiModelProperty(value = "专属二维码") + private String qrcode; + + @ApiModelProperty(value = "是否删除") + private Integer isDelete; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java new file mode 100644 index 0000000..ee56590 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopDealerWithdraw.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商提现明细表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopDealerWithdraw对象", description = "分销商提现明细表") +public class ShopDealerWithdraw implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + private Integer userId; + + @ApiModelProperty(value = "提现金额") + private BigDecimal money; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "申请状态 (10待审核 20审核通过 30驳回 40已打款)") + private Integer applyStatus; + + @ApiModelProperty(value = "审核时间") + private Integer auditTime; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + + @ApiModelProperty(value = "来源客户端(APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopExpress.java b/src/main/java/com/gxwebsoft/shop/entity/ShopExpress.java new file mode 100644 index 0000000..a629b99 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopExpress.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 物流公司 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopExpress对象", description = "物流公司") +public class ShopExpress implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物流公司ID") + @TableId(value = "express_id", type = IdType.AUTO) + private Integer expressId; + + @ApiModelProperty(value = "物流公司名称") + private String expressName; + + @ApiModelProperty(value = "物流公司编码 (微信)") + private String wxCode; + + @ApiModelProperty(value = "物流公司编码 (快递100)") + private String kuaidi100Code; + + @ApiModelProperty(value = "物流公司编码 (快递鸟)") + private String kdniaoCode; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplate.java b/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplate.java new file mode 100644 index 0000000..afa9854 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplate.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 运费模板 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopExpressTemplate对象", description = "运费模板") +public class ShopExpressTemplate implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private Boolean type; + + private String title; + + @ApiModelProperty(value = "收件价格") + private BigDecimal firstAmount; + + @ApiModelProperty(value = "续件价格") + private BigDecimal extraAmount; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + + private Integer sortNumber; + + @ApiModelProperty(value = "首件数量/重量") + private BigDecimal firstNum; + + @ApiModelProperty(value = "续件数量/重量") + private BigDecimal extraNum; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplateDetail.java b/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplateDetail.java new file mode 100644 index 0000000..e108593 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopExpressTemplateDetail.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 运费模板 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopExpressTemplateDetail对象", description = "运费模板") +public class ShopExpressTemplateDetail implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private Integer templateId; + + @ApiModelProperty(value = "0按件") + private Boolean type; + + private Integer provinceId; + + private Integer cityId; + + @ApiModelProperty(value = "首件数量/重量") + private BigDecimal firstNum; + + @ApiModelProperty(value = "收件价格") + private BigDecimal firstAmount; + + @ApiModelProperty(value = "续件价格") + private BigDecimal extraAmount; + + @ApiModelProperty(value = "续件数量/重量") + private BigDecimal extraNum; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java new file mode 100644 index 0000000..2bf211c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoods.java @@ -0,0 +1,142 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoods对象", description = "商品") +public class ShopGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "goods_id", type = IdType.AUTO) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String name; + + @ApiModelProperty(value = "产品编码") + private String code; + + @ApiModelProperty(value = "类型 0软件产品 1实物商品 2虚拟商品") + private Integer type; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "父级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "产品分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "路由地址") + private String path; + + @ApiModelProperty(value = "标签") + private String tag; + + @ApiModelProperty(value = "产品规格 0单规格 1多规格") + private Integer specs; + + @ApiModelProperty(value = "货架") + private String position; + + @ApiModelProperty(value = "单位名称 (个)") + private String unitName; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "进货价格") + private BigDecimal buyingPrice; + + @ApiModelProperty(value = "经销商价格") + private BigDecimal dealerPrice; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + private Integer deductStockType; + + @ApiModelProperty(value = "交付方式(0不启用)") + private Integer deliveryMethod; + + @ApiModelProperty(value = "购买时长(0不启用,1 一次性,2 按时长)") + private Integer durationMethod; + + @ApiModelProperty(value = "可购买数量") + private Integer canBuyNumber; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "轮播图") + private String files; + + @ApiModelProperty(value = "销量") + private Integer sales; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "安装次数") + private Integer install; + + @ApiModelProperty(value = "评分") + private BigDecimal rate; + + @ApiModelProperty(value = "消费赚取积分") + private BigDecimal gainIntegral; + + @ApiModelProperty(value = "推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否官方") + private Integer official; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "是否展示") + private Boolean isShow; + + @ApiModelProperty(value = "状态, 0上架 1待上架 2待审核 3审核不通过") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCategory.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCategory.java new file mode 100644 index 0000000..4a9bbfa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCategory.java @@ -0,0 +1,93 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品分类 + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsCategory对象", description = "商品分类") +public class ShopGoodsCategory implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0商城分类 1外卖分类") + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商品数量") + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + private Integer showIndex; + + @ApiModelProperty(value = "商铺ID") + private Long merchantId; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsComment.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsComment.java new file mode 100644 index 0000000..73ae816 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsComment.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 评论表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsComment对象", description = "评论表") +public class ShopGoodsComment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评论ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer uid; + + @ApiModelProperty(value = "订单ID") + private Integer oid; + + @ApiModelProperty(value = "商品唯一id") + private String unique; + + @ApiModelProperty(value = "商品id") + private Integer goodsId; + + @ApiModelProperty(value = "某种商品类型(普通商品、秒杀商品)") + private String replyType; + + @ApiModelProperty(value = "商品分数") + private Boolean goodsScore; + + @ApiModelProperty(value = "服务分数") + private Boolean serviceScore; + + @ApiModelProperty(value = "评论内容") + private String comment; + + @ApiModelProperty(value = "评论图片") + private String pics; + + @ApiModelProperty(value = "管理员回复内容") + private String merchantReplyContent; + + @ApiModelProperty(value = "管理员回复时间") + private Integer merchantReplyTime; + + @ApiModelProperty(value = "0未删除1已删除") + private Boolean isDel; + + @ApiModelProperty(value = "0未回复1已回复") + private Boolean isReply; + + @ApiModelProperty(value = "用户名称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "商品规格属性值,多个,号隔开") + private String sku; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCoupon.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCoupon.java new file mode 100644 index 0000000..33a2630 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsCoupon.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品优惠券表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsCoupon对象", description = "商品优惠券表") +public class ShopGoodsCoupon implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品id") + private Integer goodsId; + + @ApiModelProperty(value = "优惠劵id") + private Integer issueCouponId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsIncomeConfig.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsIncomeConfig.java new file mode 100644 index 0000000..2a44170 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsIncomeConfig.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分润配置 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsIncomeConfig对象", description = "分润配置") +public class ShopGoodsIncomeConfig implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private Integer goodsId; + + @ApiModelProperty(value = "店铺类型") + private String merchantShopType; + + private Integer skuId; + + @ApiModelProperty(value = "比例") + private BigDecimal rate; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsLog.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsLog.java new file mode 100644 index 0000000..13ac7b7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsLog.java @@ -0,0 +1,83 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品日志表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsLog对象", description = "商品日志表") +public class ShopGoodsLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "统计ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "类型visit,cart,order,pay,collect,refund") + private String type; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "是否浏览") + private Boolean visitNum; + + @ApiModelProperty(value = "加入购物车数量") + private Integer cartNum; + + @ApiModelProperty(value = "下单数量") + private Integer orderNum; + + @ApiModelProperty(value = "支付数量") + private Integer payNum; + + @ApiModelProperty(value = "支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "商品成本价") + private BigDecimal costPrice; + + @ApiModelProperty(value = "支付用户ID") + private Integer payUid; + + @ApiModelProperty(value = "退款数量") + private Integer refundNum; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundPrice; + + @ApiModelProperty(value = "收藏") + private Boolean collectNum; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRelation.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRelation.java new file mode 100644 index 0000000..bce20da --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRelation.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品点赞和收藏表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsRelation对象", description = "商品点赞和收藏表") +public class ShopGoodsRelation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "类型(收藏(collect)、点赞(like))") + private String type; + + @ApiModelProperty(value = "某种类型的商品(普通商品、秒杀商品)") + private String category; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRoleCommission.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRoleCommission.java new file mode 100644 index 0000000..7a6931a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsRoleCommission.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品绑定角色的分润金额 + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsRoleCommission对象", description = "商品绑定角色的分润金额") +public class ShopGoodsRoleCommission implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private Integer roleId; + + private Integer goodsId; + + private String sku; + + private BigDecimal amount; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSku.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSku.java new file mode 100644 index 0000000..4c78d12 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSku.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品sku列表 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsSku对象", description = "商品sku列表") +public class ShopGoodsSku implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String sku; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品价格") + private BigDecimal price; + + @ApiModelProperty(value = "市场价格") + private BigDecimal salePrice; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "sku编码") + private String skuNo; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + + @ApiModelProperty(value = "唯一值") + private String uuid; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSpec.java b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSpec.java new file mode 100644 index 0000000..ba3c80d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopGoodsSpec.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品多规格 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopGoodsSpec对象", description = "商品多规格") +public class ShopGoodsSpec implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "规格ID") + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + private Boolean type; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopMerchant.java b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchant.java new file mode 100644 index 0000000..cfcc552 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchant.java @@ -0,0 +1,144 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopMerchant对象", description = "商户") +public class ShopMerchant implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "merchant_id", type = IdType.AUTO) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编号") + private String merchantCode; + + @ApiModelProperty(value = "商户类型") + private Integer type; + + @ApiModelProperty(value = "商户图标") + private String image; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "商户姓名") + private String realName; + + @ApiModelProperty(value = "店铺类型") + private String shopType; + + @ApiModelProperty(value = "项目分类") + private String itemType; + + @ApiModelProperty(value = "商户分类") + private String category; + + @ApiModelProperty(value = "商户经营分类") + private Integer merchantCategoryId; + + @ApiModelProperty(value = "商户分类") + private String merchantCategoryTitle; + + @ApiModelProperty(value = "经纬度") + private String lngAndLat; + + private String lng; + + private String lat; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "手续费") + private BigDecimal commission; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "资质图片") + private String files; + + @ApiModelProperty(value = "营业时间") + private String businessTime; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "每小时价格") + private BigDecimal price; + + @ApiModelProperty(value = "是否自营") + private Integer ownStore; + + @ApiModelProperty(value = "是否可以快递") + private Boolean canExpress; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否营业") + private Integer isOn; + + private String startTime; + + private String endTime; + + @ApiModelProperty(value = "是否需要审核") + private Integer goodsReview; + + @ApiModelProperty(value = "管理入口") + private String adminUrl; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantAccount.java b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantAccount.java new file mode 100644 index 0000000..41bde48 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantAccount.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户账号 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopMerchantAccount对象", description = "商户账号") +public class ShopMerchantAccount implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "角色ID") + private Integer roleId; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "密码") + @TableField(exist = false) + private String password; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantApply.java b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantApply.java new file mode 100644 index 0000000..3ce1ab0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantApply.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户入驻申请 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopMerchantApply对象", description = "商户入驻申请") +public class ShopMerchantApply implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "apply_id", type = IdType.AUTO) + private Integer applyId; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "店铺类型") + private String shopType; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户图标") + private String image; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "商户姓名") + private String realName; + + @ApiModelProperty(value = "社会信用代码") + private String merchantCode; + + @ApiModelProperty(value = "身份证号码") + private String idCard; + + @ApiModelProperty(value = "身份证正面") + private String sfz1; + + @ApiModelProperty(value = "身份证反面") + private String sfz2; + + @ApiModelProperty(value = "营业执照") + private String yyzz; + + @ApiModelProperty(value = "行业父级分类") + private Integer parentId; + + @ApiModelProperty(value = "行业分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "行业分类") + private String category; + + @ApiModelProperty(value = "手续费") + private BigDecimal commission; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "资质图片") + private String files; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @ApiModelProperty(value = "是否自营") + private Integer ownStore; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "是否需要审核") + private Integer goodsReview; + + @ApiModelProperty(value = "工作负责人") + private String name2; + + @ApiModelProperty(value = "驳回原因") + private String reason; + + @ApiModelProperty(value = "审核完成时间") + private Date completedTime; + + @ApiModelProperty(value = "审核状态") + private Boolean checkStatus; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "应用图标") + @TableField(exist = false) + private String logo; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantType.java b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantType.java new file mode 100644 index 0000000..b84edd4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopMerchantType.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户类型 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopMerchantType对象", description = "商户类型") +public class ShopMerchantType implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "店铺类型") + private String name; + + @ApiModelProperty(value = "店铺入驻条件") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrder.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrder.java new file mode 100644 index 0000000..3ed9660 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrder.java @@ -0,0 +1,261 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.List; + +import com.gxwebsoft.bszx.entity.BszxBm; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrder对象", description = "订单") +public class ShopOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单号") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单类型,0商城订单 1预定订单/外卖 2会员卡") + private Integer type; + + @ApiModelProperty(value = "快递/自提") + private Integer deliveryType; + + @ApiModelProperty(value = "下单渠道,0小程序预定 1俱乐部训练场 3活动订场") + private Integer channel; + + @ApiModelProperty(value = "微信支付订单号") + private String transactionId; + + @ApiModelProperty(value = "微信退款订单号") + private String refundOrder; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编号") + private String merchantCode; + + @ApiModelProperty(value = "使用的优惠券id") + private Integer couponId; + + @ApiModelProperty(value = "使用的会员卡id") + private String cardId; + + @ApiModelProperty(value = "关联管理员id") + private Integer adminId; + + @ApiModelProperty(value = "核销管理员id") + private Integer confirmId; + + @ApiModelProperty(value = "IC卡号") + private String icCard; + + @ApiModelProperty(value = "收货地址") + private String address; + + private String addressLat; + + private String addressLng; + + @ApiModelProperty(value = "自提店铺id") + private Integer selfTakeMerchantId; + + @ApiModelProperty(value = "自提店铺") + private String selfTakeMerchantName; + + @ApiModelProperty(value = "配送开始时间") + private String sendStartTime; + + @ApiModelProperty(value = "配送结束时间") + private String sendEndTime; + + @ApiModelProperty(value = "发货店铺id") + private Integer expressMerchantId; + + @ApiModelProperty(value = "发货店铺") + private String expressMerchantName; + + @ApiModelProperty(value = "订单总额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格") + private BigDecimal reducePrice; + + @ApiModelProperty(value = "实际付款") + private BigDecimal payPrice; + + @ApiModelProperty(value = "用于统计") + private BigDecimal price; + + @ApiModelProperty(value = "价钱,用于积分赠送") + private BigDecimal money; + + @ApiModelProperty(value = "退款金额") + private BigDecimal refundMoney; + + @ApiModelProperty(value = "教练价格") + private BigDecimal coachPrice; + + @ApiModelProperty(value = "购买数量") + private Integer totalNum; + + @ApiModelProperty(value = "教练id") + private Integer coachId; + + @ApiModelProperty(value = "来源ID,存商品ID") + private Integer formId; + + @ApiModelProperty(value = "支付的用户id") + private Integer payUserId; + + @ApiModelProperty(value = "0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付") + private Integer payType; + + @ApiModelProperty(value = "代付支付方式,0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付") + private Integer friendPayType; + + @ApiModelProperty(value = "0未付款,1已付款") + private Boolean payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + private Integer orderStatus; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + private Date deliveryTime; + + @ApiModelProperty(value = "优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡") + private Integer couponType; + + @ApiModelProperty(value = "优惠说明") + private String couponDesc; + + @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") + private String qrcode; + + @ApiModelProperty(value = "vip月卡年卡、ic月卡年卡回退次数") + private Integer returnNum; + + @ApiModelProperty(value = "vip充值回退金额") + private BigDecimal returnMoney; + + @ApiModelProperty(value = "预约详情开始时间数组") + private String startTime; + + @ApiModelProperty(value = "是否已开具发票:0未开发票,1已开发票,2不能开具发票") + private Integer isInvoice; + + @ApiModelProperty(value = "发票流水号") + private String invoiceNo; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "退款时间") + private Date refundTime; + + @ApiModelProperty(value = "申请退款时间") + private Date refundApplyTime; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单") + private Integer checkBill; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "系统版本号 0当前版本 value=其他版本") + private Integer version; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "真实姓名") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "手机号码(脱敏)") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "自提码") + private String selfTakeCode; + + @ApiModelProperty(value = "是否已收到赠品") + private Boolean hasTakeGift; + + @ApiModelProperty(value = "accessToken") + @TableField(exist = false) + private String accessToken; + + @ApiModelProperty(value = "openid") + @TableField(exist = false) + private String openid; + + @ApiModelProperty(value = "订单商品") + @TableField(exist = false) + private List orderGoods; + + @ApiModelProperty(value = "报名信息") + @TableField(exist = false) + private BszxBm bm; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDelivery.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDelivery.java new file mode 100644 index 0000000..30c7ac0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDelivery.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 发货单 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderDelivery对象", description = "发货单") +public class ShopOrderDelivery implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "发货单ID") + @TableId(value = "delivery_id", type = IdType.AUTO) + private Integer deliveryId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "发货方式(10手动录入 20无需物流 30电子面单)") + private Integer deliveryMethod; + + @ApiModelProperty(value = "打包方式(废弃)") + private Integer packMethod; + + @ApiModelProperty(value = "物流公司ID") + private Integer expressId; + + @ApiModelProperty(value = "物流单号") + private String expressNo; + + @ApiModelProperty(value = "电子面单模板内容") + private String eorderHtml; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDeliveryGoods.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDeliveryGoods.java new file mode 100644 index 0000000..074a1cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderDeliveryGoods.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 发货单商品 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderDeliveryGoods对象", description = "发货单商品") +public class ShopOrderDeliveryGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "发货单ID") + private Integer deliveryId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "发货数量") + private Integer deliveryNum; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderExtract.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderExtract.java new file mode 100644 index 0000000..f58b7a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderExtract.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 自提订单联系方式 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderExtract对象", description = "自提订单联系方式") +public class ShopOrderExtract implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "联系人姓名") + private String linkman; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderGoods.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderGoods.java new file mode 100644 index 0000000..5f8d82a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderGoods.java @@ -0,0 +1,108 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalTime; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品信息 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderGoods对象", description = "商品信息") +public class ShopOrderGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + private Integer orderId; + + @ApiModelProperty(value = "订单标识") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "关联商品id") + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品规格") + private String spec; + + private Integer skuId; + + @ApiModelProperty(value = "单价") + private BigDecimal price; + + @ApiModelProperty(value = "购买数量") + private Integer totalNum; + + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") + private Integer payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + private Integer orderStatus; + + @ApiModelProperty(value = "是否免费:0收费、1免费") + private Boolean isFree; + + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") + private Integer version; + + @ApiModelProperty(value = "预约时间段") + private String timePeriod; + + @ApiModelProperty(value = "预定日期") + private LocalDate dateTime; + + @ApiModelProperty(value = "开场时间") + private LocalTime startTime; + + @ApiModelProperty(value = "结束时间") + private LocalTime endTime; + + @ApiModelProperty(value = "毫秒时间戳") + private Long timeFlag; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfo.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfo.java new file mode 100644 index 0000000..d80424d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfo.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalTime; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 场地 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderInfo对象", description = "场地") +public class ShopOrderInfo implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + private Integer orderId; + + @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "关联场地id") + private Integer fieldId; + + @ApiModelProperty(value = "场地名称") + private String fieldName; + + @ApiModelProperty(value = "单价") + private BigDecimal price; + + @ApiModelProperty(value = "儿童价") + private BigDecimal childrenPrice; + + @ApiModelProperty(value = "成人人数") + private Integer adultNum; + + @ApiModelProperty(value = "儿童人数") + private Integer childrenNum; + + @ApiModelProperty(value = "已核销的成人票数") + private Integer adultNumUse; + + @ApiModelProperty(value = "已核销的儿童票数") + private Integer childrenNumUse; + + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") + private Integer payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + private Integer orderStatus; + + @ApiModelProperty(value = "是否免费:0收费、1免费") + private Boolean isFree; + + @ApiModelProperty(value = "是否支持儿童票:0不支持、1支持") + private Boolean isChildren; + + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") + private Integer version; + + @ApiModelProperty(value = "预订类型:0全场,1半场") + private Boolean isHalf; + + @ApiModelProperty(value = "预约时间段") + private String timePeriod; + + @ApiModelProperty(value = "预定日期") + private LocalDate dateTime; + + @ApiModelProperty(value = "开场时间") + private LocalTime startTime; + + @ApiModelProperty(value = "结束时间") + private LocalTime endTime; + + @ApiModelProperty(value = "毫秒时间戳") + private Long timeFlag; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfoLog.java b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfoLog.java new file mode 100644 index 0000000..9034318 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopOrderInfoLog.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单核销 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopOrderInfoLog对象", description = "订单核销") +public class ShopOrderInfoLog implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + private Integer orderId; + + @ApiModelProperty(value = "关联商户ID") + private Long merchantId; + + @ApiModelProperty(value = "关联场地id") + private Integer fieldId; + + @ApiModelProperty(value = "核销数量") + private Boolean useNum; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopRechargeOrder.java b/src/main/java/com/gxwebsoft/shop/entity/ShopRechargeOrder.java new file mode 100644 index 0000000..6622f95 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopRechargeOrder.java @@ -0,0 +1,100 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 会员充值订单表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopRechargeOrder对象", description = "会员充值订单表") +public class ShopRechargeOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "充值方式(10自定义金额 20套餐充值)") + private Integer rechargeType; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "充值套餐ID") + private Integer planId; + + @ApiModelProperty(value = "用户支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "赠送金额") + private BigDecimal giftMoney; + + @ApiModelProperty(value = "实际到账金额") + private BigDecimal actualMoney; + + @ApiModelProperty(value = "用户可用余额") + private BigDecimal balance; + + @ApiModelProperty(value = "支付方式(微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "支付状态(10待支付 20已支付)") + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + private Integer payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + private Integer tradeId; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopSpec.java b/src/main/java/com/gxwebsoft/shop/entity/ShopSpec.java new file mode 100644 index 0000000..ad83c70 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopSpec.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopSpec对象", description = "规格") +public class ShopSpec implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格ID") + @TableId(value = "spec_id", type = IdType.AUTO) + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "创建用户") + private Integer userId; + + @ApiModelProperty(value = "更新者") + private Integer updater; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1待修,2异常已修,3异常未修") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopSpecValue.java b/src/main/java/com/gxwebsoft/shop/entity/ShopSpecValue.java new file mode 100644 index 0000000..3a11e93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopSpecValue.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格值 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopSpecValue对象", description = "规格值") +public class ShopSpecValue implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格值ID") + @TableId(value = "spec_value_id", type = IdType.AUTO) + private Integer specValueId; + + @ApiModelProperty(value = "规格组ID") + private Integer specId; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopSplash.java b/src/main/java/com/gxwebsoft/shop/entity/ShopSplash.java new file mode 100644 index 0000000..5ee4d41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopSplash.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 开屏广告 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopSplash对象", description = "开屏广告") +public class ShopSplash implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "跳转类型") + private String jumpType; + + @ApiModelProperty(value = "跳转主键") + private Integer jumpPk; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopUserAddress.java b/src/main/java/com/gxwebsoft/shop/entity/ShopUserAddress.java new file mode 100644 index 0000000..cdb2d9e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopUserAddress.java @@ -0,0 +1,74 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 收货地址 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopUserAddress对象", description = "收货地址") +public class ShopUserAddress implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "收货地址") + private String address; + + @ApiModelProperty(value = "收货地址") + private String fullAddress; + + private String lat; + + private String lng; + + @ApiModelProperty(value = "1先生 2女士") + private Integer gender; + + @ApiModelProperty(value = "家、公司、学校") + private String type; + + @ApiModelProperty(value = "默认收货地址") + private Boolean isDefault; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopUserBalanceLog.java b/src/main/java/com/gxwebsoft/shop/entity/ShopUserBalanceLog.java new file mode 100644 index 0000000..6e40475 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopUserBalanceLog.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户余额变动明细表 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopUserBalanceLog对象", description = "用户余额变动明细表") +public class ShopUserBalanceLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "余额变动场景(0下级下单1供应商收入2差价收益 10用户充值 20用户消费 30管理员操作 40订单退款)") + private Integer scene; + + @ApiModelProperty(value = "变动金额") + private BigDecimal money; + + @ApiModelProperty(value = "变动后余额") + private BigDecimal balance; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "操作人ID") + private Integer adminId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopUserCollection.java b/src/main/java/com/gxwebsoft/shop/entity/ShopUserCollection.java new file mode 100644 index 0000000..c854f72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopUserCollection.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.util.Date; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的收藏 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopUserCollection对象", description = "我的收藏") +public class ShopUserCollection implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "0店铺,1商品") + private Boolean type; + + @ApiModelProperty(value = "租户ID") + private Integer tid; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopUserReferee.java b/src/main/java/com/gxwebsoft/shop/entity/ShopUserReferee.java new file mode 100644 index 0000000..ded4c41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopUserReferee.java @@ -0,0 +1,103 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import com.kuaidi100.sdk.request.samecity.OrderGoods; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户推荐关系表 + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopUserReferee对象", description = "用户推荐关系表") +public class ShopUserReferee implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + + @ApiModelProperty(value = "被推荐人的报餐信息") + @TableField(exist = false) + private List order; + + @ApiModelProperty(value = "被推荐人的报餐菜品") + @TableField(exist = false) + private List orderGoods; + + @ApiModelProperty(value = "被推荐人昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "被推荐人头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "被推荐人等级ID") + @TableField(exist = false) + private Integer gradeId; + + @ApiModelProperty(value = "被推荐人等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "推荐人昵称") + @TableField(exist = false) + private String dealerName; + + @ApiModelProperty(value = "推荐人头像") + @TableField(exist = false) + private String dealerAvatar; + + @ApiModelProperty(value = "推荐人电话") + @TableField(exist = false) + private String dealerPhone; + + @ApiModelProperty(value = "用户所属门店") + private Long merchantId; + + @ApiModelProperty(value = "所属门店") + @TableField(exist = false) + private ShopMerchant merchant; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopUsers.java b/src/main/java/com/gxwebsoft/shop/entity/ShopUsers.java new file mode 100644 index 0000000..cd233ab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopUsers.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopUsers对象", description = "") +public class ShopUsers implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户唯一小程序id") + private String openId; + + @ApiModelProperty(value = "小程序用户秘钥") + private String sessionKey; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "头像地址") + private String avatarUrl; + + @ApiModelProperty(value = "1男,2女") + private Boolean gender; + + @ApiModelProperty(value = "国家") + private String country; + + @ApiModelProperty(value = "省份") + private String province; + + @ApiModelProperty(value = "城市") + private String city; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "积分") + private BigDecimal integral; + + @ApiModelProperty(value = "余额") + private BigDecimal money; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "注册时间") + private Integer createTime; + + private String idCard; + + private String realName; + + @ApiModelProperty(value = "是否管理员:1是;2否") + private Boolean isAdmin; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/ShopWechatDeposit.java b/src/main/java/com/gxwebsoft/shop/entity/ShopWechatDeposit.java new file mode 100644 index 0000000..1354249 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ShopWechatDeposit.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 押金 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ShopWechatDeposit对象", description = "押金") +public class ShopWechatDeposit implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "订单id") + private Integer oid; + + @ApiModelProperty(value = "用户id") + private Integer uid; + + @ApiModelProperty(value = "场地订单号") + private String orderNum; + + @ApiModelProperty(value = "付款订单号") + private String wechatOrder; + + @ApiModelProperty(value = "退款订单号 ") + private String wechatReturn; + + @ApiModelProperty(value = "场馆名称") + private String siteName; + + @ApiModelProperty(value = "微信昵称") + private String username; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "物品名称") + private String name; + + @ApiModelProperty(value = "押金金额") + private BigDecimal price; + + @ApiModelProperty(value = "押金状态,1已付款,2未付款,已退押金") + private Boolean status; + + @ApiModelProperty(value = "创建时间") + private Integer createTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopBrandMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopBrandMapper.java new file mode 100644 index 0000000..49a914d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopBrandMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopBrand; +import com.gxwebsoft.shop.param.ShopBrandParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 品牌Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopBrandMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopBrandParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopBrandParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopCartMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopCartMapper.java new file mode 100644 index 0000000..ae8b981 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopCartMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopCart; +import com.gxwebsoft.shop.param.ShopCartParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 购物车Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopCartMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopCartParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopCartParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopCategoryMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopCategoryMapper.java new file mode 100644 index 0000000..2cfd98c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopCategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopCategory; +import com.gxwebsoft.shop.param.ShopCategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品分类Mapper + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +public interface ShopCategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopCategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopCategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopChatConversationMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopChatConversationMapper.java new file mode 100644 index 0000000..483b761 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopChatConversationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopChatConversation; +import com.gxwebsoft.shop.param.ShopChatConversationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 聊天消息表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopChatConversationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopChatConversationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopChatConversationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopChatMessageMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopChatMessageMapper.java new file mode 100644 index 0000000..264bc4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopChatMessageMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopChatMessage; +import com.gxwebsoft.shop.param.ShopChatMessageParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 聊天消息表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopChatMessageMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopChatMessageParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopChatMessageParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopCommissionRoleMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopCommissionRoleMapper.java new file mode 100644 index 0000000..2f66f28 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopCommissionRoleMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopCommissionRole; +import com.gxwebsoft.shop.param.ShopCommissionRoleParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分红角色Mapper + * + * @author 科技小王子 + * @since 2025-05-01 10:01:15 + */ +public interface ShopCommissionRoleMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopCommissionRoleParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopCommissionRoleParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopCountMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopCountMapper.java new file mode 100644 index 0000000..24701c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopCountMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopCount; +import com.gxwebsoft.shop.param.ShopCountParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商城销售统计表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopCountMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopCountParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopCountParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerApplyMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerApplyMapper.java new file mode 100644 index 0000000..bceb69a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerApplyMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerApply; +import com.gxwebsoft.shop.param.ShopDealerApplyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商申请记录表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerApplyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerApplyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerApplyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java new file mode 100644 index 0000000..f529138 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerCapitalMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerCapital; +import com.gxwebsoft.shop.param.ShopDealerCapitalParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商资金明细表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerCapitalMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerCapitalParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerCapitalParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerOrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerOrderMapper.java new file mode 100644 index 0000000..9195373 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerOrderMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerOrder; +import com.gxwebsoft.shop.param.ShopDealerOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商订单记录表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerOrderParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerRefereeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerRefereeMapper.java new file mode 100644 index 0000000..f67023d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerRefereeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerReferee; +import com.gxwebsoft.shop.param.ShopDealerRefereeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商推荐关系表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerRefereeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerRefereeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerRefereeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerSettingMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerSettingMapper.java new file mode 100644 index 0000000..4c56589 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerSettingMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerSetting; +import com.gxwebsoft.shop.param.ShopDealerSettingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商设置表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerSettingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerSettingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerSettingParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerUserMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerUserMapper.java new file mode 100644 index 0000000..0c08b11 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerUser; +import com.gxwebsoft.shop.param.ShopDealerUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商用户记录表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerWithdrawMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerWithdrawMapper.java new file mode 100644 index 0000000..05d4f3f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopDealerWithdrawMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopDealerWithdraw; +import com.gxwebsoft.shop.param.ShopDealerWithdrawParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分销商提现明细表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerWithdrawMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopDealerWithdrawParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopDealerWithdrawParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressMapper.java new file mode 100644 index 0000000..e73101f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopExpress; +import com.gxwebsoft.shop.param.ShopExpressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 物流公司Mapper + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopExpressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopExpressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateDetailMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateDetailMapper.java new file mode 100644 index 0000000..cbb93ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateDetailMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopExpressTemplateDetail; +import com.gxwebsoft.shop.param.ShopExpressTemplateDetailParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 运费模板Mapper + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressTemplateDetailMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopExpressTemplateDetailParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopExpressTemplateDetailParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateMapper.java new file mode 100644 index 0000000..215e6ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopExpressTemplateMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopExpressTemplate; +import com.gxwebsoft.shop.param.ShopExpressTemplateParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 运费模板Mapper + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressTemplateMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopExpressTemplateParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopExpressTemplateParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCategoryMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCategoryMapper.java new file mode 100644 index 0000000..ff7e088 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsCategory; +import com.gxwebsoft.shop.param.ShopGoodsCategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品分类Mapper + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +public interface ShopGoodsCategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsCategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsCategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCommentMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCommentMapper.java new file mode 100644 index 0000000..302a1f0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCommentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsComment; +import com.gxwebsoft.shop.param.ShopGoodsCommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 评论表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsCommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsCommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsCommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCouponMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCouponMapper.java new file mode 100644 index 0000000..dd4d791 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsCouponMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsCoupon; +import com.gxwebsoft.shop.param.ShopGoodsCouponParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品优惠券表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsCouponMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsCouponParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsCouponParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsIncomeConfigMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsIncomeConfigMapper.java new file mode 100644 index 0000000..9091b99 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsIncomeConfigMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsIncomeConfig; +import com.gxwebsoft.shop.param.ShopGoodsIncomeConfigParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 分润配置Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsIncomeConfigMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsIncomeConfigParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsIncomeConfigParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsLogMapper.java new file mode 100644 index 0000000..946b338 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsLog; +import com.gxwebsoft.shop.param.ShopGoodsLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品日志表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsMapper.java new file mode 100644 index 0000000..144831d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoods; +import com.gxwebsoft.shop.param.ShopGoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品Mapper + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +public interface ShopGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRelationMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRelationMapper.java new file mode 100644 index 0000000..2e02403 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRelationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsRelation; +import com.gxwebsoft.shop.param.ShopGoodsRelationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品点赞和收藏表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsRelationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsRelationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsRelationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRoleCommissionMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRoleCommissionMapper.java new file mode 100644 index 0000000..d68181d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsRoleCommissionMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsRoleCommission; +import com.gxwebsoft.shop.param.ShopGoodsRoleCommissionParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品绑定角色的分润金额Mapper + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +public interface ShopGoodsRoleCommissionMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsRoleCommissionParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsRoleCommissionParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSkuMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSkuMapper.java new file mode 100644 index 0000000..072ebd9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSkuMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsSku; +import com.gxwebsoft.shop.param.ShopGoodsSkuParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品sku列表Mapper + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +public interface ShopGoodsSkuMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsSkuParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsSkuParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSpecMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSpecMapper.java new file mode 100644 index 0000000..503e262 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopGoodsSpecMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopGoodsSpec; +import com.gxwebsoft.shop.param.ShopGoodsSpecParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品多规格Mapper + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +public interface ShopGoodsSpecMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopGoodsSpecParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopGoodsSpecParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantAccountMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantAccountMapper.java new file mode 100644 index 0000000..cbbe061 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantAccountMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.gxwebsoft.shop.param.ShopMerchantAccountParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户账号Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantAccountMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopMerchantAccountParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopMerchantAccountParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantApplyMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantApplyMapper.java new file mode 100644 index 0000000..3377503 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantApplyMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopMerchantApply; +import com.gxwebsoft.shop.param.ShopMerchantApplyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户入驻申请Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantApplyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopMerchantApplyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopMerchantApplyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantMapper.java new file mode 100644 index 0000000..9169bd4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopMerchant; +import com.gxwebsoft.shop.param.ShopMerchantParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopMerchantParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopMerchantParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantTypeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantTypeMapper.java new file mode 100644 index 0000000..e1ea739 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopMerchantTypeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopMerchantType; +import com.gxwebsoft.shop.param.ShopMerchantTypeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户类型Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantTypeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopMerchantTypeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopMerchantTypeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryGoodsMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryGoodsMapper.java new file mode 100644 index 0000000..ae5af95 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryGoodsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderDeliveryGoods; +import com.gxwebsoft.shop.param.ShopOrderDeliveryGoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 发货单商品Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderDeliveryGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderDeliveryGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderDeliveryGoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryMapper.java new file mode 100644 index 0000000..cfe334b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderDeliveryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderDelivery; +import com.gxwebsoft.shop.param.ShopOrderDeliveryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 发货单Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderDeliveryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderDeliveryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderDeliveryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderExtractMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderExtractMapper.java new file mode 100644 index 0000000..643a832 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderExtractMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderExtract; +import com.gxwebsoft.shop.param.ShopOrderExtractParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 自提订单联系方式Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderExtractMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderExtractParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderExtractParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderGoodsMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderGoodsMapper.java new file mode 100644 index 0000000..d921da9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderGoodsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderGoods; +import com.gxwebsoft.shop.param.ShopOrderGoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品信息Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderGoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoLogMapper.java new file mode 100644 index 0000000..f7f98a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderInfoLog; +import com.gxwebsoft.shop.param.ShopOrderInfoLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 订单核销Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderInfoLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderInfoLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderInfoLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoMapper.java new file mode 100644 index 0000000..bbbc1ab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderInfoMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrderInfo; +import com.gxwebsoft.shop.param.ShopOrderInfoParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 场地Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderInfoMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderInfoParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderInfoParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderMapper.java new file mode 100644 index 0000000..21977a6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopOrderMapper.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.param.ShopOrderParam; +import org.apache.ibatis.annotations.Param; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 订单Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopOrderParam param); + + @InterceptorIgnore(tenantLine = "true") + ShopOrder getByOutTradeNo(@Param("outTradeNo") String outTradeNo); + + @InterceptorIgnore(tenantLine = "true") + void updateByOutTradeNo(@Param("param") ShopOrder order); +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopRechargeOrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopRechargeOrderMapper.java new file mode 100644 index 0000000..1c25555 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopRechargeOrderMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopRechargeOrder; +import com.gxwebsoft.shop.param.ShopRechargeOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员充值订单表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopRechargeOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopRechargeOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopRechargeOrderParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecMapper.java new file mode 100644 index 0000000..1999c43 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopSpec; +import com.gxwebsoft.shop.param.ShopSpecParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 规格Mapper + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +public interface ShopSpecMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopSpecParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopSpecParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecValueMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecValueMapper.java new file mode 100644 index 0000000..42815c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopSpecValueMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopSpecValue; +import com.gxwebsoft.shop.param.ShopSpecValueParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 规格值Mapper + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +public interface ShopSpecValueMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopSpecValueParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopSpecValueParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopSplashMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopSplashMapper.java new file mode 100644 index 0000000..db49cb4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopSplashMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopSplash; +import com.gxwebsoft.shop.param.ShopSplashParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 开屏广告Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopSplashMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopSplashParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopSplashParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopUserAddressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserAddressMapper.java new file mode 100644 index 0000000..6c32493 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserAddressMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopUserAddress; +import com.gxwebsoft.shop.param.ShopUserAddressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 收货地址Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserAddressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopUserAddressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopUserAddressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopUserBalanceLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserBalanceLogMapper.java new file mode 100644 index 0000000..4169458 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserBalanceLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopUserBalanceLog; +import com.gxwebsoft.shop.param.ShopUserBalanceLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户余额变动明细表Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserBalanceLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopUserBalanceLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopUserBalanceLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopUserCollectionMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserCollectionMapper.java new file mode 100644 index 0000000..f285ae4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserCollectionMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopUserCollection; +import com.gxwebsoft.shop.param.ShopUserCollectionParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 我的收藏Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserCollectionMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopUserCollectionParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopUserCollectionParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopUserRefereeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserRefereeMapper.java new file mode 100644 index 0000000..38f679f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopUserRefereeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopUserReferee; +import com.gxwebsoft.shop.param.ShopUserRefereeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户推荐关系表Mapper + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +public interface ShopUserRefereeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopUserRefereeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopUserRefereeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopUsersMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopUsersMapper.java new file mode 100644 index 0000000..f0c8b34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopUsersMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopUsers; +import com.gxwebsoft.shop.param.ShopUsersParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUsersMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopUsersParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopUsersParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ShopWechatDepositMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ShopWechatDepositMapper.java new file mode 100644 index 0000000..3c8424c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ShopWechatDepositMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ShopWechatDeposit; +import com.gxwebsoft.shop.param.ShopWechatDepositParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 押金Mapper + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopWechatDepositMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ShopWechatDepositParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ShopWechatDepositParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopBrandMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopBrandMapper.xml new file mode 100644 index 0000000..bf5177f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopBrandMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.* + FROM shop_brand a + + + AND a.brand_id = #{param.brandId} + + + AND a.brand_name LIKE CONCAT('%', #{param.brandName}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCartMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCartMapper.xml new file mode 100644 index 0000000..318a402 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCartMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.* + FROM shop_cart a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.goods_id LIKE CONCAT('%', #{param.goodsId}, '%') + + + AND a.spec LIKE CONCAT('%', #{param.spec}, '%') + + + AND a.price = #{param.price} + + + AND a.cart_num = #{param.cartNum} + + + AND a.total_price = #{param.totalPrice} + + + AND a.is_pay = #{param.isPay} + + + AND a.is_new = #{param.isNew} + + + AND a.is_show = #{param.isShow} + + + AND a.combination_id = #{param.combinationId} + + + AND a.seckill_id = #{param.seckillId} + + + AND a.bargain_id = #{param.bargainId} + + + AND a.selected = #{param.selected} + + + AND a.merchant_id LIKE CONCAT('%', #{param.merchantId}, '%') + + + AND a.user_id LIKE CONCAT('%', #{param.userId}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCategoryMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCategoryMapper.xml new file mode 100644 index 0000000..e3596c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCategoryMapper.xml @@ -0,0 +1,123 @@ + + + + + + + SELECT a.* + FROM shop_category a + + + AND a.id = #{param.id} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.model LIKE CONCAT('%', #{param.model}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.banner LIKE CONCAT('%', #{param.banner}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.hide = #{param.hide} + + + AND a.permission = #{param.permission} + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.position = #{param.position} + + + AND a.top = #{param.top} + + + AND a.bottom = #{param.bottom} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.style LIKE CONCAT('%', #{param.style}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.lang LIKE CONCAT('%', #{param.lang}, '%') + + + AND a.home = #{param.home} + + + AND a.recommend = #{param.recommend} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatConversationMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatConversationMapper.xml new file mode 100644 index 0000000..4f133fc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatConversationMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM shop_chat_conversation a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.friend_id = #{param.friendId} + + + AND a.type = #{param.type} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.un_read = #{param.unRead} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatMessageMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatMessageMapper.xml new file mode 100644 index 0000000..8210d37 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopChatMessageMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.* + FROM shop_chat_message a + + + AND a.id = #{param.id} + + + AND a.form_user_id = #{param.formUserId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.side_to = #{param.sideTo} + + + AND a.side_from = #{param.sideFrom} + + + AND a.withdraw = #{param.withdraw} + + + AND a.file_info LIKE CONCAT('%', #{param.fileInfo}, '%') + + + AND a.has_contact = #{param.hasContact} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCommissionRoleMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCommissionRoleMapper.xml new file mode 100644 index 0000000..74e6faa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCommissionRoleMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM shop_commission_role a + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.province_id = #{param.provinceId} + + + AND a.city_id = #{param.cityId} + + + AND a.region_id = #{param.regionId} + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCountMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCountMapper.xml new file mode 100644 index 0000000..78583ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopCountMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_count a + + + AND a.id = #{param.id} + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.total_price = #{param.totalPrice} + + + AND a.today_price = #{param.todayPrice} + + + AND a.total_users = #{param.totalUsers} + + + AND a.today_users = #{param.todayUsers} + + + AND a.total_orders = #{param.totalOrders} + + + AND a.today_orders = #{param.todayOrders} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerApplyMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerApplyMapper.xml new file mode 100644 index 0000000..0610b7f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerApplyMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_dealer_apply a + + + AND a.apply_id = #{param.applyId} + + + AND a.user_id = #{param.userId} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%') + + + AND a.referee_id = #{param.refereeId} + + + AND a.apply_type = #{param.applyType} + + + AND a.apply_time = #{param.applyTime} + + + AND a.apply_status = #{param.applyStatus} + + + AND a.audit_time = #{param.auditTime} + + + AND a.reject_reason LIKE CONCAT('%', #{param.rejectReason}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml new file mode 100644 index 0000000..9ac2841 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerCapitalMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.* + FROM shop_dealer_capital a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.order_id = #{param.orderId} + + + AND a.flow_type = #{param.flowType} + + + AND a.money = #{param.money} + + + AND a.describe LIKE CONCAT('%', #{param.describe}, '%') + + + AND a.to_user_id = #{param.toUserId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerOrderMapper.xml new file mode 100644 index 0000000..29b4b81 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerOrderMapper.xml @@ -0,0 +1,72 @@ + + + + + + + SELECT a.* + FROM shop_dealer_order a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.order_id = #{param.orderId} + + + AND a.order_price = #{param.orderPrice} + + + AND a.first_user_id = #{param.firstUserId} + + + AND a.second_user_id = #{param.secondUserId} + + + AND a.third_user_id = #{param.thirdUserId} + + + AND a.first_money = #{param.firstMoney} + + + AND a.second_money = #{param.secondMoney} + + + AND a.third_money = #{param.thirdMoney} + + + AND a.is_invalid = #{param.isInvalid} + + + AND a.is_settled = #{param.isSettled} + + + AND a.settle_time = #{param.settleTime} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerRefereeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerRefereeMapper.xml new file mode 100644 index 0000000..52ea387 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerRefereeMapper.xml @@ -0,0 +1,45 @@ + + + + + + + SELECT a.* + FROM shop_dealer_referee a + + + AND a.id = #{param.id} + + + AND a.dealer_id = #{param.dealerId} + + + AND a.user_id = #{param.userId} + + + AND a.level = #{param.level} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerSettingMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerSettingMapper.xml new file mode 100644 index 0000000..69d68d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerSettingMapper.xml @@ -0,0 +1,36 @@ + + + + + + + SELECT a.* + FROM shop_dealer_setting a + + + AND a.key = #{param.key} + + + AND a.describe LIKE CONCAT('%', #{param.describe}, '%') + + + AND a.values LIKE CONCAT('%', #{param.values}, '%') + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerUserMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerUserMapper.xml new file mode 100644 index 0000000..c03fabb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerUserMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.* + FROM shop_dealer_user a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%') + + + AND a.pay_password LIKE CONCAT('%', #{param.payPassword}, '%') + + + AND a.money = #{param.money} + + + AND a.freeze_money = #{param.freezeMoney} + + + AND a.total_money = #{param.totalMoney} + + + AND a.referee_id = #{param.refereeId} + + + AND a.first_num = #{param.firstNum} + + + AND a.second_num = #{param.secondNum} + + + AND a.third_num = #{param.thirdNum} + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.is_delete = #{param.isDelete} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml new file mode 100644 index 0000000..76cd671 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopDealerWithdrawMapper.xml @@ -0,0 +1,72 @@ + + + + + + + SELECT a.* + FROM shop_dealer_withdraw a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.money = #{param.money} + + + AND a.pay_type = #{param.payType} + + + AND a.alipay_name LIKE CONCAT('%', #{param.alipayName}, '%') + + + AND a.alipay_account LIKE CONCAT('%', #{param.alipayAccount}, '%') + + + AND a.bank_name LIKE CONCAT('%', #{param.bankName}, '%') + + + AND a.bank_account LIKE CONCAT('%', #{param.bankAccount}, '%') + + + AND a.bank_card LIKE CONCAT('%', #{param.bankCard}, '%') + + + AND a.apply_status = #{param.applyStatus} + + + AND a.audit_time = #{param.auditTime} + + + AND a.reject_reason LIKE CONCAT('%', #{param.rejectReason}, '%') + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressMapper.xml new file mode 100644 index 0000000..100e558 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM shop_express a + + + AND a.express_id = #{param.expressId} + + + AND a.express_name LIKE CONCAT('%', #{param.expressName}, '%') + + + AND a.wx_code LIKE CONCAT('%', #{param.wxCode}, '%') + + + AND a.kuaidi100_code LIKE CONCAT('%', #{param.kuaidi100Code}, '%') + + + AND a.kdniao_code LIKE CONCAT('%', #{param.kdniaoCode}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateDetailMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateDetailMapper.xml new file mode 100644 index 0000000..867265d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateDetailMapper.xml @@ -0,0 +1,72 @@ + + + + + + + SELECT a.* + FROM shop_express_template_detail a + + + AND a.id = #{param.id} + + + AND a.template_id = #{param.templateId} + + + AND a.type = #{param.type} + + + AND a.province_id = #{param.provinceId} + + + AND a.city_id = #{param.cityId} + + + AND a.first_num = #{param.firstNum} + + + AND a.first_amount = #{param.firstAmount} + + + AND a.extra_amount = #{param.extraAmount} + + + AND a.extra_num = #{param.extraNum} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateMapper.xml new file mode 100644 index 0000000..a0b1784 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopExpressTemplateMapper.xml @@ -0,0 +1,66 @@ + + + + + + + SELECT a.* + FROM shop_express_template a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.first_amount = #{param.firstAmount} + + + AND a.extra_amount = #{param.extraAmount} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.first_num = #{param.firstNum} + + + AND a.extra_num = #{param.extraNum} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCategoryMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCategoryMapper.xml new file mode 100644 index 0000000..74bf790 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCategoryMapper.xml @@ -0,0 +1,93 @@ + + + + + + + SELECT a.* + FROM shop_goods_category a + + + AND a.category_id = #{param.categoryId} + + + AND a.category_code LIKE CONCAT('%', #{param.categoryCode}, '%') + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.type = #{param.type} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.page_id = #{param.pageId} + + + AND a.user_id = #{param.userId} + + + AND a.count = #{param.count} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.hide = #{param.hide} + + + AND a.recommend = #{param.recommend} + + + AND a.show_index = #{param.showIndex} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCommentMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCommentMapper.xml new file mode 100644 index 0000000..a6b5545 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCommentMapper.xml @@ -0,0 +1,96 @@ + + + + + + + SELECT a.* + FROM shop_goods_comment a + + + AND a.id = #{param.id} + + + AND a.uid = #{param.uid} + + + AND a.oid = #{param.oid} + + + AND a.unique LIKE CONCAT('%', #{param.unique}, '%') + + + AND a.goods_id = #{param.goodsId} + + + AND a.reply_type LIKE CONCAT('%', #{param.replyType}, '%') + + + AND a.goods_score = #{param.goodsScore} + + + AND a.service_score = #{param.serviceScore} + + + AND a.comment LIKE CONCAT('%', #{param.comment}, '%') + + + AND a.pics LIKE CONCAT('%', #{param.pics}, '%') + + + AND a.merchant_reply_content LIKE CONCAT('%', #{param.merchantReplyContent}, '%') + + + AND a.merchant_reply_time = #{param.merchantReplyTime} + + + AND a.is_del = #{param.isDel} + + + AND a.is_reply = #{param.isReply} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.avatar LIKE CONCAT('%', #{param.avatar}, '%') + + + AND a.sku LIKE CONCAT('%', #{param.sku}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCouponMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCouponMapper.xml new file mode 100644 index 0000000..5a1bd1d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsCouponMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM shop_goods_coupon a + + + AND a.id = #{param.id} + + + AND a.goods_id = #{param.goodsId} + + + AND a.issue_coupon_id = #{param.issueCouponId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsIncomeConfigMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsIncomeConfigMapper.xml new file mode 100644 index 0000000..8819d02 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsIncomeConfigMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_goods_income_config a + + + AND a.id = #{param.id} + + + AND a.goods_id = #{param.goodsId} + + + AND a.merchant_shop_type LIKE CONCAT('%', #{param.merchantShopType}, '%') + + + AND a.sku_id = #{param.skuId} + + + AND a.rate = #{param.rate} + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsLogMapper.xml new file mode 100644 index 0000000..4d24262 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsLogMapper.xml @@ -0,0 +1,81 @@ + + + + + + + SELECT a.* + FROM shop_goods_log a + + + AND a.id = #{param.id} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.goods_id = #{param.goodsId} + + + AND a.visit_num = #{param.visitNum} + + + AND a.cart_num = #{param.cartNum} + + + AND a.order_num = #{param.orderNum} + + + AND a.pay_num = #{param.payNum} + + + AND a.pay_price = #{param.payPrice} + + + AND a.cost_price = #{param.costPrice} + + + AND a.pay_uid = #{param.payUid} + + + AND a.refund_num = #{param.refundNum} + + + AND a.refund_price = #{param.refundPrice} + + + AND a.collect_num = #{param.collectNum} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsMapper.xml new file mode 100644 index 0000000..ac73201 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsMapper.xml @@ -0,0 +1,149 @@ + + + + + + + SELECT a.* + FROM shop_goods a + + + AND a.goods_id = #{param.goodsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type = #{param.type} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.category_id = #{param.categoryId} + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.tag LIKE CONCAT('%', #{param.tag}, '%') + + + AND a.specs = #{param.specs} + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.unit_name LIKE CONCAT('%', #{param.unitName}, '%') + + + AND a.price = #{param.price} + + + AND a.buying_price = #{param.buyingPrice} + + + AND a.dealer_price = #{param.dealerPrice} + + + AND a.deduct_stock_type = #{param.deductStockType} + + + AND a.delivery_method = #{param.deliveryMethod} + + + AND a.duration_method = #{param.durationMethod} + + + AND a.can_buy_number = #{param.canBuyNumber} + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.sales = #{param.sales} + + + AND a.stock = #{param.stock} + + + AND a.install = #{param.install} + + + AND a.rate = #{param.rate} + + + AND a.gain_integral = #{param.gainIntegral} + + + AND a.recommend = #{param.recommend} + + + AND a.official = #{param.official} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.is_show = #{param.isShow} + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + AND a.status = 0 + + + AND a.status != 0 + + + AND a.stock = 0 + + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRelationMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRelationMapper.xml new file mode 100644 index 0000000..063a2a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRelationMapper.xml @@ -0,0 +1,48 @@ + + + + + + + SELECT a.* + FROM shop_goods_relation a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.category LIKE CONCAT('%', #{param.category}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRoleCommissionMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRoleCommissionMapper.xml new file mode 100644 index 0000000..a0cb44a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsRoleCommissionMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM shop_goods_role_commission a + + + AND a.id = #{param.id} + + + AND a.role_id = #{param.roleId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.sku LIKE CONCAT('%', #{param.sku}, '%') + + + AND a.amount = #{param.amount} + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSkuMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSkuMapper.xml new file mode 100644 index 0000000..dec4d76 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSkuMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.* + FROM shop_goods_sku a + + + AND a.id = #{param.id} + + + AND a.goods_id = #{param.goodsId} + + + AND a.sku LIKE CONCAT('%', #{param.sku}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.price = #{param.price} + + + AND a.sale_price = #{param.salePrice} + + + AND a.cost = #{param.cost} + + + AND a.stock = #{param.stock} + + + AND a.sku_no LIKE CONCAT('%', #{param.skuNo}, '%') + + + AND a.bar_code LIKE CONCAT('%', #{param.barCode}, '%') + + + AND a.weight = #{param.weight} + + + AND a.volume = #{param.volume} + + + AND a.uuid LIKE CONCAT('%', #{param.uuid}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSpecMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSpecMapper.xml new file mode 100644 index 0000000..aeed405 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopGoodsSpecMapper.xml @@ -0,0 +1,45 @@ + + + + + + + SELECT a.* + FROM shop_goods_spec a + + + AND a.id = #{param.id} + + + AND a.goods_id = #{param.goodsId} + + + AND a.spec_id = #{param.specId} + + + AND a.spec_name LIKE CONCAT('%', #{param.specName}, '%') + + + AND a.spec_value LIKE CONCAT('%', #{param.specValue}, '%') + + + AND a.type = #{param.type} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantAccountMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantAccountMapper.xml new file mode 100644 index 0000000..95280c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantAccountMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_merchant_account a + + + AND a.id = #{param.id} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.role_id = #{param.roleId} + + + AND a.role_name LIKE CONCAT('%', #{param.roleName}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantApplyMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantApplyMapper.xml new file mode 100644 index 0000000..52b8979 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantApplyMapper.xml @@ -0,0 +1,123 @@ + + + + + + + SELECT a.* + FROM shop_merchant_apply a + + + AND a.apply_id = #{param.applyId} + + + AND a.type = #{param.type} + + + AND a.shop_type LIKE CONCAT('%', #{param.shopType}, '%') + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.category LIKE CONCAT('%', #{param.category}, '%') + + + AND a.lng_and_lat LIKE CONCAT('%', #{param.lngAndLat}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.region_id LIKE CONCAT('%', #{param.regionId}, '%') + + + AND a.commission = #{param.commission} + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.yyzz LIKE CONCAT('%', #{param.yyzz}, '%') + + + AND a.sfz1 LIKE CONCAT('%', #{param.sfz1}, '%') + + + AND a.sfz2 LIKE CONCAT('%', #{param.sfz2}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.own_store = #{param.ownStore} + + + AND a.recommend = #{param.recommend} + + + AND a.goods_review = #{param.goodsReview} + + + AND a.name2 LIKE CONCAT('%', #{param.name2}, '%') + + + AND a.reason LIKE CONCAT('%', #{param.reason}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantMapper.xml new file mode 100644 index 0000000..66384d5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantMapper.xml @@ -0,0 +1,150 @@ + + + + + + + SELECT a.* + FROM shop_merchant a + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.type = #{param.type} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.shop_type LIKE CONCAT('%', #{param.shopType}, '%') + + + AND a.item_type LIKE CONCAT('%', #{param.itemType}, '%') + + + AND a.category LIKE CONCAT('%', #{param.category}, '%') + + + AND a.merchant_category_id = #{param.merchantCategoryId} + + + AND a.merchant_category_title LIKE CONCAT('%', #{param.merchantCategoryTitle}, '%') + + + AND a.lng_and_lat LIKE CONCAT('%', #{param.lngAndLat}, '%') + + + AND a.lng LIKE CONCAT('%', #{param.lng}, '%') + + + AND a.lat LIKE CONCAT('%', #{param.lat}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.commission = #{param.commission} + + + AND a.keywords LIKE CONCAT('%', #{param.keywords}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.business_time LIKE CONCAT('%', #{param.businessTime}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.price = #{param.price} + + + AND a.own_store = #{param.ownStore} + + + AND a.can_express = #{param.canExpress} + + + AND a.recommend = #{param.recommend} + + + AND a.is_on = #{param.isOn} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.goods_review = #{param.goodsReview} + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantTypeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantTypeMapper.xml new file mode 100644 index 0000000..0ed4e42 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopMerchantTypeMapper.xml @@ -0,0 +1,48 @@ + + + + + + + SELECT a.* + FROM shop_merchant_type a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryGoodsMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryGoodsMapper.xml new file mode 100644 index 0000000..949a66f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryGoodsMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM shop_order_delivery_goods a + + + AND a.id = #{param.id} + + + AND a.delivery_id = #{param.deliveryId} + + + AND a.order_id = #{param.orderId} + + + AND a.order_goods_id = #{param.orderGoodsId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.delivery_num = #{param.deliveryNum} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryMapper.xml new file mode 100644 index 0000000..eb3fd8d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderDeliveryMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_order_delivery a + + + AND a.delivery_id = #{param.deliveryId} + + + AND a.order_id = #{param.orderId} + + + AND a.delivery_method = #{param.deliveryMethod} + + + AND a.pack_method = #{param.packMethod} + + + AND a.express_id = #{param.expressId} + + + AND a.express_no LIKE CONCAT('%', #{param.expressNo}, '%') + + + AND a.eorder_html LIKE CONCAT('%', #{param.eorderHtml}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderExtractMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderExtractMapper.xml new file mode 100644 index 0000000..ff26857 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderExtractMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.* + FROM shop_order_extract a + + + AND a.id = #{param.id} + + + AND a.order_id = #{param.orderId} + + + AND a.linkman LIKE CONCAT('%', #{param.linkman}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderGoodsMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderGoodsMapper.xml new file mode 100644 index 0000000..dd22115 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderGoodsMapper.xml @@ -0,0 +1,105 @@ + + + + + + + SELECT a.* + FROM shop_order_goods a + + + AND a.id = #{param.id} + + + AND a.order_id = #{param.orderId} + + + AND a.order_code LIKE CONCAT('%', #{param.orderCode}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.goods_id = #{param.goodsId} + + + AND a.goods_name LIKE CONCAT('%', #{param.goodsName}, '%') + + + AND a.spec LIKE CONCAT('%', #{param.spec}, '%') + + + AND a.sku_id = #{param.skuId} + + + AND a.price = #{param.price} + + + AND a.total_num = #{param.totalNum} + + + AND a.pay_status = #{param.payStatus} + + + AND a.order_status = #{param.orderStatus} + + + AND a.is_free = #{param.isFree} + + + AND a.version = #{param.version} + + + AND a.time_period LIKE CONCAT('%', #{param.timePeriod}, '%') + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.time_flag LIKE CONCAT('%', #{param.timeFlag}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoLogMapper.xml new file mode 100644 index 0000000..0dde816 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoLogMapper.xml @@ -0,0 +1,48 @@ + + + + + + + SELECT a.* + FROM shop_order_info_log a + + + AND a.id = #{param.id} + + + AND a.order_id = #{param.orderId} + + + AND a.merchant_id = #{param.merchantId} + + + AND a.field_id = #{param.fieldId} + + + AND a.use_num = #{param.useNum} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoMapper.xml new file mode 100644 index 0000000..b2e0149 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderInfoMapper.xml @@ -0,0 +1,114 @@ + + + + + + + SELECT a.* + FROM shop_order_info a + + + AND a.id = #{param.id} + + + AND a.order_id = #{param.orderId} + + + AND a.order_code LIKE CONCAT('%', #{param.orderCode}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.field_id = #{param.fieldId} + + + AND a.field_name LIKE CONCAT('%', #{param.fieldName}, '%') + + + AND a.price = #{param.price} + + + AND a.children_price = #{param.childrenPrice} + + + AND a.adult_num = #{param.adultNum} + + + AND a.children_num = #{param.childrenNum} + + + AND a.adult_num_use = #{param.adultNumUse} + + + AND a.children_num_use = #{param.childrenNumUse} + + + AND a.pay_status = #{param.payStatus} + + + AND a.order_status = #{param.orderStatus} + + + AND a.is_free = #{param.isFree} + + + AND a.is_children = #{param.isChildren} + + + AND a.version = #{param.version} + + + AND a.is_half = #{param.isHalf} + + + AND a.time_period LIKE CONCAT('%', #{param.timePeriod}, '%') + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.time_flag LIKE CONCAT('%', #{param.timeFlag}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml new file mode 100644 index 0000000..575a3e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopOrderMapper.xml @@ -0,0 +1,371 @@ + + + + + + + SELECT a.*,b.nickname,b.real_name as realName, b.avatar,b.phone as phone + FROM shop_order a + LEFT JOIN gxwebsoft_core.sys_user b ON a.user_id = b.user_id + + + AND a.order_id = #{param.orderId} + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.type = #{param.type} + + + AND a.delivery_type = #{param.deliveryType} + + + AND a.channel = #{param.channel} + + + AND a.transaction_id LIKE CONCAT('%', #{param.transactionId}, '%') + + + AND a.refund_order LIKE CONCAT('%', #{param.refundOrder}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.coupon_id = #{param.couponId} + + + AND a.card_id LIKE CONCAT('%', #{param.cardId}, '%') + + + AND a.admin_id = #{param.adminId} + + + AND a.confirm_id = #{param.confirmId} + + + AND a.ic_card LIKE CONCAT('%', #{param.icCard}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.address_lat LIKE CONCAT('%', #{param.addressLat}, '%') + + + AND a.address_lng LIKE CONCAT('%', #{param.addressLng}, '%') + + + AND a.self_take_merchant_id = #{param.selfTakeMerchantId} + + + AND a.self_take_merchant_name LIKE CONCAT('%', #{param.selfTakeMerchantName}, '%') + + + AND a.send_start_time LIKE CONCAT('%', #{param.sendStartTime}, '%') + + + AND a.send_end_time LIKE CONCAT('%', #{param.sendEndTime}, '%') + + + AND a.express_merchant_id = #{param.expressMerchantId} + + + AND a.express_merchant_name LIKE CONCAT('%', #{param.expressMerchantName}, '%') + + + AND a.total_price = #{param.totalPrice} + + + AND a.reduce_price = #{param.reducePrice} + + + AND a.pay_price = #{param.payPrice} + + + AND a.price = #{param.price} + + + AND a.money = #{param.money} + + + AND a.refund_money = #{param.refundMoney} + + + AND a.coach_price = #{param.coachPrice} + + + AND a.total_num = #{param.totalNum} + + + AND a.coach_id = #{param.coachId} + + + AND a.pay_user_id = #{param.payUserId} + + + AND a.pay_type = #{param.payType} + + + AND a.friend_pay_type = #{param.friendPayType} + + + AND a.pay_status = #{param.payStatus} + + + AND a.order_status = #{param.orderStatus} + + + AND a.delivery_status = #{param.deliveryStatus} + + + AND a.delivery_time LIKE CONCAT('%', #{param.deliveryTime}, '%') + + + AND a.coupon_type = #{param.couponType} + + + AND a.coupon_desc LIKE CONCAT('%', #{param.couponDesc}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.return_num = #{param.returnNum} + + + AND a.return_money = #{param.returnMoney} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.is_invoice = #{param.isInvoice} + + + AND a.invoice_no LIKE CONCAT('%', #{param.invoiceNo}, '%') + + + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') + + + AND a.refund_time LIKE CONCAT('%', #{param.refundTime}, '%') + + + AND a.refund_apply_time LIKE CONCAT('%', #{param.refundApplyTime}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.check_bill = #{param.checkBill} + + + AND a.is_settled = #{param.isSettled} + + + AND a.version = #{param.version} + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.self_take_code LIKE CONCAT('%', #{param.selfTakeCode}, '%') + + + AND a.has_take_gift = #{param.hasTakeGift} + + + AND (a.order_no LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone = #{param.keywords} + OR a.order_id = #{param.keywords} + OR a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + + + UPDATE shop_order + + + pay_type = #{param.payType}, + + + pay_status = #{param.payType}, + + + order_status = #{param.orderStatus}, + + + delivery_status = #{param.deliveryStatus}, + + + delivery_time = #{param.deliveryTime}, + + + pay_time = #{param.payTime}, + + + refund_time = #{param.refundTime}, + + + self_take_code = #{param.selfTakeCode}, + + + invoice_no = #{param.invoiceNo}, + + + is_invoice = #{param.isInvoice}, + + + start_time = #{param.startTime}, + + + qrcode = #{param.qrcode}, + + + pay_user_id = #{param.payUserId}, + + + form_id = #{param.formId}, + + + total_price = #{param.totalPrice}, + + + reduce_price = #{param.reducePrice}, + + + pay_price = #{param.payPrice}, + + + price = #{param.price}, + + + money = #{param.money}, + + + refund_money = #{param.refundMoney}, + + + total_num = #{param.totalNum}, + + + coach_id = #{param.coachId}, + + + express_merchant_id = #{param.expressMerchantId}, + + + express_merchant_name = #{param.expressMerchantName}, + + + send_start_time = #{param.sendStartTime}, + + + send_end_time = #{param.sendEndTime}, + + + self_take_merchant_id = #{param.selfTakeMerchantId}, + + + self_take_merchant_name = #{param.selfTakeMerchantName}, + + + + address = #{param.address}, + + + confirm_id = #{param.confirmId}, + + + ic_card = #{param.icCard}, + + + admin_id = #{param.adminId}, + + + card_id = #{param.cardId}, + + + coupon_id = #{param.couponId}, + + + merchant_id = #{param.merchantId}, + + + transaction_id = #{param.transactionId}, + + + refund_order = #{param.refundOrder}, + + + channel = #{param.channel}, + + + delivery_type = #{param.deliveryType}, + + + `type` = #{param.type}, + + + deleted = #{param.deleted}, + + + deleted = 0, + + + + order_no = #{param.orderNo} + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopRechargeOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopRechargeOrderMapper.xml new file mode 100644 index 0000000..3ed8037 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopRechargeOrderMapper.xml @@ -0,0 +1,99 @@ + + + + + + + SELECT a.* + FROM shop_recharge_order a + + + AND a.order_id = #{param.orderId} + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.recharge_type = #{param.rechargeType} + + + AND a.organization_id = #{param.organizationId} + + + AND a.plan_id = #{param.planId} + + + AND a.pay_price = #{param.payPrice} + + + AND a.gift_money = #{param.giftMoney} + + + AND a.actual_money = #{param.actualMoney} + + + AND a.balance = #{param.balance} + + + AND a.pay_method LIKE CONCAT('%', #{param.payMethod}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.pay_time = #{param.payTime} + + + AND a.trade_id = #{param.tradeId} + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.shop_id = #{param.shopId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecMapper.xml new file mode 100644 index 0000000..9081159 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.* + FROM shop_spec a + + + AND a.spec_id = #{param.specId} + + + AND a.spec_name LIKE CONCAT('%', #{param.specName}, '%') + + + AND a.spec_value LIKE CONCAT('%', #{param.specValue}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.user_id = #{param.userId} + + + AND a.updater = #{param.updater} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecValueMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecValueMapper.xml new file mode 100644 index 0000000..0543252 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSpecValueMapper.xml @@ -0,0 +1,48 @@ + + + + + + + SELECT a.* + FROM shop_spec_value a + + + AND a.spec_value_id = #{param.specValueId} + + + AND a.spec_id = #{param.specId} + + + AND a.spec_value LIKE CONCAT('%', #{param.specValue}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSplashMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSplashMapper.xml new file mode 100644 index 0000000..bac8517 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopSplashMapper.xml @@ -0,0 +1,63 @@ + + + + + + + SELECT a.* + FROM shop_splash a + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.jump_type LIKE CONCAT('%', #{param.jumpType}, '%') + + + AND a.jump_pk = #{param.jumpPk} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserAddressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserAddressMapper.xml new file mode 100644 index 0000000..eb47416 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserAddressMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.* + FROM shop_user_address a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.full_address LIKE CONCAT('%', #{param.fullAddress}, '%') + + + AND a.lat LIKE CONCAT('%', #{param.lat}, '%') + + + AND a.lng LIKE CONCAT('%', #{param.lng}, '%') + + + AND a.gender = #{param.gender} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.is_default = #{param.isDefault} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserBalanceLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserBalanceLogMapper.xml new file mode 100644 index 0000000..5ad4a74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserBalanceLogMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.* + FROM shop_user_balance_log a + + + AND a.log_id = #{param.logId} + + + AND a.user_id = #{param.userId} + + + AND a.scene = #{param.scene} + + + AND a.money = #{param.money} + + + AND a.balance = #{param.balance} + + + AND a.remark LIKE CONCAT('%', #{param.remark}, '%') + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.admin_id = #{param.adminId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserCollectionMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserCollectionMapper.xml new file mode 100644 index 0000000..98782e2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserCollectionMapper.xml @@ -0,0 +1,45 @@ + + + + + + + SELECT a.* + FROM shop_user_collection a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.tid = #{param.tid} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserRefereeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserRefereeMapper.xml new file mode 100644 index 0000000..2406f51 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUserRefereeMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.* + FROM shop_user_referee a + + + AND a.id = #{param.id} + + + AND a.dealer_id = #{param.dealerId} + + + AND a.user_id = #{param.userId} + + + AND a.level = #{param.level} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUsersMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUsersMapper.xml new file mode 100644 index 0000000..41df7a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopUsersMapper.xml @@ -0,0 +1,81 @@ + + + + + + + SELECT a.* + FROM shop_users a + + + AND a.id = #{param.id} + + + AND a.open_id LIKE CONCAT('%', #{param.openId}, '%') + + + AND a.session_key LIKE CONCAT('%', #{param.sessionKey}, '%') + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.avatar_url LIKE CONCAT('%', #{param.avatarUrl}, '%') + + + AND a.gender = #{param.gender} + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.integral = #{param.integral} + + + AND a.money = #{param.money} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.is_admin = #{param.isAdmin} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWechatDepositMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWechatDepositMapper.xml new file mode 100644 index 0000000..9840d34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ShopWechatDepositMapper.xml @@ -0,0 +1,69 @@ + + + + + + + SELECT a.* + FROM shop_wechat_deposit a + + + AND a.id = #{param.id} + + + AND a.oid = #{param.oid} + + + AND a.uid = #{param.uid} + + + AND a.order_num LIKE CONCAT('%', #{param.orderNum}, '%') + + + AND a.wechat_order LIKE CONCAT('%', #{param.wechatOrder}, '%') + + + AND a.wechat_return LIKE CONCAT('%', #{param.wechatReturn}, '%') + + + AND a.site_name LIKE CONCAT('%', #{param.siteName}, '%') + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.price = #{param.price} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopBrandParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopBrandParam.java new file mode 100644 index 0000000..fb25256 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopBrandParam.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 品牌查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopBrandParam对象", description = "品牌查询参数") +public class ShopBrandParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer brandId; + + @ApiModelProperty(value = "品牌名称") + private String brandName; + + @ApiModelProperty(value = "图标") + private String image; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopCartParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopCartParam.java new file mode 100644 index 0000000..3170756 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopCartParam.java @@ -0,0 +1,89 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 购物车查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopCartParam对象", description = "购物车查询参数") +public class ShopCartParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "购物车表ID") + @QueryField(type = QueryType.EQ) + private Long id; + + @ApiModelProperty(value = "类型 0商城 1外卖") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "唯一标识") + private String code; + + @ApiModelProperty(value = "商品ID") + private Long goodsId; + + @ApiModelProperty(value = "商品规格") + private String spec; + + @ApiModelProperty(value = "商品价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "商品数量") + @QueryField(type = QueryType.EQ) + private Integer cartNum; + + @ApiModelProperty(value = "单商品合计") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "0 = 未购买 1 = 已购买") + @QueryField(type = QueryType.EQ) + private Boolean isPay; + + @ApiModelProperty(value = "是否为立即购买") + @QueryField(type = QueryType.EQ) + private Boolean isNew; + + @ApiModelProperty(value = "是否为立即购买") + @QueryField(type = QueryType.EQ) + private Boolean isShow; + + @ApiModelProperty(value = "拼团id") + @QueryField(type = QueryType.EQ) + private Integer combinationId; + + @ApiModelProperty(value = "秒杀产品ID") + @QueryField(type = QueryType.EQ) + private Integer seckillId; + + @ApiModelProperty(value = "砍价id") + @QueryField(type = QueryType.EQ) + private Integer bargainId; + + @ApiModelProperty(value = "是否选中") + @QueryField(type = QueryType.EQ) + private Boolean selected; + + @ApiModelProperty(value = "商户ID") + private Long merchantId; + + @ApiModelProperty(value = "用户ID") + private Long userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopCategoryParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopCategoryParam.java new file mode 100644 index 0000000..2f7d2a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopCategoryParam.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品分类查询参数 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopCategoryParam对象", description = "商品分类查询参数") +public class ShopCategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "模型") + private String model; + + @ApiModelProperty(value = "标识") + private String code; + + @ApiModelProperty(value = "链接地址") + private String path; + + @ApiModelProperty(value = "组件地址") + private String component; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "banner") + private String banner; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "可见类型 0所有人 1登录可见 2密码可见") + @QueryField(type = QueryType.EQ) + private Integer permission; + + @ApiModelProperty(value = "访问密码") + private String password; + + @ApiModelProperty(value = "位置 0不限 1顶部 2底部") + @QueryField(type = QueryType.EQ) + private Integer position; + + @ApiModelProperty(value = "仅在顶部显示") + @QueryField(type = QueryType.EQ) + private Integer top; + + @ApiModelProperty(value = "仅在底部显示") + @QueryField(type = QueryType.EQ) + private Integer bottom; + + @ApiModelProperty(value = "菜单选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "css样式") + private String style; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "语言") + private String lang; + + @ApiModelProperty(value = "设为首页") + @QueryField(type = QueryType.EQ) + private Integer home; + + @ApiModelProperty(value = "推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopChatConversationParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopChatConversationParam.java new file mode 100644 index 0000000..8acfc15 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopChatConversationParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 聊天消息表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopChatConversationParam对象", description = "聊天消息表查询参数") +public class ShopChatConversationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "好友ID") + @QueryField(type = QueryType.EQ) + private Integer friendId; + + @ApiModelProperty(value = "消息类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "未读消息") + @QueryField(type = QueryType.EQ) + private Integer unRead; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopChatMessageParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopChatMessageParam.java new file mode 100644 index 0000000..1d406e0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopChatMessageParam.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 聊天消息表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopChatMessageParam对象", description = "聊天消息表查询参数") +public class ShopChatMessageParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "发送人ID") + @QueryField(type = QueryType.EQ) + private Integer formUserId; + + @ApiModelProperty(value = "接收人ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "消息类型") + private String type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "屏蔽接收方") + @QueryField(type = QueryType.EQ) + private Integer sideTo; + + @ApiModelProperty(value = "屏蔽发送方") + @QueryField(type = QueryType.EQ) + private Integer sideFrom; + + @ApiModelProperty(value = "是否撤回") + @QueryField(type = QueryType.EQ) + private Integer withdraw; + + @ApiModelProperty(value = "文件信息") + private String fileInfo; + + @ApiModelProperty(value = "存在联系方式") + @QueryField(type = QueryType.EQ) + private Integer hasContact; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopCommissionRoleParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopCommissionRoleParam.java new file mode 100644 index 0000000..5504aa0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopCommissionRoleParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分红角色查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 10:01:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopCommissionRoleParam对象", description = "分红角色查询参数") +public class ShopCommissionRoleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + private String title; + + @QueryField(type = QueryType.EQ) + private Integer provinceId; + + @QueryField(type = QueryType.EQ) + private Integer cityId; + + @QueryField(type = QueryType.EQ) + private Integer regionId; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopCountParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopCountParam.java new file mode 100644 index 0000000..198f4de --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopCountParam.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商城销售统计表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopCountParam对象", description = "商城销售统计表查询参数") +public class ShopCountParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "统计日期") + private String dateTime; + + @ApiModelProperty(value = "总销售额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "今日销售额") + @QueryField(type = QueryType.EQ) + private BigDecimal todayPrice; + + @ApiModelProperty(value = "总会员数") + @QueryField(type = QueryType.EQ) + private BigDecimal totalUsers; + + @ApiModelProperty(value = "今日新增") + @QueryField(type = QueryType.EQ) + private BigDecimal todayUsers; + + @ApiModelProperty(value = "总订单笔数") + @QueryField(type = QueryType.EQ) + private BigDecimal totalOrders; + + @ApiModelProperty(value = "今日订单笔数") + @QueryField(type = QueryType.EQ) + private BigDecimal todayOrders; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerApplyParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerApplyParam.java new file mode 100644 index 0000000..25afe38 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerApplyParam.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商申请记录表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerApplyParam对象", description = "分销商申请记录表查询参数") +public class ShopDealerApplyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer applyId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "姓名") + private String realName; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "推荐人用户ID") + @QueryField(type = QueryType.EQ) + private Integer refereeId; + + @ApiModelProperty(value = "申请方式(10需后台审核 20无需审核)") + @QueryField(type = QueryType.EQ) + private Integer applyType; + + @ApiModelProperty(value = "申请时间") + @QueryField(type = QueryType.EQ) + private Integer applyTime; + + @ApiModelProperty(value = "审核状态 (10待审核 20审核通过 30驳回)") + @QueryField(type = QueryType.EQ) + private Integer applyStatus; + + @ApiModelProperty(value = "审核时间") + @QueryField(type = QueryType.EQ) + private Integer auditTime; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerCapitalParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerCapitalParam.java new file mode 100644 index 0000000..1d6ddf2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerCapitalParam.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商资金明细表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerCapitalParam对象", description = "分销商资金明细表查询参数") +public class ShopDealerCapitalParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入)") + @QueryField(type = QueryType.EQ) + private Integer flowType; + + @ApiModelProperty(value = "金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "描述") + private String describe; + + @ApiModelProperty(value = "对方用户ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerOrderParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerOrderParam.java new file mode 100644 index 0000000..8a4c575 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerOrderParam.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商订单记录表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerOrderParam对象", description = "分销商订单记录表查询参数") +public class ShopDealerOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "买家用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单总金额(不含运费)") + @QueryField(type = QueryType.EQ) + private BigDecimal orderPrice; + + @ApiModelProperty(value = "分销商用户id(一级)") + @QueryField(type = QueryType.EQ) + private Integer firstUserId; + + @ApiModelProperty(value = "分销商用户id(二级)") + @QueryField(type = QueryType.EQ) + private Integer secondUserId; + + @ApiModelProperty(value = "分销商用户id(三级)") + @QueryField(type = QueryType.EQ) + private Integer thirdUserId; + + @ApiModelProperty(value = "分销佣金(一级)") + @QueryField(type = QueryType.EQ) + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + @QueryField(type = QueryType.EQ) + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + @QueryField(type = QueryType.EQ) + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "订单是否失效(0未失效 1已失效)") + @QueryField(type = QueryType.EQ) + private Integer isInvalid; + + @ApiModelProperty(value = "佣金结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "结算时间") + @QueryField(type = QueryType.EQ) + private Integer settleTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerRefereeParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerRefereeParam.java new file mode 100644 index 0000000..67381ce --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerRefereeParam.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商推荐关系表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerRefereeParam对象", description = "分销商推荐关系表查询参数") +public class ShopDealerRefereeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + @QueryField(type = QueryType.EQ) + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + @QueryField(type = QueryType.EQ) + private Integer level; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerSettingParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerSettingParam.java new file mode 100644 index 0000000..674b619 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerSettingParam.java @@ -0,0 +1,36 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商设置表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerSettingParam对象", description = "分销商设置表查询参数") +public class ShopDealerSettingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设置项标示") + @QueryField(type = QueryType.EQ) + private String key; + + @ApiModelProperty(value = "设置项描述") + private String describe; + + @ApiModelProperty(value = "设置内容(json格式)") + private String values; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerUserParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerUserParam.java new file mode 100644 index 0000000..bdf9ed9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerUserParam.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商用户记录表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerUserParam对象", description = "分销商用户记录表查询参数") +public class ShopDealerUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "姓名") + private String realName; + + @ApiModelProperty(value = "手机号") + private String mobile; + + @ApiModelProperty(value = "支付密码") + private String payPassword; + + @ApiModelProperty(value = "当前可提现佣金") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "已冻结佣金") + @QueryField(type = QueryType.EQ) + private BigDecimal freezeMoney; + + @ApiModelProperty(value = "累积提现佣金") + @QueryField(type = QueryType.EQ) + private BigDecimal totalMoney; + + @ApiModelProperty(value = "推荐人用户ID") + @QueryField(type = QueryType.EQ) + private Integer refereeId; + + @ApiModelProperty(value = "成员数量(一级)") + @QueryField(type = QueryType.EQ) + private Integer firstNum; + + @ApiModelProperty(value = "成员数量(二级)") + @QueryField(type = QueryType.EQ) + private Integer secondNum; + + @ApiModelProperty(value = "成员数量(三级)") + @QueryField(type = QueryType.EQ) + private Integer thirdNum; + + @ApiModelProperty(value = "专属二维码") + private String qrcode; + + @ApiModelProperty(value = "是否删除") + @QueryField(type = QueryType.EQ) + private Integer isDelete; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java new file mode 100644 index 0000000..880ddba --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopDealerWithdrawParam.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分销商提现明细表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopDealerWithdrawParam对象", description = "分销商提现明细表查询参数") +public class ShopDealerWithdrawParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "分销商用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "提现金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "申请状态 (10待审核 20审核通过 30驳回 40已打款)") + @QueryField(type = QueryType.EQ) + private Integer applyStatus; + + @ApiModelProperty(value = "审核时间") + @QueryField(type = QueryType.EQ) + private Integer auditTime; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + + @ApiModelProperty(value = "来源客户端(APP、H5、小程序等)") + private String platform; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopExpressParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopExpressParam.java new file mode 100644 index 0000000..b47cff7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopExpressParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 物流公司查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopExpressParam对象", description = "物流公司查询参数") +public class ShopExpressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物流公司ID") + @QueryField(type = QueryType.EQ) + private Integer expressId; + + @ApiModelProperty(value = "物流公司名称") + private String expressName; + + @ApiModelProperty(value = "物流公司编码 (微信)") + private String wxCode; + + @ApiModelProperty(value = "物流公司编码 (快递100)") + private String kuaidi100Code; + + @ApiModelProperty(value = "物流公司编码 (快递鸟)") + private String kdniaoCode; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateDetailParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateDetailParam.java new file mode 100644 index 0000000..b18c739 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateDetailParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 运费模板查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopExpressTemplateDetailParam对象", description = "运费模板查询参数") +public class ShopExpressTemplateDetailParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @QueryField(type = QueryType.EQ) + private Integer templateId; + + @ApiModelProperty(value = "0按件") + @QueryField(type = QueryType.EQ) + private Boolean type; + + @QueryField(type = QueryType.EQ) + private Integer provinceId; + + @QueryField(type = QueryType.EQ) + private Integer cityId; + + @ApiModelProperty(value = "首件数量/重量") + @QueryField(type = QueryType.EQ) + private BigDecimal firstNum; + + @ApiModelProperty(value = "收件价格") + @QueryField(type = QueryType.EQ) + private BigDecimal firstAmount; + + @ApiModelProperty(value = "续件价格") + @QueryField(type = QueryType.EQ) + private BigDecimal extraAmount; + + @ApiModelProperty(value = "续件数量/重量") + @QueryField(type = QueryType.EQ) + private BigDecimal extraNum; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateParam.java new file mode 100644 index 0000000..f673c2a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopExpressTemplateParam.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 运费模板查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopExpressTemplateParam对象", description = "运费模板查询参数") +public class ShopExpressTemplateParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @QueryField(type = QueryType.EQ) + private Boolean type; + + private String title; + + @ApiModelProperty(value = "收件价格") + @QueryField(type = QueryType.EQ) + private BigDecimal firstAmount; + + @ApiModelProperty(value = "续件价格") + @QueryField(type = QueryType.EQ) + private BigDecimal extraAmount; + + @ApiModelProperty(value = "状态, 0已发布, 1待审核 2已驳回 3违规内容") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "首件数量/重量") + @QueryField(type = QueryType.EQ) + private BigDecimal firstNum; + + @ApiModelProperty(value = "续件数量/重量") + @QueryField(type = QueryType.EQ) + private BigDecimal extraNum; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCategoryParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCategoryParam.java new file mode 100644 index 0000000..a396d35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCategoryParam.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品分类查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsCategoryParam对象", description = "商品分类查询参数") +public class ShopGoodsCategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "分类标识") + private String categoryCode; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "类型 0商城分类 1外卖分类") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "路由/链接地址") + private String path; + + @ApiModelProperty(value = "组件路径") + private String component; + + @ApiModelProperty(value = "绑定的页面") + @QueryField(type = QueryType.EQ) + private Integer pageId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商品数量") + @QueryField(type = QueryType.EQ) + private Integer count; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否显示在首页") + @QueryField(type = QueryType.EQ) + private Integer showIndex; + + @ApiModelProperty(value = "商铺ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "状态, 0正常, 1禁用") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCommentParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCommentParam.java new file mode 100644 index 0000000..b8bb575 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCommentParam.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 评论表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsCommentParam对象", description = "评论表查询参数") +public class ShopGoodsCommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评论ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer uid; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer oid; + + @ApiModelProperty(value = "商品唯一id") + private String unique; + + @ApiModelProperty(value = "商品id") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "某种商品类型(普通商品、秒杀商品)") + private String replyType; + + @ApiModelProperty(value = "商品分数") + @QueryField(type = QueryType.EQ) + private Boolean goodsScore; + + @ApiModelProperty(value = "服务分数") + @QueryField(type = QueryType.EQ) + private Boolean serviceScore; + + @ApiModelProperty(value = "评论内容") + private String comment; + + @ApiModelProperty(value = "评论图片") + private String pics; + + @ApiModelProperty(value = "管理员回复内容") + private String merchantReplyContent; + + @ApiModelProperty(value = "管理员回复时间") + @QueryField(type = QueryType.EQ) + private Integer merchantReplyTime; + + @ApiModelProperty(value = "0未删除1已删除") + @QueryField(type = QueryType.EQ) + private Boolean isDel; + + @ApiModelProperty(value = "0未回复1已回复") + @QueryField(type = QueryType.EQ) + private Boolean isReply; + + @ApiModelProperty(value = "用户名称") + private String nickname; + + @ApiModelProperty(value = "用户头像") + private String avatar; + + @ApiModelProperty(value = "商品规格属性值,多个,号隔开") + private String sku; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCouponParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCouponParam.java new file mode 100644 index 0000000..b415001 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsCouponParam.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品优惠券表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsCouponParam对象", description = "商品优惠券表查询参数") +public class ShopGoodsCouponParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商品id") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "优惠劵id") + @QueryField(type = QueryType.EQ) + private Integer issueCouponId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsIncomeConfigParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsIncomeConfigParam.java new file mode 100644 index 0000000..4ca4005 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsIncomeConfigParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分润配置查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsIncomeConfigParam对象", description = "分润配置查询参数") +public class ShopGoodsIncomeConfigParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "店铺类型") + private String merchantShopType; + + @QueryField(type = QueryType.EQ) + private Integer skuId; + + @ApiModelProperty(value = "比例") + @QueryField(type = QueryType.EQ) + private BigDecimal rate; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsLogParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsLogParam.java new file mode 100644 index 0000000..a669d14 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsLogParam.java @@ -0,0 +1,89 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品日志表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsLogParam对象", description = "商品日志表查询参数") +public class ShopGoodsLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "统计ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "类型visit,cart,order,pay,collect,refund") + private String type; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "是否浏览") + @QueryField(type = QueryType.EQ) + private Boolean visitNum; + + @ApiModelProperty(value = "加入购物车数量") + @QueryField(type = QueryType.EQ) + private Integer cartNum; + + @ApiModelProperty(value = "下单数量") + @QueryField(type = QueryType.EQ) + private Integer orderNum; + + @ApiModelProperty(value = "支付数量") + @QueryField(type = QueryType.EQ) + private Integer payNum; + + @ApiModelProperty(value = "支付金额") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "商品成本价") + @QueryField(type = QueryType.EQ) + private BigDecimal costPrice; + + @ApiModelProperty(value = "支付用户ID") + @QueryField(type = QueryType.EQ) + private Integer payUid; + + @ApiModelProperty(value = "退款数量") + @QueryField(type = QueryType.EQ) + private Integer refundNum; + + @ApiModelProperty(value = "退款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal refundPrice; + + @ApiModelProperty(value = "收藏") + @QueryField(type = QueryType.EQ) + private Boolean collectNum; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java new file mode 100644 index 0000000..de50689 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsParam.java @@ -0,0 +1,153 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品查询参数 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsParam对象", description = "商品查询参数") +public class ShopGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String name; + + @ApiModelProperty(value = "产品编码") + private String code; + + @ApiModelProperty(value = "类型 0软件产品 1实物商品 2虚拟商品") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "父级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "产品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "路由地址") + private String path; + + @ApiModelProperty(value = "标签") + private String tag; + + @ApiModelProperty(value = "产品规格 0单规格 1多规格") + @QueryField(type = QueryType.EQ) + private Integer specs; + + @ApiModelProperty(value = "货架") + private String position; + + @ApiModelProperty(value = "单位名称 (个)") + private String unitName; + + @ApiModelProperty(value = "商品价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "进货价格") + @QueryField(type = QueryType.EQ) + private BigDecimal buyingPrice; + + @ApiModelProperty(value = "经销商价格") + @QueryField(type = QueryType.EQ) + private BigDecimal dealerPrice; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + @QueryField(type = QueryType.EQ) + private Integer deductStockType; + + @ApiModelProperty(value = "交付方式(0不启用)") + @QueryField(type = QueryType.EQ) + private Integer deliveryMethod; + + @ApiModelProperty(value = "购买时长(0不启用,1 一次性,2 按时长)") + @QueryField(type = QueryType.EQ) + private Integer durationMethod; + + @ApiModelProperty(value = "可购买数量") + @QueryField(type = QueryType.EQ) + private Integer canBuyNumber; + + @ApiModelProperty(value = "轮播图") + private String files; + + @ApiModelProperty(value = "销量") + @QueryField(type = QueryType.EQ) + private Integer sales; + + @ApiModelProperty(value = "库存") + @QueryField(type = QueryType.EQ) + private Integer stock; + + @ApiModelProperty(value = "安装次数") + @QueryField(type = QueryType.EQ) + private Integer install; + + @ApiModelProperty(value = "评分") + @QueryField(type = QueryType.EQ) + private BigDecimal rate; + + @ApiModelProperty(value = "消费赚取积分") + @QueryField(type = QueryType.EQ) + private BigDecimal gainIntegral; + + @ApiModelProperty(value = "推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否官方") + @QueryField(type = QueryType.EQ) + private Integer official; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "是否展示") + @QueryField(type = QueryType.EQ) + private Boolean isShow; + + @ApiModelProperty(value = "状态, 0上架 1待上架 2待审核 3审核不通过") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRelationParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRelationParam.java new file mode 100644 index 0000000..b10dfab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRelationParam.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品点赞和收藏表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsRelationParam对象", description = "商品点赞和收藏表查询参数") +public class ShopGoodsRelationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "类型(收藏(collect)、点赞(like))") + private String type; + + @ApiModelProperty(value = "某种类型的商品(普通商品、秒杀商品)") + private String category; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRoleCommissionParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRoleCommissionParam.java new file mode 100644 index 0000000..d0747c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsRoleCommissionParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品绑定角色的分润金额查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsRoleCommissionParam对象", description = "商品绑定角色的分润金额查询参数") +public class ShopGoodsRoleCommissionParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + private String sku; + + @QueryField(type = QueryType.EQ) + private BigDecimal amount; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSkuParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSkuParam.java new file mode 100644 index 0000000..9f5c65f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSkuParam.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品sku列表查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsSkuParam对象", description = "商品sku列表查询参数") +public class ShopGoodsSkuParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品属性索引值 (attr_value|attr_value[|....])") + private String sku; + + @ApiModelProperty(value = "商品图片") + private String image; + + @ApiModelProperty(value = "商品价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "市场价格") + @QueryField(type = QueryType.EQ) + private BigDecimal salePrice; + + @ApiModelProperty(value = "成本价") + @QueryField(type = QueryType.EQ) + private BigDecimal cost; + + @ApiModelProperty(value = "库存") + @QueryField(type = QueryType.EQ) + private Integer stock; + + @ApiModelProperty(value = "sku编码") + private String skuNo; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "重量") + @QueryField(type = QueryType.EQ) + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + @QueryField(type = QueryType.EQ) + private BigDecimal volume; + + @ApiModelProperty(value = "唯一值") + private String uuid; + + @ApiModelProperty(value = "状态, 0正常, 1异常") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSpecParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSpecParam.java new file mode 100644 index 0000000..a633c94 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopGoodsSpecParam.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品多规格查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopGoodsSpecParam对象", description = "商品多规格查询参数") +public class ShopGoodsSpecParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "规格ID") + @QueryField(type = QueryType.EQ) + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "活动类型 0=商品,1=秒杀,2=砍价,3=拼团") + @QueryField(type = QueryType.EQ) + private Boolean type; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopMerchantAccountParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantAccountParam.java new file mode 100644 index 0000000..012f345 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantAccountParam.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户账号查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopMerchantAccountParam对象", description = "商户账号查询参数") +public class ShopMerchantAccountParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "角色ID") + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopMerchantApplyParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantApplyParam.java new file mode 100644 index 0000000..62f8570 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantApplyParam.java @@ -0,0 +1,126 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户入驻申请查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopMerchantApplyParam对象", description = "商户入驻申请查询参数") +public class ShopMerchantApplyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer applyId; + + @ApiModelProperty(value = "类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "店铺类型") + private String shopType; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "门店图片") + private String image; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "商户姓名") + private String realName; + + @ApiModelProperty(value = "商户行业分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "商户分类") + private String category; + + @ApiModelProperty(value = "经纬度") + private String lngAndLat; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "地区ID") + private String regionId; + + @ApiModelProperty(value = "手续费") + @QueryField(type = QueryType.EQ) + private BigDecimal commission; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "营业执照") + private String yyzz; + + @ApiModelProperty(value = "身份证") + private String sfz1; + + @ApiModelProperty(value = "身份证") + private String sfz2; + + @ApiModelProperty(value = "资质图片") + private String files; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否自营") + @QueryField(type = QueryType.EQ) + private Integer ownStore; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否需要审核") + @QueryField(type = QueryType.EQ) + private Integer goodsReview; + + @ApiModelProperty(value = "工作负责人") + private String name2; + + @ApiModelProperty(value = "驳回原因") + private String reason; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopMerchantParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantParam.java new file mode 100644 index 0000000..16cd546 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantParam.java @@ -0,0 +1,150 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopMerchantParam对象", description = "商户查询参数") +public class ShopMerchantParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编号") + private String merchantCode; + + @ApiModelProperty(value = "商户类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "商户图标") + private String image; + + @ApiModelProperty(value = "商户手机号") + private String phone; + + @ApiModelProperty(value = "商户姓名") + private String realName; + + @ApiModelProperty(value = "店铺类型") + private String shopType; + + @ApiModelProperty(value = "项目分类") + private String itemType; + + @ApiModelProperty(value = "商户分类") + private String category; + + @ApiModelProperty(value = "商户经营分类") + @QueryField(type = QueryType.EQ) + private Integer merchantCategoryId; + + @ApiModelProperty(value = "商户分类") + private String merchantCategoryTitle; + + @ApiModelProperty(value = "经纬度") + private String lngAndLat; + + private String lng; + + private String lat; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "手续费") + @QueryField(type = QueryType.EQ) + private BigDecimal commission; + + @ApiModelProperty(value = "关键字") + private String keywords; + + @ApiModelProperty(value = "资质图片") + private String files; + + @ApiModelProperty(value = "营业时间") + private String businessTime; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "每小时价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "是否自营") + @QueryField(type = QueryType.EQ) + private Integer ownStore; + + @ApiModelProperty(value = "是否可以快递") + @QueryField(type = QueryType.EQ) + private Boolean canExpress; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer recommend; + + @ApiModelProperty(value = "是否营业") + @QueryField(type = QueryType.EQ) + private Integer isOn; + + private String startTime; + + private String endTime; + + @ApiModelProperty(value = "是否需要审核") + @QueryField(type = QueryType.EQ) + private Integer goodsReview; + + @ApiModelProperty(value = "管理入口") + private String adminUrl; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopMerchantTypeParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantTypeParam.java new file mode 100644 index 0000000..acc17a1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopMerchantTypeParam.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商户类型查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopMerchantTypeParam对象", description = "商户类型查询参数") +public class ShopMerchantTypeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "店铺类型") + private String name; + + @ApiModelProperty(value = "店铺入驻条件") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryGoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryGoodsParam.java new file mode 100644 index 0000000..b6f08ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryGoodsParam.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 发货单商品查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderDeliveryGoodsParam对象", description = "发货单商品查询参数") +public class ShopOrderDeliveryGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "发货单ID") + @QueryField(type = QueryType.EQ) + private Integer deliveryId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "发货数量") + @QueryField(type = QueryType.EQ) + private Integer deliveryNum; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryParam.java new file mode 100644 index 0000000..d1ab107 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderDeliveryParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 发货单查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderDeliveryParam对象", description = "发货单查询参数") +public class ShopOrderDeliveryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "发货单ID") + @QueryField(type = QueryType.EQ) + private Integer deliveryId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "发货方式(10手动录入 20无需物流 30电子面单)") + @QueryField(type = QueryType.EQ) + private Integer deliveryMethod; + + @ApiModelProperty(value = "打包方式(废弃)") + @QueryField(type = QueryType.EQ) + private Integer packMethod; + + @ApiModelProperty(value = "物流公司ID") + @QueryField(type = QueryType.EQ) + private Integer expressId; + + @ApiModelProperty(value = "物流单号") + private String expressNo; + + @ApiModelProperty(value = "电子面单模板内容") + private String eorderHtml; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderExtractParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderExtractParam.java new file mode 100644 index 0000000..bd9d59c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderExtractParam.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 自提订单联系方式查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderExtractParam对象", description = "自提订单联系方式查询参数") +public class ShopOrderExtractParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "联系人姓名") + private String linkman; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderGoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderGoodsParam.java new file mode 100644 index 0000000..61eb66f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderGoodsParam.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品信息查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderGoodsParam对象", description = "商品信息查询参数") +public class ShopOrderGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单标识") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "关联商品id") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品规格") + private String spec; + + @QueryField(type = QueryType.EQ) + private Integer skuId; + + @ApiModelProperty(value = "单价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "购买数量") + @QueryField(type = QueryType.EQ) + private Integer totalNum; + + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + @QueryField(type = QueryType.EQ) + private Integer orderStatus; + + @ApiModelProperty(value = "是否免费:0收费、1免费") + @QueryField(type = QueryType.EQ) + private Boolean isFree; + + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "预约时间段") + private String timePeriod; + + @ApiModelProperty(value = "预定日期") + private String dateTime; + + @ApiModelProperty(value = "开场时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "毫秒时间戳") + private Long timeFlag; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoLogParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoLogParam.java new file mode 100644 index 0000000..ae794e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoLogParam.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单核销查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderInfoLogParam对象", description = "订单核销查询参数") +public class ShopOrderInfoLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "关联商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "关联场地id") + @QueryField(type = QueryType.EQ) + private Integer fieldId; + + @ApiModelProperty(value = "核销数量") + @QueryField(type = QueryType.EQ) + private Boolean useNum; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoParam.java new file mode 100644 index 0000000..71b60e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderInfoParam.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 场地查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderInfoParam对象", description = "场地查询参数") +public class ShopOrderInfoParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "关联订单表id") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "关联场地id") + @QueryField(type = QueryType.EQ) + private Integer fieldId; + + @ApiModelProperty(value = "场地名称") + private String fieldName; + + @ApiModelProperty(value = "单价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "儿童价") + @QueryField(type = QueryType.EQ) + private BigDecimal childrenPrice; + + @ApiModelProperty(value = "成人人数") + @QueryField(type = QueryType.EQ) + private Integer adultNum; + + @ApiModelProperty(value = "儿童人数") + @QueryField(type = QueryType.EQ) + private Integer childrenNum; + + @ApiModelProperty(value = "已核销的成人票数") + @QueryField(type = QueryType.EQ) + private Integer adultNumUse; + + @ApiModelProperty(value = "已核销的儿童票数") + @QueryField(type = QueryType.EQ) + private Integer childrenNumUse; + + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + @QueryField(type = QueryType.EQ) + private Integer orderStatus; + + @ApiModelProperty(value = "是否免费:0收费、1免费") + @QueryField(type = QueryType.EQ) + private Boolean isFree; + + @ApiModelProperty(value = "是否支持儿童票:0不支持、1支持") + @QueryField(type = QueryType.EQ) + private Boolean isChildren; + + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "预订类型:0全场,1半场") + @QueryField(type = QueryType.EQ) + private Boolean isHalf; + + @ApiModelProperty(value = "预约时间段") + private String timePeriod; + + @ApiModelProperty(value = "预定日期") + private String dateTime; + + @ApiModelProperty(value = "开场时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "毫秒时间戳") + private Long timeFlag; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopOrderParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopOrderParam.java new file mode 100644 index 0000000..c2014d4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopOrderParam.java @@ -0,0 +1,249 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 订单查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopOrderParam对象", description = "订单查询参数") +public class ShopOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单号") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "订单类型,0商城订单 1预定订单/外卖 2会员卡") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "快递/自提") + @QueryField(type = QueryType.EQ) + private Integer deliveryType; + + @ApiModelProperty(value = "下单渠道,0小程序预定 1俱乐部训练场 3活动订场") + @QueryField(type = QueryType.EQ) + private Integer channel; + + @ApiModelProperty(value = "微信支付订单号") + private String transactionId; + + @ApiModelProperty(value = "微信退款订单号") + private String refundOrder; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编号") + private String merchantCode; + + @ApiModelProperty(value = "使用的优惠券id") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "使用的会员卡id") + private String cardId; + + @ApiModelProperty(value = "关联管理员id") + @QueryField(type = QueryType.EQ) + private Integer adminId; + + @ApiModelProperty(value = "核销管理员id") + @QueryField(type = QueryType.EQ) + private Integer confirmId; + + @ApiModelProperty(value = "IC卡号") + private String icCard; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "收货地址") + private String address; + + private String addressLat; + + private String addressLng; + + @ApiModelProperty(value = "自提店铺id") + @QueryField(type = QueryType.EQ) + private Integer selfTakeMerchantId; + + @ApiModelProperty(value = "自提店铺") + private String selfTakeMerchantName; + + @ApiModelProperty(value = "配送开始时间") + private String sendStartTime; + + @ApiModelProperty(value = "配送结束时间") + private String sendEndTime; + + @ApiModelProperty(value = "发货店铺id") + @QueryField(type = QueryType.EQ) + private Integer expressMerchantId; + + @ApiModelProperty(value = "发货店铺") + private String expressMerchantName; + + @ApiModelProperty(value = "订单总额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格") + @QueryField(type = QueryType.EQ) + private BigDecimal reducePrice; + + @ApiModelProperty(value = "实际付款") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "用于统计") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "价钱,用于积分赠送") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "退款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal refundMoney; + + @ApiModelProperty(value = "教练价格") + @QueryField(type = QueryType.EQ) + private BigDecimal coachPrice; + + @ApiModelProperty(value = "购买数量") + @QueryField(type = QueryType.EQ) + private Integer totalNum; + + @ApiModelProperty(value = "教练id") + @QueryField(type = QueryType.EQ) + private Integer coachId; + + @ApiModelProperty(value = "支付的用户id") + @QueryField(type = QueryType.EQ) + private Integer payUserId; + + @ApiModelProperty(value = "0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "代付支付方式,0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付") + @QueryField(type = QueryType.EQ) + private Integer friendPayType; + + @ApiModelProperty(value = "0未付款,1已付款") + @QueryField(type = QueryType.EQ) + private Boolean payStatus; + + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + @QueryField(type = QueryType.EQ) + private Integer orderStatus; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + @QueryField(type = QueryType.EQ) + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + private String deliveryTime; + + @ApiModelProperty(value = "优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡") + @QueryField(type = QueryType.EQ) + private Integer couponType; + + @ApiModelProperty(value = "优惠说明") + private String couponDesc; + + @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") + private String qrcode; + + @ApiModelProperty(value = "vip月卡年卡、ic月卡年卡回退次数") + @QueryField(type = QueryType.EQ) + private Integer returnNum; + + @ApiModelProperty(value = "vip充值回退金额") + @QueryField(type = QueryType.EQ) + private BigDecimal returnMoney; + + @ApiModelProperty(value = "预约详情开始时间数组") + private String startTime; + + @ApiModelProperty(value = "是否已开具发票:0未开发票,1已开发票,2不能开具发票") + @QueryField(type = QueryType.EQ) + private Boolean isInvoice; + + @ApiModelProperty(value = "发票流水号") + private String invoiceNo; + + @ApiModelProperty(value = "支付时间") + private String payTime; + + @ApiModelProperty(value = "退款时间") + private String refundTime; + + @ApiModelProperty(value = "申请退款时间") + private String refundApplyTime; + + @ApiModelProperty(value = "过期时间") + private String expirationTime; + + @ApiModelProperty(value = "对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单") + @QueryField(type = QueryType.EQ) + private Integer checkBill; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "系统版本号 0当前版本 value=其他版本") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "自提码") + private String selfTakeCode; + + @ApiModelProperty(value = "是否已收到赠品") + @QueryField(type = QueryType.EQ) + private Boolean hasTakeGift; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopRechargeOrderParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopRechargeOrderParam.java new file mode 100644 index 0000000..5034f94 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopRechargeOrderParam.java @@ -0,0 +1,105 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 会员充值订单表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopRechargeOrderParam对象", description = "会员充值订单表查询参数") +public class ShopRechargeOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "充值方式(10自定义金额 20套餐充值)") + @QueryField(type = QueryType.EQ) + private Integer rechargeType; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "充值套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "用户支付金额") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "赠送金额") + @QueryField(type = QueryType.EQ) + private BigDecimal giftMoney; + + @ApiModelProperty(value = "实际到账金额") + @QueryField(type = QueryType.EQ) + private BigDecimal actualMoney; + + @ApiModelProperty(value = "用户可用余额") + @QueryField(type = QueryType.EQ) + private BigDecimal balance; + + @ApiModelProperty(value = "支付方式(微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "支付状态(10待支付 20已支付)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + @QueryField(type = QueryType.EQ) + private Integer payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + @QueryField(type = QueryType.EQ) + private Integer tradeId; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopSpecParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopSpecParam.java new file mode 100644 index 0000000..e6bae69 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopSpecParam.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopSpecParam对象", description = "规格查询参数") +public class ShopSpecParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格ID") + @QueryField(type = QueryType.EQ) + private Integer specId; + + @ApiModelProperty(value = "规格名称") + private String specName; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "创建用户") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "更新者") + @QueryField(type = QueryType.EQ) + private Integer updater; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1待修,2异常已修,3异常未修") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopSpecValueParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopSpecValueParam.java new file mode 100644 index 0000000..0387a70 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopSpecValueParam.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 规格值查询参数 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopSpecValueParam对象", description = "规格值查询参数") +public class ShopSpecValueParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "规格值ID") + @QueryField(type = QueryType.EQ) + private Integer specValueId; + + @ApiModelProperty(value = "规格组ID") + @QueryField(type = QueryType.EQ) + private Integer specId; + + @ApiModelProperty(value = "规格值") + private String specValue; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopSplashParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopSplashParam.java new file mode 100644 index 0000000..9ad6034 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopSplashParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 开屏广告查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopSplashParam对象", description = "开屏广告查询参数") +public class ShopSplashParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "图片") + private String image; + + @ApiModelProperty(value = "跳转类型") + private String jumpType; + + @ApiModelProperty(value = "跳转主键") + @QueryField(type = QueryType.EQ) + private Integer jumpPk; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopUserAddressParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopUserAddressParam.java new file mode 100644 index 0000000..e2c9565 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopUserAddressParam.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 收货地址查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopUserAddressParam对象", description = "收货地址查询参数") +public class ShopUserAddressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "姓名") + private String name; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "收货地址") + private String address; + + @ApiModelProperty(value = "收货地址") + private String fullAddress; + + private String lat; + + private String lng; + + @ApiModelProperty(value = "1先生 2女士") + @QueryField(type = QueryType.EQ) + private Integer gender; + + @ApiModelProperty(value = "家、公司、学校") + private String type; + + @ApiModelProperty(value = "默认收货地址") + @QueryField(type = QueryType.EQ) + private Boolean isDefault; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopUserBalanceLogParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopUserBalanceLogParam.java new file mode 100644 index 0000000..006b540 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopUserBalanceLogParam.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户余额变动明细表查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopUserBalanceLogParam对象", description = "用户余额变动明细表查询参数") +public class ShopUserBalanceLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "余额变动场景(0下级下单1供应商收入2差价收益 10用户充值 20用户消费 30管理员操作 40订单退款)") + @QueryField(type = QueryType.EQ) + private Integer scene; + + @ApiModelProperty(value = "变动金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "变动后余额") + @QueryField(type = QueryType.EQ) + private BigDecimal balance; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "订单编号") + private String orderNo; + + @ApiModelProperty(value = "操作人ID") + @QueryField(type = QueryType.EQ) + private Integer adminId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Long merchantId; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopUserCollectionParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopUserCollectionParam.java new file mode 100644 index 0000000..3a4ad03 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopUserCollectionParam.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的收藏查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopUserCollectionParam对象", description = "我的收藏查询参数") +public class ShopUserCollectionParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "0店铺,1商品") + @QueryField(type = QueryType.EQ) + private Boolean type; + + @ApiModelProperty(value = "租户ID") + @QueryField(type = QueryType.EQ) + private Integer tid; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopUserRefereeParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopUserRefereeParam.java new file mode 100644 index 0000000..e223fd2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopUserRefereeParam.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户推荐关系表查询参数 + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopUserRefereeParam对象", description = "用户推荐关系表查询参数") +public class ShopUserRefereeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + @QueryField(type = QueryType.EQ) + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + @QueryField(type = QueryType.EQ) + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopUsersParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopUsersParam.java new file mode 100644 index 0000000..b17db0d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopUsersParam.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopUsersParam对象", description = "查询参数") +public class ShopUsersParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户唯一小程序id") + private String openId; + + @ApiModelProperty(value = "小程序用户秘钥") + private String sessionKey; + + @ApiModelProperty(value = "用户名") + private String username; + + @ApiModelProperty(value = "头像地址") + private String avatarUrl; + + @ApiModelProperty(value = "1男,2女") + @QueryField(type = QueryType.EQ) + private Boolean gender; + + @ApiModelProperty(value = "国家") + private String country; + + @ApiModelProperty(value = "省份") + private String province; + + @ApiModelProperty(value = "城市") + private String city; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "积分") + @QueryField(type = QueryType.EQ) + private BigDecimal integral; + + @ApiModelProperty(value = "余额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + private String idCard; + + private String realName; + + @ApiModelProperty(value = "是否管理员:1是;2否") + @QueryField(type = QueryType.EQ) + private Boolean isAdmin; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ShopWechatDepositParam.java b/src/main/java/com/gxwebsoft/shop/param/ShopWechatDepositParam.java new file mode 100644 index 0000000..a14ef1b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ShopWechatDepositParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 押金查询参数 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ShopWechatDepositParam对象", description = "押金查询参数") +public class ShopWechatDepositParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "订单id") + @QueryField(type = QueryType.EQ) + private Integer oid; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer uid; + + @ApiModelProperty(value = "场地订单号") + private String orderNum; + + @ApiModelProperty(value = "付款订单号") + private String wechatOrder; + + @ApiModelProperty(value = "退款订单号 ") + private String wechatReturn; + + @ApiModelProperty(value = "场馆名称") + private String siteName; + + @ApiModelProperty(value = "微信昵称") + private String username; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "物品名称") + private String name; + + @ApiModelProperty(value = "押金金额") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "押金状态,1已付款,2未付款,已退押金") + @QueryField(type = QueryType.EQ) + private Boolean status; + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopBrandService.java b/src/main/java/com/gxwebsoft/shop/service/ShopBrandService.java new file mode 100644 index 0000000..294a1f5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopBrandService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopBrand; +import com.gxwebsoft.shop.param.ShopBrandParam; + +import java.util.List; + +/** + * 品牌Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopBrandService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopBrandParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopBrandParam param); + + /** + * 根据id查询 + * + * @param brandId ID + * @return ShopBrand + */ + ShopBrand getByIdRel(Integer brandId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopCartService.java b/src/main/java/com/gxwebsoft/shop/service/ShopCartService.java new file mode 100644 index 0000000..18d4979 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopCartService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopCart; +import com.gxwebsoft.shop.param.ShopCartParam; + +import java.util.List; + +/** + * 购物车Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopCartService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopCartParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopCartParam param); + + /** + * 根据id查询 + * + * @param id 购物车表ID + * @return ShopCart + */ + ShopCart getByIdRel(Long id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopCategoryService.java b/src/main/java/com/gxwebsoft/shop/service/ShopCategoryService.java new file mode 100644 index 0000000..5ac828e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopCategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopCategory; +import com.gxwebsoft.shop.param.ShopCategoryParam; + +import java.util.List; + +/** + * 商品分类Service + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +public interface ShopCategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopCategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopCategoryParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ShopCategory + */ + ShopCategory getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopChatConversationService.java b/src/main/java/com/gxwebsoft/shop/service/ShopChatConversationService.java new file mode 100644 index 0000000..32eeac3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopChatConversationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopChatConversation; +import com.gxwebsoft.shop.param.ShopChatConversationParam; + +import java.util.List; + +/** + * 聊天消息表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopChatConversationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopChatConversationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopChatConversationParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ShopChatConversation + */ + ShopChatConversation getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopChatMessageService.java b/src/main/java/com/gxwebsoft/shop/service/ShopChatMessageService.java new file mode 100644 index 0000000..c1b40a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopChatMessageService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopChatMessage; +import com.gxwebsoft.shop.param.ShopChatMessageParam; + +import java.util.List; + +/** + * 聊天消息表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopChatMessageService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopChatMessageParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopChatMessageParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ShopChatMessage + */ + ShopChatMessage getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopCommissionRoleService.java b/src/main/java/com/gxwebsoft/shop/service/ShopCommissionRoleService.java new file mode 100644 index 0000000..e9ef11e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopCommissionRoleService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopCommissionRole; +import com.gxwebsoft.shop.param.ShopCommissionRoleParam; + +import java.util.List; + +/** + * 分红角色Service + * + * @author 科技小王子 + * @since 2025-05-01 10:01:15 + */ +public interface ShopCommissionRoleService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopCommissionRoleParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopCommissionRoleParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopCommissionRole + */ + ShopCommissionRole getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopCountService.java b/src/main/java/com/gxwebsoft/shop/service/ShopCountService.java new file mode 100644 index 0000000..65af394 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopCountService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopCount; +import com.gxwebsoft.shop.param.ShopCountParam; + +import java.util.List; + +/** + * 商城销售统计表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopCountService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopCountParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopCountParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ShopCount + */ + ShopCount getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerApplyService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerApplyService.java new file mode 100644 index 0000000..bce9bda --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerApplyService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerApply; +import com.gxwebsoft.shop.param.ShopDealerApplyParam; + +import java.util.List; + +/** + * 分销商申请记录表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerApplyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerApplyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerApplyParam param); + + /** + * 根据id查询 + * + * @param applyId 主键ID + * @return ShopDealerApply + */ + ShopDealerApply getByIdRel(Integer applyId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java new file mode 100644 index 0000000..7c22459 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerCapitalService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerCapital; +import com.gxwebsoft.shop.param.ShopDealerCapitalParam; + +import java.util.List; + +/** + * 分销商资金明细表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerCapitalService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerCapitalParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerCapitalParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopDealerCapital + */ + ShopDealerCapital getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerOrderService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerOrderService.java new file mode 100644 index 0000000..54c40d7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerOrderService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerOrder; +import com.gxwebsoft.shop.param.ShopDealerOrderParam; + +import java.util.List; + +/** + * 分销商订单记录表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerOrderParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopDealerOrder + */ + ShopDealerOrder getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerRefereeService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerRefereeService.java new file mode 100644 index 0000000..66b53fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerRefereeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerReferee; +import com.gxwebsoft.shop.param.ShopDealerRefereeParam; + +import java.util.List; + +/** + * 分销商推荐关系表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerRefereeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerRefereeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerRefereeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopDealerReferee + */ + ShopDealerReferee getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerSettingService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerSettingService.java new file mode 100644 index 0000000..cb5faf7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerSettingService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerSetting; +import com.gxwebsoft.shop.param.ShopDealerSettingParam; + +import java.util.List; + +/** + * 分销商设置表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerSettingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerSettingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerSettingParam param); + + /** + * 根据id查询 + * + * @param key 设置项标示 + * @return ShopDealerSetting + */ + ShopDealerSetting getByIdRel(String key); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerUserService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerUserService.java new file mode 100644 index 0000000..1b3cf8a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerUser; +import com.gxwebsoft.shop.param.ShopDealerUserParam; + +import java.util.List; + +/** + * 分销商用户记录表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerUserParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopDealerUser + */ + ShopDealerUser getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopDealerWithdrawService.java b/src/main/java/com/gxwebsoft/shop/service/ShopDealerWithdrawService.java new file mode 100644 index 0000000..cabbbff --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopDealerWithdrawService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopDealerWithdraw; +import com.gxwebsoft.shop.param.ShopDealerWithdrawParam; + +import java.util.List; + +/** + * 分销商提现明细表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopDealerWithdrawService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopDealerWithdrawParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopDealerWithdrawParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopDealerWithdraw + */ + ShopDealerWithdraw getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopExpressService.java b/src/main/java/com/gxwebsoft/shop/service/ShopExpressService.java new file mode 100644 index 0000000..f8f30d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopExpressService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopExpress; +import com.gxwebsoft.shop.param.ShopExpressParam; + +import java.util.List; + +/** + * 物流公司Service + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopExpressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopExpressParam param); + + /** + * 根据id查询 + * + * @param expressId 物流公司ID + * @return ShopExpress + */ + ShopExpress getByIdRel(Integer expressId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateDetailService.java b/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateDetailService.java new file mode 100644 index 0000000..1f518f5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateDetailService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopExpressTemplateDetail; +import com.gxwebsoft.shop.param.ShopExpressTemplateDetailParam; + +import java.util.List; + +/** + * 运费模板Service + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressTemplateDetailService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopExpressTemplateDetailParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopExpressTemplateDetailParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopExpressTemplateDetail + */ + ShopExpressTemplateDetail getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateService.java b/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateService.java new file mode 100644 index 0000000..ba2b3bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopExpressTemplateService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopExpressTemplate; +import com.gxwebsoft.shop.param.ShopExpressTemplateParam; + +import java.util.List; + +/** + * 运费模板Service + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +public interface ShopExpressTemplateService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopExpressTemplateParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopExpressTemplateParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopExpressTemplate + */ + ShopExpressTemplate getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCategoryService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCategoryService.java new file mode 100644 index 0000000..5dbed7e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsCategory; +import com.gxwebsoft.shop.param.ShopGoodsCategoryParam; + +import java.util.List; + +/** + * 商品分类Service + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +public interface ShopGoodsCategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsCategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsCategoryParam param); + + /** + * 根据id查询 + * + * @param categoryId 商品分类ID + * @return ShopGoodsCategory + */ + ShopGoodsCategory getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCommentService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCommentService.java new file mode 100644 index 0000000..6fc33d4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCommentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsComment; +import com.gxwebsoft.shop.param.ShopGoodsCommentParam; + +import java.util.List; + +/** + * 评论表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsCommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsCommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsCommentParam param); + + /** + * 根据id查询 + * + * @param id 评论ID + * @return ShopGoodsComment + */ + ShopGoodsComment getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCouponService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCouponService.java new file mode 100644 index 0000000..6ed3d6f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsCouponService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsCoupon; +import com.gxwebsoft.shop.param.ShopGoodsCouponParam; + +import java.util.List; + +/** + * 商品优惠券表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsCouponService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsCouponParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsCouponParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopGoodsCoupon + */ + ShopGoodsCoupon getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsIncomeConfigService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsIncomeConfigService.java new file mode 100644 index 0000000..5784743 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsIncomeConfigService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsIncomeConfig; +import com.gxwebsoft.shop.param.ShopGoodsIncomeConfigParam; + +import java.util.List; + +/** + * 分润配置Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsIncomeConfigService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsIncomeConfigParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsIncomeConfigParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopGoodsIncomeConfig + */ + ShopGoodsIncomeConfig getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsLogService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsLogService.java new file mode 100644 index 0000000..0c8d53b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsLog; +import com.gxwebsoft.shop.param.ShopGoodsLogParam; + +import java.util.List; + +/** + * 商品日志表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsLogParam param); + + /** + * 根据id查询 + * + * @param id 统计ID + * @return ShopGoodsLog + */ + ShopGoodsLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRelationService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRelationService.java new file mode 100644 index 0000000..9c43aa9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRelationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsRelation; +import com.gxwebsoft.shop.param.ShopGoodsRelationParam; + +import java.util.List; + +/** + * 商品点赞和收藏表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopGoodsRelationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsRelationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsRelationParam param); + + /** + * 根据id查询 + * + * @param id id + * @return ShopGoodsRelation + */ + ShopGoodsRelation getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRoleCommissionService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRoleCommissionService.java new file mode 100644 index 0000000..6ff923f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsRoleCommissionService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsRoleCommission; +import com.gxwebsoft.shop.param.ShopGoodsRoleCommissionParam; + +import java.util.List; + +/** + * 商品绑定角色的分润金额Service + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +public interface ShopGoodsRoleCommissionService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsRoleCommissionParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsRoleCommissionParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopGoodsRoleCommission + */ + ShopGoodsRoleCommission getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsService.java new file mode 100644 index 0000000..516ca7e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoods; +import com.gxwebsoft.shop.param.ShopGoodsParam; + +import java.util.List; + +/** + * 商品Service + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +public interface ShopGoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsParam param); + + /** + * 根据id查询 + * + * @param goodsId 自增ID + * @return ShopGoods + */ + ShopGoods getByIdRel(Integer goodsId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSkuService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSkuService.java new file mode 100644 index 0000000..1431347 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSkuService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsSku; +import com.gxwebsoft.shop.param.ShopGoodsSkuParam; + +import java.util.List; + +/** + * 商品sku列表Service + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +public interface ShopGoodsSkuService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsSkuParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsSkuParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopGoodsSku + */ + ShopGoodsSku getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSpecService.java b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSpecService.java new file mode 100644 index 0000000..32250e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopGoodsSpecService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopGoodsSpec; +import com.gxwebsoft.shop.param.ShopGoodsSpecParam; + +import java.util.List; + +/** + * 商品多规格Service + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +public interface ShopGoodsSpecService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopGoodsSpecParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopGoodsSpecParam param); + + /** + * 根据id查询 + * + * @param id 主键 + * @return ShopGoodsSpec + */ + ShopGoodsSpec getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopMerchantAccountService.java b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantAccountService.java new file mode 100644 index 0000000..127420f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantAccountService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.gxwebsoft.shop.param.ShopMerchantAccountParam; + +import java.util.List; + +/** + * 商户账号Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantAccountService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopMerchantAccountParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopMerchantAccountParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ShopMerchantAccount + */ + ShopMerchantAccount getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopMerchantApplyService.java b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantApplyService.java new file mode 100644 index 0000000..7eeaf21 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantApplyService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopMerchantApply; +import com.gxwebsoft.shop.param.ShopMerchantApplyParam; + +import java.util.List; + +/** + * 商户入驻申请Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantApplyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopMerchantApplyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopMerchantApplyParam param); + + /** + * 根据id查询 + * + * @param applyId ID + * @return ShopMerchantApply + */ + ShopMerchantApply getByIdRel(Integer applyId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopMerchantService.java b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantService.java new file mode 100644 index 0000000..177572a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopMerchant; +import com.gxwebsoft.shop.param.ShopMerchantParam; + +import java.util.List; + +/** + * 商户Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopMerchantParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopMerchantParam param); + + /** + * 根据id查询 + * + * @param merchantId ID + * @return ShopMerchant + */ + ShopMerchant getByIdRel(Long merchantId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopMerchantTypeService.java b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantTypeService.java new file mode 100644 index 0000000..e0922d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopMerchantTypeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopMerchantType; +import com.gxwebsoft.shop.param.ShopMerchantTypeParam; + +import java.util.List; + +/** + * 商户类型Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopMerchantTypeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopMerchantTypeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopMerchantTypeParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ShopMerchantType + */ + ShopMerchantType getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryGoodsService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryGoodsService.java new file mode 100644 index 0000000..55699ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryGoodsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderDeliveryGoods; +import com.gxwebsoft.shop.param.ShopOrderDeliveryGoodsParam; + +import java.util.List; + +/** + * 发货单商品Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderDeliveryGoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderDeliveryGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderDeliveryGoodsParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopOrderDeliveryGoods + */ + ShopOrderDeliveryGoods getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryService.java new file mode 100644 index 0000000..3fffbcb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderDeliveryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderDelivery; +import com.gxwebsoft.shop.param.ShopOrderDeliveryParam; + +import java.util.List; + +/** + * 发货单Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderDeliveryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderDeliveryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderDeliveryParam param); + + /** + * 根据id查询 + * + * @param deliveryId 发货单ID + * @return ShopOrderDelivery + */ + ShopOrderDelivery getByIdRel(Integer deliveryId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderExtractService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderExtractService.java new file mode 100644 index 0000000..d0a3bd6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderExtractService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderExtract; +import com.gxwebsoft.shop.param.ShopOrderExtractParam; + +import java.util.List; + +/** + * 自提订单联系方式Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderExtractService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderExtractParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderExtractParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopOrderExtract + */ + ShopOrderExtract getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderGoodsService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderGoodsService.java new file mode 100644 index 0000000..d4e932c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderGoodsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderGoods; +import com.gxwebsoft.shop.param.ShopOrderGoodsParam; + +import java.util.List; + +/** + * 商品信息Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderGoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderGoodsParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ShopOrderGoods + */ + ShopOrderGoods getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoLogService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoLogService.java new file mode 100644 index 0000000..9ede6f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderInfoLog; +import com.gxwebsoft.shop.param.ShopOrderInfoLogParam; + +import java.util.List; + +/** + * 订单核销Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderInfoLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderInfoLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderInfoLogParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopOrderInfoLog + */ + ShopOrderInfoLog getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoService.java new file mode 100644 index 0000000..f5a53fa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderInfoService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrderInfo; +import com.gxwebsoft.shop.param.ShopOrderInfoParam; + +import java.util.List; + +/** + * 场地Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderInfoService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderInfoParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderInfoParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ShopOrderInfo + */ + ShopOrderInfo getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopOrderService.java b/src/main/java/com/gxwebsoft/shop/service/ShopOrderService.java new file mode 100644 index 0000000..fdfa4af --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopOrderService.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.param.ShopOrderParam; + +import java.util.HashMap; +import java.util.List; + +/** + * 订单Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopOrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单号 + * @return ShopOrder + */ + ShopOrder getByIdRel(Integer orderId); + + HashMap createWxOrder(ShopOrder shopOrder); + + ShopOrder getByOutTradeNo(String outTradeNo); + + Boolean queryOrderByOutTradeNo(ShopOrder shopOrder); + + void updateByOutTradeNo(ShopOrder order); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopRechargeOrderService.java b/src/main/java/com/gxwebsoft/shop/service/ShopRechargeOrderService.java new file mode 100644 index 0000000..dcb936a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopRechargeOrderService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopRechargeOrder; +import com.gxwebsoft.shop.param.ShopRechargeOrderParam; + +import java.util.List; + +/** + * 会员充值订单表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +public interface ShopRechargeOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopRechargeOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopRechargeOrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单ID + * @return ShopRechargeOrder + */ + ShopRechargeOrder getByIdRel(Integer orderId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopSpecService.java b/src/main/java/com/gxwebsoft/shop/service/ShopSpecService.java new file mode 100644 index 0000000..2db6368 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopSpecService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopSpec; +import com.gxwebsoft.shop.param.ShopSpecParam; + +import java.util.List; + +/** + * 规格Service + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +public interface ShopSpecService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopSpecParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopSpecParam param); + + /** + * 根据id查询 + * + * @param specId 规格ID + * @return ShopSpec + */ + ShopSpec getByIdRel(Integer specId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopSpecValueService.java b/src/main/java/com/gxwebsoft/shop/service/ShopSpecValueService.java new file mode 100644 index 0000000..f16f347 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopSpecValueService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopSpecValue; +import com.gxwebsoft.shop.param.ShopSpecValueParam; + +import java.util.List; + +/** + * 规格值Service + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +public interface ShopSpecValueService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopSpecValueParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopSpecValueParam param); + + /** + * 根据id查询 + * + * @param specValueId 规格值ID + * @return ShopSpecValue + */ + ShopSpecValue getByIdRel(Integer specValueId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopSplashService.java b/src/main/java/com/gxwebsoft/shop/service/ShopSplashService.java new file mode 100644 index 0000000..0087a1e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopSplashService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopSplash; +import com.gxwebsoft.shop.param.ShopSplashParam; + +import java.util.List; + +/** + * 开屏广告Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopSplashService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopSplashParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopSplashParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopSplash + */ + ShopSplash getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopUserAddressService.java b/src/main/java/com/gxwebsoft/shop/service/ShopUserAddressService.java new file mode 100644 index 0000000..0cc2a9b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopUserAddressService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopUserAddress; +import com.gxwebsoft.shop.param.ShopUserAddressParam; + +import java.util.List; + +/** + * 收货地址Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserAddressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopUserAddressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopUserAddressParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopUserAddress + */ + ShopUserAddress getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopUserBalanceLogService.java b/src/main/java/com/gxwebsoft/shop/service/ShopUserBalanceLogService.java new file mode 100644 index 0000000..08e4087 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopUserBalanceLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopUserBalanceLog; +import com.gxwebsoft.shop.param.ShopUserBalanceLogParam; + +import java.util.List; + +/** + * 用户余额变动明细表Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserBalanceLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopUserBalanceLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopUserBalanceLogParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return ShopUserBalanceLog + */ + ShopUserBalanceLog getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopUserCollectionService.java b/src/main/java/com/gxwebsoft/shop/service/ShopUserCollectionService.java new file mode 100644 index 0000000..bc74a59 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopUserCollectionService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopUserCollection; +import com.gxwebsoft.shop.param.ShopUserCollectionParam; + +import java.util.List; + +/** + * 我的收藏Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUserCollectionService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopUserCollectionParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopUserCollectionParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopUserCollection + */ + ShopUserCollection getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopUserRefereeService.java b/src/main/java/com/gxwebsoft/shop/service/ShopUserRefereeService.java new file mode 100644 index 0000000..66e00a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopUserRefereeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopUserReferee; +import com.gxwebsoft.shop.param.ShopUserRefereeParam; + +import java.util.List; + +/** + * 用户推荐关系表Service + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +public interface ShopUserRefereeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopUserRefereeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopUserRefereeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ShopUserReferee + */ + ShopUserReferee getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopUsersService.java b/src/main/java/com/gxwebsoft/shop/service/ShopUsersService.java new file mode 100644 index 0000000..538451b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopUsersService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopUsers; +import com.gxwebsoft.shop.param.ShopUsersParam; + +import java.util.List; + +/** + * Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopUsersService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopUsersParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopUsersParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopUsers + */ + ShopUsers getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ShopWechatDepositService.java b/src/main/java/com/gxwebsoft/shop/service/ShopWechatDepositService.java new file mode 100644 index 0000000..9c4b0ad --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ShopWechatDepositService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ShopWechatDeposit; +import com.gxwebsoft.shop.param.ShopWechatDepositParam; + +import java.util.List; + +/** + * 押金Service + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +public interface ShopWechatDepositService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ShopWechatDepositParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ShopWechatDepositParam param); + + /** + * 根据id查询 + * + * @param id + * @return ShopWechatDeposit + */ + ShopWechatDeposit getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopBrandServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopBrandServiceImpl.java new file mode 100644 index 0000000..5037b55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopBrandServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopBrandMapper; +import com.gxwebsoft.shop.service.ShopBrandService; +import com.gxwebsoft.shop.entity.ShopBrand; +import com.gxwebsoft.shop.param.ShopBrandParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 品牌Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopBrandServiceImpl extends ServiceImpl implements ShopBrandService { + + @Override + public PageResult pageRel(ShopBrandParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopBrandParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopBrand getByIdRel(Integer brandId) { + ShopBrandParam param = new ShopBrandParam(); + param.setBrandId(brandId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopCartServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCartServiceImpl.java new file mode 100644 index 0000000..12d6b3a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCartServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopCartMapper; +import com.gxwebsoft.shop.service.ShopCartService; +import com.gxwebsoft.shop.entity.ShopCart; +import com.gxwebsoft.shop.param.ShopCartParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 购物车Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopCartServiceImpl extends ServiceImpl implements ShopCartService { + + @Override + public PageResult pageRel(ShopCartParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopCartParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopCart getByIdRel(Long id) { + ShopCartParam param = new ShopCartParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopCategoryServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCategoryServiceImpl.java new file mode 100644 index 0000000..fbe60af --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopCategoryMapper; +import com.gxwebsoft.shop.service.ShopCategoryService; +import com.gxwebsoft.shop.entity.ShopCategory; +import com.gxwebsoft.shop.param.ShopCategoryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品分类Service实现 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Service +public class ShopCategoryServiceImpl extends ServiceImpl implements ShopCategoryService { + + @Override + public PageResult pageRel(ShopCategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopCategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopCategory getByIdRel(Integer id) { + ShopCategoryParam param = new ShopCategoryParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatConversationServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatConversationServiceImpl.java new file mode 100644 index 0000000..e482f7e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatConversationServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopChatConversationMapper; +import com.gxwebsoft.shop.service.ShopChatConversationService; +import com.gxwebsoft.shop.entity.ShopChatConversation; +import com.gxwebsoft.shop.param.ShopChatConversationParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 聊天消息表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopChatConversationServiceImpl extends ServiceImpl implements ShopChatConversationService { + + @Override + public PageResult pageRel(ShopChatConversationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopChatConversationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopChatConversation getByIdRel(Integer id) { + ShopChatConversationParam param = new ShopChatConversationParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatMessageServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatMessageServiceImpl.java new file mode 100644 index 0000000..ca50663 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopChatMessageServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopChatMessageMapper; +import com.gxwebsoft.shop.service.ShopChatMessageService; +import com.gxwebsoft.shop.entity.ShopChatMessage; +import com.gxwebsoft.shop.param.ShopChatMessageParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 聊天消息表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopChatMessageServiceImpl extends ServiceImpl implements ShopChatMessageService { + + @Override + public PageResult pageRel(ShopChatMessageParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopChatMessageParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopChatMessage getByIdRel(Integer id) { + ShopChatMessageParam param = new ShopChatMessageParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopCommissionRoleServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCommissionRoleServiceImpl.java new file mode 100644 index 0000000..26823a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCommissionRoleServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopCommissionRoleMapper; +import com.gxwebsoft.shop.service.ShopCommissionRoleService; +import com.gxwebsoft.shop.entity.ShopCommissionRole; +import com.gxwebsoft.shop.param.ShopCommissionRoleParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分红角色Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 10:01:15 + */ +@Service +public class ShopCommissionRoleServiceImpl extends ServiceImpl implements ShopCommissionRoleService { + + @Override + public PageResult pageRel(ShopCommissionRoleParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopCommissionRoleParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopCommissionRole getByIdRel(Integer id) { + ShopCommissionRoleParam param = new ShopCommissionRoleParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopCountServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCountServiceImpl.java new file mode 100644 index 0000000..51fa64d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopCountServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopCountMapper; +import com.gxwebsoft.shop.service.ShopCountService; +import com.gxwebsoft.shop.entity.ShopCount; +import com.gxwebsoft.shop.param.ShopCountParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商城销售统计表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopCountServiceImpl extends ServiceImpl implements ShopCountService { + + @Override + public PageResult pageRel(ShopCountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopCountParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopCount getByIdRel(Integer id) { + ShopCountParam param = new ShopCountParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerApplyServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerApplyServiceImpl.java new file mode 100644 index 0000000..d69c590 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerApplyServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerApplyMapper; +import com.gxwebsoft.shop.service.ShopDealerApplyService; +import com.gxwebsoft.shop.entity.ShopDealerApply; +import com.gxwebsoft.shop.param.ShopDealerApplyParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商申请记录表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerApplyServiceImpl extends ServiceImpl implements ShopDealerApplyService { + + @Override + public PageResult pageRel(ShopDealerApplyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerApplyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerApply getByIdRel(Integer applyId) { + ShopDealerApplyParam param = new ShopDealerApplyParam(); + param.setApplyId(applyId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java new file mode 100644 index 0000000..d968875 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerCapitalServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerCapitalMapper; +import com.gxwebsoft.shop.service.ShopDealerCapitalService; +import com.gxwebsoft.shop.entity.ShopDealerCapital; +import com.gxwebsoft.shop.param.ShopDealerCapitalParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商资金明细表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerCapitalServiceImpl extends ServiceImpl implements ShopDealerCapitalService { + + @Override + public PageResult pageRel(ShopDealerCapitalParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerCapitalParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerCapital getByIdRel(Integer id) { + ShopDealerCapitalParam param = new ShopDealerCapitalParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerOrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerOrderServiceImpl.java new file mode 100644 index 0000000..753fe8f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerOrderServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerOrderMapper; +import com.gxwebsoft.shop.service.ShopDealerOrderService; +import com.gxwebsoft.shop.entity.ShopDealerOrder; +import com.gxwebsoft.shop.param.ShopDealerOrderParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商订单记录表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerOrderServiceImpl extends ServiceImpl implements ShopDealerOrderService { + + @Override + public PageResult pageRel(ShopDealerOrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerOrder getByIdRel(Integer id) { + ShopDealerOrderParam param = new ShopDealerOrderParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerRefereeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerRefereeServiceImpl.java new file mode 100644 index 0000000..1831557 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerRefereeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerRefereeMapper; +import com.gxwebsoft.shop.service.ShopDealerRefereeService; +import com.gxwebsoft.shop.entity.ShopDealerReferee; +import com.gxwebsoft.shop.param.ShopDealerRefereeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商推荐关系表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerRefereeServiceImpl extends ServiceImpl implements ShopDealerRefereeService { + + @Override + public PageResult pageRel(ShopDealerRefereeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerRefereeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerReferee getByIdRel(Integer id) { + ShopDealerRefereeParam param = new ShopDealerRefereeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerSettingServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerSettingServiceImpl.java new file mode 100644 index 0000000..bcdab7c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerSettingServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerSettingMapper; +import com.gxwebsoft.shop.service.ShopDealerSettingService; +import com.gxwebsoft.shop.entity.ShopDealerSetting; +import com.gxwebsoft.shop.param.ShopDealerSettingParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商设置表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerSettingServiceImpl extends ServiceImpl implements ShopDealerSettingService { + + @Override + public PageResult pageRel(ShopDealerSettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerSettingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerSetting getByIdRel(String key) { + ShopDealerSettingParam param = new ShopDealerSettingParam(); + param.setKey(key); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java new file mode 100644 index 0000000..3085415 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerUserMapper; +import com.gxwebsoft.shop.service.ShopDealerUserService; +import com.gxwebsoft.shop.entity.ShopDealerUser; +import com.gxwebsoft.shop.param.ShopDealerUserParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商用户记录表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerUserServiceImpl extends ServiceImpl implements ShopDealerUserService { + + @Override + public PageResult pageRel(ShopDealerUserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerUser getByIdRel(Integer id) { + ShopDealerUserParam param = new ShopDealerUserParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerWithdrawServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerWithdrawServiceImpl.java new file mode 100644 index 0000000..f435dab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopDealerWithdrawServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopDealerWithdrawMapper; +import com.gxwebsoft.shop.service.ShopDealerWithdrawService; +import com.gxwebsoft.shop.entity.ShopDealerWithdraw; +import com.gxwebsoft.shop.param.ShopDealerWithdrawParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分销商提现明细表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopDealerWithdrawServiceImpl extends ServiceImpl implements ShopDealerWithdrawService { + + @Override + public PageResult pageRel(ShopDealerWithdrawParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopDealerWithdrawParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopDealerWithdraw getByIdRel(Integer id) { + ShopDealerWithdrawParam param = new ShopDealerWithdrawParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressServiceImpl.java new file mode 100644 index 0000000..9ca35c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopExpressMapper; +import com.gxwebsoft.shop.service.ShopExpressService; +import com.gxwebsoft.shop.entity.ShopExpress; +import com.gxwebsoft.shop.param.ShopExpressParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物流公司Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Service +public class ShopExpressServiceImpl extends ServiceImpl implements ShopExpressService { + + @Override + public PageResult pageRel(ShopExpressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopExpressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopExpress getByIdRel(Integer expressId) { + ShopExpressParam param = new ShopExpressParam(); + param.setExpressId(expressId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateDetailServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateDetailServiceImpl.java new file mode 100644 index 0000000..e6c25db --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateDetailServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopExpressTemplateDetailMapper; +import com.gxwebsoft.shop.service.ShopExpressTemplateDetailService; +import com.gxwebsoft.shop.entity.ShopExpressTemplateDetail; +import com.gxwebsoft.shop.param.ShopExpressTemplateDetailParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 运费模板Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Service +public class ShopExpressTemplateDetailServiceImpl extends ServiceImpl implements ShopExpressTemplateDetailService { + + @Override + public PageResult pageRel(ShopExpressTemplateDetailParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopExpressTemplateDetailParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopExpressTemplateDetail getByIdRel(Integer id) { + ShopExpressTemplateDetailParam param = new ShopExpressTemplateDetailParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateServiceImpl.java new file mode 100644 index 0000000..3df97d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopExpressTemplateServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopExpressTemplateMapper; +import com.gxwebsoft.shop.service.ShopExpressTemplateService; +import com.gxwebsoft.shop.entity.ShopExpressTemplate; +import com.gxwebsoft.shop.param.ShopExpressTemplateParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 运费模板Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 10:04:21 + */ +@Service +public class ShopExpressTemplateServiceImpl extends ServiceImpl implements ShopExpressTemplateService { + + @Override + public PageResult pageRel(ShopExpressTemplateParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopExpressTemplateParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopExpressTemplate getByIdRel(Integer id) { + ShopExpressTemplateParam param = new ShopExpressTemplateParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCategoryServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCategoryServiceImpl.java new file mode 100644 index 0000000..170ab88 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsCategoryMapper; +import com.gxwebsoft.shop.service.ShopGoodsCategoryService; +import com.gxwebsoft.shop.entity.ShopGoodsCategory; +import com.gxwebsoft.shop.param.ShopGoodsCategoryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品分类Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 00:36:45 + */ +@Service +public class ShopGoodsCategoryServiceImpl extends ServiceImpl implements ShopGoodsCategoryService { + + @Override + public PageResult pageRel(ShopGoodsCategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsCategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsCategory getByIdRel(Integer categoryId) { + ShopGoodsCategoryParam param = new ShopGoodsCategoryParam(); + param.setCategoryId(categoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCommentServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCommentServiceImpl.java new file mode 100644 index 0000000..7f203bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCommentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsCommentMapper; +import com.gxwebsoft.shop.service.ShopGoodsCommentService; +import com.gxwebsoft.shop.entity.ShopGoodsComment; +import com.gxwebsoft.shop.param.ShopGoodsCommentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 评论表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopGoodsCommentServiceImpl extends ServiceImpl implements ShopGoodsCommentService { + + @Override + public PageResult pageRel(ShopGoodsCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsCommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsComment getByIdRel(Integer id) { + ShopGoodsCommentParam param = new ShopGoodsCommentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCouponServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCouponServiceImpl.java new file mode 100644 index 0000000..5112870 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsCouponServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsCouponMapper; +import com.gxwebsoft.shop.service.ShopGoodsCouponService; +import com.gxwebsoft.shop.entity.ShopGoodsCoupon; +import com.gxwebsoft.shop.param.ShopGoodsCouponParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品优惠券表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopGoodsCouponServiceImpl extends ServiceImpl implements ShopGoodsCouponService { + + @Override + public PageResult pageRel(ShopGoodsCouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsCouponParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsCoupon getByIdRel(Integer id) { + ShopGoodsCouponParam param = new ShopGoodsCouponParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsIncomeConfigServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsIncomeConfigServiceImpl.java new file mode 100644 index 0000000..d4ca36e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsIncomeConfigServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsIncomeConfigMapper; +import com.gxwebsoft.shop.service.ShopGoodsIncomeConfigService; +import com.gxwebsoft.shop.entity.ShopGoodsIncomeConfig; +import com.gxwebsoft.shop.param.ShopGoodsIncomeConfigParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 分润配置Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopGoodsIncomeConfigServiceImpl extends ServiceImpl implements ShopGoodsIncomeConfigService { + + @Override + public PageResult pageRel(ShopGoodsIncomeConfigParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsIncomeConfigParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsIncomeConfig getByIdRel(Integer id) { + ShopGoodsIncomeConfigParam param = new ShopGoodsIncomeConfigParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsLogServiceImpl.java new file mode 100644 index 0000000..0e2e46f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsLogMapper; +import com.gxwebsoft.shop.service.ShopGoodsLogService; +import com.gxwebsoft.shop.entity.ShopGoodsLog; +import com.gxwebsoft.shop.param.ShopGoodsLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品日志表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopGoodsLogServiceImpl extends ServiceImpl implements ShopGoodsLogService { + + @Override + public PageResult pageRel(ShopGoodsLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsLog getByIdRel(Integer id) { + ShopGoodsLogParam param = new ShopGoodsLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRelationServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRelationServiceImpl.java new file mode 100644 index 0000000..eaf1166 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRelationServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsRelationMapper; +import com.gxwebsoft.shop.service.ShopGoodsRelationService; +import com.gxwebsoft.shop.entity.ShopGoodsRelation; +import com.gxwebsoft.shop.param.ShopGoodsRelationParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品点赞和收藏表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopGoodsRelationServiceImpl extends ServiceImpl implements ShopGoodsRelationService { + + @Override + public PageResult pageRel(ShopGoodsRelationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsRelationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsRelation getByIdRel(Integer id) { + ShopGoodsRelationParam param = new ShopGoodsRelationParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRoleCommissionServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRoleCommissionServiceImpl.java new file mode 100644 index 0000000..95a72cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsRoleCommissionServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsRoleCommissionMapper; +import com.gxwebsoft.shop.service.ShopGoodsRoleCommissionService; +import com.gxwebsoft.shop.entity.ShopGoodsRoleCommission; +import com.gxwebsoft.shop.param.ShopGoodsRoleCommissionParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品绑定角色的分润金额Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 09:53:38 + */ +@Service +public class ShopGoodsRoleCommissionServiceImpl extends ServiceImpl implements ShopGoodsRoleCommissionService { + + @Override + public PageResult pageRel(ShopGoodsRoleCommissionParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsRoleCommissionParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsRoleCommission getByIdRel(Integer id) { + ShopGoodsRoleCommissionParam param = new ShopGoodsRoleCommissionParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsServiceImpl.java new file mode 100644 index 0000000..5ca224c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsMapper; +import com.gxwebsoft.shop.service.ShopGoodsService; +import com.gxwebsoft.shop.entity.ShopGoods; +import com.gxwebsoft.shop.param.ShopGoodsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品Service实现 + * + * @author 科技小王子 + * @since 2025-04-24 20:52:13 + */ +@Service +public class ShopGoodsServiceImpl extends ServiceImpl implements ShopGoodsService { + + @Override + public PageResult pageRel(ShopGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoods getByIdRel(Integer goodsId) { + ShopGoodsParam param = new ShopGoodsParam(); + param.setGoodsId(goodsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSkuServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSkuServiceImpl.java new file mode 100644 index 0000000..cc1739b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSkuServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsSkuMapper; +import com.gxwebsoft.shop.service.ShopGoodsSkuService; +import com.gxwebsoft.shop.entity.ShopGoodsSku; +import com.gxwebsoft.shop.param.ShopGoodsSkuParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品sku列表Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Service +public class ShopGoodsSkuServiceImpl extends ServiceImpl implements ShopGoodsSkuService { + + @Override + public PageResult pageRel(ShopGoodsSkuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsSkuParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsSku getByIdRel(Integer id) { + ShopGoodsSkuParam param = new ShopGoodsSkuParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSpecServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSpecServiceImpl.java new file mode 100644 index 0000000..812a5b3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopGoodsSpecServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopGoodsSpecMapper; +import com.gxwebsoft.shop.service.ShopGoodsSpecService; +import com.gxwebsoft.shop.entity.ShopGoodsSpec; +import com.gxwebsoft.shop.param.ShopGoodsSpecParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品多规格Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 09:43:31 + */ +@Service +public class ShopGoodsSpecServiceImpl extends ServiceImpl implements ShopGoodsSpecService { + + @Override + public PageResult pageRel(ShopGoodsSpecParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopGoodsSpecParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopGoodsSpec getByIdRel(Integer id) { + ShopGoodsSpecParam param = new ShopGoodsSpecParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantAccountServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantAccountServiceImpl.java new file mode 100644 index 0000000..6d39658 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantAccountServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopMerchantAccountMapper; +import com.gxwebsoft.shop.service.ShopMerchantAccountService; +import com.gxwebsoft.shop.entity.ShopMerchantAccount; +import com.gxwebsoft.shop.param.ShopMerchantAccountParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商户账号Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopMerchantAccountServiceImpl extends ServiceImpl implements ShopMerchantAccountService { + + @Override + public PageResult pageRel(ShopMerchantAccountParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopMerchantAccountParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopMerchantAccount getByIdRel(Integer id) { + ShopMerchantAccountParam param = new ShopMerchantAccountParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantApplyServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantApplyServiceImpl.java new file mode 100644 index 0000000..becb4aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantApplyServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopMerchantApplyMapper; +import com.gxwebsoft.shop.service.ShopMerchantApplyService; +import com.gxwebsoft.shop.entity.ShopMerchantApply; +import com.gxwebsoft.shop.param.ShopMerchantApplyParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商户入驻申请Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopMerchantApplyServiceImpl extends ServiceImpl implements ShopMerchantApplyService { + + @Override + public PageResult pageRel(ShopMerchantApplyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopMerchantApplyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopMerchantApply getByIdRel(Integer applyId) { + ShopMerchantApplyParam param = new ShopMerchantApplyParam(); + param.setApplyId(applyId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantServiceImpl.java new file mode 100644 index 0000000..386859b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopMerchantMapper; +import com.gxwebsoft.shop.service.ShopMerchantService; +import com.gxwebsoft.shop.entity.ShopMerchant; +import com.gxwebsoft.shop.param.ShopMerchantParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商户Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopMerchantServiceImpl extends ServiceImpl implements ShopMerchantService { + + @Override + public PageResult pageRel(ShopMerchantParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopMerchantParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopMerchant getByIdRel(Long merchantId) { + ShopMerchantParam param = new ShopMerchantParam(); + param.setMerchantId(merchantId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantTypeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantTypeServiceImpl.java new file mode 100644 index 0000000..38c87cd --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopMerchantTypeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopMerchantTypeMapper; +import com.gxwebsoft.shop.service.ShopMerchantTypeService; +import com.gxwebsoft.shop.entity.ShopMerchantType; +import com.gxwebsoft.shop.param.ShopMerchantTypeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商户类型Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopMerchantTypeServiceImpl extends ServiceImpl implements ShopMerchantTypeService { + + @Override + public PageResult pageRel(ShopMerchantTypeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopMerchantTypeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopMerchantType getByIdRel(Integer id) { + ShopMerchantTypeParam param = new ShopMerchantTypeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryGoodsServiceImpl.java new file mode 100644 index 0000000..c48c23a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryGoodsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderDeliveryGoodsMapper; +import com.gxwebsoft.shop.service.ShopOrderDeliveryGoodsService; +import com.gxwebsoft.shop.entity.ShopOrderDeliveryGoods; +import com.gxwebsoft.shop.param.ShopOrderDeliveryGoodsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 发货单商品Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderDeliveryGoodsServiceImpl extends ServiceImpl implements ShopOrderDeliveryGoodsService { + + @Override + public PageResult pageRel(ShopOrderDeliveryGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderDeliveryGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderDeliveryGoods getByIdRel(Integer id) { + ShopOrderDeliveryGoodsParam param = new ShopOrderDeliveryGoodsParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryServiceImpl.java new file mode 100644 index 0000000..1a94ab3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderDeliveryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderDeliveryMapper; +import com.gxwebsoft.shop.service.ShopOrderDeliveryService; +import com.gxwebsoft.shop.entity.ShopOrderDelivery; +import com.gxwebsoft.shop.param.ShopOrderDeliveryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 发货单Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderDeliveryServiceImpl extends ServiceImpl implements ShopOrderDeliveryService { + + @Override + public PageResult pageRel(ShopOrderDeliveryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderDeliveryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderDelivery getByIdRel(Integer deliveryId) { + ShopOrderDeliveryParam param = new ShopOrderDeliveryParam(); + param.setDeliveryId(deliveryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderExtractServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderExtractServiceImpl.java new file mode 100644 index 0000000..91cfdab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderExtractServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderExtractMapper; +import com.gxwebsoft.shop.service.ShopOrderExtractService; +import com.gxwebsoft.shop.entity.ShopOrderExtract; +import com.gxwebsoft.shop.param.ShopOrderExtractParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 自提订单联系方式Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderExtractServiceImpl extends ServiceImpl implements ShopOrderExtractService { + + @Override + public PageResult pageRel(ShopOrderExtractParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderExtractParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderExtract getByIdRel(Integer id) { + ShopOrderExtractParam param = new ShopOrderExtractParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderGoodsServiceImpl.java new file mode 100644 index 0000000..a622c16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderGoodsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderGoodsMapper; +import com.gxwebsoft.shop.service.ShopOrderGoodsService; +import com.gxwebsoft.shop.entity.ShopOrderGoods; +import com.gxwebsoft.shop.param.ShopOrderGoodsParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品信息Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderGoodsServiceImpl extends ServiceImpl implements ShopOrderGoodsService { + + @Override + public PageResult pageRel(ShopOrderGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderGoods getByIdRel(Integer id) { + ShopOrderGoodsParam param = new ShopOrderGoodsParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoLogServiceImpl.java new file mode 100644 index 0000000..fdd7f54 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderInfoLogMapper; +import com.gxwebsoft.shop.service.ShopOrderInfoLogService; +import com.gxwebsoft.shop.entity.ShopOrderInfoLog; +import com.gxwebsoft.shop.param.ShopOrderInfoLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 订单核销Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderInfoLogServiceImpl extends ServiceImpl implements ShopOrderInfoLogService { + + @Override + public PageResult pageRel(ShopOrderInfoLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderInfoLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderInfoLog getByIdRel(Integer id) { + ShopOrderInfoLogParam param = new ShopOrderInfoLogParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoServiceImpl.java new file mode 100644 index 0000000..6c2681b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderInfoServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopOrderInfoMapper; +import com.gxwebsoft.shop.service.ShopOrderInfoService; +import com.gxwebsoft.shop.entity.ShopOrderInfo; +import com.gxwebsoft.shop.param.ShopOrderInfoParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 场地Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderInfoServiceImpl extends ServiceImpl implements ShopOrderInfoService { + + @Override + public PageResult pageRel(ShopOrderInfoParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderInfoParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrderInfo getByIdRel(Integer id) { + ShopOrderInfoParam param = new ShopOrderInfoParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderServiceImpl.java new file mode 100644 index 0000000..524f9bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopOrderServiceImpl.java @@ -0,0 +1,251 @@ +package com.gxwebsoft.shop.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.system.entity.Payment; +import com.gxwebsoft.shop.entity.ShopOrderGoods; +import com.gxwebsoft.shop.mapper.ShopOrderMapper; +import com.gxwebsoft.shop.service.ShopOrderGoodsService; +import com.gxwebsoft.shop.service.ShopOrderService; +import com.gxwebsoft.shop.entity.ShopOrder; +import com.gxwebsoft.shop.param.ShopOrderParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAConfig; +import com.wechat.pay.java.core.RSAPublicKeyConfig; +import com.wechat.pay.java.core.exception.ServiceException; +import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; +import com.wechat.pay.java.service.payments.jsapi.model.*; +import com.wechat.pay.java.service.payments.model.Transaction; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 订单Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopOrderServiceImpl extends ServiceImpl implements ShopOrderService { + @Value("${spring.profiles.active}") + String active; + @Resource + private ConfigProperties config; + @Resource + private RedisUtil redisUtil; + @Resource + private ShopOrderGoodsService shopOrderGoodsService; + + public static String privateKeyPath = "/Users/gxwebsoft/Downloads/ef7f7e0430cb47019d06b93f885bf95f/apiclient_key.pem"; + public static String privateCertPath = "/Users/gxwebsoft/JAVA/com.gxwebsoft.core/src/main/resources/cert/apiclient_cert.pem"; + public static String wechatpayCertPath = "/Users/gxwebsoft/Downloads/ef7f7e0430cb47019d06b93f885bf95f/wechatpay_55729BDEC2502C301BA02CDC28E4CEE4DE4D1DB9.pem"; // 平台证书 + + @Override + public PageResult pageRel(ShopOrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + + // 整理订单数据 + if (!CollectionUtils.isEmpty(list)) { + final Set orderIds = list.stream().map(ShopOrder::getOrderId).collect(Collectors.toSet()); + final List goodsList = shopOrderGoodsService.list(new LambdaQueryWrapper().in(ShopOrderGoods::getOrderId,orderIds)); + final Map> collect = goodsList.stream().collect(Collectors.groupingBy(ShopOrderGoods::getOrderId)); + list.forEach(d -> { + d.setOrderGoods(collect.get(d.getOrderId())); + }); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopOrder getByIdRel(Integer orderId) { + ShopOrderParam param = new ShopOrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public HashMap createWxOrder(ShopOrder order) { + // 后台微信支付配置信息 + final Payment payment = getPayment(order); + // 微信小程序信息 + final JSONObject wxConfig = getWxConfig(order); + // 返回的订单数据 + final HashMap orderInfo = new HashMap<>(); + // 构建service + JsapiServiceExtension service = getWxService(order); + + // 订单金额 + BigDecimal decimal = order.getTotalPrice(); + final BigDecimal multiply = decimal.multiply(new BigDecimal(100)); + Integer money = multiply.intValue(); + + PrepayRequest request = new PrepayRequest(); + Amount amount = new Amount(); + amount.setTotal(money); + amount.setCurrency("CNY"); + request.setAmount(amount); + request.setAppid(wxConfig.getString("appId")); + request.setMchid(payment.getMchId()); + request.setDescription(order.getComments()); + request.setOutTradeNo(order.getOrderNo()); + request.setAttach(order.getTenantId().toString()); + final Payer payer = new Payer(); + payer.setOpenid(order.getOpenid()); + request.setPayer(payer); + request.setNotifyUrl("https://server.gxwebsoft.com/api/system/wx-pay/notify/" + order.getTenantId()); // 默认回调地址 + // 测试环境 + if (active.equals("dev")) { + amount.setTotal(1); + request.setAmount(amount); + request.setNotifyUrl("http://jimei-api.natapp1.cc/api/shop/wx-pay/notify/" + order.getTenantId()); // 默认回调地址 + } + // 后台配置的回调地址 + if (StrUtil.isNotBlank(payment.getNotifyUrl())) { + request.setNotifyUrl(payment.getNotifyUrl().concat("/").concat(order.getTenantId().toString())); + } + PrepayWithRequestPaymentResponse response = service.prepayWithRequestPayment(request); + orderInfo.put("provider", "wxpay"); + orderInfo.put("timeStamp", response.getTimeStamp()); + orderInfo.put("nonceStr", response.getNonceStr()); + orderInfo.put("package", response.getPackageVal()); + orderInfo.put("signType", "RSA"); + orderInfo.put("paySign", response.getPaySign()); + orderInfo.put("orderNo", order.getOrderNo()); + return orderInfo; + } + + @Override + public ShopOrder getByOutTradeNo(String outTradeNo) { + return baseMapper.getByOutTradeNo(outTradeNo); + } + + /** + * 修复订单支付状态 + * @param shopOrder + */ + @Override + public Boolean queryOrderByOutTradeNo(ShopOrder shopOrder) { + // 后台微信支付配置信息 + final Payment payment = getPayment(shopOrder); + QueryOrderByOutTradeNoRequest queryRequest = new QueryOrderByOutTradeNoRequest(); + queryRequest.setMchid(payment.getMchId()); + queryRequest.setOutTradeNo(shopOrder.getOrderNo()); + // 构建service + JsapiServiceExtension service = getWxService(shopOrder); + try { + Transaction result = service.queryOrderByOutTradeNo(queryRequest); + if(result.getTradeState().equals(Transaction.TradeStateEnum.SUCCESS)){ + shopOrder.setPayStatus(true); + shopOrder.setPayTime(DateUtil.date()); + shopOrder.setTransactionId(result.getTransactionId()); + updateById(shopOrder); + return true; + } + } catch (ServiceException e) { + // API返回失败, 例如ORDER_NOT_EXISTS + System.out.printf("code=[%s], message=[%s]\n", e.getErrorCode(), e.getErrorMessage()); + System.out.printf("reponse body=[%s]\n", e.getResponseBody()); + } + return false; + } + + @Override + public void updateByOutTradeNo(ShopOrder order) { + baseMapper.updateByOutTradeNo(order); + } + + public Payment getPayment(ShopOrder order){ + String key2 = "Payment:".concat(order.getPayType().toString()).concat(":").concat(order.getTenantId().toString()); + final Payment payment = redisUtil.get(key2, Payment.class); + if(ObjectUtil.isNotEmpty(payment)){ + return payment; + }; + return null; + }; + + public JSONObject getWxConfig(ShopOrder order){ + // 微信小程序(微信支付) + String key = "mp-weixin:".concat(order.getTenantId().toString()); + final String string = redisUtil.get(key); + return JSONObject.parseObject(string); + } + + public JsapiServiceExtension getWxService(ShopOrder order){ + Integer payType = order.getPayType(); + final String uploadPath = config.getUploadPath(); // 服务器本地路径 + final HashMap orderInfo = new HashMap<>(); + // 微信小程序(微信支付) + String key = "mp-weixin:".concat(order.getTenantId().toString()); + final String string = redisUtil.get(key); +// System.out.println("string = " + string); + final JSONObject mpWx = JSONObject.parseObject(string); +// System.out.println("mpWx = " + mpWx); + String key2 = "Payment:".concat(payType.toString()).concat(":").concat(order.getTenantId().toString()); + final Payment payment = redisUtil.get(key2, Payment.class); + if (ObjectUtil.isEmpty(payment)) { + throw new BusinessException("支付配置信息为空"); + } + + String privateKey = uploadPath.concat("/file").concat(payment.getApiclientKey()); // 秘钥证书 + String apiclientCert = uploadPath.concat("/file").concat(payment.getApiclientCert()); + String pubKey = uploadPath.concat("/file").concat(payment.getPubKey()); // 公钥证书 + // 开发环境配置 + if (active.equals("dev")) { + privateKey = privateKeyPath; + apiclientCert = wechatpayCertPath; + } + + // 兼容公钥 + Config config; + if (payment.getPubKey() != null && !payment.getPubKey().isEmpty()) { + config = new RSAPublicKeyConfig.Builder() + .merchantId(payment.getMchId()) + .privateKeyFromPath(privateKey) + .publicKeyFromPath(pubKey) + .publicKeyId(payment.getPubKeyId()) + .merchantSerialNumber(payment.getMerchantSerialNumber()) + .apiV3Key(payment.getApiKey()) + .build(); + } else { + config = new RSAConfig.Builder() + .merchantId(payment.getMchId()) + .privateKeyFromPath(privateKey) + .merchantSerialNumber(payment.getMerchantSerialNumber()) + .wechatPayCertificatesFromPath(apiclientCert) + .build(); + } + + // 构建service + return new JsapiServiceExtension.Builder().config(config).build(); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopRechargeOrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopRechargeOrderServiceImpl.java new file mode 100644 index 0000000..ee0d9c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopRechargeOrderServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopRechargeOrderMapper; +import com.gxwebsoft.shop.service.ShopRechargeOrderService; +import com.gxwebsoft.shop.entity.ShopRechargeOrder; +import com.gxwebsoft.shop.param.ShopRechargeOrderParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 会员充值订单表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:12 + */ +@Service +public class ShopRechargeOrderServiceImpl extends ServiceImpl implements ShopRechargeOrderService { + + @Override + public PageResult pageRel(ShopRechargeOrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopRechargeOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopRechargeOrder getByIdRel(Integer orderId) { + ShopRechargeOrderParam param = new ShopRechargeOrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecServiceImpl.java new file mode 100644 index 0000000..708f1c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopSpecMapper; +import com.gxwebsoft.shop.service.ShopSpecService; +import com.gxwebsoft.shop.entity.ShopSpec; +import com.gxwebsoft.shop.param.ShopSpecParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 规格Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Service +public class ShopSpecServiceImpl extends ServiceImpl implements ShopSpecService { + + @Override + public PageResult pageRel(ShopSpecParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopSpecParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopSpec getByIdRel(Integer specId) { + ShopSpecParam param = new ShopSpecParam(); + param.setSpecId(specId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecValueServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecValueServiceImpl.java new file mode 100644 index 0000000..9e39e23 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSpecValueServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopSpecValueMapper; +import com.gxwebsoft.shop.service.ShopSpecValueService; +import com.gxwebsoft.shop.entity.ShopSpecValue; +import com.gxwebsoft.shop.param.ShopSpecValueParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 规格值Service实现 + * + * @author 科技小王子 + * @since 2025-05-01 09:44:00 + */ +@Service +public class ShopSpecValueServiceImpl extends ServiceImpl implements ShopSpecValueService { + + @Override + public PageResult pageRel(ShopSpecValueParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopSpecValueParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopSpecValue getByIdRel(Integer specValueId) { + ShopSpecValueParam param = new ShopSpecValueParam(); + param.setSpecValueId(specValueId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopSplashServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSplashServiceImpl.java new file mode 100644 index 0000000..b6d3f8d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopSplashServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopSplashMapper; +import com.gxwebsoft.shop.service.ShopSplashService; +import com.gxwebsoft.shop.entity.ShopSplash; +import com.gxwebsoft.shop.param.ShopSplashParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 开屏广告Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopSplashServiceImpl extends ServiceImpl implements ShopSplashService { + + @Override + public PageResult pageRel(ShopSplashParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopSplashParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopSplash getByIdRel(Integer id) { + ShopSplashParam param = new ShopSplashParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserAddressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserAddressServiceImpl.java new file mode 100644 index 0000000..c0a4d07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserAddressServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopUserAddressMapper; +import com.gxwebsoft.shop.service.ShopUserAddressService; +import com.gxwebsoft.shop.entity.ShopUserAddress; +import com.gxwebsoft.shop.param.ShopUserAddressParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 收货地址Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopUserAddressServiceImpl extends ServiceImpl implements ShopUserAddressService { + + @Override + public PageResult pageRel(ShopUserAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopUserAddressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopUserAddress getByIdRel(Integer id) { + ShopUserAddressParam param = new ShopUserAddressParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserBalanceLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserBalanceLogServiceImpl.java new file mode 100644 index 0000000..483b7b3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserBalanceLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopUserBalanceLogMapper; +import com.gxwebsoft.shop.service.ShopUserBalanceLogService; +import com.gxwebsoft.shop.entity.ShopUserBalanceLog; +import com.gxwebsoft.shop.param.ShopUserBalanceLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户余额变动明细表Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopUserBalanceLogServiceImpl extends ServiceImpl implements ShopUserBalanceLogService { + + @Override + public PageResult pageRel(ShopUserBalanceLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopUserBalanceLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopUserBalanceLog getByIdRel(Integer logId) { + ShopUserBalanceLogParam param = new ShopUserBalanceLogParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserCollectionServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserCollectionServiceImpl.java new file mode 100644 index 0000000..5d6dd6b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserCollectionServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopUserCollectionMapper; +import com.gxwebsoft.shop.service.ShopUserCollectionService; +import com.gxwebsoft.shop.entity.ShopUserCollection; +import com.gxwebsoft.shop.param.ShopUserCollectionParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 我的收藏Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopUserCollectionServiceImpl extends ServiceImpl implements ShopUserCollectionService { + + @Override + public PageResult pageRel(ShopUserCollectionParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopUserCollectionParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopUserCollection getByIdRel(Integer id) { + ShopUserCollectionParam param = new ShopUserCollectionParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserRefereeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserRefereeServiceImpl.java new file mode 100644 index 0000000..5f32afe --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUserRefereeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopUserRefereeMapper; +import com.gxwebsoft.shop.service.ShopUserRefereeService; +import com.gxwebsoft.shop.entity.ShopUserReferee; +import com.gxwebsoft.shop.param.ShopUserRefereeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户推荐关系表Service实现 + * + * @author 科技小王子 + * @since 2025-03-05 17:05:28 + */ +@Service +public class ShopUserRefereeServiceImpl extends ServiceImpl implements ShopUserRefereeService { + + @Override + public PageResult pageRel(ShopUserRefereeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopUserRefereeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopUserReferee getByIdRel(Integer id) { + ShopUserRefereeParam param = new ShopUserRefereeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopUsersServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUsersServiceImpl.java new file mode 100644 index 0000000..73092ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopUsersServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopUsersMapper; +import com.gxwebsoft.shop.service.ShopUsersService; +import com.gxwebsoft.shop.entity.ShopUsers; +import com.gxwebsoft.shop.param.ShopUsersParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopUsersServiceImpl extends ServiceImpl implements ShopUsersService { + + @Override + public PageResult pageRel(ShopUsersParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopUsersParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopUsers getByIdRel(Integer id) { + ShopUsersParam param = new ShopUsersParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ShopWechatDepositServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ShopWechatDepositServiceImpl.java new file mode 100644 index 0000000..9bf85d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ShopWechatDepositServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ShopWechatDepositMapper; +import com.gxwebsoft.shop.service.ShopWechatDepositService; +import com.gxwebsoft.shop.entity.ShopWechatDeposit; +import com.gxwebsoft.shop.param.ShopWechatDepositParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 押金Service实现 + * + * @author 科技小王子 + * @since 2025-01-11 10:45:13 + */ +@Service +public class ShopWechatDepositServiceImpl extends ServiceImpl implements ShopWechatDepositService { + + @Override + public PageResult pageRel(ShopWechatDepositParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ShopWechatDepositParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ShopWechatDeposit getByIdRel(Integer id) { + ShopWechatDepositParam param = new ShopWechatDepositParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqBuildingController.java b/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqBuildingController.java new file mode 100644 index 0000000..1fadb35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqBuildingController.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.zhsq.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.zhsq.service.ZhsqBuildingService; +import com.gxwebsoft.zhsq.entity.ZhsqBuilding; +import com.gxwebsoft.zhsq.param.ZhsqBuildingParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 楼栋控制器 + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +@Api(tags = "楼栋管理") +@RestController +@RequestMapping("/api/zhsq/zhsq-building") +public class ZhsqBuildingController extends BaseController { + @Resource + private ZhsqBuildingService zhsqBuildingService; + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:list')") + @ApiOperation("分页查询楼栋") + @GetMapping("/page") + public ApiResult> page(ZhsqBuildingParam param) { + // 使用关联查询 + return success(zhsqBuildingService.pageRel(param)); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:list')") + @ApiOperation("查询全部楼栋") + @GetMapping() + public ApiResult> list(ZhsqBuildingParam param) { + // 使用关联查询 + return success(zhsqBuildingService.listRel(param)); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:list')") + @ApiOperation("根据id查询楼栋") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(zhsqBuildingService.getByIdRel(id)); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:save')") +// @OperationLog + @ApiOperation("添加楼栋") + @PostMapping() + public ApiResult save(@RequestBody ZhsqBuilding zhsqBuilding) { + if (zhsqBuildingService.save(zhsqBuilding)) { + return success("添加成功"); + } + return fail("添加失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:update')") +// @OperationLog + @ApiOperation("修改楼栋") + @PutMapping() + public ApiResult update(@RequestBody ZhsqBuilding zhsqBuilding) { + if (zhsqBuildingService.updateById(zhsqBuilding)) { + return success("修改成功"); + } + return fail("修改失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:remove')") +// @OperationLog + @ApiOperation("删除楼栋") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (zhsqBuildingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:save')") +// @OperationLog + @ApiOperation("批量添加楼栋") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (zhsqBuildingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:update')") +// @OperationLog + @ApiOperation("批量修改楼栋") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(zhsqBuildingService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqBuilding:remove')") +// @OperationLog + @ApiOperation("批量删除楼栋") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (zhsqBuildingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqXiaoquController.java b/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqXiaoquController.java new file mode 100644 index 0000000..68f5150 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/controller/ZhsqXiaoquController.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.zhsq.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.zhsq.service.ZhsqXiaoquService; +import com.gxwebsoft.zhsq.entity.ZhsqXiaoqu; +import com.gxwebsoft.zhsq.param.ZhsqXiaoquParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 小区控制器 + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +@Api(tags = "小区管理") +@RestController +@RequestMapping("/api/zhsq/zhsq-xiaoqu") +public class ZhsqXiaoquController extends BaseController { + @Resource + private ZhsqXiaoquService zhsqXiaoquService; + + @ApiOperation("分页查询小区") + @GetMapping("/page") + public ApiResult> page(ZhsqXiaoquParam param) { + // 使用关联查询 + return success(zhsqXiaoquService.pageRel(param)); + } + + @ApiOperation("查询全部小区") + @GetMapping() + public ApiResult> list(ZhsqXiaoquParam param) { + // 使用关联查询 + return success(zhsqXiaoquService.listRel(param)); + } + + @ApiOperation("根据id查询小区") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(zhsqXiaoquService.getByIdRel(id)); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:save')") +// @OperationLog + @ApiOperation("添加小区") + @PostMapping() + public ApiResult save(@RequestBody ZhsqXiaoqu zhsqXiaoqu) { + if (zhsqXiaoquService.save(zhsqXiaoqu)) { + return success("添加成功"); + } + return fail("添加失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:update')") +// @OperationLog + @ApiOperation("修改小区") + @PutMapping() + public ApiResult update(@RequestBody ZhsqXiaoqu zhsqXiaoqu) { + if (zhsqXiaoquService.updateById(zhsqXiaoqu)) { + return success("修改成功"); + } + return fail("修改失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:remove')") +// @OperationLog + @ApiOperation("删除小区") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (zhsqXiaoquService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:save')") +// @OperationLog + @ApiOperation("批量添加小区") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (zhsqXiaoquService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:update')") +// @OperationLog + @ApiOperation("批量修改小区") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(zhsqXiaoquService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + +// @PreAuthorize("hasAuthority('zhsq:zhsqXiaoqu:remove')") +// @OperationLog + @ApiOperation("批量删除小区") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (zhsqXiaoquService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqBuilding.java b/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqBuilding.java new file mode 100644 index 0000000..8f108ab --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqBuilding.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.zhsq.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 楼栋 + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ZhsqBuilding对象", description = "楼栋") +public class ZhsqBuilding implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "楼栋名称") + private String name; + + @ApiModelProperty(value = "所在社区") + private String shequ; + + @ApiModelProperty(value = "楼栋号") + private String code; + + @ApiModelProperty(value = "层数") + private Integer ceng; + + @ApiModelProperty(value = "单元数") + private Integer danyuan; + + @ApiModelProperty(value = "每层户数") + private Integer cengHouse; + + @ApiModelProperty(value = "设计用途") + private String designPurpose; + + @ApiModelProperty(value = "地下楼层数") + private Integer cengDixia; + + @ApiModelProperty(value = "建筑占地面积(㎡):") + private BigDecimal area; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "楼栋总户数") + private Integer totalHouse; + + @ApiModelProperty(value = "楼栋总人数") + private Integer totalPeople; + + @ApiModelProperty(value = "楼栋类型") + private String ldType; + + @ApiModelProperty(value = "楼栋结构") + private String jgType; + + @ApiModelProperty(value = "建筑类型") + private String jzType; + + @ApiModelProperty(value = "自然幢总面积(㎡)") + private BigDecimal areaZr; + + @ApiModelProperty(value = "交付日期") + private Date jfTime; + + @ApiModelProperty(value = "楼宇管家") + private String louAdmin; + + @ApiModelProperty(value = "联系方式") + private String phone; + + @ApiModelProperty(value = "责任物业") + private String wuyeAdmin; + + @ApiModelProperty(value = "楼栋动工时间") + private Date dgTime; + + @ApiModelProperty(value = "楼栋竣工日期") + private Date jgTime; + + @ApiModelProperty(value = "预售日期") + private Date ysTime; + + @ApiModelProperty(value = "楼高") + private Integer louHeight; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqXiaoqu.java b/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqXiaoqu.java new file mode 100644 index 0000000..cd96a53 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/entity/ZhsqXiaoqu.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.zhsq.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.math.BigDecimal; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小区 + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ZhsqXiaoqu对象", description = "小区") +public class ZhsqXiaoqu implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "小区名称") + private String name; + + @ApiModelProperty(value = "所在社区") + private String shequ; + + @ApiModelProperty(value = "是否为平房区") + private Boolean pingfang; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "邮政编码") + private String zipCode; + + @ApiModelProperty(value = "期数") + private Integer qishu; + + @ApiModelProperty(value = "5G面积(㎡)") + private String areaG5; + + @ApiModelProperty(value = "占地面积(㎡)") + private BigDecimal area; + + @ApiModelProperty(value = "建筑密度(%)") + private BigDecimal density; + + @ApiModelProperty(value = "容积率(%)") + private BigDecimal ratio; + + @ApiModelProperty(value = "绿化率") + private BigDecimal greening; + + @ApiModelProperty(value = "建筑单位") + private String building; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqBuildingMapper.java b/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqBuildingMapper.java new file mode 100644 index 0000000..c2cc90e --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqBuildingMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.zhsq.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.zhsq.entity.ZhsqBuilding; +import com.gxwebsoft.zhsq.param.ZhsqBuildingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 楼栋Mapper + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +public interface ZhsqBuildingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ZhsqBuildingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ZhsqBuildingParam param); + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqXiaoquMapper.java b/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqXiaoquMapper.java new file mode 100644 index 0000000..bedc008 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/mapper/ZhsqXiaoquMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.zhsq.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.zhsq.entity.ZhsqXiaoqu; +import com.gxwebsoft.zhsq.param.ZhsqXiaoquParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小区Mapper + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +public interface ZhsqXiaoquMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ZhsqXiaoquParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ZhsqXiaoquParam param); + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqBuildingMapper.xml b/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqBuildingMapper.xml new file mode 100644 index 0000000..e590cd6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqBuildingMapper.xml @@ -0,0 +1,113 @@ + + + + + + + SELECT a.* + FROM zhsq_building a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.shequ LIKE CONCAT('%', #{param.shequ}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.ceng = #{param.ceng} + + + AND a.danyuan = #{param.danyuan} + + + AND a.ceng_house = #{param.cengHouse} + + + AND a.design_purpose LIKE CONCAT('%', #{param.designPurpose}, '%') + + + AND a.ceng_dixia = #{param.cengDixia} + + + AND a.area = #{param.area} + + + AND a.lng LIKE CONCAT('%', #{param.lng}, '%') + + + AND a.lat LIKE CONCAT('%', #{param.lat}, '%') + + + AND a.total_house = #{param.totalHouse} + + + AND a.total_people = #{param.totalPeople} + + + AND a.ld_type LIKE CONCAT('%', #{param.ldType}, '%') + + + AND a.jg_type LIKE CONCAT('%', #{param.jgType}, '%') + + + AND a.jz_type LIKE CONCAT('%', #{param.jzType}, '%') + + + AND a.area_zr = #{param.areaZr} + + + AND a.jf_time LIKE CONCAT('%', #{param.jfTime}, '%') + + + AND a.lou_admin LIKE CONCAT('%', #{param.louAdmin}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.wuye_admin LIKE CONCAT('%', #{param.wuyeAdmin}, '%') + + + AND a.dg_time LIKE CONCAT('%', #{param.dgTime}, '%') + + + AND a.jg_time LIKE CONCAT('%', #{param.jgTime}, '%') + + + AND a.ys_time LIKE CONCAT('%', #{param.ysTime}, '%') + + + AND a.lou_height = #{param.louHeight} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.code = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqXiaoquMapper.xml b/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqXiaoquMapper.xml new file mode 100644 index 0000000..ecc2fb3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/mapper/xml/ZhsqXiaoquMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.* + FROM zhsq_xiaoqu a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.shequ LIKE CONCAT('%', #{param.shequ}, '%') + + + AND a.pingfang = #{param.pingfang} + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.lng LIKE CONCAT('%', #{param.lng}, '%') + + + AND a.lat LIKE CONCAT('%', #{param.lat}, '%') + + + AND a.zip_code LIKE CONCAT('%', #{param.zipCode}, '%') + + + AND a.qishu = #{param.qishu} + + + AND a.area = #{param.area} + + + AND a.density = #{param.density} + + + AND a.ratio = #{param.ratio} + + + AND a.greening = #{param.greening} + + + AND a.building LIKE CONCAT('%', #{param.building}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/zhsq/param/ZhsqBuildingParam.java b/src/main/java/com/gxwebsoft/zhsq/param/ZhsqBuildingParam.java new file mode 100644 index 0000000..2d3021b --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/param/ZhsqBuildingParam.java @@ -0,0 +1,121 @@ +package com.gxwebsoft.zhsq.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 楼栋查询参数 + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ZhsqBuildingParam对象", description = "楼栋查询参数") +public class ZhsqBuildingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "楼栋名称") + private String name; + + @ApiModelProperty(value = "所在社区") + private String shequ; + + @ApiModelProperty(value = "楼栋号") + private String code; + + @ApiModelProperty(value = "层数") + @QueryField(type = QueryType.EQ) + private Integer ceng; + + @ApiModelProperty(value = "单元数") + @QueryField(type = QueryType.EQ) + private Integer danyuan; + + @ApiModelProperty(value = "每层户数") + @QueryField(type = QueryType.EQ) + private Integer cengHouse; + + @ApiModelProperty(value = "设计用途") + private String designPurpose; + + @ApiModelProperty(value = "地下楼层数") + @QueryField(type = QueryType.EQ) + private Integer cengDixia; + + @ApiModelProperty(value = "建筑占地面积(㎡):") + @QueryField(type = QueryType.EQ) + private BigDecimal area; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "楼栋总户数") + @QueryField(type = QueryType.EQ) + private Integer totalHouse; + + @ApiModelProperty(value = "楼栋总人数") + @QueryField(type = QueryType.EQ) + private Integer totalPeople; + + @ApiModelProperty(value = "楼栋类型") + private String ldType; + + @ApiModelProperty(value = "楼栋结构") + private String jgType; + + @ApiModelProperty(value = "建筑类型") + private String jzType; + + @ApiModelProperty(value = "自然幢总面积(㎡)") + @QueryField(type = QueryType.EQ) + private BigDecimal areaZr; + + @ApiModelProperty(value = "交付日期") + private String jfTime; + + @ApiModelProperty(value = "楼宇管家") + private String louAdmin; + + @ApiModelProperty(value = "联系方式") + private String phone; + + @ApiModelProperty(value = "责任物业") + private String wuyeAdmin; + + @ApiModelProperty(value = "楼栋动工时间") + private String dgTime; + + @ApiModelProperty(value = "楼栋竣工日期") + private String jgTime; + + @ApiModelProperty(value = "预售日期") + private String ysTime; + + @ApiModelProperty(value = "楼高") + @QueryField(type = QueryType.EQ) + private Integer louHeight; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/param/ZhsqXiaoquParam.java b/src/main/java/com/gxwebsoft/zhsq/param/ZhsqXiaoquParam.java new file mode 100644 index 0000000..8420421 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/param/ZhsqXiaoquParam.java @@ -0,0 +1,86 @@ +package com.gxwebsoft.zhsq.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 小区查询参数 + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ZhsqXiaoquParam对象", description = "小区查询参数") +public class ZhsqXiaoquParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "小区名称") + private String name; + + @ApiModelProperty(value = "所在社区") + private String shequ; + + @ApiModelProperty(value = "是否为平房区") + @QueryField(type = QueryType.EQ) + private Boolean pingfang; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String lng; + + @ApiModelProperty(value = "纬度") + private String lat; + + @ApiModelProperty(value = "邮政编码") + private String zipCode; + + @ApiModelProperty(value = "5G面积(㎡)") + @QueryField(type = QueryType.EQ) + private String areaG5; + + @ApiModelProperty(value = "期数") + @QueryField(type = QueryType.EQ) + private Integer qishu; + + @ApiModelProperty(value = "占地面积(㎡)") + @QueryField(type = QueryType.EQ) + private Integer area; + + @ApiModelProperty(value = "建筑密度(%)") + @QueryField(type = QueryType.EQ) + private Integer density; + + @ApiModelProperty(value = "容积率(%)") + @QueryField(type = QueryType.EQ) + private Integer ratio; + + @ApiModelProperty(value = "绿化率") + @QueryField(type = QueryType.EQ) + private Integer greening; + + @ApiModelProperty(value = "建筑单位") + private String building; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/service/ZhsqBuildingService.java b/src/main/java/com/gxwebsoft/zhsq/service/ZhsqBuildingService.java new file mode 100644 index 0000000..cb61843 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/service/ZhsqBuildingService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.zhsq.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.zhsq.entity.ZhsqBuilding; +import com.gxwebsoft.zhsq.param.ZhsqBuildingParam; + +import java.util.List; + +/** + * 楼栋Service + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +public interface ZhsqBuildingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ZhsqBuildingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ZhsqBuildingParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ZhsqBuilding + */ + ZhsqBuilding getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/service/ZhsqXiaoquService.java b/src/main/java/com/gxwebsoft/zhsq/service/ZhsqXiaoquService.java new file mode 100644 index 0000000..cf0dd20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/service/ZhsqXiaoquService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.zhsq.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.zhsq.entity.ZhsqXiaoqu; +import com.gxwebsoft.zhsq.param.ZhsqXiaoquParam; + +import java.util.List; + +/** + * 小区Service + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +public interface ZhsqXiaoquService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ZhsqXiaoquParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ZhsqXiaoquParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return ZhsqXiaoqu + */ + ZhsqXiaoqu getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqBuildingServiceImpl.java b/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqBuildingServiceImpl.java new file mode 100644 index 0000000..acb796c --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqBuildingServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.zhsq.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.zhsq.mapper.ZhsqBuildingMapper; +import com.gxwebsoft.zhsq.service.ZhsqBuildingService; +import com.gxwebsoft.zhsq.entity.ZhsqBuilding; +import com.gxwebsoft.zhsq.param.ZhsqBuildingParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 楼栋Service实现 + * + * @author 科技小王子 + * @since 2025-05-17 16:11:41 + */ +@Service +public class ZhsqBuildingServiceImpl extends ServiceImpl implements ZhsqBuildingService { + + @Override + public PageResult pageRel(ZhsqBuildingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ZhsqBuildingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ZhsqBuilding getByIdRel(Integer id) { + ZhsqBuildingParam param = new ZhsqBuildingParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqXiaoquServiceImpl.java b/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqXiaoquServiceImpl.java new file mode 100644 index 0000000..7d8116b --- /dev/null +++ b/src/main/java/com/gxwebsoft/zhsq/service/impl/ZhsqXiaoquServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.zhsq.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.zhsq.mapper.ZhsqXiaoquMapper; +import com.gxwebsoft.zhsq.service.ZhsqXiaoquService; +import com.gxwebsoft.zhsq.entity.ZhsqXiaoqu; +import com.gxwebsoft.zhsq.param.ZhsqXiaoquParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 小区Service实现 + * + * @author 科技小王子 + * @since 2025-05-17 14:48:39 + */ +@Service +public class ZhsqXiaoquServiceImpl extends ServiceImpl implements ZhsqXiaoquService { + + @Override + public PageResult pageRel(ZhsqXiaoquParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("id asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ZhsqXiaoquParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("id asc"); + return page.sortRecords(list); + } + + @Override + public ZhsqXiaoqu getByIdRel(Integer id) { + ZhsqXiaoquParam param = new ZhsqXiaoquParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/lib/commons-codec-1.9.jar b/src/main/java/lib/commons-codec-1.9.jar new file mode 100644 index 0000000..ef35f1c Binary files /dev/null and b/src/main/java/lib/commons-codec-1.9.jar differ diff --git a/src/main/java/lib/json-20200518.jar b/src/main/java/lib/json-20200518.jar new file mode 100644 index 0000000..0b85b0e Binary files /dev/null and b/src/main/java/lib/json-20200518.jar differ diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..95dcca2 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,46 @@ +# 开发环境配置 + +# 数据源配置 +spring: + datasource: +# url: jdbc:mysql://47.119.165.234:3308/website?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 +# username: website +# password: Th2ywSKxWFHeYZS8 + +# url: jdbc:mysql://182.90.229.54:3306/db_10556?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 +# username: db_10556 +# password: 3FErjCpAFmbAR7Xw + + url: jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: modules + password: 8YdLnk7KsPAyDXGA + driver-class-name: com.mysql.cj.jdbc.Driver + type: com.alibaba.druid.pool.DruidDataSource + +# 日志配置 +logging: + level: + com.gxwebsoft: DEBUG + com.baomidou.mybatisplus: DEBUG + +socketio: + host: localhost #IP地址 + +# MQTT配置 +mqtt: + enabled: false # 添加开关来禁用MQTT服务 + host: tcp://1.14.159.185:1883 + username: swdev + password: Sw20250523 + client-id-prefix: hjm_car_ + topic: /SW_GPS/# + qos: 2 + connection-timeout: 10 + keep-alive-interval: 20 + auto-reconnect: true + +# 框架配置 +config: + # 开发环境接口 + server-url: http://127.0.0.1:9091/api + upload-path: /Users/gxwebsoft/Documents/uploads/ # window(D:\Temp) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..7bb4f72 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,49 @@ +# 生产环境配置 + +# 数据源配置 +spring: + datasource: + url: jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: modules + password: 8YdLnk7KsPAyDXGA + driver-class-name: com.mysql.cj.jdbc.Driver + type: com.alibaba.druid.pool.DruidDataSource + +# 日志配置 +logging: + file: + name: websoft-modules.log + level: + root: WARN + com.gxwebsoft: ERROR + com.baomidou.mybatisplus: ERROR + +socketio: + host: 0.0.0.0 #IP地址 + +# MQTT配置 +mqtt: + enabled: false # 添加开关来禁用MQTT服务 + host: tcp://1.14.159.185:1883 + username: swdev + password: Sw20250523 + client-id-prefix: hjm_car_ + topic: /SW_GPS/# + qos: 2 + connection-timeout: 10 + keep-alive-interval: 20 + auto-reconnect: true + +# 框架配置 +config: + # 生产环境接口 + server-url: https://server.gxwebsoft.com/api + upload-path: /www/wwwroot/file.ws/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP + accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM + bucketName: oss-gxwebsoft + bucketDomain: https://oss.wsdns.cn + aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..e0fd614 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,103 @@ +# 端口 +server: + port: 9003 +# 多环境配置 +spring: + profiles: + active: dev + + application: + name: server + + # 连接池配置 + datasource: + druid: + initial-size: 5 + min-idle: 5 + max-active: 20 + max-wait: 30000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + test-while-idle: true + test-on-borrow: true + test-on-return: false + remove-abandoned: true + remove-abandoned-timeout: 1800 + #pool-prepared-statements: false + #max-pool-prepared-statement-per-connection-size: 20 + filters: stat, wall + validation-query: SELECT 'x' + aop-patterns: com.gxwebsoft.*.*.service.* + stat-view-servlet: + url-pattern: /druid/* + reset-enable: true + login-username: admin + login-password: admin + + # json时间格式设置 + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + + # 设置上传文件大小 + servlet: + multipart: + max-file-size: 100MB + max-request-size: 100MB + redis: + database: 0 + host: 1Panel-redis-5nN7 + port: 6379 + password: + + # 邮件服务器配置 + mail: + host: smtp.qq.com + username: 170083662@qq.com + password: mnfokualhfaucaie + default-encoding: UTF-8 + properties: + mail: + smtp: + auth: true + socketFactory: + class: javax.net.ssl.SSLSocketFactory + port: 465 + +# Mybatis-plus配置 +mybatis-plus: + mapper-locations: classpath*:com/gxwebsoft/**/*Mapper.xml + configuration: + map-underscore-to-camel-case: true + cache-enabled: true + global-config: + :banner: false + db-config: + id-type: auto + logic-delete-value: 1 + logic-not-delete-value: 0 + +# 框架配置 +config: + open-office-home: C:/OpenOffice4/ + swagger-base-package: com.gxwebsoft + swagger-title: 网宿软件 API文档 + swagger-description: websoft - 基于java spring、vue3、antd构建的前后端分离快速开发框架 + swagger-version: 2.0 + token-key: WLgNsWJ8rPjRtnjzX/Gx2RGS80Kwnm/ZeLbvIL+NrBs= + # 主服务器 + server-url: https://server.gxwebsoft.com/api + # 文件服务器 + file-server: https://file.websoft.top + upload-path: /Users/gxwebsoft/Documents/uploads/ + local-upload-path: /Users/gxwebsoft/Documents/uploads/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP + accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM + bucketName: oss-gxwebsoft + bucketDomain: https://oss.wsdns.cn + aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com + + diff --git a/src/main/resources/cert/alipayPublicCert.crt b/src/main/resources/cert/alipayPublicCert.crt new file mode 100644 index 0000000..157614d --- /dev/null +++ b/src/main/resources/cert/alipayPublicCert.crt @@ -0,0 +1,38 @@ +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIQICISFUe9Mqj+pWqb2fs9jDANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UE +BhMCQ04xGzAZBgNVBAoMEkFudCBGaW5hbmNpYWwgdGVzdDElMCMGA1UECwwcQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkgdGVzdDE+MDwGA1UEAww1QW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSBDbGFzcyAyIFIxIHRlc3QwHhcNMjIxMjE1MDExMjA0WhcNMjMxMjE1MDExMjA0WjB6 +MQswCQYDVQQGEwJDTjEVMBMGA1UECgwM5rKZ566x546v5aKDMQ8wDQYDVQQLDAZBbGlwYXkxQzBB +BgNVBAMMOuaUr+S7mOWunSjkuK3lm70p572R57uc5oqA5pyv5pyJ6ZmQ5YWs5Y+4LTIwODgxMDIx +NzUyMDcyOTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQwLlj0xdcIy4rQLNg73Nl +zjSqKV7cjE1aieYpEQ/0aNZxVBqm0wxSiXgDR+NjyuD2VadER6caFDhB9bO2lLroI9xHjc1Griwc +4XAN9JA2kh/3irzQxKCBzrW0/6gpEIIVFSK+reCAmD0vtMTLOIChUhl4OSDYWLpUzFmICa9tRNGD +hPUSr08JFn2DhXW3eUnOzJEkf4qxn3HIDlKwBb50CJhjkuCIWxKBxRe1oQy2zEd6tezp00xvW4DQ +OqkSHEW641sUbA7ntckdOF7X5FQGKqKqwrFxTSblixk/mkBxAkIj7dM+k9AqFtrhnzn01sP21MYx +PPOhddGk3indwe9DAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIE8DANBgkqhkiG9w0BAQsFAAOCAQEA +xJXsNQ5rDQBwn8BXYuSaj1Hkw8W3wKRr55Y2fDoQIx2kek9kI53PRvIVAdxlrLxZ6z+lTFrkThJ/ +rsH84ffkDvfSTca3QCB6c01jveQ+qGvGQSx/HPu92DMT/hJ0V8LstLlq6Q1r8hTvcjHOPyE9l3vF +I0Ozbe2F3TCOFFjtEjHHOw9bo+tB8gtiY/bfidPbTtCClTTyPRTE8MuzQqDABhGl3khL4aue9h8g +x0i0yAn15VBf9ruqlTrTnhuI5ak7AOwdxjKaMwVbTCy838rQjt4xKMD80h2go/6MLRGidnbeiTU2 +Uq3PVgEJo2kxE8ZSD7x4JtskZD07YCSA5DZtuw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDszCCApugAwIBAgIQIBkIGbgVxq210KxLJ+YA/TANBgkqhkiG9w0BAQsFADCBhDELMAkGA1UE +BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxJTAjBgNVBAsMHENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IHRlc3QxNjA0BgNVBAMMLUFudCBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgUjEgdGVzdDAeFw0xOTA4MTkxMTE2MDBaFw0yNDA4MDExMTE2MDBaMIGRMQswCQYDVQQGEwJD +TjEbMBkGA1UECgwSQW50IEZpbmFuY2lhbCB0ZXN0MSUwIwYDVQQLDBxDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSB0ZXN0MT4wPAYDVQQDDDVBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IENsYXNzIDIgUjEgdGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMh4FKYO +ZyRQHD6eFbPKZeSAnrfjfU7xmS9Yoozuu+iuqZlb6Z0SPLUqqTZAFZejOcmr07ln/pwZxluqplxC +5+B48End4nclDMlT5HPrDr3W0frs6Xsa2ZNcyil/iKNB5MbGll8LRAxntsKvZZj6vUTMb705gYgm +VUMILwi/ZxKTQqBtkT/kQQ5y6nOZsj7XI5rYdz6qqOROrpvS/d7iypdHOMIM9Iz9DlL1mrCykbBi +t25y+gTeXmuisHUwqaRpwtCGK4BayCqxRGbNipe6W73EK9lBrrzNtTr9NaysesT/v+l25JHCL9tG +wpNr1oWFzk4IHVOg0ORiQ6SUgxZUTYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgTwMA0GCSqGSIb3 +DQEBCwUAA4IBAQBWThEoIaQoBX2YeRY/I8gu6TYnFXtyuCljANnXnM38ft+ikhE5mMNgKmJYLHvT +yWWWgwHoSAWEuml7EGbE/2AK2h3k0MdfiWLzdmpPCRG/RJHk6UB1pMHPilI+c0MVu16OPpKbg5Vf +LTv7dsAB40AzKsvyYw88/Ezi1osTXo6QQwda7uefvudirtb8FcQM9R66cJxl3kt1FXbpYwheIm/p +j1mq64swCoIYu4NrsUYtn6CV542DTQMI5QdXkn+PzUUly8F6kDp+KpMNd0avfWNL5+O++z+F5Szy +1CPta1D7EQ/eYmMP+mOQ35oifWIoFCpN6qQVBS/Hob1J/UUyg7BW +-----END CERTIFICATE----- diff --git a/src/main/resources/cert/alipayRootCert.crt b/src/main/resources/cert/alipayRootCert.crt new file mode 100644 index 0000000..76417c5 --- /dev/null +++ b/src/main/resources/cert/alipayRootCert.crt @@ -0,0 +1,88 @@ +-----BEGIN CERTIFICATE----- +MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG +EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw +MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO +UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE +MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT +V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti +W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ +MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b +53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI +pDoiVhsLwg== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE +BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0 +MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV +BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk +rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2 +xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp +dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6 +vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl +YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1 +Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H +DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98 +SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG +PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe +9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC +AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90 +tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy +nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf +tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq +JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3 +IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW +05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41 +T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI +kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop +PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N +1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y +jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02 +77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi +kT9qhqn+lw== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG +EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0 +WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE +CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp +YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU +WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt +rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ +4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2 +zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg +wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH +Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF +BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM +E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg +MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq +MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp +bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv +b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV +nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5 +4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg +wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw +WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN +z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g +KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA +uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp +emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3 +U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I +UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn +DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU +1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX +Yf4Zr0fJsGuv +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/main/resources/cert/apiclient_cert.pem b/src/main/resources/cert/apiclient_cert.pem new file mode 100644 index 0000000..e6e43f8 --- /dev/null +++ b/src/main/resources/cert/apiclient_cert.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENDCCAxygAwIBAgIUXuQzdB9K74iWNsQjoc4JkJCALL4wDQYJKoZIhvcNAQEL +BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT +FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg +Q0EwHhcNMjQwNzA4MDkwMTU1WhcNMjkwNzA3MDkwMTU1WjCBjTETMBEGA1UEAwwK +MTYwNDc3Mzk0MzEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL +DDDljZflroHlqIHlroHotYTkuqfnu4/okKXpm4blm6LmnInpmZDotKPku7vlhazl +j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMdf/8ph++ocht5SI5lOxAI5x9Hfba3Bnsn8c7Z0 +W8EvZwKUG8wb+s89dcYs7nSI7as8XtewMjtkKUf8u5/JzVRVOUckUN5SYyzXN341 +HVbWMOWrkV8ec3foVE4AGoORH8uf2ypjVQhO7gkYiCFG+DqEinyT8ZCuqlzXnOcu +7wHJEhnR/I3c70wF2v7fjASaph9EaZrJgL9CGkixjyBVhzyjSquNHyRdml5R3+cK +hcUgtDzE3u8Qmv7h98DqoR+XOT97+tngRPWFFBbhW7eZExNhoYNqkvPvF0nMC5Z4 +d2m+wvb34J0Fvn+95XW0hY09jqeC1aHDWaUaNONsWLEjvyECAwEAAaOBuTCBtjAJ +BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE +aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0 +MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC +NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB +CwUAA4IBAQB1H9HAqaz1x2cUgo/XBGqMWt+S4h5XXETGNDB1RZOxtxmMPknEgcJq +JFWtevBhDJXrpCHkf4CGdPUr19QF6+JQh3CDzs7iN6wy426GHnt11nnAXHUt4n6F +aPZt7L0iZrx3CT4JMzOpk9Ag+SHiJFikMV6NpvqmKszTQr1XZxguNl9gmJRgQzKe +niROJ81s4nqxJZP+gV+MZNEGj4yo+sUUC2ic21g/N5TTNbhbbJoWBweBjRv/JNRc +XMHnynknrlY7VNHwOyB0XnWLh8R2Hd9E75yVScDVFgcLO1Zj2jr+CRBAxjqpcPTw +IQ3A5cO8yCGqmg1o4iJooS+dAAY5IP/y +-----END CERTIFICATE----- diff --git a/src/main/resources/cert/apiclient_key.pem b/src/main/resources/cert/apiclient_key.pem new file mode 100644 index 0000000..5f629a6 --- /dev/null +++ b/src/main/resources/cert/apiclient_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHX//KYfvqHIbe +UiOZTsQCOcfR322twZ7J/HO2dFvBL2cClBvMG/rPPXXGLO50iO2rPF7XsDI7ZClH +/Lufyc1UVTlHJFDeUmMs1zd+NR1W1jDlq5FfHnN36FROABqDkR/Ln9sqY1UITu4J +GIghRvg6hIp8k/GQrqpc15znLu8ByRIZ0fyN3O9MBdr+34wEmqYfRGmayYC/QhpI +sY8gVYc8o0qrjR8kXZpeUd/nCoXFILQ8xN7vEJr+4ffA6qEflzk/e/rZ4ET1hRQW +4Vu3mRMTYaGDapLz7xdJzAuWeHdpvsL29+CdBb5/veV1tIWNPY6ngtWhw1mlGjTj +bFixI78hAgMBAAECggEBALpqU0OKvD1YcO4chPaKRBEEr4XXT7jAKdUYO6UkRMpr +pPgvPZJpsufkwmMKjebeRMLvzooDT+RiMYsCjvfHeznX+ZdAKHDHPb2meVeDGCyi +VtPXyDPUyAgcbf8Eb8YGgmEk1YpbmB0Nl9lfW6Ept10Xolj7B0nNVrM6UpWCN61F +B8LTBdRAJUtLkwmOF8MbFBnXKx1olKqyW68ZDtVxd52UKUTYJLbZUpv+XZr2/Bgo +uFOo0JyynyRPhdnxeJej//waGjWjAOtKSoIUdmGG57jZcP9BJld4JBMjXHU0w40A +qPNn5FiIA2dfPBsXRZiQ0eMM8EHm5BDElEEy3/mQL/ECgYEA+4Wg3HXm4+3cLPed +ssgQUEYTDqfpaXHgoClgMpwetq1UGsq4Pcoi/lpZxPWVf04InbrHBaIhvnHg0e9n +KAd0G6VI0IoffDbJMtnHXH783d47HU72GLEFLz3P8ee71BXpYjFKFVmxQhooNe0+ +ec7akjG1UpDGpci4piQFQpVC640CgYEAyuyyzMz3Z3GPhxywQ+OybrotEa9vaaC7 +IDPk8ePLrRDA8H9hMAx8K0Clm+AjTMN8Kwb9W+DNtSNgKnIGiyRGdgHdvuYDaJns +QT3ocVcxvbMuEghNzTmIWouVfxhXUwtsgiGZMLwPsxT7D5t/XzYukfpsCRGAF8xa +QCkzEYc7suUCgYAaKqK7jMCCgeJgAzqyuMGJuGCPK8TKpYA66VMKsNc5JfsT9ncI +ZpkRYRDpvqrY3aNj1WSTH3TnPS2oaYGP1oarwZw7pcL0xzZTRfjJlKR16IK539cW +ZoQlkAasIfGWdNkc0AfnBLe+Kr54LcBMJ8rxXp6AgnNIGAOttR2e+axGmQKBgDZo +qLhI7L0LsdQkWQ6a6qjNum/XfiPwOLw1rdk9nsrUhyb0wHZForVmLAFTY6OddpmC +0kPkTsOWrJ403JRKMapKbc5Vlexh+Pq1QrHBE1Etzdh/6XxxRKIicv8U47UchweN +QqnSgtMdeQOCSfCZcnspjfYQfyviWwCBC3RTsioRAoGBAM3tkgS/FqGF2vszVojg +qp1JejPh5czLExiJsewSgK4TmNJLjfK3wY247kvZxoVnWhW/9QvbcixNwwp4RKNP +7UVwGUQ+Wk1iqqdESO0tm/L839EEAOaNLzf4MnSQ2j4/IPYSpqG8+waI2iDeyM0w +ECLrmH27ZnzPLg80INE6dMSZ +-----END PRIVATE KEY----- diff --git a/src/main/resources/cert/appPublicCert.crt b/src/main/resources/cert/appPublicCert.crt new file mode 100644 index 0000000..a12dea4 --- /dev/null +++ b/src/main/resources/cert/appPublicCert.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDjzCCAnegAwIBAgIQICISFPMNDPadFdV3VF7atzANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UE +BhMCQ04xGzAZBgNVBAoMEkFudCBGaW5hbmNpYWwgdGVzdDElMCMGA1UECwwcQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkgdGVzdDE+MDwGA1UEAww1QW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSBDbGFzcyAyIFIxIHRlc3QwHhcNMjIxMjE0MTEzNjE3WhcNMjMxMjE5MTEzNjE3WjBh +MQswCQYDVQQGEwJDTjEVMBMGA1UECgwM5rKZ566x546v5aKDMQ8wDQYDVQQLDAZBbGlwYXkxKjAo +BgNVBAMMITIwODgxMDIxNzUyMDcyOTItMjAxNjA5MTEwMDQ4OTQ4NjCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAJFjmRNQkJ1d2kWZ4bn8WvIUWKu2+wMDQ5nOMaIGtKo+bx3o1RaAWYct +XJL82GkdUr+JpiBy7W1iFl0quZJIo2n9tyxsTGTswq1mtYJVKonHELxN1L2Xz9PjU8wlzQwxb2Rm +JlW2/SpUGaRiZxzYJHhHXbqvPH8D/xG+x6Hwq9zEF/ZIDMCLi5wiXhK7KFXDOBFYdOw0zwCmGIeY +73htk56kay1HoTjwACvZzkw8ff5FRA76/5/7ZEj6R6Hga/LMmYJXfntPPYW/wuMiBI7rU5f4s6El +S1A2uwK4+kbepg9klOYR2Lg30SNz4hj4k8KNtoeWnzrTlWoZj3SfDErJuuMCAwEAAaMSMBAwDgYD +VR0PAQH/BAQDAgTwMA0GCSqGSIb3DQEBCwUAA4IBAQC9YAgw5uwHUgY73t8eABW8LzrhLoUafN/j +WG6QataRgaTHbNCuCz5yWTMmD7hZGmb8NuZzaLOPD+/0yM5nz+w/nc+Emc6hzTCrBVtFX80nnM3j +lIDBRGJRS2JlyrwL80DxoVCbY7JLkSRpGhc9RYLrNfPjpxhxchJ/8V1JU21rL5GKSdaR2YJDvANi +Bth321Q0G6djxfLPjx3zXp8VTGDdhRZjblJ7EddK4kaQ3RKTm4+UivUYMMQ+esD8NnoHTGvDXRCi +rqd+EtAZZ84yqW7YKKTjsh9a3tLBFwFMc2A2WM3s6fXtrFAiffsXwcyqaKTXibVTFE9t2sTUUaPF +IoJu +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/main/resources/cert/wechatpay_2DD5A0669263BAE55E52BF3F35BF4A4006A2DAA6.pem b/src/main/resources/cert/wechatpay_2DD5A0669263BAE55E52BF3F35BF4A4006A2DAA6.pem new file mode 100644 index 0000000..ccff7dd --- /dev/null +++ b/src/main/resources/cert/wechatpay_2DD5A0669263BAE55E52BF3F35BF4A4006A2DAA6.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID3DCCAsSgAwIBAgIULdWgZpJjuuVeUr8/Nb9KQAai2qYwDQYJKoZIhvcNAQEL +BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT +FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg +Q0EwHhcNMjAxMjA5MDMzMzIxWhcNMjUxMjA4MDMzMzIxWjBuMRgwFgYDVQQDDA9U +ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl +bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGDAJDTjERMA8GA1UEBwwIU2hlblpo +ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDocR052ysMvkp3TkUb +CDz5ntNm3wpPjy53ng6ZQKrMdt/HVKYzHplIO8zgYVKXgiCxlIVw8lAKAJ8uYrs/ +y2KOk2W1sMKb6t9ucKilaxYpCUuePj6ktMXPN/FIAgCIEXjrPuNHuPW6JA53yl6e +wQoNPozbmYrcFFcRUnhHS9RWfSJm2OUBsAFh2O/o2APAhcIac0gPz/a6LWok3+vQ +KnCqZcpGdnATwZ5H7oGmVVPHp8f5LwJYwp58ZHKxVHIHiLOeCXNNy7cnwv+vHBhy +95GOdv9ZJRbcESGR7ASUkIKe5kDJhg5tjK3rKSjqUbe6qG6h5mSPvRy6oe6h9Ihf +F8B1AgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DBlBgNVHR8EXjBc +MFqgWKBWhlRodHRwOi8vZXZjYS5pdHJ1cy5jb20uY24vcHVibGljL2l0cnVzY3Js +P0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3NTQ5ODQ2QzAxQzNFOEVCRDIwDQYJ +KoZIhvcNAQELBQADggEBAGfRi4HT8Y6N1yJGmGpABiRJOqouDmktBxDhY12e2V5g +mLfsr+aR4suOfaDbNigwjyQqYijOSlAJZobapNFazE9vUisVRa7FZUhzFLwxOo02 +mallcuDd7/rZuRtiovco+OAQVedAMwOgH6PCwK/QxUGNOpNpCQ5Y70z5ZAxb+IKR +87WQvukZ/u2CqUpvEnwtj1PjuZ7sCqi9TpHhJtMMEZyzII7WB2jDFaIuaqrJDeSB +qWASY04zfQ/FlLosaiXNxJCAT//0I6kM9iudwkuj+7bV8HESrdJcFe0yymIm3zOd +Es6X0klx4QsyadXEHK5RSRIBdoGubHpm5fdVnYfSGok= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/test/java/com/gxwebsoft/RedisTest.java b/src/test/java/com/gxwebsoft/RedisTest.java new file mode 100644 index 0000000..e3fe105 --- /dev/null +++ b/src/test/java/com/gxwebsoft/RedisTest.java @@ -0,0 +1,30 @@ +package com.gxwebsoft; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.StringRedisTemplate; + +import javax.annotation.Resource; + +@SpringBootTest +public class RedisTest { + @Resource + private StringRedisTemplate stringRedisTemplate; +// +// @Test +// public void test(){ +//// stringRedisTemplate.opsForValue().set("test:add:2",Long.toString(1L)); +//// stringRedisTemplate.opsForValue().increment("test:add:2",10L); +//// stringRedisTemplate.opsForValue().decrement("test:add:2",2L); +//// stringRedisTemplate.opsForValue().append("test:add:2","ssss"); +// HashMap map = new HashMap<>(); +// map.put("name","李四"); +// map.put("phone","13800138001"); +// HashMap map2 = new HashMap<>(); +// map2.put("name","赵六"); +// map2.put("phone","13800138001"); +// HashMap map3 = new HashMap<>(); +// map3.put("name","张三"); +// map3.put("phone","13800138001"); +// stringRedisTemplate.opsForSet().add("test:set:2", JSONUtil.toJSONString(map),JSONUtil.toJSONString(map2),JSONUtil.toJSONString(map3)); +// } +} diff --git a/src/test/java/com/gxwebsoft/TestMain.java b/src/test/java/com/gxwebsoft/TestMain.java new file mode 100644 index 0000000..a0fee53 --- /dev/null +++ b/src/test/java/com/gxwebsoft/TestMain.java @@ -0,0 +1,112 @@ +package com.gxwebsoft; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.hjm.controller.PushCallback; +import com.gxwebsoft.hjm.entity.HjmCar; +import com.gxwebsoft.hjm.service.HjmCarService; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.NumberFormat; +import java.text.ParseException; + +/** + * Created by WebSoft on 2020-03-23 23:37 + */ +@SpringBootTest +public class TestMain { + private static final Logger logger = LoggerFactory.getLogger(PushCallback.class); + + @Resource + private HjmCarService hjmCarService; + + /** + * 生成唯一的key用于jwt工具类 + */ + @Test + public void testGenJwtKey() { + + BigDecimal bigDecimal = new BigDecimal(NumberUtil.decimalFormat("0.00", 1 * 0.01)); + System.out.println("实际付款金额 = " + bigDecimal); + + final HjmCar byGpsNo = hjmCarService.getByGpsNo("gps1"); + System.out.println("byGpsNo = " + byGpsNo.getSpeed()); + if(StrUtil.isBlank(byGpsNo.getSpeed())){ + System.out.println("空的 = "); + } + if(byGpsNo.getSpeed() == null){ + System.out.println("getSpeed = "); + } +// System.out.println(JwtUtil.encodeKey(JwtUtil.randomKey())); + +// final String encrypt = CommonUtil.encrypt("123456"); +// System.out.println("encrypt = " + encrypt); +// +// final String decrypt = CommonUtil.decrypt(encrypt); +// System.out.println("decrypt = " + decrypt); + } + + @Test +// public void mqtt() throws MqttException { +////tcp://MQTT安装的服务器地址:MQTT定义的端口号 +// String HOST = "tcp://1.14.159.185:1883"; +// +// //定义MQTT的ID,可以在MQTT服务配置中指定 +// String clientid = "mqttx_aec633ca2"; +// +// MqttClient client; +// String userName = "swdev"; +// String passWord = "Sw20250523"; +// +// client = new MqttClient(HOST, clientid, new MemoryPersistence()); +// +// final MqttConnectOptions mqttConnectOptions = new MqttConnectOptions(); +// mqttConnectOptions.setUserName(userName); +// mqttConnectOptions.setPassword(passWord.toCharArray()); +// mqttConnectOptions.setCleanSession(true); +// +// client.setCallback(new MqttCallback() { +// @Override +// public void connectionLost(Throwable throwable) { +// logger.info("连接丢失............."); +// } +// +// @Override +// public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception { +// logger.info("接收消息主题 : " + topic); +// logger.info("接收消息Qos : " + mqttMessage.getQos()); +// logger.info("接收消息内容 : " + new String(mqttMessage.getPayload())); +// } +// +// @Override +// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { +// logger.info("deliveryComplete............."); +// } +// }); +// client.connect(mqttConnectOptions); +// client.subscribe("/SW_GSP/#", 2); +// while (true); +// } + + private String fenToYuan(String amount) { + NumberFormat format = NumberFormat.getInstance(); + try { + Number number = format.parse(amount); + double temp = number.doubleValue() / 100.0; + format.setGroupingUsed(false); + // 设置返回的小数部分所允许的最大位数 + format.setMaximumFractionDigits(2); + amount = format.format(temp); + } catch (ParseException e) { + e.printStackTrace(); + } + return amount; + } +} diff --git a/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java b/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java new file mode 100644 index 0000000..5a024f5 --- /dev/null +++ b/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java @@ -0,0 +1,13 @@ +package com.gxwebsoft; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class WebSoftApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/src/test/java/com/gxwebsoft/config/MqttPropertiesTest.java b/src/test/java/com/gxwebsoft/config/MqttPropertiesTest.java new file mode 100644 index 0000000..7570f9a --- /dev/null +++ b/src/test/java/com/gxwebsoft/config/MqttPropertiesTest.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.config; + +import com.gxwebsoft.common.core.config.MqttProperties; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import javax.annotation.Resource; + +/** + * MQTT配置属性测试类 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@SpringBootTest +@ActiveProfiles("dev") +public class MqttPropertiesTest { + + @Resource + private MqttProperties mqttProperties; + + @Test + public void testMqttPropertiesLoading() { + System.out.println("=== MQTT配置属性测试 ==="); + System.out.println("Host: " + mqttProperties.getHost()); + System.out.println("Username: " + mqttProperties.getUsername()); + System.out.println("Password: " + (mqttProperties.getPassword() != null ? "***" : "null")); + System.out.println("ClientIdPrefix: " + mqttProperties.getClientIdPrefix()); + System.out.println("Topic: " + mqttProperties.getTopic()); + System.out.println("QoS: " + mqttProperties.getQos()); + System.out.println("ConnectionTimeout: " + mqttProperties.getConnectionTimeout()); + System.out.println("KeepAliveInterval: " + mqttProperties.getKeepAliveInterval()); + System.out.println("AutoReconnect: " + mqttProperties.isAutoReconnect()); + System.out.println("CleanSession: " + mqttProperties.isCleanSession()); + + // 验证关键配置不为空 + assert mqttProperties.getHost() != null : "Host不能为空"; + assert mqttProperties.getClientIdPrefix() != null : "ClientIdPrefix不能为空"; + assert mqttProperties.getTopic() != null : "Topic不能为空"; + + System.out.println("MQTT配置属性测试通过!"); + } +} diff --git a/src/test/java/com/gxwebsoft/generator/AppGenerator.java b/src/test/java/com/gxwebsoft/generator/AppGenerator.java new file mode 100644 index 0000000..32e11ba --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/AppGenerator.java @@ -0,0 +1,249 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 独立应用模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class AppGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/site"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/site"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "app"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "app_bszx_bm", +// "app_bszx_pay", +// "app_bszx_grade", +// "app_bszx_class" + "app_bszx_era" + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = false; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = false; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/BszxGenerator.java b/src/test/java/com/gxwebsoft/generator/BszxGenerator.java new file mode 100644 index 0000000..e618bf3 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/BszxGenerator.java @@ -0,0 +1,251 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class BszxGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/mp"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/mp"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "bszx"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "bszx_bm", +// "bszx_era", +// "bszx_grade", +// "bszx_class", +// "bszx_pay", +// "bszx_branch", +// "bszx_pay_ranking" + "bszx_order" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/CmsGenerator.java b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java new file mode 100644 index 0000000..61e5f4b --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java @@ -0,0 +1,274 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * CMS模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class CmsGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/site"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/site"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "cms"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "cms_article", +// "cms_article_category", +// "cms_article_like", +// "cms_article_comment", +// "cms_article_content", +// "cms_docs", +// "cms_docs_book", +// "cms_docs_content", +// "cms_ad", +// "cms_ad_record", +// "cms_navigation", +// "cms_design", +// "cms_design_record", +// "cms_website", +// "cms_website_field", +// "cms_form", +// "cms_form_record", +// "cms_domain", +// "cms_mp_menu" +// "cms_mp_pages", +// "cms_mp" +// "cms_mp_field" +// "cms_mp_ad" +// "cms_components" +// "cms_mp_official_menu", +// "cms_order", +// "cms_model" +// "cms_lang", +// "cms_lang_log", +// "cms_website_setting" + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/DocsGenerator.java b/src/test/java/com/gxwebsoft/generator/DocsGenerator.java new file mode 100644 index 0000000..8b6a601 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/DocsGenerator.java @@ -0,0 +1,246 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class DocsGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/oa"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/oa"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "docs"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "docs", + "docs_user", + "docs_content" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/HjmGenerator.java b/src/test/java/com/gxwebsoft/generator/HjmGenerator.java new file mode 100644 index 0000000..00b6053 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/HjmGenerator.java @@ -0,0 +1,252 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class HjmGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/mp"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/mp"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "hjm"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "hjm_car", +// "hjm_courses", +// "hjm_questions", +// "hjm_choices", +// "hjm_fence", +// "hjm_exam_log", +// "hjm_bx_log", +// "hjm_gps_log", + "hjm_violation" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/HouseGenerator.java b/src/test/java/com/gxwebsoft/generator/HouseGenerator.java new file mode 100644 index 0000000..f770d61 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/HouseGenerator.java @@ -0,0 +1,248 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 独立应用模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class HouseGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/site"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/site"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "house"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "house_info", +// "house_like_log", +// "house_reservation", +// "house_views_log", +// "house_user" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = false; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = false; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/MpGenerator.java b/src/test/java/com/gxwebsoft/generator/MpGenerator.java new file mode 100644 index 0000000..c03466b --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/MpGenerator.java @@ -0,0 +1,248 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class MpGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/mp"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/mp"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "mp"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "mp", + "mp_ad", + "mp_field", + "mp_menu", + "mp_pages" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/ProjectGenerator.java b/src/test/java/com/gxwebsoft/generator/ProjectGenerator.java new file mode 100644 index 0000000..5aab20c --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/ProjectGenerator.java @@ -0,0 +1,249 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class ProjectGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/oa"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/oa"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "project"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "project", +// "project_field", +// "project_renew", +// "project_user", +// "project_url", +// "project_collection" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/PwlGenerator.java b/src/test/java/com/gxwebsoft/generator/PwlGenerator.java new file mode 100644 index 0000000..34cecae --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/PwlGenerator.java @@ -0,0 +1,244 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 小程序模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class PwlGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/oa"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/oa"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "pwl"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "pwl_project" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java new file mode 100644 index 0000000..7d066cd --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java @@ -0,0 +1,295 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * CMS模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class ShopGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/shop"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/APP/shop"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "modules"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "shop"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "shop_spec", +// "shop_spec_value", +// "shop_goods", +// "shop_category", +// "shop_goods_spec", +// "shop_goods_sku", +// "shop_goods_category", +// "shop_goods_coupon", +// "shop_goods_description", +// "shop_goods_log", +// "shop_goods_relation", +// "shop_goods_comment", +// "shop_goods_rule", +// "shop_brand", +// "shop_merchant", +// "shop_merchant_type", +// "shop_merchant_apply", +// "shop_merchant_account", +// "shop_chat_message", +// "shop_chat_conversation", +// "shop_user_collection", +// "shop_goods_role_commission" +// "shop_commission_role" +// "shop_order", +// "shop_order_info", +// "shop_order_info_log", +// "shop_order_goods", +// "shop_wechat_deposit", +// "shop_users", +// "shop_user_address", +// "shop_user_balance_log", +// "shop_recharge_order", + // 经销商表 +// "shop_dealer_apply", +// "shop_dealer_capital", +// "shop_dealer_order", +// "shop_dealer_referee", +// "shop_dealer_setting", +// "shop_dealer_user", +// "shop_user_referee", +// "shop_dealer_withdraw", +// "shop_cart", +// "shop_count", +// "shop_express", +// "shop_order_delivery", +// "shop_order_delivery_goods", +// "shop_order_extract", +// "shop_splash", +// "shop_goods_income_config" +// "shop_express", +// "shop_express_template", +// "shop_express_template_detail" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/SysGenerator.java b/src/test/java/com/gxwebsoft/generator/SysGenerator.java new file mode 100644 index 0000000..6253231 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/SysGenerator.java @@ -0,0 +1,251 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 核心模块-代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class SysGenerator { + // 输出位置 + private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 + // 输出目录 + private static final String OUTPUT_DIR = "/src/main/java"; + // Vue文件输出位置 + private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/mp"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/VUE/mp"; + // Vue文件输出目录 + private static final String OUTPUT_DIR_VUE = "/src"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/gxwebsoft_core?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "gxwebsoft_core"; + private static final String DB_PASSWORD = "jdj7HYEdYHnYEFBy"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "common.system"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "sys_website", +// "sys_website_field", +// "sys_domain", +// "sys_company", +// "sys_user_verify" +// "sys_user_role", +// "sys_user_oauth" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "sys_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + /** + * 以下是生成VUE项目代码 + * 生成文件的路径 /api/shop/goods/index.ts + */ + templatePath = TEMPLATES_DIR + "/index.ts.btl"; + + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + focList.add(new FileOutConfig() { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.ts"; + } + }); + // 生成TS文件 (/api/shop/goods/model/index.ts) + templatePath = TEMPLATES_DIR + "/model.ts.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_UNIAPP + OUTPUT_DIR_VUE + + "/api/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/model/" + "index.ts"; + } + }); + // 生成Vue文件(/views/shop/goods/index.vue) + templatePath = TEMPLATES_DIR + "/index.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/" + "index.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/edit.vue) + templatePath = TEMPLATES_DIR + "/components.edit.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + tableInfo.getEntityPath() + "Edit.vue"; + } + }); + + // 生成components文件(/views/shop/goods/components/search.vue) + templatePath = TEMPLATES_DIR + "/components.search.vue.btl"; + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION_VUE + OUTPUT_DIR_VUE + + "/views/" + pc.getModuleName() + "/" + + tableInfo.getEntityPath() + "/components/" + "search.vue"; + } + }); + + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java b/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java new file mode 100644 index 0000000..1a73826 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.generator.engine; + +import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; +import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine; +import org.beetl.core.Configuration; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.FileResourceLoader; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Map; + +/** + * Beetl模板引擎实现文件输出 + * + * @author WebSoft + * @since 2021-09-05 00:30:28 + */ +public class BeetlTemplateEnginePlus extends AbstractTemplateEngine { + private GroupTemplate groupTemplate; + + @Override + public AbstractTemplateEngine init(ConfigBuilder configBuilder) { + super.init(configBuilder); + try { + Configuration cfg = Configuration.defaultConfiguration(); + groupTemplate = new GroupTemplate(new FileResourceLoader(), cfg); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + return this; + } + + @Override + public void writer(Map objectMap, String templatePath, String outputFile) throws Exception { + Template template = groupTemplate.getTemplate(templatePath); + try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { + template.binding(objectMap); + template.renderTo(fileOutputStream); + } + logger.debug("模板:" + templatePath + "; 文件:" + outputFile); + } + + @Override + public String templateFilePath(String filePath) { + return filePath + ".btl"; + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/components.edit.vue.btl b/src/test/java/com/gxwebsoft/generator/templates/components.edit.vue.btl new file mode 100644 index 0000000..1e0c8a2 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/components.edit.vue.btl @@ -0,0 +1,221 @@ + + + + diff --git a/src/test/java/com/gxwebsoft/generator/templates/components.search.vue.btl b/src/test/java/com/gxwebsoft/generator/templates/components.search.vue.btl new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/components.search.vue.btl @@ -0,0 +1,42 @@ + + + + diff --git a/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl new file mode 100644 index 0000000..7506b53 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl @@ -0,0 +1,270 @@ +<% +var serviceIns = strutil.toLowerCase(strutil.subStringTo(table.serviceName, 0, 1)) + strutil.subString(table.serviceName, 1); +var authPre = package.ModuleName + ':' + table.entityPath; +var idFieldName, idPropertyName; +for(field in table.fields) { + if(field.keyFlag) { + idFieldName = field.name; + idPropertyName = field.propertyName; + } +} +%> +package ${package.Controller}; + +<% if(isNotEmpty(superControllerClassPackage)) { %> +import ${superControllerClassPackage}; +<% } %> +import ${cfg.packageName!}.${package.ModuleName}.service.${entity}Service; +import ${cfg.packageName!}.${package.ModuleName}.entity.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import ${cfg.packageName!}.common.core.web.ApiResult; +import ${cfg.packageName!}.common.core.web.PageResult; +import ${cfg.packageName!}.common.core.web.PageParam; +import ${cfg.packageName!}.common.core.web.BatchParam; +import ${cfg.packageName!}.common.core.annotation.OperationLog; +import ${cfg.packageName!}.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +<% if(!restControllerStyle) { %> +import org.springframework.stereotype.Controller; +<% } %> + +import javax.annotation.Resource; +import java.util.List; + +/** + * ${table.comment!}控制器 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(swagger2) { %> +@Api(tags = "${table.comment!}管理") +<% } %> +<% if(restControllerStyle) { %> +@RestController +<% } else { %> +@Controller +<% } %> +@RequestMapping("${cfg.controllerMappingPrefix!}<% if(isNotEmpty(package.ModuleName)){ %>/${package.ModuleName}<% } %>/<% if(isNotEmpty(controllerMappingHyphenStyle)){ %>${controllerMappingHyphen}<% }else{ %>${table.entityPath}<% } %>") +<% if(kotlin) { %> +class ${table.controllerName}<% if(isNotEmpty(superControllerClass)) { %> : ${superControllerClass}()<% } %> +<% } else if(isNotEmpty(superControllerClass)) { %> +public class ${table.controllerName} extends ${superControllerClass} { +<% } else { %> +public class ${table.controllerName} { +<% } %> + @Resource + private ${table.serviceName} ${serviceIns}; + + <% if(!swagger2) { %> + /** + * 分页查询${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> + <% if(swagger2) { %> + @ApiOperation("分页查询${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @GetMapping("/page") + public ApiResult> page(${entity}Param param) { + // 使用关联查询 + return success(${serviceIns}.pageRel(param)); + } + + <% if(!swagger2) { %> + /** + * 查询全部${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> + <% if(swagger2) { %> + @ApiOperation("查询全部${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @GetMapping() + public ApiResult> list(${entity}Param param) { + // 使用关联查询 + return success(${serviceIns}.listRel(param)); + } + + <% if(!swagger2) { %> + /** + * 根据id查询${table.comment!} + */ + <% } %> + @PreAuthorize("hasAuthority('${authPre}:list')") + @ApiOperation("根据id查询${table.comment!}") + @GetMapping("/{id}") + public ApiResult<${entity}> get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(${serviceIns}.getByIdRel(id)); + } + + <% if(!swagger2) { %> + /** + * 添加${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:save')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("添加${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PostMapping() + public ApiResult save(@RequestBody ${entity} ${table.entityPath}) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + ${table.entityPath}.setUserId(loginUser.getUserId()); + } + if (${serviceIns}.save(${table.entityPath})) { + return success("添加成功"); + } + return fail("添加失败"); + } + + <% if(!swagger2) { %> + /** + * 修改${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:update')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("修改${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PutMapping() + public ApiResult update(@RequestBody ${entity} ${table.entityPath}) { + if (${serviceIns}.updateById(${table.entityPath})) { + return success("修改成功"); + } + return fail("修改失败"); + } + + <% if(!swagger2) { %> + /** + * 删除${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:remove')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("删除${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (${serviceIns}.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + <% if(!swagger2) { %> + /** + * 批量添加${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:save')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量添加${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List<${entity}> list) { + if (${serviceIns}.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + <% if(!swagger2) { %> + /** + * 批量修改${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:update')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量修改${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam<${entity}> batchParam) { + if (batchParam.update(${serviceIns}, "${idFieldName!}")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + <% if(!swagger2) { %> + /** + * 批量删除${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:remove')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量删除${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (${serviceIns}.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl b/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl new file mode 100644 index 0000000..44015ad --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl @@ -0,0 +1,158 @@ +package ${package.Entity}; + +<% for(pkg in table.importPackages) { %> +import ${pkg}; +<% } %> +<% if(swagger2) { %> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +<% } %> +<% if(entityLombokModel) { %> +import lombok.Data; +import lombok.EqualsAndHashCode; + <% if(chainModel) { %> +import lombok.experimental.Accessors; + <% } %> +<% } %> + +/** + * ${table.comment!} + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(entityLombokModel) { %> +@Data + <% if(isNotEmpty(superEntityClass)) { %> +@EqualsAndHashCode(callSuper = true) + <% } else { %> +@EqualsAndHashCode(callSuper = false) + <% } %> + <% if(chainModel) { %> +@Accessors(chain = true) + <% } %> +<% } %> +<% if(swagger2) { %> +@ApiModel(value = "${entity}对象", description = "${table.comment!''}") +<% } %> +<% if(table.convert) { %> +@TableName("${table.name}") +<% } %> +<% if(isNotEmpty(superEntityClass)) { %> +public class ${entity} extends ${superEntityClass}<% if(activeRecord) { %><${entity}><% } %>{ +<% } else if(activeRecord) { %> +public class ${entity} extends Model<${entity}> { +<% } else { %> +public class ${entity} implements Serializable { +<% } %> +<% if(entitySerialVersionUID) { %> + private static final long serialVersionUID = 1L; +<% } %> +<% /** -----------BEGIN 字段循环遍历----------- **/ %> +<% for(field in table.fields) { %> + <% + var keyPropertyName; + if(field.keyFlag) { + keyPropertyName = field.propertyName; + } + %> + + <% if(isNotEmpty(field.comment)) { %> + <% if(swagger2) { %> + @ApiModelProperty(value = "${field.comment}") + <% }else{ %> + /** + * ${field.comment} + */ + <% } %> + <% } %> + <% /* 主键 */ %> + <% if(field.keyFlag) { %> + <% if(field.keyIdentityFlag) { %> + @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO) + <% } else if(isNotEmpty(idType)) { %> + @TableId(value = "${field.annotationColumnName}", type = IdType.${idType}) + <% } else if(field.convert) { %> + @TableId("${field.annotationColumnName}") + <% } %> + <% /* 普通字段 */ %> + <% } else if(isNotEmpty(field.fill)) { %> + <% if(field.convert){ %> + @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) + <% }else{ %> + @TableField(fill = FieldFill.${field.fill}) + <% } %> + <% } else if(field.convert) { %> + @TableField("${field.annotationColumnName}") + <% } %> + <% /* 乐观锁注解 */ %> + <% if(versionFieldName!'' == field.name) { %> + @Version + <% } %> + <% /* 逻辑删除注解 */ %> + <% if(logicDeleteFieldName!'' == field.name) { %> + @TableLogic + <% } %> + private ${field.propertyType} ${field.propertyName}; +<% } %> +<% /** -----------END 字段循环遍历----------- **/ %> + +<% if(!entityLombokModel) { %> + <% for(field in table.fields) { %> + <% + var getprefix = ''; + if(field.propertyType == 'boolean') { + getprefix = 'is'; + } else { + getprefix = 'get'; + } + %> + public ${field.propertyType} ${getprefix}${field.capitalName}() { + return ${field.propertyName}; + } + + <% if(chainModel) { %> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } else { %> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + this.${field.propertyName} = ${field.propertyName}; + <% if(chainModel){ %> + return this; + <% } %> + } + + <% } %> +<% } %> +<% if(entityColumnConstant) { %> + <% for(field in table.fields) { %> + public static final String ${strutil.toUpperCase(field.name)} = "${field.name}"; + + <% } %> +<% } %> +<% if(activeRecord) { %> + @Override + protected Serializable pkVal() { + <% if(isNotEmpty(keyPropertyName)){ %> + return this.${keyPropertyName}; + <% }else{ %> + return null; + <% } %> + } + +<% } %> +<% if(!entityLombokModel){ %> + @Override + public String toString() { + return "${entity}{" + + <% for(field in table.fields){ %> + <% if(fieldLP.index==0){ %> + "${field.propertyName}=" + ${field.propertyName} + + <% }else{ %> + ", ${field.propertyName}=" + ${field.propertyName} + + <% } %> + <% } %> + "}"; + } +<% } %> +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl b/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl new file mode 100644 index 0000000..9cd968d --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/index.ts.btl @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ${entity}, ${entity}Param } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询${table.comment!} + */ +export async function page${entity}(params: ${entity}Param) { + const res = await request.get>>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询${table.comment!}列表 + */ +export async function list${entity}(params?: ${entity}Param) { + const res = await request.get>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加${table.comment!} + */ +export async function add${entity}(data: ${entity}) { + const res = await request.post>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改${table.comment!} + */ +export async function update${entity}(data: ${entity}) { + const res = await request.put>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除${table.comment!} + */ +export async function remove${entity}(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除${table.comment!} + */ +export async function removeBatch${entity}(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询${table.comment!} + */ +export async function get${entity}(id: number) { + const res = await request.get>( + MODULES_API_URL + '/${package.ModuleName}/${controllerMappingHyphen}/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/index.vue.btl b/src/test/java/com/gxwebsoft/generator/templates/index.vue.btl new file mode 100644 index 0000000..3a52886 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/index.vue.btl @@ -0,0 +1,217 @@ + + + + + + + diff --git a/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl b/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl new file mode 100644 index 0000000..54e41a9 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl @@ -0,0 +1,41 @@ +package ${package.Mapper}; + +import ${superMapperClassPackage}; +import com.baomidou.mybatisplus.core.metadata.IPage; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * ${table.comment!}Mapper + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(kotlin){ %> +interface ${table.mapperName} : ${superMapperClass}<${entity}> +<% }else{ %> +public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List<${entity}> + */ + List<${entity}> selectPageRel(@Param("page") IPage<${entity}> page, + @Param("param") ${entity}Param param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List<${entity}> selectListRel(@Param("param") ${entity}Param param); + +} +<% } %> diff --git a/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl b/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl new file mode 100644 index 0000000..974917f --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl @@ -0,0 +1,100 @@ + + + +<% if(enableCache) { %> + + + +<% } %> +<% if(baseResultMap) { %> + + + + <% /** 生成主键排在第一位 **/ %> + <% for(field in table.fields) { %> + <% if(field.keyFlag){ %> + + <% } %> + <% } %> + <% /** 生成公共字段 **/ %> + <% for(field in table.commonFields) { %> + + <% } %> + <% /** 生成普通字段 **/ %> + <% for(field in table.fields) { %> + <% if(!field.keyFlag) { %> + + <% } %> + <% } %> + +<% } %> +<% if(baseColumnList) { %> + + + + <% for(field in table.commonFields) { %> + ${field.columnName}, + <% } %> + ${table.fieldNames} + +<% } %> + + + + SELECT a.* + FROM ${table.name} a + +<% for(field in table.fields) { %> + <% if(field.keyFlag) { %> + <% /** 主键字段 **/ %> + + AND a.${field.name} = #{param.${field.propertyName}} + + <% } else if(field.name == logicDeleteFieldName) { %> + <% /** 逻辑删除字段 **/ %> + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + <% } else if(field.name == 'create_time') { %> + <% /** 创建时间字段 **/ %> + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + <% } else if(array.contain(cfg.paramExcludeFields, field.name)) { %> + <% /** 排除的字段 **/ %> + <% } else if(array.contain(cfg.paramEqType, field.propertyType)) { %> + <% /** 使用EQ的字段 **/ %> + + AND a.${field.name} = #{param.${field.propertyName}} + + <% } else { %> + <% /** 其它类型使用LIKE **/ %> + + AND a.${field.name} LIKE CONCAT('%', #{param.${field.propertyName}}, '%') + + <% } %> +<% } %> + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/test/java/com/gxwebsoft/generator/templates/model.ts.btl b/src/test/java/com/gxwebsoft/generator/templates/model.ts.btl new file mode 100644 index 0000000..b0b99db --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/model.ts.btl @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * ${table.comment!} + */ +export interface ${entity} { +<% /** -----------BEGIN 字段循环遍历----------- **/ %> +<% for(field in table.fields) { %> + <% + var keyPropertyName; + if(field.keyFlag) { + keyPropertyName = field.propertyName; + } + %> + <% /* 主键 */ %> + <% if(field.keyFlag) { %> + <% /* 普通字段 */ %> + <% } else if(isNotEmpty(field.fill)) { %> + <% if(field.convert){ %> + @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) + <% }else{ %> + @TableField(fill = FieldFill.${field.fill}) + <% } %> + <% } else if(field.convert) { %> + @TableField("${field.annotationColumnName}") + <% } %> + // ${field.comment} + ${field.propertyName}?: <% if(field.propertyType == 'Integer') { %>number<% }else{ %>string<% } %>; +<% } %> +<% /** -----------END 字段循环遍历----------- **/ %> +} + +/** + * ${table.comment!}搜索条件 + */ +export interface ${entity}Param extends PageParam { +<% for(field in table.fields) { %> +<% if(field.keyFlag) { %> + ${field.propertyName}?: number; + <% } %> +<% } %> + keywords?: string; +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/param.java.btl b/src/test/java/com/gxwebsoft/generator/templates/param.java.btl new file mode 100644 index 0000000..9aee6e5 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/param.java.btl @@ -0,0 +1,147 @@ +package ${cfg.packageName!}.${package.ModuleName}.param; + +import java.math.BigDecimal; +import ${cfg.packageName!}.common.core.annotation.QueryField; +import ${cfg.packageName!}.common.core.annotation.QueryType; +import ${cfg.packageName!}.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +<% if(swagger2) { %> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +<% } %> +<% if(entityLombokModel) { %> +import lombok.Data; +import lombok.EqualsAndHashCode; + <% if(chainModel) { %> +import lombok.experimental.Accessors; + <% } %> +<% } %> + +/** + * ${table.comment!}查询参数 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(entityLombokModel) { %> +@Data + <% if(isNotEmpty(superEntityClass)) { %> +@EqualsAndHashCode(callSuper = true) + <% } else { %> +@EqualsAndHashCode(callSuper = false) + <% } %> + <% if(chainModel) { %> +@Accessors(chain = true) + <% } %> +<% } %> +@JsonInclude(JsonInclude.Include.NON_NULL) +<% if(swagger2) { %> +@ApiModel(value = "${entity}Param对象", description = "${table.comment!''}查询参数") +<% } %> +public class ${entity}Param extends BaseParam { +<% if(entitySerialVersionUID) { %> + private static final long serialVersionUID = 1L; +<% } %> +<% /** -----------BEGIN 字段循环遍历----------- **/ %> +<% for(field in table.fields) { %> + <% + var keyPropertyName; + if(field.keyFlag) { + keyPropertyName = field.propertyName; + } + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + + <% if(isNotEmpty(field.comment)) { %> + <% if(swagger2) { %> + @ApiModelProperty(value = "${field.comment}") + <% }else{ %> + /** + * ${field.comment} + */ + <% } %> + <% } %> + <% /* 主键 */ %> + <% if(field.keyFlag) { %> + @QueryField(type = QueryType.EQ) + <% /* 使用EQ的字段 */ %> + <% } else if(array.contain(cfg.paramEqType, field.propertyType)) { %> + @QueryField(type = QueryType.EQ) + <% } %> + <% /* 使用String类型的字段 */ %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + private String ${field.propertyName}; + <% } else { %> + <% /* 普通字段 */ %> + private ${field.propertyType} ${field.propertyName}; + <% } %> +<% } %> +<% /** -----------END 字段循环遍历----------- **/ %> + +<% if(!entityLombokModel) { %> + <% for(field in table.fields) { %> + <% + var getprefix = ''; + if(field.propertyType == 'boolean') { + getprefix = 'is'; + } else { + getprefix = 'get'; + } + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public String ${getprefix}${field.capitalName}() { + <% } else { %> + public ${field.propertyType} ${getprefix}${field.capitalName}() { + <% } %> + return ${field.propertyName}; + } + + <% if(chainModel) { %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public ${entity} set${field.capitalName}(String ${field.propertyName}) { + <% } else { %> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + <% } else { %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public void set${field.capitalName}(String ${field.propertyName}) { + <% } else { %> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + <% } %> + this.${field.propertyName} = ${field.propertyName}; + <% if(chainModel){ %> + return this; + <% } %> + } + + <% } %> +<% } %> +<% if(!entityLombokModel) { %> + @Override + public String toString() { + return "${entity}{" + + <% for(field in table.fields) { %> + <% + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + <% if(fieldLP.index == 0) { %> + "${field.propertyName}=" + ${field.propertyName} + + <% } else { %> + ", ${field.propertyName}=" + ${field.propertyName} + + <% } %> + <% } %> + "}"; + } +<% } %> +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/service.java.btl b/src/test/java/com/gxwebsoft/generator/templates/service.java.btl new file mode 100644 index 0000000..67efe6a --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/service.java.btl @@ -0,0 +1,55 @@ +<% +var idPropertyName, idComment; +for(field in table.fields) { + if(field.keyFlag) { + idPropertyName = field.propertyName; + idComment = field.comment; + } +} +%> +package ${package.Service}; + +import ${superServiceClassPackage}; +import ${cfg.packageName!}.common.core.web.PageResult; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; + +import java.util.List; + +/** + * ${table.comment!}Service + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(kotlin){ %> +interface ${table.serviceName} : ${superServiceClass}<${entity}> +<% }else{ %> +public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult<${entity}> + */ + PageResult<${entity}> pageRel(${entity}Param param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List<${entity}> + */ + List<${entity}> listRel(${entity}Param param); + + /** + * 根据id查询 + * + * @param ${idPropertyName!} ${idComment!} + * @return ${entity} + */ + ${entity} getByIdRel(Integer ${idPropertyName!}); + +} +<% } %> diff --git a/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl b/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl new file mode 100644 index 0000000..20b998d --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl @@ -0,0 +1,62 @@ +<% +var idPropertyName, idCapitalName; +for(field in table.fields) { + if(field.keyFlag) { + idPropertyName = field.propertyName; + idCapitalName = field.capitalName; + } +} +%> +package ${package.ServiceImpl}; + +import ${superServiceImplClassPackage}; +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import ${cfg.packageName!}.common.core.web.PageParam; +import ${cfg.packageName!}.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * ${table.comment!}Service实现 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +@Service +<% if(kotlin){ %> +open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { + +} +<% }else{ %> +public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { + + @Override + public PageResult<${entity}> pageRel(${entity}Param param) { + PageParam<${entity}, ${entity}Param> page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List<${entity}> list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List<${entity}> listRel(${entity}Param param) { + List<${entity}> list = baseMapper.selectListRel(param); + // 排序 + PageParam<${entity}, ${entity}Param> page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public ${entity} getByIdRel(Integer ${idPropertyName!}) { + ${entity}Param param = new ${entity}Param(); + param.set${idCapitalName!}(${idPropertyName!}); + return param.getOne(baseMapper.selectListRel(param)); + } + +} +<% } %> diff --git a/src/test/java/com/gxwebsoft/hjm/MqttServiceTest.java b/src/test/java/com/gxwebsoft/hjm/MqttServiceTest.java new file mode 100644 index 0000000..5dd64cd --- /dev/null +++ b/src/test/java/com/gxwebsoft/hjm/MqttServiceTest.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.hjm; + +import com.gxwebsoft.hjm.service.MqttService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import javax.annotation.Resource; + +/** + * MQTT服务测试类 + * + * @author 科技小王子 + * @since 2025-07-02 + */ +@SpringBootTest +@ActiveProfiles("dev") +public class MqttServiceTest { + + @Resource + private MqttService mqttService; + + @Test + public void testMqttConnection() { + System.out.println("MQTT连接状态: " + mqttService.isConnected()); + System.out.println("MQTT客户端信息: " + mqttService.getClientInfo()); + } + + @Test + public void testMqttReconnect() { + try { + mqttService.reconnect(); + System.out.println("MQTT重连测试完成"); + } catch (Exception e) { + System.err.println("MQTT重连测试失败: " + e.getMessage()); + } + } + + @Test + public void testMqttPublish() { + try { + if (mqttService.isConnected()) { + mqttService.publish("/test/topic", "测试消息"); + System.out.println("MQTT消息发布测试完成"); + } else { + System.out.println("MQTT未连接,跳过发布测试"); + } + } catch (Exception e) { + System.err.println("MQTT消息发布测试失败: " + e.getMessage()); + } + } +} diff --git a/src/test/java/com/gxwebsoft/house/HousePosterTest.java b/src/test/java/com/gxwebsoft/house/HousePosterTest.java new file mode 100644 index 0000000..247a713 --- /dev/null +++ b/src/test/java/com/gxwebsoft/house/HousePosterTest.java @@ -0,0 +1,136 @@ +package com.gxwebsoft.house; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.house.entity.HouseInfo; +import com.gxwebsoft.house.service.HouseInfoService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import javax.annotation.Resource; +import java.math.BigDecimal; + +/** + * 房产海报生成测试 + */ +@SpringBootTest +@ActiveProfiles("dev") +public class HousePosterTest { + + @Resource + private HouseInfoService houseInfoService; + + @Test + public void testGeneratePoster() throws Exception { + // 创建测试房源信息 + HouseInfo houseInfo = new HouseInfo(); + houseInfo.setHouseId(1); + houseInfo.setHouseTitle("精装修三室两厅,拎包入住"); + houseInfo.setHouseType("3室2厅1卫"); + houseInfo.setExtent("120㎡"); + houseInfo.setFloor("15/30层"); + houseInfo.setRent(new BigDecimal("3500")); + houseInfo.setMonthlyRent(new BigDecimal("3500")); + houseInfo.setAddress("深圳市南山区科技园南区"); + houseInfo.setPhone("13800138000"); + houseInfo.setHouseLabel("近地铁,精装修,家电齐全"); + houseInfo.setTenantId(1); + + // 创建测试图片文件数据(使用您提供的格式) + JSONArray filesArray = new JSONArray(); + + JSONObject file1 = new JSONObject(); + file1.put("size", 53148); + file1.put("type", "image"); + file1.put("url", "https://oss.wsdns.cn/20250507/3a2f69042a6e41f2882030d7059a4247.jpg?x-oss-process=image/resize,w_1680/quality,Q_90"); + file1.put("status", "success"); + file1.put("message", ""); + filesArray.add(file1); + + JSONObject file2 = new JSONObject(); + file2.put("size", 35301); + file2.put("type", "image"); + file2.put("url", "https://oss.wsdns.cn/20250507/b375176af0b1403da6c4ff66ea4bc503.jpg?x-oss-process=image/resize,w_1680/quality,Q_90"); + file2.put("status", "success"); + file2.put("message", ""); + filesArray.add(file2); + + houseInfo.setFiles(filesArray.toJSONString()); + + // 生成海报 + String posterUrl = houseInfoService.generatePoster(houseInfo); + + System.out.println("生成的海报URL: " + posterUrl); + + // 验证结果 + assert posterUrl != null : "海报生成失败,返回null"; + assert posterUrl.contains("/poster/") : "海报URL格式不正确"; + assert posterUrl.contains(".jpg") : "海报文件格式不正确"; + + System.out.println("房产海报生成测试通过!"); + System.out.println("海报包含小程序码,扫码可查看房源详情页:sub_pages/house/detail/" + houseInfo.getHouseId()); + } + + @Test + public void testGeneratePosterWithMinimalData() throws Exception { + // 测试最小数据集 + HouseInfo houseInfo = new HouseInfo(); + houseInfo.setHouseId(2); + houseInfo.setHouseTitle("简单房源"); + houseInfo.setTenantId(1); + + // 只有一张图片 + JSONArray filesArray = new JSONArray(); + JSONObject file = new JSONObject(); + file.put("size", 53148); + file.put("type", "image"); + file.put("url", "https://oss.wsdns.cn/20250507/3a2f69042a6e41f2882030d7059a4247.jpg?x-oss-process=image/resize,w_1680/quality,Q_90"); + file.put("status", "success"); + file.put("message", ""); + filesArray.add(file); + + houseInfo.setFiles(filesArray.toJSONString()); + + // 生成海报 + String posterUrl = houseInfoService.generatePoster(houseInfo); + + System.out.println("最小数据海报URL: " + posterUrl); + + // 验证结果 + assert posterUrl != null : "最小数据海报生成失败"; + + System.out.println("最小数据房产海报生成测试通过!"); + } + + @Test + public void testGeneratePosterWithEmptyFiles() throws Exception { + // 测试空文件数据 + HouseInfo houseInfo = new HouseInfo(); + houseInfo.setHouseId(3); + houseInfo.setHouseTitle("无图片房源"); + houseInfo.setTenantId(1); + houseInfo.setFiles("[]"); // 空数组 + + // 生成海报 + String posterUrl = houseInfoService.generatePoster(houseInfo); + + System.out.println("空文件海报URL: " + posterUrl); + + // 验证结果 - 应该返回null + assert posterUrl == null : "空文件应该返回null"; + + System.out.println("空文件房产海报测试通过!"); + } + + @Test + public void testGeneratePosterWithNullHouseInfo() throws Exception { + // 测试null房源信息 + String posterUrl = houseInfoService.generatePoster(null); + + // 验证结果 - 应该返回null + assert posterUrl == null : "null房源信息应该返回null"; + + System.out.println("null房源信息测试通过!"); + } +}