{"id":18021191,"url":"https://github.com/weasley-j/lejing-mall","last_synced_at":"2025-04-07T17:11:07.861Z","repository":{"id":39657876,"uuid":"332815457","full_name":"Weasley-J/lejing-mall","owner":"Weasley-J","description":"Lejing-Mall is a distributed online shopping platform.","archived":false,"fork":false,"pushed_at":"2025-03-24T08:29:42.000Z","size":186492,"stargazers_count":51,"open_issues_count":123,"forks_count":26,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-31T15:18:56.163Z","etag":null,"topics":["mall","microservices-architecture","mybatis","spring","spring-boot","spring-cloud","spring-cloud-alibaba"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Weasley-J.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-25T16:46:57.000Z","updated_at":"2025-02-11T04:20:49.000Z","dependencies_parsed_at":"2023-10-22T16:26:25.057Z","dependency_job_id":"1967680f-0774-4eb0-9cb3-24da8a43c73a","html_url":"https://github.com/Weasley-J/lejing-mall","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weasley-J%2Flejing-mall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weasley-J%2Flejing-mall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weasley-J%2Flejing-mall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Weasley-J%2Flejing-mall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Weasley-J","download_url":"https://codeload.github.com/Weasley-J/lejing-mall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694876,"owners_count":20980733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mall","microservices-architecture","mybatis","spring","spring-boot","spring-cloud","spring-cloud-alibaba"],"created_at":"2024-10-30T06:09:00.667Z","updated_at":"2025-04-07T17:11:07.840Z","avatar_url":"https://github.com/Weasley-J.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"![shanghao-idea](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/shanghao-idea.jpg)\n\n# 乐璟商城\n\n\u003e **微服务架构图**\n\n![](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210222191025177.png)\n\n\u003e 😄 😄 😄 😄😄 😄 😄 😄 😄 😄  `SonarQube`代码审查结果（不含前端代码）\n\n![](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210929225124691.png)\n\n![](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210929225220904.png)\n\n\n\n# 1 技术架构选型\n\n第二代微服务架构，`kubernetes`高可用集群，全自动`DevOps`，\n\n🎉️  [springcloud与springboot对应版本](https://start.spring.io/actuator/info)\n\n![image-20210126234300478](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210126234300478.png)\n\n🎉️  [spring boot的历史版本](https://docs.spring.io/spring-boot/docs/)\n\n![image-20210126234531221](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210126234531221.png)\n\n🎉️  [spring cloud的历史版本](https://docs.spring.io/spring-cloud/docs/)\n\n![image-20210224205205376](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210224205205376.png)\n\n[spring-cloud-alibaba-dependencies版本说明](https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E)\n\n\n\n技术架构：\n\n\n\n- 🚀️  `JDK11`\n- 🚀️  `MySQL-8.0.28`\n- 🚀️  `apache-maven-3.8.4`\n- 🚀️  `spring-boot 2.7.2`\n- 🚀️  `spring-cloud-2021.0.0`\n- 🚀️  `spring-cloud-alibaba 2021.1`\n- 🚀️  `NACOS2.0.3`\n- 🚀️  `Elasticsearch+Logstash+Kibana(7.17.0)`\n- 🚀️  `mybatis-plus 3.5.1`\n- 很多很多...\n\n\n\n# 2 IDEA环境`JVM`参数配置\n\n\u003e tips: 主要目的减少web服务的的内存占用\n\n`JVM`参数: `-Xms256m -Xmx256m -Xmn100m -Xlog:gc*`\n\n![image-20210207215344410](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210207215344410.png)\n\n![image-20210207215556800](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210207215556800.png)\n\n# 3 已完成清单\n\n- [X] 已封装`BaseController`，用于Controller数据返回\n\n![image-20210204005654609](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210204005654609.png)\n\n- [X] 已封装`BaseResult`，返回结果封装 ，让接口的输入和输出更加明确\n\n![image-20210204010657082](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210204010657082.png)\n\n![image-20210204010822582](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210204010822582.png)\n\n![image-20210204010952249](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210204010952249.png)\n\n- [X] 重新改造代码生成, 所有接口都可以生成测试文档, 支持在线调试接口, 执行`mvn package`自动出api文档,访问地址改成自己的端口号:http://127.0.0.1:10000/index.html,\n\n  ![image-20210205025359610](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210205025359610.png)\n\n![image-20210205024651157](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210205024651157.png)\n\n\u003e 基于`Mybatis-Plus`自动生成,支持复杂分页查询, 数据库变动只需要修改实体类即可\n\n![image-20210205025122573](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210205025122573.png)\n\n![image-20210205025022332](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210205025022332.png)\n\n**![image-20210205024941585](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210205024941585.png)**\n\n- [X] 项目改造完成, 集成: 业务代码自动生成 -\u003e 执行: `mvn package`, 自动输出可调式的高可读性`api`文档 -\u003e 分层架构 -\u003e\n  以最小的代价迎合业务的重大变更\n- [X] 已接入`ELK`全家桶\n\n![image-20210307003402307](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210307003402307.png)\n\n![image-20210307003417433](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210307003417433.png)\n\n- [x] 集成全局埋`traceId`, 快速定位线上问题\n\n# 4 待完成清单\n\n- [X] 整合人人框架，提供：`domain`--\u003e `dao` --\u003e `service` --\u003e `controller` --\u003e 全自动`api`文档在线输出, 支持在线调试\n\n  目的：让今后因业务变动影响数据库的变动只需要码农修改数据库对应的领域模型即可，节省更多的时间\n- [X] 微服务计划\n\n进行中......\n\n- [X] 移除`spring-cloud-alibaba 2.2.5.RELEASE` 版本中微服务中通过`feign`远程调用时使用`ribbon`负载均衡的支持, 采用`spring-cloud 2020.0.1`的`spring cloud loadbalancer`代替\n- [X] ......\n\n# 5 `Ubuntu`环境`Docker`基础软件安装指南\n\n## 5.1 安装ELK全家桶\n\n1. 下载本项目\n\n```shell\ngit clone https://github.com/Weasley-J/lejing-mall\n```\n\n2. 切换工作目录\n\n```shell\ncd shell\nchmod 0777 -vR *.sh \u0026\u0026 ./run_elk_install.sh\n```\n\n## 5.2 修改`logback-spring.xml`中`logstash`的参数\n\n![image-20210303224138777](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210303224138777.png)\n\n```xml\n\u003cdestination\u003e192.168.40.132:5044\u003c/destination\u003e\n```\n\n以上标签值改为你自己的 `Logstash` 能接受log的主机`ip:port`\n\n## 5.3 `Logstash` 成功接受日志的效果\n\n1. 终端\n\n![image-20210303224508305](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210303224508305.png)\n\n2. es中的索引数据\n\n![image-20210303224559097](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210303224559097.png)\n\n![image-20210303224642551](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210303224642551.png)\n\n# 6 TIPS\n\n\u003e 本项目的`api`文档输出基于smart-doc和common工程里面我写的一些类完成的，不建议把common工程上传到maven私服上面，这会导致项目执行：\n\u003e\n\u003e `mvn package`的时候不能读取common里面的一些相关类的注释，因为`java`最终编译成字节码文件后会把所有注释都清理掉，也就是项目最终的class文件不包含任何注释\n\n## 6.1 `nacos MySQL`数据持久配置\n\n文件相对路径：`nacos-server/nacos-server-1.4.1/nacos/conf/application.properties`\n\n```properties\n### If use MySQL as datasource:\nspring.datasource.platform=mysql\n\n### Count of DB:\ndb.num=1\n\n### Connect URL of DB:\ndb.url.0=jdbc:mysql://192.168.40.132:3306/nacos_config?serverTimezone=Asia/Shanghai\u0026useSSL=false\u0026allowPublicKeyRetrieval=true\u0026autoReconnect=true\u0026allowMultiQueries=true\ndb.user.0=root\ndb.password.0=123456\n```\n\n## 6.2 各个服务启动顺序\n\n- 启动`nacos`，进入终端：`nacos-server/nacos-server-1.4.1/nacos/run-nacos-standalone.bat`\n- 启动授权服务\n- 启动网关服务 `lejing-gateway`\n- 再启动其他相关服务\n\n## 6.3 `Elasticsearch`索引库清理\n\n使用`curl`命令模糊匹配删除，在`shell`终端上执行:\n\n```shell\n#!/usr/bin/env bash\n\n# 全局变量，自行修改\nIP=\"192.168.40.132\"\nPORT=\"9200\"\nUSER=\"elastic\"\nPWD=\"123456\"\n\n# 删除乐景商城的日志索引库\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/lejing-*,renren-fast-*\n# 删除kibana的日志索引库\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-kibana-*\n# 删除logstash的日志索引库\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-logstash-*\n# 删除es的日志索引库\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.monitoring-es-*\n# 其他\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/ilm-history-*\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.kibana-event-*\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/*run_env*\ncurl -XDELETE -u ${USER}:${PWD} http://${IP}:${PORT}/.kibana_*\n```\n\n## 6.4  前端项目启动\n\n### 6.4.1 前端后台管理\n\n```shell\n#克隆项目，见lejing-web-frontend/lejing-manage/README.md文件\n```\n\n### 6.4.2 前端门户网站\n\n前端多页面`html`使用`live-server`运行：\n\n```shell\n#打开CMD终端\ncd lejing-web-frontend/lejing-portal\n# npm下载live-server启动门户网站, 指定门户网站的端口8002\nnpm install -g live-server --registry=https://registry.npm.taobao.org \u0026\u0026 live-server --port=8002\n```\n\n## 6.5  集成`SonarQube`\n\n- 项目父`pom.xml`添加maven插件\n\n版本自行取中央仓库查找\n\n```xml\n           \u003c!-- https://mvnrepository.com/artifact/org.sonarsource.scanner.maven/sonar-maven-plugin --\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003eorg.sonarsource.scanner.maven\u003c/groupId\u003e\n                \u003cartifactId\u003esonar-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e${sonar-maven-plugin.version}\u003c/version\u003e\n            \u003c/plugin\u003e\n```\n\n- maven的`settings.xml`新加如下配置\n\n  ```xml\n  \u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n  \u003csettings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"\n            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n            xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\"\u003e\n      \u003cpluginGroups\u003e\n          \u003cpluginGroup\u003eorg.sonarsource.scanner.maven\u003c/pluginGroup\u003e\n      \u003c/pluginGroups\u003e\n  \n      \u003cmirrors\u003e\n          \u003cmirror\u003e\n              \u003cid\u003ealiyunmaven\u003c/id\u003e\n              \u003cmirrorOf\u003ecentral\u003c/mirrorOf\u003e\n              \u003cname\u003e阿里云公共仓库\u003c/name\u003e\n              \u003curl\u003ehttps://maven.aliyun.com/repository/public\u003c/url\u003e\n          \u003c/mirror\u003e\n      \u003c/mirrors\u003e\n  \n      \u003cprofiles\u003e\n          \u003cprofile\u003e\n              \u003cid\u003esonar\u003c/id\u003e\n              \u003cactivation\u003e\n                  \u003cactiveByDefault\u003etrue\u003c/activeByDefault\u003e\n              \u003c/activation\u003e\n              \u003cproperties\u003e\n                  \u003cproject.build.sourceEncoding\u003eUTF-8\u003c/project.build.sourceEncoding\u003e\n                  \u003cproject.reporting.outputEncoding\u003eUTF-8\u003c/project.reporting.outputEncoding\u003e\n                  \u003csonar.host.url\u003ehttp://192.168.40.132:9001\u003c/sonar.host.url\u003e\n                  \u003csonar.login\u003ed65fc87408fd94ef8328b03a52d06bfec0fe388f\u003c/sonar.login\u003e\n                  \u003c!-- 排除的文件 --\u003e\n                  \u003csonar.exclusions\u003esrc/test/**/*,*.js,*.css,*.html,*.vue,*.bat,*.cmd,*.md,*.NET,*.cpp\u003c/sonar.exclusions\u003e\n              \u003c/properties\u003e\n          \u003c/profile\u003e\n      \u003c/profiles\u003e\n  \n      \u003cactiveProfiles\u003e\n          \u003cactiveProfile\u003esonar\u003c/activeProfile\u003e\n      \u003c/activeProfiles\u003e\n  \n  \u003c/settings\u003e\n  ```\n- docker安装`SonarQube`\n\n```shell\n#!/bin/bash\n\nBASE_DIR_POSTGRES=\"/usr/local/postgres\"\nBASE_DIR_SONARQUBE=\"/usr/local/sonarqube\"\n\n#主机ip\nPOSTGRESQL_HOST=\"192.168.40.132\"\n\nclear \u0026\u0026 rm -rfv ${BASE_DIR_POSTGRES} \u0026\u0026 rm -rfv ${BASE_DIR_SONARQUBE}\nmkdir -pv ${BASE_DIR_POSTGRES} \u0026\u0026 mkdir -pv ${BASE_DIR_SONARQUBE}/{data,extensions,logs}\nchown -vR 0999 ${BASE_DIR_SONARQUBE}/\n\ndocker stop postgres \u0026\u0026 docker rm -f postgres\ndocker run --name postgres \\\n  -p 5432:5432 \\\n  -v ${BASE_DIR_POSTGRES}:/var/lib/postgresql/data \\\n  -v /etc/timezone:/etc/timezone \\\n  -v /etc/localtime:/etc/localtime \\\n  -e POSTGRES_USER=root \\\n  -e POSTGRES_DB=postgres \\\n  -e POSTGRES_PASSWORD=123456 \\\n  -e PGDATA=/var/lib/postgresql/data/pgdata \\\n  -d postgres\n\n# 开启postgresql远程访问参考连接: https://www.cnblogs.com/chendongbky/p/14874794.html, 看5 -\u003e 5.(1)\n\ndocker exec -it postgres psql -h ${POSTGRESQL_HOST} -U root\n# 界面运行下面的SQL, 创建sonarqube的数据库\nCREATE DATABASE \"sonarqube\" WITH OWNER = \"root\" TEMPLATE = \"postgres\" ENCODING = 'UTF8' TABLESPACE = \"pg_default\";\nCOMMENT ON DATABASE \"sonarqube\" IS 'SonarQube数据库';\n\n#退出容器\n\n# 社区版本\ndocker stop sonarqube \u0026\u0026 docker rm -f sonarqube\ndocker run --name sonarqube \\\n  -p 9001:9000 \\\n  -p 9092:9092 \\\n  -e SONAR_JDBC_USERNAME=root \\\n  -e SONAR_JDBC_PASSWORD=123456 \\\n  -e SONAR_JDBC_URL=\"jdbc:postgresql://${POSTGRESQL_HOST}:5432/sonarqube\" \\\n  -v ${BASE_DIR_SONARQUBE}/data:/opt/sonarqube/data \\\n  -v ${BASE_DIR_SONARQUBE}/extensions:/opt/sonarqube/extensions \\\n  -v ${BASE_DIR_SONARQUBE}/logs:/opt/sonarqube/logs \\\n  -d sonarqube\n\n# 企业版本\n#docker run -d -p 9001:9000  -p 9092:9092 --name sonarqube \\\n#-v ${BASE_DIR_SONARQUBE}/sonarqube_data:/opt/sonarqube/data \\\n#-v ${BASE_DIR_SONARQUBE}/sonarqube_extensions:/opt/sonarqube/extensions \\\n#-v ${BASE_DIR_SONARQUBE}/sonarqube_logs:/opt/sonarqube/logs \\\n#-e SONAR_JDBC_USERNAME=sonarqube \\\n#-e SONAR_JDBC_PASSWORD=sonarqube \\\n#-e SONAR_JDBC_URL=\"jdbc:postgresql://${POSTGRESQL_HOST}:5432/sonarqube\" \\\n#sonarqube:enterprise\n\n#编辑这个文件, 再末尾追加(已经有就不用追加): vm.max_map_count=655360\nvim /etc/sysctl.conf\nsysctl -p\n\n# echo后边用单引号包围要添加的内容\necho 'vm.max_map_count=655360' \u003e\u003e/etc/sysctl.conf\nsysctl -p\n\n# 浏览器访问sonarqube: http://192.168.40.132:9001, 默认用户名密码为：admin/admin , 进入界面后: Administration --\u003e marketplace --\u003e 搜索chinese, 安装中文语言\n\n# token - \u003e 99bfe61d5bba8bb2164d6679ee345c03ad30d5d7\n\n```\n\n- 看看国内的开源和国外的开源代码审查结果\n\n\u003e 阿里的[fastjson](https://github.com/alibaba/fastjson.git)\n\n![img](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/RLAOVF@WRCQ_]512J_EK5.png)\n\n国外的[Jackson](https://github.com/FasterXML/jackson-core.git)\n\n![img](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/EX1`QE]8AV96S$_E90DHHW0-1626597142096.png)\n\n从审查数据可以看到:\n\n`fastjson`的bug级别为E, 共122个, `Jackson`为C级,共15个,  `fastjson`的bug约为`jackson`的8倍还要多, 数据上看, `jackson`比`fastjson`可靠.\n\n# 7 Question\u0026Answer\n\n## 7.1 为什么分页不用`mybatis-plus`自带的`IPage`？\n\n`mybatis-plus`的`IPage`分页入参不利于项目的`API`文档输出，毕竟我们都不想手写接口文档，如果你喜欢手写接口文档，然后再填入什么`RAP`、`YApi`里面，我推荐你用回`Swagger`。\n\n## 7.2 解决`github`提交代码`connection to github.com:443`\n\n`fatal: unable to access ‘https://github.com/Weasley-J/lejing-mall’: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443`\n\n在Git Bash终端中输入:\n\n```bash\nenv GIT_SSL_NO_VERIFY=true\n\n#提交代码指定个人token, 格式: git push https://token@repository.git\n#如: git push https://lwj_J0kQJdji3541ejrfTejlbC3owlWCZ@github.com/Weasley-J/lejing-mall.git\n```\n\n## 7.3 项目启动报错`Web server failed to start. Port 8000 was already in use.`\n\n\u003e windows\n\n```bat\nnetstat -aon | findstr \"10000\"\n\ntasklist | findstr \"1532\"\n\ntaskkill /f /t /im \"yundetectservice.exe\"\n```\n\n![image-20210611221759994](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210611221759994.png)\n\n![image-20210611221811205](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210611221811205.png)\n\n## 7.4 关于前端查询数据需要根据时间区间查询时`spring`全局`mvc`字符串日期转换配置\n\n![image-20210623234349087](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210623234349087.png)\n\n笔者亲身经历，土鳖公司当查询参数过多的时候就用POST，实在是很不习惯。所有就这个全局配置，当然不止这2种方式，有兴趣自行探索。\n\n## 7.5 在`IDEA`中使用`smart-doc`辅助生成`api`文档的`java doc tag`\n\n\u003e 粘贴文本: download,ignore,required,mock,order,page,ignoreParams,response\n\n见下图:\n\n![链接图片](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210719155251017.png)\n\n# 8 接入三方支付\n\n## 8.1 支付宝支付-2021年6月20日\n\n### 8.1.1 [个人开发者申请登录后台](https://open.alipay.com/platform/developerIndex.htm)\n\n![image-20210620223425913](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210620223425913.png)\n\n### 8.1.2 [新版`api`文档](https://opendocs.alipay.com/open/54/00y8k9)\n\n![image-20210620223644859](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210620223644859.png)\n\n### 8.1.3  `nginx`配置支付宝支付成功异步POST回调\n\n```nginx\n#user  nobody;\nworker_processes  1;\n\n#error_log  logs/error.log;\n#error_log  logs/error.log  notice;\n#error_log  logs/error.log  info;\n\npid        logs/nginx.pid;\n\nevents {\n    worker_connections  1024;\n}\n\n\nhttp {\n    include       mime.types;\n    default_type  application/octet-stream;\n\n    #log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n    #                  '$status $body_bytes_sent \"$http_referer\" '\n    #                  '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n\n    #access_log  logs/access.log  main;\n\n    sendfile        on;\n    #tcp_nopush     on;\n\n    #keepalive_timeout  0;\n    keepalive_timeout  65;\n\n    #gzip  on;\n\n    #解决\"nginx could not build the server_names_hash\"的方法\n    server_names_hash_bucket_size 64;\n\n    client_max_body_size 4G;\n\n\n\t#乐璟商城\n    server {\n        listen       80;\n  \n        server_name  lejing.fgifast1.vipnps.vip;#内网穿透域名地址\n\n        proxy_ssl_verify off;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header REMOTE-HOST $remote_addr;\n        proxy_set_header Host $http_host;\n        proxy_set_header cookie $http_cookie;\n        proxy_set_header Proxy-Connection \"\";\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n  \n\t\t# 接受支付宝支付成功异步回调\n        location /payed/ {\n\t\t   proxy_set_header Host order.lejing.com;#把内网穿透过来的请求改为order.lejing.com;\n           proxy_pass http://order.lejing.com/payed/;#接受支付宝异步通知的POST接口\n        }\n\n        location / {\n           proxy_pass http://localhost:88/api;\n        }\n\n        error_page  404              /404.html;\n\n        error_page   500 502 503 504  /50x.html;\n  \n        location = /50x.html {\n            root   html;\n        }\n    }\n}\n```\n\n# 9 增加目前主流的web excel处理示例\n\n详见：`lejing-order/doc/关于Excel导出示例说明.md`\n\n![image-20210710221552613](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210710221552613.png)\n\n## 9.1 大数据量excel文件导出，`5W~100W`数据量\n\n## 9.2 excel文件预览\n\n# 10 接入`Torna` `API`文档管理工具，完美融合`smart-doc`\n\n\u003e 全程无需手写文档，执行maven插件即可\n\u003e\n\u003e ![image-20210717232437120](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210717232437120.png)\n\n文档效果：\n\n![image-20210717230458352](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210717230458352.png)\n\n![image-20210717230515865](https://alphahub-test-bucket.oss-cn-shanghai.aliyuncs.com/image/image-20210717230515865.png)\n\n## 10.1 `SQL`文件: `sql/torna.sql`\n\n## 10.2 安装shell脚本: `shell/run_torna_install.sh`\n\n# 11 `github`敏感配置文件提交解决办法\n\n[参考链接](https://surest.cn/archives/169/)\n\n`cd`到项目根路径执行`shell`脚本：\n\n```shell\nclear \\\n\u0026\u0026 git filter-branch --force --index-filter \"git rm -rf --cached --ignore-unmatch filename\" --prune-empty --tag-name-filter cat -- --all \\\n\u0026\u0026 rm -rfv .git/refs/original \\\n\u0026\u0026 git reflog expire --expire=now --all \\\n\u0026\u0026 git gc --prune=now \\\n\u0026\u0026 git push --force\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweasley-j%2Flejing-mall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweasley-j%2Flejing-mall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweasley-j%2Flejing-mall/lists"}