From 504941eafbff8811838f570ee4fecc84e293cd45 Mon Sep 17 00:00:00 2001 From: Chopper Date: Sun, 26 Sep 2021 17:46:49 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=96=87=E7=AB=A0=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lili/modules/page/entity/vos/ArticleVO.java | 2 +- .../cn/lili/modules/page/service/ArticleService.java | 6 ++++++ .../modules/page/serviceimpl/ArticleServiceImpl.java | 10 +++++++++- .../controller/other/ArticleManagerController.java | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/page/entity/vos/ArticleVO.java b/framework/src/main/java/cn/lili/modules/page/entity/vos/ArticleVO.java index 997216bd..5bd1df3c 100644 --- a/framework/src/main/java/cn/lili/modules/page/entity/vos/ArticleVO.java +++ b/framework/src/main/java/cn/lili/modules/page/entity/vos/ArticleVO.java @@ -24,6 +24,6 @@ public class ArticleVO { @ApiModelProperty(value = "文章排序") private Integer sort; - @ApiModelProperty(value = "状态, allowableValues = OPEN,CLOSE") + @ApiModelProperty(value = "开启状态") private Boolean openStatus; } diff --git a/framework/src/main/java/cn/lili/modules/page/service/ArticleService.java b/framework/src/main/java/cn/lili/modules/page/service/ArticleService.java index a9bb5e12..cd677a0b 100644 --- a/framework/src/main/java/cn/lili/modules/page/service/ArticleService.java +++ b/framework/src/main/java/cn/lili/modules/page/service/ArticleService.java @@ -21,6 +21,12 @@ import java.util.List; @CacheConfig(cacheNames = "{article}") public interface ArticleService extends IService
{ + /** + * 管理端获取文章 + * @param articleSearchParams + * @return + */ + IPage managerArticlePage(ArticleSearchParams articleSearchParams); /** * 获取文章分页 * diff --git a/framework/src/main/java/cn/lili/modules/page/serviceimpl/ArticleServiceImpl.java b/framework/src/main/java/cn/lili/modules/page/serviceimpl/ArticleServiceImpl.java index 2650e6b7..db36aded 100644 --- a/framework/src/main/java/cn/lili/modules/page/serviceimpl/ArticleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/page/serviceimpl/ArticleServiceImpl.java @@ -34,11 +34,19 @@ import java.util.List; public class ArticleServiceImpl extends ServiceImpl implements ArticleService { @Override - public IPage articlePage(ArticleSearchParams articleSearchParams) { + public IPage managerArticlePage(ArticleSearchParams articleSearchParams) { articleSearchParams.setSort("a.sort"); return this.baseMapper.getArticleList(PageUtil.initPage(articleSearchParams), articleSearchParams.queryWrapper()); } + @Override + public IPage articlePage(ArticleSearchParams articleSearchParams) { + articleSearchParams.setSort("a.sort"); + QueryWrapper queryWrapper = articleSearchParams.queryWrapper(); + queryWrapper.eq("open_status",true); + return this.baseMapper.getArticleList(PageUtil.initPage(articleSearchParams), queryWrapper); + } + @Override public List
list(String categoryId) { diff --git a/manager-api/src/main/java/cn/lili/controller/other/ArticleManagerController.java b/manager-api/src/main/java/cn/lili/controller/other/ArticleManagerController.java index aa9f7c8a..ce0a0921 100644 --- a/manager-api/src/main/java/cn/lili/controller/other/ArticleManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/other/ArticleManagerController.java @@ -49,7 +49,7 @@ public class ArticleManagerController { }) @GetMapping(value = "/getByPage") public ResultMessage> getByPage(ArticleSearchParams articleSearchParams) { - return ResultUtil.data(articleService.articlePage(articleSearchParams)); + return ResultUtil.data(articleService.managerArticlePage(articleSearchParams)); } @ApiOperation(value = "添加文章") From 444b617c63b57eda379469feeef9f3ee529ea8f2 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 27 Sep 2021 14:50:19 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/pom.xml | 6 - .../java/cn/lili/generator/CodeGenerator.java | 345 ------------------ .../java/cn/lili/generator/bean/Entity.java | 55 --- .../main/resources/templates/controller.btl | 77 ---- .../src/main/resources/templates/entity.btl | 23 -- .../src/main/resources/templates/mapper.btl | 14 - .../main/resources/templates/mapperXml.btl | 5 - .../src/main/resources/templates/service.btl | 14 - .../main/resources/templates/serviceImpl.btl | 23 -- pom.xml | 1 - 10 files changed, 563 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/generator/CodeGenerator.java delete mode 100644 framework/src/main/java/cn/lili/generator/bean/Entity.java delete mode 100644 framework/src/main/resources/templates/controller.btl delete mode 100644 framework/src/main/resources/templates/entity.btl delete mode 100644 framework/src/main/resources/templates/mapper.btl delete mode 100644 framework/src/main/resources/templates/mapperXml.btl delete mode 100644 framework/src/main/resources/templates/service.btl delete mode 100644 framework/src/main/resources/templates/serviceImpl.btl diff --git a/framework/pom.xml b/framework/pom.xml index 24c56ec1..04c83b17 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -136,12 +136,6 @@ jasypt-spring-boot-starter ${jasypt-version} - - - - - - com.aliyun diff --git a/framework/src/main/java/cn/lili/generator/CodeGenerator.java b/framework/src/main/java/cn/lili/generator/CodeGenerator.java deleted file mode 100644 index 3c51dab2..00000000 --- a/framework/src/main/java/cn/lili/generator/CodeGenerator.java +++ /dev/null @@ -1,345 +0,0 @@ -package cn.lili.generator; - -import cn.hutool.core.util.StrUtil; -import cn.lili.common.exception.ServiceException; -import cn.lili.common.utils.StringUtils; -import cn.lili.generator.bean.Entity; -import org.beetl.core.Configuration; -import org.beetl.core.GroupTemplate; -import org.beetl.core.Template; -import org.beetl.core.resource.ClasspathResourceLoader; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - - -/** - * 代码生成器 Mybatis-Plus - * - * @author Chopper - */ -public class CodeGenerator { - - /** - * 代码生成在哪个项目 - */ - private static final String PROJECT = "framework"; - - /** - * 代码生成在哪个包下边 - */ - private static final String PACKAGES = "cn.lili.modules."; - - /** - * modules - */ - private static final String MODULES = "message"; - - - /** - * 实体类名 - * 建议仅需修改 - */ - private static final String CLASS_NAME = "ShortLink"; - - /** - * 类说明描述 - * 建议仅需修改 - */ - private static final String DESCRIPTION = "短链接"; - - /** - * 作者名 - * 建议仅需修改 - */ - private static final String AUTHOR = "Chopper"; - - /** - * 数据库表名前缀 - * 下方请根据需要修改 - */ - private static final String TABLE_PRE = "li_"; - - /** - * 主键类型 - */ - private static final String PRIMARY_KEY_TYPE = "String"; - - - /** - * endity - */ - private static final String ENTITY_PACKAGE = PACKAGES + MODULES + ".entity"; - - /** - * dao - */ - private static final String DAO_PACKAGE = PACKAGES + MODULES + ".mapper"; - - /** - * service - */ - private static final String SERVICE_PACKAGE = PACKAGES + MODULES + ".service"; - - /** - * serviceImpl - */ - private static final String SERVICE_IMPL_PACKAGE = PACKAGES + MODULES + ".serviceimpl"; - - /** - * controller - */ - private static final String CONTROLLER_PACKAGE = PACKAGES + MODULES + ".controller"; - - /** - * 运行该主函数即可生成代码 - * - * @param args - * @throws IOException - */ - public static void main(String[] args) throws IOException { - //模板路径 - ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("/templates/"); - Configuration cfg = Configuration.defaultConfiguration(); - GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); - //生成代码 - generateCode(gt); - //根据类名删除生成的代码 -// deleteCode(className); - } - - /** - * 生成代码 - * - * @param gt - * @throws IOException - */ - private static void generateCode(GroupTemplate gt) throws IOException { - - Template entityTemplate = gt.getTemplate("entity.btl"); - Template daoTemplate = gt.getTemplate("mapper.btl"); - Template serviceTemplate = gt.getTemplate("service.btl"); - Template serviceImplTemplate = gt.getTemplate("serviceImpl.btl"); - Template controllerTemplate = gt.getTemplate("controller.btl"); - Template mapperXmlTemplate = gt.getTemplate("mapperXml.btl"); - - Entity entity = new Entity(); - entity.setEntityPackage(ENTITY_PACKAGE); - entity.setDaoPackage(DAO_PACKAGE); - entity.setServicePackage(SERVICE_PACKAGE); - entity.setServiceImplPackage(SERVICE_IMPL_PACKAGE); - entity.setControllerPackage(CONTROLLER_PACKAGE); - entity.setAuthor(AUTHOR); - entity.setClassName(CLASS_NAME); - entity.setTableName(TABLE_PRE + StringUtils.camel2Underline(CLASS_NAME)); - entity.setClassNameLowerCase(name(CLASS_NAME, false)); - entity.setDescription(DESCRIPTION); - entity.setPrimaryKeyType(PRIMARY_KEY_TYPE); - - OutputStream out = null; - - //生成实体类代码 - entityTemplate.binding("entity", entity); - String entityResult = entityTemplate.render(); - System.out.println(entityResult); - //创建文件 - String entityFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(ENTITY_PACKAGE) + "/" + CLASS_NAME + ".java"; - File entityFile = new File(entityFileUrl); - File entityDir = entityFile.getParentFile(); - if (!entityDir.exists()) { - entityDir.mkdirs(); - } - if (!entityFile.exists()) { - //若文件存在则不重新生成 - entityFile.createNewFile(); - out = new FileOutputStream(entityFile); - entityTemplate.renderTo(out); - } - - //生成dao代码 - daoTemplate.binding("entity", entity); - String daoResult = daoTemplate.render(); - System.out.println(daoResult); - //创建文件 - String daoFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(DAO_PACKAGE) + "/" + CLASS_NAME + "Mapper.java"; - File daoFile = new File(daoFileUrl); - File daoDir = daoFile.getParentFile(); - if (!daoDir.exists()) { - daoDir.mkdirs(); - } - if (!daoFile.exists()) { - //若文件存在则不重新生成 - daoFile.createNewFile(); - out = new FileOutputStream(daoFile); - daoTemplate.renderTo(out); - } - - //生成service代码 - serviceTemplate.binding("entity", entity); - String serviceResult = serviceTemplate.render(); - System.out.println(serviceResult); - //创建文件 - String serviceFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(SERVICE_PACKAGE) + "/" + CLASS_NAME + "Service.java"; - File serviceFile = new File(serviceFileUrl); - File serviceDir = serviceFile.getParentFile(); - if (!serviceDir.exists()) { - serviceDir.mkdirs(); - } - if (!serviceFile.exists()) { - //若文件存在则不重新生成 - serviceFile.createNewFile(); - out = new FileOutputStream(serviceFile); - serviceTemplate.renderTo(out); - } - - //生成serviceImpl代码 - serviceImplTemplate.binding("entity", entity); - String serviceImplResult = serviceImplTemplate.render(); - System.out.println(serviceImplResult); - //创建文件 - System.out.println(System.getProperty("user.dir")); - String serviceImplFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(SERVICE_IMPL_PACKAGE) + "/" + CLASS_NAME + "ServiceImpl.java"; - File serviceImplFile = new File(serviceImplFileUrl); - File serviceImplDir = serviceImplFile.getParentFile(); - if (!serviceImplDir.exists()) { - serviceImplDir.mkdirs(); - } - if (!serviceImplFile.exists()) { - //若文件存在则不重新生成 - serviceImplFile.createNewFile(); - out = new FileOutputStream(serviceImplFile); - serviceImplTemplate.renderTo(out); - } - - //生成controller代码 - controllerTemplate.binding("entity", entity); - String controllerResult = controllerTemplate.render(); - System.out.println(controllerResult); - //创建文件 - String controllerFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(CONTROLLER_PACKAGE) + "/" + CLASS_NAME + "Controller.java"; - File controllerFile = new File(controllerFileUrl); - File controllerDir = controllerFile.getParentFile(); - if (!controllerDir.exists()) { - controllerDir.mkdirs(); - } - if (!controllerFile.exists()) { - //若文件存在则不重新生成 - controllerFile.createNewFile(); - out = new FileOutputStream(controllerFile); - controllerTemplate.renderTo(out); - } - - //生成mapperXml代码 - mapperXmlTemplate.binding("entity", entity); - String mapperXmlResult = mapperXmlTemplate.render(); - System.out.println(mapperXmlResult); - //创建文件 - String mapperXmlFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/resources/mapper/" + CLASS_NAME + "Mapper.xml"; - File mapperXmlFile = new File(mapperXmlFileUrl); - File mapperXmlDir = mapperXmlFile.getParentFile(); - if (!mapperXmlDir.exists()) { - mapperXmlDir.mkdirs(); - } - if (!mapperXmlFile.exists()) { - //若文件存在则不重新生成 - mapperXmlFile.createNewFile(); - out = new FileOutputStream(mapperXmlFile); - mapperXmlTemplate.renderTo(out); - } - - if (out != null) { - out.close(); - } - System.out.println("生成代码成功!"); - } - - /** - * 删除指定类代码 - * - * @param className - * @throws IOException - */ - private static void deleteCode(String className) throws IOException { - - String entityFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(ENTITY_PACKAGE) + "/" + className + ".java"; - File entityFile = new File(entityFileUrl); - if (entityFile.exists()) { - entityFile.delete(); - } - String daoFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(DAO_PACKAGE) + "/" + className + "Mapper.java"; - File daoFile = new File(daoFileUrl); - if (daoFile.exists()) { - daoFile.delete(); - } - - String serviceFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(SERVICE_PACKAGE) + "/" + className + "Service.java"; - File serviceFile = new File(serviceFileUrl); - if (serviceFile.exists()) { - serviceFile.delete(); - } - - String serviceImplFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(SERVICE_IMPL_PACKAGE) + "/" + className + "ServiceImpl.java"; - File serviceImplFile = new File(serviceImplFileUrl); - if (serviceImplFile.exists()) { - serviceImplFile.delete(); - } - - String controllerFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/java/" + dotToLine(CONTROLLER_PACKAGE) + "/" + className + "Controller.java"; - File controllerFile = new File(controllerFileUrl); - if (controllerFile.exists()) { - controllerFile.delete(); - } - - String mapperXmlFileUrl = System.getProperty("user.dir") + "/" + PROJECT + "/src/main/resources/mapper/" + className + "Mapper.xml"; - File mapperXmlFile = new File(mapperXmlFileUrl); - if (mapperXmlFile.exists()) { - mapperXmlFile.delete(); - } - - System.out.println("删除代码完毕!"); - } - - /** - * 点转斜线 - * - * @param str - * @return - */ - public static String dotToLine(String str) { - return str.replace(".", "/"); - } - - - /** - * 首字母是否大小写 - * - * @param name - * @param isFirstUpper - * @return - */ - public static String name(String name, boolean isFirstUpper) { - - if (StrUtil.isBlank(name)) { - throw new ServiceException("name不能为空"); - } - - if (name.length() == 1) { - if (isFirstUpper) { - return name.toUpperCase(); - } else { - return name.toLowerCase(); - } - } - - StringBuffer sb = new StringBuffer(); - if (isFirstUpper) { - sb.append(Character.toUpperCase(name.charAt(0))); - } else { - sb.append(Character.toLowerCase(name.charAt(0))); - } - sb.append(name.substring(1)); - return sb.toString(); - } -} diff --git a/framework/src/main/java/cn/lili/generator/bean/Entity.java b/framework/src/main/java/cn/lili/generator/bean/Entity.java deleted file mode 100644 index 9f0c2957..00000000 --- a/framework/src/main/java/cn/lili/generator/bean/Entity.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.lili.generator.bean; - -import lombok.Data; - -/** - * @author Chopper - */ -@Data -public class Entity { - - /** - * 实体类,dao,service,controller目录 - */ - private String entityPackage; - - private String daoPackage; - - private String servicePackage; - - private String serviceImplPackage; - - private String controllerPackage; - - - /** - * 作者 - */ - private String author; - - /** - * 类名 - */ - private String className; - - /** - * 首字母小写的类名字,用于模版内的变量名称 - */ - private String classNameLowerCase; - - /** - * 数据库 - */ - private String tableName; - - /** - * 类说明描述,一般设定关键字即可 例如:会员 - */ - private String description; - - /** - * 主键类型 - */ - private String primaryKeyType; - -} diff --git a/framework/src/main/resources/templates/controller.btl b/framework/src/main/resources/templates/controller.btl deleted file mode 100644 index 5fa132f3..00000000 --- a/framework/src/main/resources/templates/controller.btl +++ /dev/null @@ -1,77 +0,0 @@ -package ${entity.controllerPackage}; - -import cn.lili.mybatis.util.PageUtil; -import cn.lili.common.enums.ResultUtil; -import cn.lili.common.vo.PageVO; -import cn.lili.common.vo.SearchVO; -import cn.lili.common.vo.ResultMessage; -import ${entity.entityPackage}.${entity.className}; -import ${entity.servicePackage}.${entity.className}Service; -import com.baomidou.mybatisplus.core.metadata.IPage; -import lombok.RequiredArgsConstructor; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - - -/** - * @author ${entity.author} - */ -@RestController -@Api(tags = "${entity.description}接口") -@RequestMapping("/lili/${entity.classNameLowerCase}") -@Transactional(rollbackFor = Exception.class) - -public class ${entity.className}Controller { - - private final ${entity.className}Service ${entity.classNameLowerCase}Service; - - @GetMapping(value = "/{id}") - @ApiOperation(value = "查看${entity.description}详情") - public ResultMessage<${entity.className}> get(@PathVariable ${entity.primaryKeyType} id){ - - ${entity.className} ${entity.classNameLowerCase} = ${entity.classNameLowerCase}Service.getById(id); - return new ResultUtil<${entity.className}>().setData(${entity.classNameLowerCase}); - } - - @GetMapping - @ApiOperation(value = "分页获取${entity.description}") - public ResultMessage> getByPage(${entity.className} entity, - SearchVO searchVo, - PageVO page){ - IPage<${entity.className}> data = ${entity.classNameLowerCase}Service.page(PageUtil.initPage(page),PageUtil.initWrapper(entity, searchVo)); - return new ResultUtil>().setData(data); - } - - @PostMapping - @ApiOperation(value = "新增${entity.description}") - public ResultMessage<${entity.className}> save(${entity.className} ${entity.classNameLowerCase}){ - - if(${entity.classNameLowerCase}Service.save(${entity.classNameLowerCase})){ - return new ResultUtil<${entity.className}>().setData(${entity.classNameLowerCase}); - } - return new ResultUtil<${entity.className}>().setErrorMsg("未知异常,请稍后重试"); - } - - @PutMapping("/{id}") - @ApiOperation(value = "更新${entity.description}") - public ResultMessage<${entity.className}> update(@PathVariable String id, ${entity.className} ${entity.classNameLowerCase}){ - if(${entity.classNameLowerCase}Service.updateById(${entity.classNameLowerCase})){ - return new ResultUtil<${entity.className}>().setData(${entity.classNameLowerCase}); - } - return new ResultUtil<${entity.className}>().setErrorMsg("未知异常,请稍后重试"); - } - - @DeleteMapping(value = "/{ids}") - @ApiOperation(value = "删除${entity.description}") - public ResultMessage delAllByIds(@PathVariable List ids){ - - ${entity.classNameLowerCase}Service.removeByIds(ids); - return ResultUtil.success("成功删除"); - } -} diff --git a/framework/src/main/resources/templates/entity.btl b/framework/src/main/resources/templates/entity.btl deleted file mode 100644 index 54047fd0..00000000 --- a/framework/src/main/resources/templates/entity.btl +++ /dev/null @@ -1,23 +0,0 @@ -package ${entity.entityPackage}; - -import cn.lili.mybatis.BaseEntity; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import io.swagger.annotations.ApiModel; -import lombok.Data; -import javax.persistence.Entity; -import javax.persistence.Table; - -/** - * @author ${entity.author} - */ -@Data -@Entity -@Table(name = "${entity.tableName}") -@TableName("${entity.tableName}") -@ApiModel(value = "${entity.description}") -public class ${entity.className} extends BaseEntity { - - private static final long serialVersionUID = 1L; - -} \ No newline at end of file diff --git a/framework/src/main/resources/templates/mapper.btl b/framework/src/main/resources/templates/mapper.btl deleted file mode 100644 index 05dcbe57..00000000 --- a/framework/src/main/resources/templates/mapper.btl +++ /dev/null @@ -1,14 +0,0 @@ -package ${entity.daoPackage}; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import ${entity.entityPackage}.${entity.className}; - -import java.util.List; - -/** - * ${entity.description} Dao层 - * @author ${entity.author} - */ -public interface ${entity.className}Mapper extends BaseMapper<${entity.className}> { - -} \ No newline at end of file diff --git a/framework/src/main/resources/templates/mapperXml.btl b/framework/src/main/resources/templates/mapperXml.btl deleted file mode 100644 index 09236adf..00000000 --- a/framework/src/main/resources/templates/mapperXml.btl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/framework/src/main/resources/templates/service.btl b/framework/src/main/resources/templates/service.btl deleted file mode 100644 index 611cf9b6..00000000 --- a/framework/src/main/resources/templates/service.btl +++ /dev/null @@ -1,14 +0,0 @@ -package ${entity.servicePackage}; - -import com.baomidou.mybatisplus.extension.service.IService; -import ${entity.entityPackage}.${entity.className}; - -import java.util.List; - -/** - * ${entity.description} 业务层 - * @author ${entity.author} - */ -public interface ${entity.className}Service extends IService<${entity.className}> { - -} \ No newline at end of file diff --git a/framework/src/main/resources/templates/serviceImpl.btl b/framework/src/main/resources/templates/serviceImpl.btl deleted file mode 100644 index ce083c27..00000000 --- a/framework/src/main/resources/templates/serviceImpl.btl +++ /dev/null @@ -1,23 +0,0 @@ -package ${entity.serviceImplPackage}; - -import ${entity.daoPackage}.${entity.className}Mapper; -import ${entity.entityPackage}.${entity.className}; -import ${entity.servicePackage}.${entity.className}Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -/** - * ${entity.description} 业务实现 - * @author ${entity.author} - */ -@Service -@Transactional(rollbackFor = Exception.class) - -public class ${entity.className}ServiceImpl extends ServiceImpl<${entity.className}Mapper, ${entity.className}> implements ${entity.className}Service { - - private final ${entity.className}Mapper ${entity.classNameLowerCase}Mapper; -} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6a552275..1529d6d5 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,6 @@ 4.7.2 4.4.1 4.5.12 - 2.9.10 UTF-8 UTF-8 true From d432b0a18338a0bbe5be3573d35cc7c124b249ec Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 27 Sep 2021 18:13:39 +0800 Subject: [PATCH 03/10] =?UTF-8?q?swagger=20ui=20=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?=E6=97=A0=E6=95=88=E7=B1=BB=E5=8E=BB=E9=99=A4=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E4=B8=8A=E4=B8=8B?= =?UTF-8?q?=E6=96=87=E8=8E=B7=E5=8F=96request/response=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/application.yml | 8 +-- framework/pom.xml | 5 -- .../common/context/ContextConfiguration.java | 19 ------- .../common/context/ThreadContextHolder.java | 32 ++++------- ...ThreadContextHolderInterceptorAdapter.java | 55 ------------------- .../RequestInterceptorAdapter.java | 45 --------------- .../context/interceptor/UrlConfiguration.java | 46 ---------------- .../connect/entity/enums/AuthUserGender.java | 2 +- pom.xml | 3 +- 9 files changed, 17 insertions(+), 198 deletions(-) delete mode 100644 framework/src/main/java/cn/lili/common/context/ContextConfiguration.java delete mode 100644 framework/src/main/java/cn/lili/common/context/ThreadContextHolderInterceptorAdapter.java delete mode 100644 framework/src/main/java/cn/lili/common/context/interceptor/RequestInterceptorAdapter.java delete mode 100644 framework/src/main/java/cn/lili/common/context/interceptor/UrlConfiguration.java diff --git a/config/application.yml b/config/application.yml index 0ca54b4e..8c576e32 100644 --- a/config/application.yml +++ b/config/application.yml @@ -151,7 +151,7 @@ ignored: - /swagger-resources/** - /swagger/** - /webjars/** - - /v2/api-docs + - /v2/api-docs** - /configuration/ui - /boot-admin - /manager/promotion/seckill/init @@ -162,9 +162,9 @@ ignored: # Swagger界面内容配置 swagger: - title: lili API接口文档 - description: lili Api Documentation - version: 1.0.0 + title: lilishop API接口文档 + description: lilishop Api Documentation + version: 4.2.2 termsOfServiceUrl: https://pickmall.cn contact: name: lili diff --git a/framework/pom.xml b/framework/pom.xml index 04c83b17..bdd1dd40 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -108,11 +108,6 @@ knife4j-spring-boot-starter ${knife4j.version} - - com.github.xiaoymin - swagger-bootstrap-ui - ${swagger-bootstrap-ui-version} - cn.hutool diff --git a/framework/src/main/java/cn/lili/common/context/ContextConfiguration.java b/framework/src/main/java/cn/lili/common/context/ContextConfiguration.java deleted file mode 100644 index a0d71275..00000000 --- a/framework/src/main/java/cn/lili/common/context/ContextConfiguration.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.lili.common.context; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * 过滤路径 - * @author Chopper - */ -@Configuration -public class ContextConfiguration implements WebMvcConfigurer { - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new ThreadContextHolderInterceptorAdapter()).addPathPatterns("/**"); - } - -} diff --git a/framework/src/main/java/cn/lili/common/context/ThreadContextHolder.java b/framework/src/main/java/cn/lili/common/context/ThreadContextHolder.java index 87007ac4..7e4b15f1 100644 --- a/framework/src/main/java/cn/lili/common/context/ThreadContextHolder.java +++ b/framework/src/main/java/cn/lili/common/context/ThreadContextHolder.java @@ -1,39 +1,29 @@ package cn.lili.common.context; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** - * 用户上下文 + * request / response 获取工具 + * * @author paulG * @since 2020/10/16 **/ public class ThreadContextHolder { - private static final ThreadLocal REQUEST_THREAD_LOCAL_HOLDER = new ThreadLocal<>(); - private static final ThreadLocal RESPONSE_THREAD_LOCAL_HOLDER = new ThreadLocal<>(); - - public static void remove() { - REQUEST_THREAD_LOCAL_HOLDER.remove(); - RESPONSE_THREAD_LOCAL_HOLDER.remove(); - } - public static HttpServletResponse getHttpResponse() { - - return RESPONSE_THREAD_LOCAL_HOLDER.get(); - } - - public static void setHttpResponse(HttpServletResponse response) { - RESPONSE_THREAD_LOCAL_HOLDER.set(response); + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + assert servletRequestAttributes != null; + return servletRequestAttributes.getResponse(); } public static HttpServletRequest getHttpRequest() { - return REQUEST_THREAD_LOCAL_HOLDER.get(); - } - - public static void setHttpRequest(HttpServletRequest request) { - - REQUEST_THREAD_LOCAL_HOLDER.set(request); + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + assert servletRequestAttributes != null; + return servletRequestAttributes.getRequest(); } diff --git a/framework/src/main/java/cn/lili/common/context/ThreadContextHolderInterceptorAdapter.java b/framework/src/main/java/cn/lili/common/context/ThreadContextHolderInterceptorAdapter.java deleted file mode 100644 index 5e3342d0..00000000 --- a/framework/src/main/java/cn/lili/common/context/ThreadContextHolderInterceptorAdapter.java +++ /dev/null @@ -1,55 +0,0 @@ -package cn.lili.common.context; - -import org.springframework.lang.Nullable; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - - -/** - * request response 填充 - * - * @author Chopper - * @version v4.0 - * @since 2020/12/9 10:44 - */ -public class ThreadContextHolderInterceptorAdapter extends HandlerInterceptorAdapter { - - - /** - * 拦截request和response并放到上下文中 - * - * @param request 请求 - * @param response 响应 - * @param handler 处理程序 - * @return 处理结果 - * @throws Exception 未知异常 - */ - @Override - public boolean preHandle(HttpServletRequest request, - HttpServletResponse response, Object handler) throws Exception { - - ThreadContextHolder.setHttpResponse(response); - ThreadContextHolder.setHttpRequest(request); - - return super.preHandle(request, response, handler); - } - - - /** - * 从上下文中移除 request 和response - * - * @param request 请求 - * @param response 响应 - * @param handler 处理程序 - * @param ex 异常 - * @throws Exception 完成之前处理异常 - */ - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { - ThreadContextHolder.remove(); - - super.afterCompletion(request, response, handler, ex); - } -} diff --git a/framework/src/main/java/cn/lili/common/context/interceptor/RequestInterceptorAdapter.java b/framework/src/main/java/cn/lili/common/context/interceptor/RequestInterceptorAdapter.java deleted file mode 100644 index 42348795..00000000 --- a/framework/src/main/java/cn/lili/common/context/interceptor/RequestInterceptorAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.lili.common.context.interceptor; - -import cn.lili.common.context.ThreadContextHolder; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * 写入request/response - * - * @author Chopper - * @version v1.0 - * @since 2020-06-13 13:38 - */ -@Slf4j -@Component -public class RequestInterceptorAdapter extends HandlerInterceptorAdapter { - - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, - Object handler) { - return true; - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, - Object handler, ModelAndView modelAndView) throws Exception { - - ThreadContextHolder.setHttpResponse(response); - ThreadContextHolder.setHttpRequest(request); - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, - Object handler, Exception ex) throws Exception { - ThreadContextHolder.remove(); - - super.afterCompletion(request, response, handler, ex); - } -} diff --git a/framework/src/main/java/cn/lili/common/context/interceptor/UrlConfiguration.java b/framework/src/main/java/cn/lili/common/context/interceptor/UrlConfiguration.java deleted file mode 100644 index 593ec06b..00000000 --- a/framework/src/main/java/cn/lili/common/context/interceptor/UrlConfiguration.java +++ /dev/null @@ -1,46 +0,0 @@ -package cn.lili.common.context.interceptor; - -import cn.lili.common.properties.IgnoredUrlsProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * 过滤路径 - * - * @author Chopper - */ -@Configuration -public class UrlConfiguration implements WebMvcConfigurer { - @Autowired - private IgnoredUrlsProperties ignoredUrlsProperties; - @Autowired - private RequestInterceptorAdapter requestInterceptorAdapter; - - @Override - public void addInterceptors(InterceptorRegistry registry) { - //注册拦截器 - InterceptorRegistration ir = registry.addInterceptor(requestInterceptorAdapter); - //配置拦截的路径 - ir.addPathPatterns("/**"); - //配置不拦截的路径 - ir.excludePathPatterns(ignoredUrlsProperties.getUrls()); - } - - /** - * 开放资源 这里配置swagger可以在前端访问 - * - * @param registry 资源处理 - */ - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); - //解决 SWAGGER 404报错 - registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); - } - -} diff --git a/framework/src/main/java/cn/lili/modules/connect/entity/enums/AuthUserGender.java b/framework/src/main/java/cn/lili/modules/connect/entity/enums/AuthUserGender.java index bd1dd767..35a48d4e 100644 --- a/framework/src/main/java/cn/lili/modules/connect/entity/enums/AuthUserGender.java +++ b/framework/src/main/java/cn/lili/modules/connect/entity/enums/AuthUserGender.java @@ -1,8 +1,8 @@ package cn.lili.modules.connect.entity.enums; +import cn.lili.common.utils.StringUtils; import lombok.AllArgsConstructor; import lombok.Getter; -import org.springframework.util.StringUtils; import java.util.Arrays; diff --git a/pom.xml b/pom.xml index 1529d6d5..e3791af6 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,6 @@ 4.2.2 registry.cn-beijing.aliyuncs.com/lili-images 1 - 1.9.6 4.13.40.ALL 5.1.48 3.3.1.tmp @@ -45,7 +44,7 @@ UTF-8 UTF-8 true - 2.0.8 + 2.0.9 2.3.1 1.21 1.2 From a550e4051d5fc5ed4ef1a7cbf2a7c7b0b0259350 Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 27 Sep 2021 18:19:20 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=80=80=E6=AC=BE=E9=97=AE=E9=A2=98=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/service/OrderService.java | 10 +++++++- .../order/serviceimpl/OrderServiceImpl.java | 23 ++++++++++++------- .../kit/plugin/wechat/WechatPlugin.java | 8 ++++++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 64817558..1e6d27da 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -215,7 +215,7 @@ public interface OrderService extends IService { /** * 获取待发货订单编号列表 * - * @param response 响应 + * @param response 响应 * @param logisticsName 店铺已选择物流公司列表 */ void getBatchDeliverList(HttpServletResponse response, List logisticsName); @@ -227,4 +227,12 @@ public interface OrderService extends IService { */ void batchDeliver(MultipartFile files); + + /** + * 获取订单实际支付的总金额 + * + * @param orderSn 订单sn + * @return 金额 + */ + Double getPaymentTotal(String orderSn); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index ae4587a1..8d3d890a 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -23,6 +23,7 @@ import cn.lili.modules.order.order.aop.OrderLogPoint; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderItem; import cn.lili.modules.order.order.entity.dos.Receipt; +import cn.lili.modules.order.order.entity.dos.Trade; import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; @@ -33,10 +34,7 @@ import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.OrderVO; import cn.lili.modules.order.order.mapper.OrderItemMapper; import cn.lili.modules.order.order.mapper.OrderMapper; -import cn.lili.modules.order.order.service.OrderItemService; -import cn.lili.modules.order.order.service.OrderService; -import cn.lili.modules.order.order.service.ReceiptService; -import cn.lili.modules.order.order.service.StoreFlowService; +import cn.lili.modules.order.order.service.*; import cn.lili.modules.order.trade.entity.dos.OrderLog; import cn.lili.modules.order.trade.service.OrderLogService; import cn.lili.modules.payment.kit.enums.PaymentMethodEnum; @@ -144,11 +142,9 @@ public class OrderServiceImpl extends ServiceImpl implements */ @Autowired private PintuanService pintuanService; - /** - * 规格商品 - */ + @Autowired - private GoodsSkuService goodsSkuService; + private TradeService tradeService; @Override public void intoDB(TradeDTO tradeDTO) { @@ -592,6 +588,17 @@ public class OrderServiceImpl extends ServiceImpl implements } } + + @Override + public Double getPaymentTotal(String orderSn) { + Order order = this.getBySn(orderSn); + Trade trade = tradeService.getBySn(order.getTradeSn()); + if (trade.getPayStatus().equals(PayStatusEnum.PAID.name())) { + return trade.getFlowPrice(); + } + return order.getFlowPrice(); + } + /** * 循环检查批量发货订单列表 * diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java index 54b0836b..96658630 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/plugin/wechat/WechatPlugin.java @@ -20,6 +20,7 @@ import cn.lili.common.enums.ClientTypeEnum; import cn.lili.modules.connect.entity.Connect; import cn.lili.modules.connect.entity.enums.ConnectEnum; import cn.lili.modules.connect.service.ConnectService; +import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.kit.CashierSupport; import cn.lili.modules.payment.kit.Payment; @@ -100,6 +101,11 @@ public class WechatPlugin implements Payment { */ @Autowired private ConnectService connectService; + /** + * 联合登陆 + */ + @Autowired + private OrderService orderService; @Override @@ -497,7 +503,7 @@ public class WechatPlugin implements Payment { try { Amount amount = new Amount().setRefund(CurrencyUtil.fen(refundLog.getTotalAmount())) - .setTotal(CurrencyUtil.fen(refundLog.getPayPrice())); + .setTotal(CurrencyUtil.fen(orderService.getPaymentTotal(refundLog.getOrderSn()))); //退款参数准备 RefundModel refundModel = new RefundModel() From f4cd51120b7af4586adb0cf645c763626e3b7703 Mon Sep 17 00:00:00 2001 From: Chopper Date: Tue, 28 Sep 2021 16:27:17 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 4022a630..93b92eb7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ -#### 欢迎交流需求,交流业务,交流技术 +#### 欢迎交流需求,交流业务,交流技术(基础问题自行解决,进群先看文档后提问) ##### 交流 qq 1群 961316482(已满) @@ -28,75 +28,75 @@ Lilishop 商城系统 基于SpringBoot 研发,B2B2C多用户商城系统,前 业务兼容O2O商城/B2B商城/B2B2C商城/F2B2C商城/S2B2C商城。支持小程序商城、H5商城、APP商城、 PC商城。 - 商城前后端分离、支持分布式部署。 商城包含 会员模块、**第三方登录模块**、**第三方支付模块**、**楼层装修模块**、订单模块、分销模块、文章模块、系统设置模块、流量分析模块 商城包含各种中间件、搜索引擎、多级缓存、分布式事务、分布式任务调度等,支持Docker,支持k8s。是一款高性能,支持高并发的商城系统。 +##### 商城 API/消费者 聚合版 +api不需要单独部署,只需启动一个jar包就可以正常运转 如有需要,可以点击跳转https://gitee.com/beijing_hongye_huicheng/lilishop-simplify - -### ☃️ 帮助文档 +### ☃️ 商城 开发/使用/常见问题 帮助文档 https://docs.pickmall.cn -### 💧 项目链接(gitee) +### 💧 开源商城项目地址(gitee) -**Java后台**:https://gitee.com/beijing_hongye_huicheng/lilishop.git +**Java后台(商城所有API)**:https://gitee.com/beijing_hongye_huicheng/lilishop.git -**Vue后台前端**: https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git +**UI(商城管理端/商家端/买家PC端)**: https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git -**Uni-app**:https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git +**Uni-app(商城移动端,支持小程序/APP/H5)**:https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp.git -**docker一键部署**:https://gitee.com/beijing_hongye_huicheng/docker.git +**docker一键部署(商城部署脚本)**:https://gitee.com/beijing_hongye_huicheng/docker.git -### 💧 项目链接(github) +### 💧 开源商城项目地址(github) -**Java后台**:https://github.com/hongyehuicheng/lilishop.git +**Java后台(商城所有API)**:https://github.com/hongyehuicheng/lilishop.git -**Vue后台前端**: https://github.com/hongyehuicheng/lilishop-ui.git +**UI(商城管理端/商家端/买家PC端)**: https://github.com/hongyehuicheng/lilishop-ui.git -**Uni-app**:https://github.com/hongyehuicheng/lilishop-uniapp.git +**Uni-app(商城移动端,支持小程序/APP/H5)**:https://github.com/hongyehuicheng/lilishop-uniapp.git -**docker一键部署**:https://github.com/hongyehuicheng/docker.git +**docker一键部署(商城部署脚本)**:https://github.com/hongyehuicheng/docker.git ### 💧 演示地址(手机验证码为 ‘111111’) -**运营后台**:https://admin-b2b2c.pickmall.cn 账号:admin/123456 +**商城管理端**:https://admin-b2b2c.pickmall.cn 账号:admin/123456 -**店铺后台**:https://store-b2b2c.pickmall.cn 账号:13011111111/111111 +**商城店铺后台**:https://store-b2b2c.pickmall.cn 账号:13011111111/111111 -**PC**:https://pc-b2b2c.pickmall.cn +**商城PC页面**:https://pc-b2b2c.pickmall.cn -**WAP**:https://m-b2b2c.pickmall.cn +**商城移动端(请使浏览器手机模式,或者用手机浏览器打开)**:https://m-b2b2c.pickmall.cn **小程序/公众号**:扫描二维码 ![image-20210511171611793](https://pickmall.cn/assets/imgs/h5-qrcode.png) -### 🚙 3行命令搭建本地运行环境 +### 🚙 3行命令搭建本地商城(注:只能本机访问,如需调整,请自行操作镜像) 温馨提示:由于服务中间件较多,如果笔记本环境启动内存没有32g可能无法启动成功(macbookpro 2020 16g内存启动无法成功),台式机在16g内存、AMD 3700x 的ubuntu系统成功运行。 -##### docker环境安装 [点击跳转](https://docs.pickmall.cn/deploy/%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2.html) +##### docker环境安装 [点击跳转](https://docs.pickmall.cn/deploy/%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.html) ##### 下载docker-compose脚本 `git clone https://gitee.com/beijing_hongye_huicheng/docker.git ` -##### 部署基础环境 +##### 部署商城所需中间件 `docker-compose up -d` -##### 部署应用 +##### 部署商城应用 `docker-compose -f docker-compose-application.yml up -d` -PS:单独部署的话,点击跳转 https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码,则需要在lilishop项目根目录的update-sql目录中,获取对应的升级sql。 +PS:商城数据库单独部署 https://gitee.com/beijing_hongye_huicheng/docker/tree/master/init/mysql 这里有与tag版本一致的sql,根据tag获取sql,如果使用master代码,则需要在lilishop项目根目录的DB目录中,获取对应的升级sql。 ##### 商城 API/UI 地址 @@ -193,7 +193,7 @@ PS:单独部署的话,点击跳转 https://gitee.com/beijing_hongye_huicheng/d ``` 商城后续会持续版本升级,修复bug,完善功能,覆盖更多业务场景 o2o/b2b/s2b2b2c/跨境电商 -后续会考虑推出微服务商城系统/中台商城等 +后续会考虑推出微服务商城系统/商城中台等 ``` From 50c08c0e01899c7a6d0eb7859515af71d181739f Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 29 Sep 2021 14:40:25 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B9=B0=E5=AE=B6?= =?UTF-8?q?=E6=9C=AA=E7=99=BB=E5=BD=95=E8=8E=B7=E5=8F=96=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E8=AF=A6=E6=83=85403=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buyer-api/src/main/resources/application.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/buyer-api/src/main/resources/application.yml b/buyer-api/src/main/resources/application.yml index 0874300f..dd62a1a8 100644 --- a/buyer-api/src/main/resources/application.yml +++ b/buyer-api/src/main/resources/application.yml @@ -136,9 +136,7 @@ ignored: - /buyer/article/** - /buyer/goods/** - /buyer/category/** - - /buyer/store - - /buyer/store/get** - - /buyer/store/label/get** + - /buyer/store/** - /buyer/connect/** - /buyer/members/** - /buyer/promotion/pintuan/** From 95095f35c0c98bf57fe73f268e06855eae374536 Mon Sep 17 00:00:00 2001 From: Chopper Date: Wed, 29 Sep 2021 14:52:27 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E6=97=B6=EF=BC=8C=E5=A4=B4=E5=83=8F=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E9=97=AE=E9=A2=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/modules/permission/entity/dos/AdminUser.java | 5 +++++ .../modules/permission/entity/dto/AdminUserDTO.java | 11 +++++++++-- .../passport/AdminUserManagerController.java | 5 +++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java index 2ab76c5c..0c5a2f38 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.hibernate.validator.constraints.Length; /** @@ -21,18 +22,22 @@ public class AdminUser extends BaseEntity { private static final long serialVersionUID = 2918352800205024873L; @ApiModelProperty(value = "用户名") + @Length(max = 20,message = "用户名长度不能超过20个字符") private String username; @ApiModelProperty(value = "密码") private String password; @ApiModelProperty(value = "昵称") + @Length(max = 10,message = "昵称长度不能超过10个字符") private String nickName; @ApiModelProperty(value = "手机") + @Length(max = 11,message = "手机号长度不能超过11") private String mobile; @ApiModelProperty(value = "邮件") + @Length(max = 100,message = "又想长度不能超过100") private String email; @ApiModelProperty(value = "用户头像") diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java b/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java index b6ad8e7e..c6715cd9 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java @@ -4,6 +4,7 @@ import cn.lili.mybatis.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; @@ -19,23 +20,29 @@ public class AdminUserDTO extends BaseEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "用户名") - @NotEmpty(message = "用户名不能为空") + @Length(max = 20,message = "用户名长度不能超过20个字符") private String username; - @NotEmpty(message = "密码不能为空") @ApiModelProperty(value = "密码") private String password; @ApiModelProperty(value = "昵称") + @Length(max = 10,message = "昵称长度不能超过10个字符") private String nickName; @ApiModelProperty(value = "手机") + @Length(max = 11,message = "手机号长度不能超过11") private String mobile; @ApiModelProperty(value = "邮件") + @Length(max = 100,message = "又想长度不能超过100") private String email; + @ApiModelProperty(value = "头像") + private String avatar; + @ApiModelProperty(value = "描述/详情/备注") private String description; diff --git a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java index af17fd09..227c8e8d 100644 --- a/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/passport/AdminUserManagerController.java @@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; @@ -110,7 +111,7 @@ public class AdminUserManagerController { @PutMapping(value = "/admin/edit") @ApiOperation(value = "超级管理员修改其他管理员资料") @DemoSite - public ResultMessage edit(AdminUser adminUser, + public ResultMessage edit(@Valid AdminUser adminUser, @RequestParam(required = false) List roles) { if (!adminUserService.updateAdminUser(adminUser, roles)) { throw new ServiceException(ResultCode.USER_EDIT_ERROR); @@ -154,7 +155,7 @@ public class AdminUserManagerController { @PostMapping @ApiOperation(value = "添加用户") - public ResultMessage register(AdminUserDTO adminUser, + public ResultMessage register(@Valid AdminUserDTO adminUser, @RequestParam(required = false) List roles) { int rolesMaxSize=10; try { From acf2e56ffcc8a8c8823f2f0d69c9b23ec5e9639b Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 30 Sep 2021 09:15:46 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=96=87=E5=AD=97=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lili/modules/permission/entity/dos/AdminUser.java | 2 +- .../cn/lili/modules/permission/entity/dto/AdminUserDTO.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java index 0c5a2f38..92977e0f 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/dos/AdminUser.java @@ -37,7 +37,7 @@ public class AdminUser extends BaseEntity { private String mobile; @ApiModelProperty(value = "邮件") - @Length(max = 100,message = "又想长度不能超过100") + @Length(max = 100,message = "邮箱长度不能超过100") private String email; @ApiModelProperty(value = "用户头像") diff --git a/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java b/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java index c6715cd9..bc1f6813 100644 --- a/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java +++ b/framework/src/main/java/cn/lili/modules/permission/entity/dto/AdminUserDTO.java @@ -37,7 +37,7 @@ public class AdminUserDTO extends BaseEntity { private String mobile; @ApiModelProperty(value = "邮件") - @Length(max = 100,message = "又想长度不能超过100") + @Length(max = 100,message = "邮箱长度不能超过100") private String email; @ApiModelProperty(value = "头像") From e2f5b6031a7d3a46ba59dd470f54f3d2aa3f5d4f Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 30 Sep 2021 10:09:19 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=8C=E6=97=A5=E5=BF=97=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/WechatMPMessageServiceImpl.java | 16 ++++++++++++---- .../serviceimpl/WechatMessageServiceImpl.java | 14 +++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java index f9e9fee5..4cc3690a 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java @@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,8 +35,8 @@ import java.util.Map; * @author Chopper */ @Service +@Slf4j @Transactional(rollbackFor = Exception.class) - public class WechatMPMessageServiceImpl extends ServiceImpl implements WechatMPMessageService { @Autowired private WechatAccessTokenUtil wechatAccessTokenUtil; @@ -52,6 +53,9 @@ public class WechatMPMessageServiceImpl extends ServiceImpl oldList = new ArrayList<>(); @@ -73,7 +79,8 @@ public class WechatMPMessageServiceImpl extends ServiceImpl { Map params = new HashMap<>(1); params.put("priTmplId", templateId); - WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); + String message = WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); + log.info("删除模版响应:{}", message); }); } @@ -89,7 +96,7 @@ public class WechatMPMessageServiceImpl extends ServiceImpl keywordArray = jsonArray.toList(WechatMessageKeyword.class); - log.error("keywords:" + keywordArray); + log.info("keywords:" + keywordArray); //存放约定好的kids List kids = new ArrayList<>(tplData.keyWord.size()); List kidTexts = new ArrayList<>(tplData.keyWord.size()); @@ -110,8 +117,9 @@ public class WechatMPMessageServiceImpl extends ServiceImpl implements WechatMessageService { @@ -51,6 +53,9 @@ public class WechatMessageServiceImpl extends ServiceImpl oldList = new ArrayList<>(); if (jsonObject.containsKey("template_list")) { @@ -84,7 +93,8 @@ public class WechatMessageServiceImpl extends ServiceImpl { Map params = new HashMap<>(1); params.put("template_id", templateId); - WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); + String message = WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); + log.info("删除模版响应:{}", message); }); } @@ -95,6 +105,8 @@ public class WechatMessageServiceImpl extends ServiceImpl params = new HashMap<>(1); params.put("template_id_short", tplData.getMsgId()); String content = HttpUtils.doPostWithJson(addTpl + accessToken, params); + log.info("添加模版响应:{}", content); + JSONObject tplContent = new JSONObject(content); WechatMessageUtil.wechatHandler(tplContent); From 5181a19f2946bed9b58ecec47fc0467deb930b98 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 30 Sep 2021 10:24:15 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E4=B8=8E=E5=BE=AE=E4=BF=A1=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=E7=9A=84=E5=8F=82=E6=95=B0=E4=B8=80=E8=B5=B7=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/WechatMPMessageServiceImpl.java | 5 ++--- .../message/serviceimpl/WechatMessageServiceImpl.java | 10 +++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java index 4cc3690a..a10a752a 100644 --- a/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/WechatMPMessageServiceImpl.java @@ -80,7 +80,7 @@ public class WechatMPMessageServiceImpl extends ServiceImpl params = new HashMap<>(1); params.put("priTmplId", templateId); String message = WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); - log.info("删除模版响应:{}", message); + log.info("删除模版请求:{},删除模版响应:{}", params, message); }); } @@ -117,9 +117,8 @@ public class WechatMPMessageServiceImpl extends ServiceImpl params = new HashMap<>(1); params.put("template_id", templateId); String message = WechatMessageUtil.wechatHandler(HttpUtil.post(delMsgTpl + accessToken, params)); - log.info("删除模版响应:{}", message); + log.info("删除模版请求:{},删除模版响应:{}", params, message); }); } @@ -104,10 +104,10 @@ public class WechatMessageServiceImpl extends ServiceImpl params = new HashMap<>(1); params.put("template_id_short", tplData.getMsgId()); - String content = HttpUtils.doPostWithJson(addTpl + accessToken, params); - log.info("添加模版响应:{}", content); + String message = HttpUtils.doPostWithJson(addTpl + accessToken, params); + log.info("添加模版请求:{},添加模版响应:{}", params, message); - JSONObject tplContent = new JSONObject(content); + JSONObject tplContent = new JSONObject(message); WechatMessageUtil.wechatHandler(tplContent); //如果包含模版id则进行操作,否则抛出异常