From 4e1a76968f9671c38a07b3a314f950072af3b316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sun, 21 Jul 2024 00:25:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cms/controller/MpPagesController.java | 115 ++++++ .../cms/controller/WebsiteController.java | 77 ++-- .../com/gxwebsoft/cms/entity/MpPages.java | 68 ++++ .../com/gxwebsoft/cms/entity/Website.java | 9 +- .../gxwebsoft/cms/mapper/MpPagesMapper.java | 37 ++ .../cms/mapper/xml/MpPagesMapper.xml | 69 ++++ .../com/gxwebsoft/cms/param/MpPagesParam.java | 66 ++++ .../gxwebsoft/cms/service/MpPagesService.java | 42 +++ .../cms/service/impl/MpPagesServiceImpl.java | 47 +++ .../gxwebsoft/generator/BookingGenerator.java | 19 +- .../com/gxwebsoft/generator/CmsGenerator.java | 351 +++++++++++------- 11 files changed, 727 insertions(+), 173 deletions(-) create mode 100644 src/main/java/com/gxwebsoft/cms/controller/MpPagesController.java create mode 100644 src/main/java/com/gxwebsoft/cms/entity/MpPages.java create mode 100644 src/main/java/com/gxwebsoft/cms/mapper/MpPagesMapper.java create mode 100644 src/main/java/com/gxwebsoft/cms/mapper/xml/MpPagesMapper.xml create mode 100644 src/main/java/com/gxwebsoft/cms/param/MpPagesParam.java create mode 100644 src/main/java/com/gxwebsoft/cms/service/MpPagesService.java create mode 100644 src/main/java/com/gxwebsoft/cms/service/impl/MpPagesServiceImpl.java diff --git a/src/main/java/com/gxwebsoft/cms/controller/MpPagesController.java b/src/main/java/com/gxwebsoft/cms/controller/MpPagesController.java new file mode 100644 index 0000000..fd75d10 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/MpPagesController.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.MpPagesService; +import com.gxwebsoft.cms.entity.MpPages; +import com.gxwebsoft.cms.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 2024-07-20 19:49:55 + */ +@Api(tags = "小程序页面管理") +@RestController +@RequestMapping("/api/cms/mp-pages") +public class MpPagesController extends BaseController { + @Resource + private MpPagesService mpPagesService; + + @ApiOperation("分页查询小程序页面") + @GetMapping("/page") + public ApiResult> page(MpPagesParam param) { + // 使用关联查询 + return success(mpPagesService.pageRel(param)); + } + + @ApiOperation("查询全部小程序页面") + @GetMapping() + public ApiResult> list(MpPagesParam param) { + // 使用关联查询 + return success(mpPagesService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:mpPages:list')") + @ApiOperation("根据id查询小程序页面") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(mpPagesService.getByIdRel(id)); + } + + @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("添加失败"); + } + + @ApiOperation("修改小程序页面") + @PutMapping() + public ApiResult update(@RequestBody MpPages mpPages) { + if (mpPagesService.updateById(mpPages)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除小程序页面") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (mpPagesService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加小程序页面") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (mpPagesService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改小程序页面") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(mpPagesService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @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/cms/controller/WebsiteController.java b/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java index b062ed1..24aab0f 100644 --- a/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java +++ b/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java @@ -1,30 +1,31 @@ package com.gxwebsoft.cms.controller; import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.gxwebsoft.cms.entity.*; -import com.gxwebsoft.cms.param.*; +import com.gxwebsoft.cms.param.MpMenuParam; +import com.gxwebsoft.cms.param.NavigationParam; +import com.gxwebsoft.cms.param.WebsiteParam; import com.gxwebsoft.cms.service.*; 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.*; -import com.gxwebsoft.common.system.entity.Menu; +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.Dict; +import com.gxwebsoft.common.system.entity.DictData; import com.gxwebsoft.common.system.entity.User; -import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.common.system.service.DictDataService; +import com.gxwebsoft.common.system.service.DictService; import com.gxwebsoft.oa.entity.Company; import com.gxwebsoft.oa.param.LinkParam; import com.gxwebsoft.oa.service.LinkService; -import com.gxwebsoft.shop.entity.Merchant; -import com.gxwebsoft.shop.entity.MerchantAccount; import com.gxwebsoft.shop.entity.Order; -import com.gxwebsoft.shop.service.MerchantAccountService; -import com.gxwebsoft.shop.service.MerchantService; import com.gxwebsoft.shop.service.OrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -35,15 +36,10 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.time.DayOfWeek; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import java.util.stream.IntStream; import static com.gxwebsoft.common.core.utils.CommonUtil.toTreeData; @@ -79,6 +75,10 @@ public class WebsiteController extends BaseController { private MpMenuService mpMenuService; @Resource private OrderService orderService; + @Resource + private DictService dictService; + @Resource + private DictDataService dictDataService; @ApiOperation("获取网站信息") @GetMapping("/getSiteInfo") @@ -215,6 +215,30 @@ public class WebsiteController extends BaseController { navigation.setType(1); navigation.setPosition(1); navigationService.save(navigation); + // 添加字典 + final Dict dict = new Dict(); + dict.setDictName("路由方式"); + dict.setDictCode("navType"); + dict.setSortNumber(100); + final boolean save = dictService.save(dict); + final Integer dictId = dict.getDictId(); + final DictData dictData = new DictData(); + dictData.setDictDataName("uni.navigateTo"); + dictData.setDictDataCode("uni.navigateTo"); + dictData.setComments("保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面"); + dictDataService.save(dictData); + dictData.setDictDataName("uni.redirectTo"); + dictData.setDictDataCode("uni.redirectTo"); + dictData.setComments("关闭当前页面,跳转到应用内的某个页面"); + dictDataService.save(dictData); + dictData.setDictDataName("uni.reLaunch"); + dictData.setDictDataCode("uni.reLaunch"); + dictData.setComments("关闭所有页面,打开到应用内的某个页面"); + dictDataService.save(dictData); + dictData.setDictDataName("uni.switchTab"); + dictData.setDictDataCode("uni.switchTab"); + dictData.setComments("跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面"); + dictDataService.save(dictData); // 网站配置参数 List fields = new ArrayList<>(); WebsiteField field = new WebsiteField(); @@ -222,36 +246,35 @@ public class WebsiteController extends BaseController { field.setName("siteLogo"); field.setValue(company.getCompanyLogo()); field.setComments("网站LOGO"); - fields.add(field); + websiteFieldService.save(field); field.setName("siteName"); field.setValue(company.getShortName()); field.setComments("网站名称"); - fields.add(field); + websiteFieldService.save(field); field.setName("icpNo"); field.setValue("-"); field.setComments("备案号"); - fields.add(field); + websiteFieldService.save(field); field.setName("qrcode"); field.setValue(""); field.setComments("公众号二维码"); - fields.add(field); + websiteFieldService.save(field); field.setName("bottomBg"); field.setValue("https://oss.wsdns.cn/20240717/13165035c35e4f25a6c9fbd3636c6292.png"); field.setComments("网站底部背景图"); - fields.add(field); + websiteFieldService.save(field); field.setName("address"); field.setValue(company.getAddress()); field.setComments("办公地址"); - fields.add(field); + websiteFieldService.save(field); field.setName("tel"); field.setValue(company.getTel()); field.setComments("公司电话"); - fields.add(field); + websiteFieldService.save(field); field.setName("domain"); field.setValue(company.getDomain()); field.setComments("网站域名"); - fields.add(field); - websiteFieldService.saveBatch(fields); + websiteFieldService.save(field); } // 获取站点信息 @@ -286,11 +309,7 @@ public class WebsiteController extends BaseController { final List list = adService.list(new LambdaQueryWrapper().eq(Ad::getAdType,"幻灯片")); if (!CollectionUtils.isEmpty(list)) { final Ad ad = list.get(0); - final String images = ad.getImages(); - System.out.println("images = " + images); - final JSONObject jsonObject = JSONObject.parseObject(images); - System.out.println("jsonObject = " + jsonObject); -// website.setSlide(jsonObject); + website.setSlide(ad); } // 首页布局 diff --git a/src/main/java/com/gxwebsoft/cms/entity/MpPages.java b/src/main/java/com/gxwebsoft/cms/entity/MpPages.java new file mode 100644 index 0000000..41d085a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/MpPages.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +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 2024-07-20 19:49:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MpPages对象", description = "小程序页面") +@TableName("cms_mp_pages") +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 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/cms/entity/Website.java b/src/main/java/com/gxwebsoft/cms/entity/Website.java index b114d41..d300d81 100644 --- a/src/main/java/com/gxwebsoft/cms/entity/Website.java +++ b/src/main/java/com/gxwebsoft/cms/entity/Website.java @@ -1,23 +1,16 @@ package com.gxwebsoft.cms.entity; import com.baomidou.mybatisplus.annotation.*; -import com.gxwebsoft.common.system.entity.Menu; -import com.gxwebsoft.common.system.entity.User; -import com.gxwebsoft.common.system.entity.UserInfo; import com.gxwebsoft.oa.entity.Link; -import com.gxwebsoft.shop.entity.Merchant; -import com.gxwebsoft.shop.entity.MerchantAccount; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -import org.apache.poi.ss.formula.functions.T; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 网站信息记录表 @@ -159,7 +152,7 @@ public class Website implements Serializable { @ApiModelProperty(value = "幻灯片广告") @TableField(exist = false) - private List slide; + private Ad slide; @ApiModelProperty(value = "站点广告") @TableField(exist = false) diff --git a/src/main/java/com/gxwebsoft/cms/mapper/MpPagesMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/MpPagesMapper.java new file mode 100644 index 0000000..e1ee410 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/MpPagesMapper.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.MpPages; +import com.gxwebsoft.cms.param.MpPagesParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小程序页面Mapper + * + * @author 科技小王子 + * @since 2024-07-20 19:49:55 + */ +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/cms/mapper/xml/MpPagesMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/MpPagesMapper.xml new file mode 100644 index 0000000..bd52ae4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/MpPagesMapper.xml @@ -0,0 +1,69 @@ + + + + + + + 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.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/cms/param/MpPagesParam.java b/src/main/java/com/gxwebsoft/cms/param/MpPagesParam.java new file mode 100644 index 0000000..d1f9971 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/MpPagesParam.java @@ -0,0 +1,66 @@ +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-07-20 19:49:55 + */ +@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 = "排序(数字越小越靠前)") + @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/service/MpPagesService.java b/src/main/java/com/gxwebsoft/cms/service/MpPagesService.java new file mode 100644 index 0000000..02169a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/MpPagesService.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.MpPages; +import com.gxwebsoft.cms.param.MpPagesParam; + +import java.util.List; + +/** + * 小程序页面Service + * + * @author 科技小王子 + * @since 2024-07-20 19:49:55 + */ +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/cms/service/impl/MpPagesServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/MpPagesServiceImpl.java new file mode 100644 index 0000000..2e9dd9e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/MpPagesServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.MpPagesMapper; +import com.gxwebsoft.cms.service.MpPagesService; +import com.gxwebsoft.cms.entity.MpPages; +import com.gxwebsoft.cms.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 2024-07-20 19:49:55 + */ +@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 asc"); + 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 asc"); + 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/test/java/com/gxwebsoft/generator/BookingGenerator.java b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java index 577ab32..2f87158 100644 --- a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java @@ -28,6 +28,7 @@ public class BookingGenerator { private static final String OUTPUT_DIR = "/src/main/java"; // Vue文件输出位置 private static final String OUTPUT_LOCATION_VUE = "/Users/gxwebsoft/VUE/com.gxwebsoft.core-web"; + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/VUE/nbg"; // Vue文件输出目录 private static final String OUTPUT_DIR_VUE = "/src"; // 作者名称 @@ -60,7 +61,7 @@ public class BookingGenerator { // "booking_user", // "booking_user_invoice", // "booking_user_card", - "booking_user_card_log", +// "booking_user_card_log", // "booking_item", // "booking_course", // "booking_course_category", @@ -200,6 +201,14 @@ public class BookingGenerator { + tableInfo.getEntityPath() + "/" + "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() + "/" + "index.ts"; + } + }); // 生成TS文件 (/api/shop/goods/model/index.ts) templatePath = TEMPLATES_DIR + "/model.ts.btl"; focList.add(new FileOutConfig(templatePath) { @@ -210,6 +219,14 @@ public class BookingGenerator { + 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) { diff --git a/src/test/java/com/gxwebsoft/generator/CmsGenerator.java b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java index e43061f..70619b2 100644 --- a/src/test/java/com/gxwebsoft/generator/CmsGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java @@ -8,6 +8,7 @@ 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 com.gxwebsoft.shop.entity.Users; import java.util.ArrayList; import java.util.HashMap; @@ -21,26 +22,32 @@ import java.util.Map; * @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"; - // 作者名称 - 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 = "FYJGx7s8yt7K8xDH"; - // 包名 - private static final String PACKAGE_NAME = "com.gxwebsoft"; - // 模块名 - private static final String MODULE_NAME = "cms"; - // 需要生成的表 - private static final String[] TABLE_NAMES = new String[]{ + // 输出位置 + 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/gxtyzx-admin-vue"; + // Vue文件输出目录 + private static final String OUTPUT_LOCATION_UNIAPP = "/Users/gxwebsoft/VUE/nbg"; + // 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", @@ -54,132 +61,206 @@ public class CmsGenerator { // "cms_navigation", // "cms_design", // "cms_design_record", - "cms_website", +// "cms_website", // "cms_website_field", // "cms_form", // "cms_form_record", // "cms_domain", // "cms_mp_menu" + "cms_mp_pages" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "cms_", + "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); + } }; - // 需要去除的表前缀 - private static final String[] TABLE_PREFIX = new String[]{ - "cms_", - "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"; + 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"; - public static void main(String[] args) { - // 代码生成器 - AutoGenerator mpg = new AutoGenerator(); + 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"; + } + }); - // 全局配置 - 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); + // 生成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"; + } + }); - // 数据源配置 - 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); + // 生成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"; + } + }); - // 包配置 - PackageConfig pc = new PackageConfig(); - pc.setModuleName(MODULE_NAME); - pc.setParent(PACKAGE_NAME); - mpg.setPackageInfo(pc); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); - // 策略配置 - 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; - } - }); - cfg.setFileOutConfigList(focList); - mpg.setCfg(cfg); - - mpg.execute(); - } + mpg.execute(); + } }