diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java index 128939f8..6f61e100 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java @@ -1,9 +1,11 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; @@ -32,6 +34,7 @@ public class GoodsQueryForm extends PageParam { private Integer goodsStatus; @Schema(description = "产地") + @JsonDeserialize(using = DictValueVoDeserializer.class) private String place; @Schema(description = "上架状态") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index 8b7b2d34..497a168e 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -199,7 +199,7 @@ public class GoodsService { GoodsExcelVO.builder() .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) - .place(dictCacheService.selectValueNameByValueCode(e.getPlace())) + .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(code)).collect(Collectors.joining(","))) .price(e.getPrice()) .goodsName(e.getGoodsName()) .remark(e.getRemark()) diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java index d6654a43..f6c5060f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java @@ -114,4 +114,14 @@ public interface NoticeDao extends BaseMapper { */ void updateViewRecord(@Param("noticeId")Long noticeId, @Param("employeeId")Long requestEmployeeId,@Param("ip") String ip, @Param("userAgent")String userAgent); + /** + * 更新 浏览量 + * + * @param noticeId 通知 id + * @param pageViewCountIncrement 页面浏览量的增量 + * @param userViewCountIncrement 用户浏览量的增量 + */ + void updateViewCount(@Param("noticeId")Long noticeId,@Param("pageViewCountIncrement") Integer pageViewCountIncrement, @Param("userViewCountIncrement")Integer userViewCountIncrement); + + } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java index 5ac0f389..8208a74f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java @@ -52,10 +52,10 @@ public class NoticeEmployeeService { public ResponseDTO> queryList(Long requestEmployeeId, NoticeEmployeeQueryForm noticeEmployeeQueryForm) { Page page = SmartPageUtil.convert2PageQuery(noticeEmployeeQueryForm); - //获取请求人的 部门及其子部门 List employeeDepartmentIdList = Lists.newArrayList(); EmployeeEntity employeeEntity = employeeService.getById(requestEmployeeId); - if (employeeEntity.getDepartmentId() != null) { + // 如果不是管理员 则获取请求人的 部门及其子部门 + if (!employeeEntity.getAdministratorFlag() && employeeEntity.getDepartmentId() != null) { employeeDepartmentIdList = departmentService.selfAndChildrenIdList(employeeEntity.getDepartmentId()); } @@ -106,8 +106,15 @@ public class NoticeEmployeeService { long viewCount = noticeDao.viewRecordCount(noticeId, requestEmployeeId); if (viewCount == 0) { noticeDao.insertViewRecord(noticeId, requestEmployeeId, ip, userAgent, 1); + // 该员工对于这个通知是第一次查看 页面浏览量+1 用户浏览量+1 + noticeDao.updateViewCount(noticeId, 1, 1); + noticeDetailVO.setPageViewCount(noticeDetailVO.getPageViewCount() + 1); + noticeDetailVO.setUserViewCount(noticeDetailVO.getUserViewCount() + 1); } else { noticeDao.updateViewRecord(noticeId, requestEmployeeId, ip, userAgent); + // 该员工对于这个通知不是第一次查看 页面浏览量+1 用户浏览量+0 + noticeDao.updateViewCount(noticeId, 1, 0); + noticeDetailVO.setPageViewCount(noticeDetailVO.getPageViewCount() + 1); } return ResponseDTO.ok(noticeDetailVO); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java index 2aca93bb..3495107f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java @@ -60,8 +60,11 @@ public class EmployeeManager extends ServiceImpl { // 保存员工 获得id employeeDao.updateById(employee); - if (CollectionUtils.isNotEmpty(roleIdList)) { - List roleEmployeeList = roleIdList.stream().map(e -> new RoleEmployeeEntity(e, employee.getEmployeeId())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(roleIdList)) { + // 删除员工角色 + this.updateEmployeeRole(employee.getEmployeeId(), null); + } else { + List roleEmployeeList = roleIdList.stream().map(roleId -> new RoleEmployeeEntity(roleId, employee.getEmployeeId())).collect(Collectors.toList()); this.updateEmployeeRole(employee.getEmployeeId(), roleEmployeeList); } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java index 06f27ca5..3c2cdd0a 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java @@ -12,6 +12,7 @@ import net.lab1024.sa.admin.module.system.role.domain.form.RoleEmployeeQueryForm import net.lab1024.sa.admin.module.system.role.domain.vo.RoleEmployeeVO; import java.util.List; +import java.util.Set; /** @@ -50,7 +51,7 @@ public interface RoleEmployeeDao extends BaseMapper { /** * 查询角色下的人员id */ - List selectEmployeeIdByRoleIdList(@Param("roleIdList") List roleIdList); + Set selectEmployeeIdByRoleIdList(@Param("roleIdList") List roleIdList); /** * @@ -79,5 +80,10 @@ public interface RoleEmployeeDao extends BaseMapper { /** * 批量删除某个角色下的某批用户的关联关系 */ - void batchDeleteEmployeeRole(@Param("roleId") Long roleId,@Param("employeeIds")List employeeIds); + void batchDeleteEmployeeRole(@Param("roleId") Long roleId, @Param("employeeIds") Set employeeIds); + + /** + * 判断某个角色下是否存在用户 + */ + Integer existsByRoleId(@Param("roleId") Long roleId); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java index ef849e7c..4960b4ab 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java @@ -5,7 +5,7 @@ import lombok.Data; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.util.List; +import java.util.Set; /** * 角色的员工更新 @@ -25,6 +25,6 @@ public class RoleEmployeeUpdateForm { @Schema(description = "员工id集合") @NotEmpty(message = "员工id不能为空") - protected List employeeIdList; + protected Set employeeIdList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java index f8fbd6f2..ba33dfd2 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java @@ -3,11 +3,7 @@ package net.lab1024.sa.admin.module.system.role.manager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity; -import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; /** * 角色员工 manager @@ -16,20 +12,9 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service public class RoleEmployeeManager extends ServiceImpl { - /** - * 保存 角色员工 - * - */ - @Transactional(rollbackFor = Throwable.class) - public void saveRoleEmployee(Long roleId, List roleEmployeeList) { - this.getBaseMapper().deleteByRoleId(roleId); - if (CollectionUtils.isNotEmpty(roleEmployeeList)) { - this.saveBatch(roleEmployeeList); - } - } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java index c0a8cdad..755aa892 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java @@ -1,6 +1,7 @@ package net.lab1024.sa.admin.module.system.role.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Lists; import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity; import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; @@ -20,12 +21,12 @@ import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; /** @@ -88,7 +89,6 @@ public class RoleEmployeeService { * 移除员工角色 * */ - @Transactional(rollbackFor = Exception.class) public ResponseDTO removeRoleEmployee(Long employeeId, Long roleId) { if (null == employeeId || null == roleId) { return ResponseDTO.userErrorParam(); @@ -112,16 +112,21 @@ public class RoleEmployeeService { */ public ResponseDTO batchAddRoleEmployee(RoleEmployeeUpdateForm roleEmployeeUpdateForm) { Long roleId = roleEmployeeUpdateForm.getRoleId(); - List employeeIdList = roleEmployeeUpdateForm.getEmployeeIdList(); - // 保存新的角色员工 - List roleEmployeeList = null; - if (CollectionUtils.isNotEmpty(employeeIdList)) { - roleEmployeeList = employeeIdList.stream() + + // 已选择的员工id列表 + Set selectedEmployeeIdList = roleEmployeeUpdateForm.getEmployeeIdList(); + // 数据库里已有的员工id列表 + Set dbEmployeeIdList = roleEmployeeDao.selectEmployeeIdByRoleIdList(Lists.newArrayList(roleId)); + // 从已选择的员工id列表里 过滤数据库里不存在的 即需要添加的员工 id + Set addEmployeeIdList = selectedEmployeeIdList.stream().filter(id -> !dbEmployeeIdList.contains(id)).collect(Collectors.toSet()); + + // 添加角色员工 + if (CollectionUtils.isNotEmpty(addEmployeeIdList)) { + List roleEmployeeList = addEmployeeIdList.stream() .map(employeeId -> new RoleEmployeeEntity(roleId, employeeId)) .collect(Collectors.toList()); + roleEmployeeManager.saveBatch(roleEmployeeList); } - // 保存数据 - roleEmployeeManager.saveRoleEmployee(roleId, roleEmployeeList); return ResponseDTO.ok(); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java index b69abea3..2d01b4bf 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java @@ -65,6 +65,11 @@ public class RoleService { if (null == roleEntity) { return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST); } + // 当没有员工绑定这个角色时才可以删除 + Integer exists = roleEmployeeDao.existsByRoleId(roleId); + if (exists != null) { + return ResponseDTO.error(UserErrorCode.ALREADY_EXIST, "该角色下存在员工,无法删除"); + } roleDao.deleteById(roleId); roleMenuDao.deleteByRoleId(roleId); roleEmployeeDao.deleteByRoleId(roleId); @@ -86,7 +91,7 @@ public class RoleService { } existRoleEntity = roleDao.getByRoleCode(roleUpdateForm.getRoleCode()); - if (null != existRoleEntity) { + if (null != existRoleEntity && !existRoleEntity.getRoleId().equals(roleUpdateForm.getRoleId())) { return ResponseDTO.userErrorParam("角色编码重复,重复的角色为:" + existRoleEntity.getRoleName()); } diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/business/goods/GoodsMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/business/goods/GoodsMapper.xml index 7fcadccb..05316d83 100644 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/business/goods/GoodsMapper.xml +++ b/smart-admin-api/sa-admin/src/main/resources/mapper/business/goods/GoodsMapper.xml @@ -18,7 +18,7 @@ INSTR(goods_name,#{query.searchWord}) - AND place = #{query.place} + AND INSTR(place,#{query.place}) AND goods_status = #{query.goodsStatus} diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/business/notice/NoticeMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/business/notice/NoticeMapper.xml deleted file mode 100644 index 580bb9b4..00000000 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/business/notice/NoticeMapper.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - UPDATE t_notice - SET watch_amount = watch_amount + 1 - WHERE notice_id = #{noticeId} - - - UPDATE t_notice - SET deleted_flag = #{deletedFlag} - WHERE notice_id IN - - #{item} - - - - UPDATE t_notice - SET notice_type = #{noticeType}, - notice_belong_type = #{noticeBelongType}, - notice_title = #{noticeTitle}, - notice_content = #{noticeContent}, - link_address = #{linkAddress}, - cover_file_key = #{coverFileKey}, - accessory_file_keys = #{accessoryFileKeys}, - top_flag = #{topFlag}, - publish_time = #{publishTime}, - disabled_flag = #{disabledFlag} - WHERE notice_id = #{noticeId} - - - - \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeDao.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeMapper.xml similarity index 97% rename from smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeDao.xml rename to smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeMapper.xml index 7c623e33..b1dc8ad5 100644 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeDao.xml +++ b/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/notice/NoticeMapper.xml @@ -242,5 +242,11 @@ where notice_id = #{noticeId} and employee_id = #{employeeId} + + update t_notice + set page_view_count = page_view_count + #{pageViewCountIncrement}, + user_view_count = user_view_count + #{userViewCountIncrement} + where notice_id = #{noticeId} + \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml index 9e0a1379..390a19c8 100644 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml +++ b/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml @@ -138,4 +138,12 @@ #{item} + + + \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java index 86eba416..7631db6a 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java @@ -28,19 +28,19 @@ public class DictValueVoDeserializer extends JsonDeserializer { @Override public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { - List list = new ArrayList<>(); + List list = new ArrayList<>(); ObjectCodec objectCodec = jsonParser.getCodec(); JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); String deserialize = ""; try { if (listOrObjectNode.isArray()) { for (JsonNode node : listOrObjectNode) { - list.add(objectCodec.treeToValue(node, DictValueVO.class)); + list.add(node.asText()); } } else { - list.add(objectCodec.treeToValue(listOrObjectNode, DictValueVO.class)); + list.add(listOrObjectNode.asText()); } - deserialize = list.stream().map(DictValueVO::getValueCode).collect(Collectors.joining(",")); + deserialize = String.join(",", list); } catch (Exception e) { log.error(e.getMessage(), e); deserialize = listOrObjectNode.asText(); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java index 4e2f24c0..9dca8487 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java @@ -12,7 +12,6 @@ import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * 分页工具类 @@ -32,6 +31,10 @@ public class SmartPageUtil { public static Page convert2PageQuery(PageParam pageParam) { Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); + if (pageParam.getSearchCount() != null) { + page.setSearchCount(pageParam.getSearchCount()); + } + List sortItemList = pageParam.getSortItemList(); if (CollectionUtils.isEmpty(sortItemList)) { return page; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java index 4fb6945e..f1eea694 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java @@ -7,10 +7,12 @@ import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.domain.DataScopePlugin; +import net.lab1024.sa.base.handler.MybatisPlusFillHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; @@ -144,6 +146,8 @@ public class DataSourceConfig { pluginsList.add(dataScopePlugin); } factoryBean.setPlugins(pluginsList.toArray(new Interceptor[pluginsList.size()])); + // 添加字段自动填充处理 + factoryBean.setGlobalConfig(new GlobalConfig().setBanner(false).setMetaObjectHandler(new MybatisPlusFillHandler())); return factoryBean.getObject(); } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java index f6616e46..24a14773 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -43,7 +44,8 @@ public class RedisConfig { .setSerializationInclusion(JsonInclude.Include.NON_NULL); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + // enableDefaultTyping 官方已弃用 所以改为 activateDefaultTyping + om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(factory); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/MybatisPlusFillHandler.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/MybatisPlusFillHandler.java new file mode 100644 index 00000000..372ff757 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/MybatisPlusFillHandler.java @@ -0,0 +1,40 @@ +package net.lab1024.sa.base.handler; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * Mybatis Plus 插入或者更新时指定字段设置值 + * + * @author zhoumingfa + */ +@Component +@Slf4j +public class MybatisPlusFillHandler implements MetaObjectHandler { + + public static final String CREATE_TIME = "createTime"; + + public static final String UPDATE_TIME = "updateTime"; + + @Override + public void insertFill(MetaObject metaObject) { + if (metaObject.hasSetter(CREATE_TIME)) { + this.fillStrategy(metaObject, CREATE_TIME, LocalDateTime.now()); + } + if (metaObject.hasSetter(UPDATE_TIME)) { + this.fillStrategy(metaObject, UPDATE_TIME, LocalDateTime.now()); + } + } + + @Override + public void updateFill(MetaObject metaObject) { + if (metaObject.hasSetter(UPDATE_TIME)) { + this.fillStrategy(metaObject, UPDATE_TIME, LocalDateTime.now()); + } + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java index 5358806c..10c8779e 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java @@ -41,7 +41,7 @@ public enum CodeFrontComponentEnum implements BaseEnum { } @Override - public Object getValue() { + public String getValue() { return value; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java index 10170b00..4e3c0398 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java @@ -32,7 +32,6 @@ public class CodeGeneratorConfigForm { @Schema(description = "表名") private String tableName; - @Valid @NotNull(message = "基础信息不能为空") @Schema(description = "基础信息") diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java index db623864..5e83fd5d 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java @@ -39,8 +39,8 @@ public class CodeInsertAndUpdateField { @Schema(description = "更新标识") private Boolean updateFlag; - @SchemaEnum(value = CodeGeneratorPageTypeEnum.class) - @CheckEnum(value = CodeFrontComponentEnum.class, message = "3.增加、修改 增加、修改 组件类型 枚举值错误", required = true) + @SchemaEnum(value = CodeFrontComponentEnum.class) + @CheckEnum(value = CodeFrontComponentEnum.class, message = "3.增加、修改 组件类型 枚举值错误", required = true) private String frontComponent; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java index 5161f0bb..5a86305c 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java @@ -13,16 +13,13 @@ import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.*; -import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ControllerVariableService; -import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.DaoVariableService; -import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ManagerVariableService; -import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ServiceVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.*; import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain.*; import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ApiVariableService; import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ConstVariableService; import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.FormVariableService; import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ListVariableService; -import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import net.lab1024.sa.base.module.support.codegenerator.util.CodeGeneratorTool; import org.apache.commons.collections4.CollectionUtils; import org.apache.velocity.Template; @@ -36,7 +33,7 @@ import javax.annotation.PostConstruct; import java.io.File; import java.io.OutputStream; import java.io.StringWriter; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -47,7 +44,7 @@ import java.util.stream.Collectors; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service @@ -70,6 +67,8 @@ public class CodeGeneratorTemplateService { map.put("java/manager/Manager.java", new ManagerVariableService()); map.put("java/dao/Dao.java", new DaoVariableService()); map.put("java/mapper/Mapper.xml", new MapperVariableService()); + // 菜单 SQL + map.put("java/sql/Menu.sql", new MenuVariableService()); // 前端 map.put("js/api.js", new ApiVariableService()); map.put("js/const.js", new ConstVariableService()); @@ -94,6 +93,7 @@ public class CodeGeneratorTemplateService { String fileName = templateFile.startsWith("java") ? upperCamel + templateSplit[templateSplit.length - 1] : lowerHyphen + "-" + templateSplit[templateSplit.length - 1]; String fullPathFileName = templateFile.replaceAll(templateSplit[templateSplit.length - 1], fileName); fullPathFileName = fullPathFileName.replaceAll("java/", "java/" + basic.getModuleName().toLowerCase() + "/"); + fullPathFileName = fullPathFileName.replaceAll("js/", "js/" + lowerHyphen + "/"); String fileContent = generate(tableName, templateFile, codeGeneratorConfigEntity); File file = new File(uuid + "/" + fullPathFileName); @@ -129,7 +129,7 @@ public class CodeGeneratorTemplateService { } - ZipUtil.zip(outputStream, Charset.forName("utf-8"), false, null, dir); + ZipUtil.zip(outputStream, StandardCharsets.UTF_8, false, null, dir); FileUtil.del(dir); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java index 9602aeae..d39bf6bf 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java @@ -2,6 +2,7 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable; import com.google.common.base.CaseFormat; import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; @@ -17,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public abstract class CodeGenerateBaseVariableService { @@ -43,13 +44,13 @@ public abstract class CodeGenerateBaseVariableService { String upperCamelName = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_CAMEL, form.getBasic().getModuleName()); ArrayList list = new ArrayList<>(); - list.add("import " + form.getBasic().getJavaPackageName() + ".domain.entity." + upperCamelName + "Entity;" ); + list.add("import " + form.getBasic().getJavaPackageName() + ".domain.entity." + upperCamelName + "Entity;"); - list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "AddForm;" ); - list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "UpdateForm;" ); - list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "QueryForm;" ); + list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "AddForm;"); + list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "UpdateForm;"); + list.add("import " + form.getBasic().getJavaPackageName() + ".domain.form." + upperCamelName + "QueryForm;"); - list.add("import " + form.getBasic().getJavaPackageName() + ".domain.vo." + upperCamelName + "VO;" ); + list.add("import " + form.getBasic().getJavaPackageName() + ".domain.vo." + upperCamelName + "VO;"); return list; } @@ -88,43 +89,33 @@ public abstract class CodeGenerateBaseVariableService { } CodeInsertAndUpdateField field = first.get(); - return SmartStringUtil.contains(field.getFrontComponent(), "Upload" ); + return SmartStringUtil.equals(field.getFrontComponent(), CodeFrontComponentEnum.FILE_UPLOAD.getValue()); } /** - * 是否为 枚举 + * 是否为 字典 */ protected boolean isDict(String columnName, CodeGeneratorConfigForm form) { - List fields = form.getFields(); - if (CollectionUtils.isEmpty(fields)) { - return false; - } - - Optional first = fields.stream().filter(e -> columnName.equals(e.getColumnName())).findFirst(); - if (first.isPresent()) { - return false; - } - - CodeField codeField = first.get(); - return codeField.getDict() != null; + CodeField codeField = getCodeField(columnName, form); + return codeField != null && codeField.getDict() != null; } /** * 是否为 枚举 */ protected boolean isEnum(String columnName, CodeGeneratorConfigForm form) { + CodeField codeField = getCodeField(columnName, form); + return codeField != null && codeField.getEnumName() != null; + } + + private CodeField getCodeField(String columnName, CodeGeneratorConfigForm form) { List fields = form.getFields(); if (CollectionUtils.isEmpty(fields)) { - return false; + return null; } Optional first = fields.stream().filter(e -> columnName.equals(e.getColumnName())).findFirst(); - if (first.isPresent()) { - return false; - } - - CodeField codeField = first.get(); - return codeField.getEnumName() != null; + return first.orElse(null); } /** diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/MenuVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/MenuVariableService.java new file mode 100644 index 00000000..17ab19f2 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/MenuVariableService.java @@ -0,0 +1,27 @@ +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend; + +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; + +import java.util.HashMap; +import java.util.Map; + +/** + * 目前暂时没用到 这是一个空实现 + * + * @author zhoumingfa + * @date 2024/8/13 + */ +public class MenuVariableService extends CodeGenerateBaseVariableService { + + @Override + public boolean isSupport(CodeGeneratorConfigForm form) { + return true; + } + + @Override + public Map getInjectVariablesMap(CodeGeneratorConfigForm form) { + return new HashMap<>(2); + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java index 0d2e13fc..1d29259a 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java @@ -2,6 +2,7 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen import cn.hutool.core.bean.BeanUtil; import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; @@ -100,7 +101,6 @@ public class AddFormVariableService extends CodeGenerateBaseVariableService { } } - //字典 if (SmartStringUtil.isNotEmpty(codeField.getDict())) { finalFieldMap.put("dict", "\n @JsonDeserialize(using = DictValueVoDeserializer.class)"); @@ -109,7 +109,7 @@ public class AddFormVariableService extends CodeGenerateBaseVariableService { } //文件上传 - if (SmartStringUtil.contains(field.getFrontComponent(), "Upload")) { + if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent())) { finalFieldMap.put("file", "\n @JsonDeserialize(using = FileKeyVoDeserializer.class)"); packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;"); packageList.add("import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer;"); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java index 59a3fa86..391bffa4 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java @@ -14,7 +14,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class EntityVariableService extends CodeGenerateBaseVariableService { @@ -54,14 +54,21 @@ public class EntityVariableService extends CodeGenerateBaseVariableService { // mybatis plus result.add("import com.baomidou.mybatisplus.annotation.TableName;"); + // 自动填充注解 + boolean existCreateAndUpdate = fields.stream().anyMatch(e -> "create_time".equals(e.getColumnName()) || "update_time".equals(e.getColumnName())); + if (existCreateAndUpdate) { + result.add("import com.baomidou.mybatisplus.annotation.FieldFill;"); + result.add("import com.baomidou.mybatisplus.annotation.TableField;"); + } + //主键 - boolean isExistPrimaryKey = fields.stream().filter(e -> e.getPrimaryKeyFlag() != null && e.getPrimaryKeyFlag()).findFirst().isPresent(); + boolean isExistPrimaryKey = fields.stream().anyMatch(e -> e.getPrimaryKeyFlag() != null && e.getPrimaryKeyFlag()); if (isExistPrimaryKey) { result.add("import com.baomidou.mybatisplus.annotation.TableId;"); } //自增 - boolean isExistAutoIncrease = fields.stream().filter(e -> e.getAutoIncreaseFlag() != null && e.getAutoIncreaseFlag()).findFirst().isPresent(); + boolean isExistAutoIncrease = fields.stream().anyMatch(e -> e.getAutoIncreaseFlag() != null && e.getAutoIncreaseFlag()); if (isExistAutoIncrease) { result.add("import com.baomidou.mybatisplus.annotation.IdType;"); } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java index 1be48fc6..14f8ff5f 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java @@ -3,19 +3,20 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen import cn.hutool.core.bean.BeanUtil; import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; -import org.apache.commons.collections4.CollectionUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @Author 1024创新实验室-主任:卓大 * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class MapperVariableService extends CodeGenerateBaseVariableService { @@ -39,55 +40,47 @@ public class MapperVariableService extends CodeGenerateBaseVariableService { List columnNameList = queryField.getColumnNameList(); if (columnNameList.size() == 1) { // AND INSTR(t_notice.title,#{query.keywords}) - stringBuilder.append(" AND INSTR(" ) - .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(0)) - .append(",#{queryForm." ) + stringBuilder.append(" AND INSTR(") + .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(0)) + .append(",#{queryForm.") .append(queryField.getFieldName()) - .append("})" ); + .append("})"); } else { for (int i = 0; i < columnNameList.size(); i++) { if (i == 0) { - stringBuilder.append("AND ( INSTR(" ) - .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(i)) - .append(",#{queryForm." ) + stringBuilder.append("AND ( INSTR(") + .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(i)) + .append(",#{queryForm.") .append(queryField.getFieldName()) - .append("})" ); + .append("})"); } else { // OR INSTR(t_notice.author,#{query.keywords}) - stringBuilder.append("\n OR INSTR(" ) - .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(i)) - .append(",#{queryForm." ) + stringBuilder.append("\n OR INSTR(") + .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(i)) + .append(",#{queryForm.") .append(queryField.getFieldName()) - .append("})" ); + .append("})"); } } - stringBuilder.append("\n )" ); + stringBuilder.append("\n )"); } fieldMap.put("likeStr", stringBuilder.toString()); - }else{ - fieldMap.put("columnName",queryField.getColumnNameList().get(0)); + } else if (CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())) { + String stringBuilder = "AND INSTR(" + + form.getTableName() + "." + queryField.getColumnNameList().get(0) + + ",#{queryForm." + + queryField.getFieldName() + + "})"; + fieldMap.put("likeStr", stringBuilder); + } + else { + fieldMap.put("columnName", queryField.getColumnNameList().get(0)); } } variablesMap.put("queryFields", finalQueryFiledList); - variablesMap.put("daoClassName", form.getBasic().getJavaPackageName() + ".dao." + form.getBasic().getModuleName() + "Dao" ); + variablesMap.put("daoClassName", form.getBasic().getJavaPackageName() + ".dao." + form.getBasic().getModuleName() + "Dao"); return variablesMap; } - - public List getPackageList(List fields, CodeGeneratorConfigForm form) { - if (CollectionUtils.isEmpty(fields)) { - return new ArrayList<>(); - } - - HashSet packageList = new HashSet<>(); - - //1、javabean相关的包 - packageList.addAll(getJavaBeanImportClass(form)); - - //2、dao - packageList.add("import " + form.getBasic().getJavaPackageName() + ".dao." + form.getBasic().getModuleName() + "Dao;" ); - return new ArrayList<>(packageList); - } - } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java index 2c513790..86780e0a 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java @@ -2,6 +2,7 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen import cn.hutool.core.bean.BeanUtil; import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; @@ -18,7 +19,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class QueryFormVariableService extends CodeGenerateBaseVariableService { @@ -41,14 +42,11 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService { public ImmutablePair, List>> getPackageListAndFields(CodeGeneratorConfigForm form) { + List fields = form.getQueryFields(); - if (CollectionUtils.isEmpty(fields)) { - return ImmutablePair.of(new ArrayList<>(), new ArrayList<>()); - } HashSet packageList = new HashSet<>(); - /** * 1、LocalDate、LocalDateTime、BigDecimal 类型的包名 * 2、排序 @@ -75,9 +73,6 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService { CodeField codeField = null; switch (queryTypeEnum) { - case LIKE: - finalFieldMap.put("javaType", "String"); - break; case EQUAL: codeField = getCodeFieldByColumnName(field.getColumnNameList().get(0), form); if (codeField == null) { @@ -109,6 +104,14 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService { finalFieldMap.put("javaType", codeField.getJavaType()); break; + case DICT: + codeField = getCodeFieldByColumnName(field.getColumnNameList().get(0), form); + if (SmartStringUtil.isNotEmpty(codeField.getDict())) { + finalFieldMap.put("dict", "\n @JsonDeserialize(using = DictValueVoDeserializer.class)"); + packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;"); + packageList.add("import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;"); + } + finalFieldMap.put("javaType", "String"); default: finalFieldMap.put("javaType", "String"); } @@ -116,12 +119,11 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService { finalFieldList.add(finalFieldMap); } - // lombok packageList.add("import lombok.Data;"); + packageList.add("import lombok.EqualsAndHashCode;"); - List packageNameList = packageList.stream().filter(Objects::nonNull).collect(Collectors.toList()); - Collections.sort(packageNameList); + List packageNameList = packageList.stream().filter(Objects::nonNull).sorted().collect(Collectors.toList()); return ImmutablePair.of(packageNameList, finalFieldList); } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java index 89bb5a18..004e7670 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java @@ -2,6 +2,7 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen import cn.hutool.core.bean.BeanUtil; import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; @@ -18,7 +19,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class UpdateFormVariableService extends CodeGenerateBaseVariableService { @@ -42,7 +43,7 @@ public class UpdateFormVariableService extends CodeGenerateBaseVariableService { return false; } - if(Boolean.TRUE.equals(codeField.getPrimaryKeyFlag())){ + if (Boolean.TRUE.equals(codeField.getPrimaryKeyFlag())) { e.setRequiredFlag(true); } @@ -123,7 +124,7 @@ public class UpdateFormVariableService extends CodeGenerateBaseVariableService { } //文件上传 - if (SmartStringUtil.contains(field.getFrontComponent(), "Upload")) { + if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent())) { finalFieldMap.put("file", "\n @JsonDeserialize(using = FileKeyVoDeserializer.class)"); packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;"); packageList.add("import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer;"); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java index fceef52a..cde09227 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class VOVariableService extends CodeGenerateBaseVariableService { @@ -87,16 +87,16 @@ public class VOVariableService extends CodeGenerateBaseVariableService { //字典 if (isDict(field.getColumnName(), form)) { - finalFieldMap.put("dict", "\n @JsonDeserialize(using = DictValueVoDeserializer.class)"); - packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;"); - packageList.add("import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;"); + finalFieldMap.put("dict", "\n @JsonSerialize(using = DictValueVoSerializer.class)"); + packageList.add("import com.fasterxml.jackson.databind.annotation.JsonSerialize;"); + packageList.add("import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer;"); } //文件上传 if (isFile(field.getColumnName(), form)) { - finalFieldMap.put("file", "\n @JsonDeserialize(using = FileKeyVoDeserializer.class)"); - packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;"); - packageList.add("import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer;"); + finalFieldMap.put("file", "\n @JsonSerialize(using = FileKeyVoSerializer.class)"); + packageList.add("import com.fasterxml.jackson.databind.annotation.JsonSerialize;"); + packageList.add("import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer;"); } packageList.add(getJavaPackageName(codeField.getJavaType())); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java index 58ee1f0b..bdd4363f 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java @@ -57,19 +57,20 @@ public class FormVariableService extends CodeGenerateBaseVariableService { fieldsVariableList.add(objectMap); - if (CodeFrontComponentEnum.ENUM_SELECT.getValue().equals(field.getFrontComponent())) { + if (CodeFrontComponentEnum.ENUM_SELECT.equalsValue(field.getFrontComponent())) { frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';"); } - if (CodeFrontComponentEnum.BOOLEAN_SELECT.getValue().equals(field.getFrontComponent())) { + if (CodeFrontComponentEnum.BOOLEAN_SELECT.equalsValue(field.getFrontComponent())) { frontImportSet.add("import BooleanSelect from '/@/components/framework/boolean-select/index.vue';"); } - if (CodeFrontComponentEnum.DICT_SELECT.getValue().equals(field.getFrontComponent())) { + if (CodeFrontComponentEnum.DICT_SELECT.equalsValue(field.getFrontComponent())) { frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';"); } - if (CodeFrontComponentEnum.FILE_UPLOAD.getValue().equals(field.getFrontComponent())) { + if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent())) { + frontImportSet.add("import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';"); frontImportSet.add("import FileUpload from '/@/components/support/file-upload/index.vue';"); } } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java index 170fb363..74e582ad 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import com.google.common.base.CaseFormat; import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; @@ -35,19 +36,23 @@ public class ListVariableService extends CodeGenerateBaseVariableService { for (CodeQueryField queryField : queryFields) { Map objectMap = BeanUtil.beanToMap(queryField); - variableList.add(objectMap); - if("Enum".equals(queryField.getQueryTypeEnum())){ + CodeField codeField = getCodeFieldByColumnName(queryField.getColumnNameList().get(0), form); + objectMap.put("frontEnumName", codeField.getEnumName()); + objectMap.put("dict", codeField.getDict()); + + if(CodeQueryFieldQueryTypeEnum.ENUM.equalsValue(queryField.getQueryTypeEnum())){ frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';"); } - if("Dict".equals(queryField.getQueryTypeEnum())){ + if(CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())){ frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';"); } - if(CodeQueryFieldQueryTypeEnum.DATE_RANGE.getValue().equals(queryField.getQueryTypeEnum())){ + if(CodeQueryFieldQueryTypeEnum.DATE_RANGE.equalsValue(queryField.getQueryTypeEnum())){ frontImportSet.add("import { defaultTimeRanges } from '/@/lib/default-time-ranges';"); } + variableList.add(objectMap); } variablesMap.put("queryFields",variableList); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/core/SmartJobExecutor.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/core/SmartJobExecutor.java index c2508af9..721410a8 100644 --- a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/core/SmartJobExecutor.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/core/SmartJobExecutor.java @@ -142,6 +142,8 @@ public class SmartJobExecutor implements Runnable { logEntity.setSuccessFlag(true); // 执行开始时间 logEntity.setExecuteStartTime(executeTime); + logEntity.setExecuteEndTime(executeTime); + logEntity.setExecuteTimeMillis(0L); logEntity.setCreateName(executorName); logEntity.setIp(SmartIpUtil.getLocalFirstIp()); logEntity.setProcessId(SmartJobUtil.getProcessId()); diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm index e67215ae..87c2c644 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm @@ -2,6 +2,7 @@ package ${packageName}; import lombok.AllArgsConstructor; import lombok.Getter; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * ${enumDesc} diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm index b6296487..13ccc5b8 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm @@ -3,6 +3,7 @@ package ${packageName}; #foreach ($importClass in $importPackageList) $importClass #end +import cn.dev33.satoken.annotation.SaCheckPermission; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.common.domain.PageResult; import org.springframework.web.bind.annotation.PostMapping; @@ -23,7 +24,7 @@ import javax.validation.Valid; */ @RestController -@Tag(name = "") +@Tag(name = "${basic.description}") public class ${name.upperCamel}Controller { @Resource @@ -31,6 +32,7 @@ public class ${name.upperCamel}Controller { @Operation(summary = "分页查询 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/queryPage") + @SaCheckPermission("${name.lowerCamel}:query") public ResponseDTO> queryPage(@RequestBody @Valid ${name.upperCamel}QueryForm queryForm) { return ResponseDTO.ok(${name.lowerCamel}Service.queryPage(queryForm)); } @@ -38,12 +40,14 @@ public class ${name.upperCamel}Controller { #if($insertAndUpdate.isSupportInsertAndUpdate) @Operation(summary = "添加 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/add") + @SaCheckPermission("${name.lowerCamel}:add") public ResponseDTO add(@RequestBody @Valid ${name.upperCamel}AddForm addForm) { return ${name.lowerCamel}Service.add(addForm); } @Operation(summary = "更新 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/update") + @SaCheckPermission("${name.lowerCamel}:update") public ResponseDTO update(@RequestBody @Valid ${name.upperCamel}UpdateForm updateForm) { return ${name.lowerCamel}Service.update(updateForm); } @@ -53,6 +57,7 @@ public class ${name.upperCamel}Controller { #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") @Operation(summary = "批量删除 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/batchDelete") + @SaCheckPermission("${name.lowerCamel}:delete") public ResponseDTO batchDelete(@RequestBody ValidateList<${primaryKeyJavaType}> idList) { return ${name.lowerCamel}Service.batchDelete(idList); } @@ -61,6 +66,7 @@ public class ${name.upperCamel}Controller { #if($deleteInfo.deleteEnum == "Single" || $deleteInfo.deleteEnum == "SingleAndBatch") @Operation(summary = "单个删除 @author ${basic.backendAuthor}") @GetMapping("/${name.lowerCamel}/delete/{${primaryKeyFieldName}}") + @SaCheckPermission("${name.lowerCamel}:delete") public ResponseDTO batchDelete(@PathVariable ${primaryKeyJavaType} ${primaryKeyFieldName}) { return ${name.lowerCamel}Service.delete(${primaryKeyFieldName}); } diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm index b14411a9..938b758e 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm @@ -38,14 +38,15 @@ public interface ${name.upperCamel}Dao extends BaseMapper<${name.upperCamel}Enti * 更新删除状态 */ long updateDeleted(@Param("${primaryKeyFieldName}")${primaryKeyJavaType} ${primaryKeyFieldName},@Param("${deletedFlag}")boolean deletedFlag); + #end #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量更新删除状态 */ void batchUpdateDeleted(@Param("idList")List<${primaryKeyJavaType}> idList,@Param("${deletedFlag}")boolean deletedFlag); -#end -#end -#end +#end +#end +#end } diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm index dd1fe0bb..04230b36 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm @@ -20,13 +20,19 @@ public class ${name.upperCamel}Entity { /** * $field.label */ -#if($field.primaryKeyFlag && $field.autoIncreaseFlag) + #if($field.primaryKeyFlag && $field.autoIncreaseFlag) @TableId(type = IdType.AUTO) -#end -#if($field.primaryKeyFlag && !$field.autoIncreaseFlag) + #end + #if($field.primaryKeyFlag && !$field.autoIncreaseFlag) @TableId -#end + #end + #if($field.columnName == "create_time") + @TableField(fill = FieldFill.INSERT) + #end + #if($field.columnName == "update_time") + @TableField(fill = FieldFill.INSERT_UPDATE) + #end private $field.javaType $field.fieldName; #end -} \ No newline at end of file +} diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm index ba764981..69a247e2 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm @@ -14,7 +14,8 @@ $importClass */ @Data -public class ${name.upperCamel}QueryForm extends PageParam{ +@EqualsAndHashCode(callSuper = false) +public class ${name.upperCamel}QueryForm extends PageParam { #foreach ($field in $fields) #if($field.isEnum) @@ -35,4 +36,4 @@ public class ${name.upperCamel}QueryForm extends PageParam{ #end #end -} \ No newline at end of file +} diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm index 88aed8b3..4a84efd0 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm @@ -17,14 +17,8 @@ public class ${name.upperCamel}VO { #foreach ($field in $fields) -#if($field.isEnum) - ${field.apiModelProperty} + ${field.apiModelProperty}$!{field.notEmpty}$!{field.dict}$!{field.file} private $field.javaType $field.fieldName; #end -#if(!$field.isEnum) - ${field.apiModelProperty}$!{field.dict}$!{field.file} - private $field.javaType $field.fieldName; -#end -#end -} \ No newline at end of file +} diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm index d6809423..7a827122 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm @@ -2,10 +2,17 @@ + + + #foreach ($field in $fields) + ${tableName}.${field.columnName}#if($foreach.hasNext),#end + #end + + -#if($dao.deletedFieldUpperName != $null) - - update ${mapper.tableName} set ${mapper.deletedColumnName} = #{deletedFlag} - where ${mapper.mainKeyColumnName} in - - #{item} - - -#end - #if($deleteInfo.isSupportDelete) ### 假删除 #if(!${deleteInfo.isPhysicallyDeleted}) #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") - update ${tableName} set deleted_flag = #{deletedFlag} where ${primaryKeyColumnName} in @@ -71,4 +72,5 @@ #end #end #end - \ No newline at end of file + + diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm index 923e6e06..3be777d5 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm @@ -64,7 +64,7 @@ public class ${name.upperCamel}Service { #end #if($deleteInfo.isSupportDelete) - #if($deleteInfo.deleteEnum == "BATCH" || $deleteInfo.deleteEnum == "SingleAndBatch") + #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量删除 * @@ -97,7 +97,7 @@ public class ${name.upperCamel}Service { ### 真删除 or 假删除 #if(!${deleteInfo.isPhysicallyDeleted}) - ${name.lowerCamel}Dao.updateDeleted(${primaryKeyFieldName},true); + ${name.lowerCamel}Dao.updateDeleted(${primaryKeyFieldName}, true); #end #if(${deleteInfo.isPhysicallyDeleted}) ${name.lowerCamel}Dao.deleteById(${primaryKeyFieldName}); diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm new file mode 100644 index 00000000..90525f78 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm @@ -0,0 +1,22 @@ +# 默认是按前端工程文件的 /views/business 文件夹的路径作为前端组件路径,如果你没把生成的 .vue 前端代码放在 /views/business 下, +# 那就根据自己实际情况修改下面 SQL 的 path,component 字段值,避免执行 SQL 后菜单无法访问。 +# 如果你一切都是按照默认,那么下面的 SQL 基本不用改 + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, create_user_id ) +VALUES ( '${basic.description}', 2, 0, '/${name.lowerHyphenCamel}/list', '/business/${name.lowerHyphenCamel}/${name.lowerHyphenCamel}-list.vue', false, false, true, false, 1, 1 ); + +# 按菜单名称查询该菜单的 menu_id 作为按钮权限的 父菜单ID 与 功能点关联菜单ID +SET @parent_id = NULL; +SELECT t_menu.menu_id INTO @parent_id FROM t_menu WHERE t_menu.menu_name = '${basic.description}'; + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '查询', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:query', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '添加', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:add', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '更新', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:update', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '删除', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:delete', 1, @parent_id, 1 ); diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm index 1de462cd..7567a12e 100644 --- a/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm @@ -8,7 +8,7 @@