Browse Source

项目更新20220219

VEAR 3 years ago
parent
commit
aeb7f66a1c
49 changed files with 2825 additions and 240 deletions
  1. 2 43
      README.md
  2. 2 27
      doc/script/test/nginx.conf
  3. 43 0
      doc/sql/Blade版权申明.md
  4. 376 0
      doc/sql/mysql/t-dev.sql
  5. 12 0
      doc/开发手册.md
  6. 93 0
      doc/运维手册.md
  7. 21 0
      src/main/java/org/springblade/common/constant/CommonConstant.java
  8. 5 0
      src/main/java/org/springblade/common/enums/DictBizEnum.java
  9. 86 152
      src/main/java/org/springblade/modules/api/controller/Api01Controller.java
  10. 377 0
      src/main/java/org/springblade/modules/api/controller/Api03Controller.java
  11. 1 1
      src/main/java/org/springblade/modules/api/controller/Api04Controller.java
  12. 46 0
      src/main/java/org/springblade/modules/api/request/UserAppUpdateRequest.java
  13. 86 0
      src/main/java/org/springblade/modules/api/request/UserBankCardsSaveRequest.java
  14. 77 0
      src/main/java/org/springblade/modules/api/request/UserBankCardsUpdateRequest.java
  15. 0 1
      src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java
  16. 126 0
      src/main/java/org/springblade/modules/platform/controller/BanksController.java
  17. 126 0
      src/main/java/org/springblade/modules/platform/controller/UserBankCardsController.java
  18. 126 0
      src/main/java/org/springblade/modules/platform/controller/UserRecomController.java
  19. 34 0
      src/main/java/org/springblade/modules/platform/dto/BanksDTO.java
  20. 34 0
      src/main/java/org/springblade/modules/platform/dto/UserBankCardsDTO.java
  21. 34 0
      src/main/java/org/springblade/modules/platform/dto/UserRecomDTO.java
  22. 77 0
      src/main/java/org/springblade/modules/platform/entity/Banks.java
  23. 115 0
      src/main/java/org/springblade/modules/platform/entity/UserBankCards.java
  24. 70 0
      src/main/java/org/springblade/modules/platform/entity/UserRecom.java
  25. 42 0
      src/main/java/org/springblade/modules/platform/mapper/BanksMapper.java
  26. 20 0
      src/main/java/org/springblade/modules/platform/mapper/BanksMapper.xml
  27. 42 0
      src/main/java/org/springblade/modules/platform/mapper/UserBankCardsMapper.java
  28. 22 0
      src/main/java/org/springblade/modules/platform/mapper/UserBankCardsMapper.xml
  29. 42 0
      src/main/java/org/springblade/modules/platform/mapper/UserRecomMapper.java
  30. 19 0
      src/main/java/org/springblade/modules/platform/mapper/UserRecomMapper.xml
  31. 41 0
      src/main/java/org/springblade/modules/platform/service/IBanksService.java
  32. 41 0
      src/main/java/org/springblade/modules/platform/service/IUserBankCardsService.java
  33. 41 0
      src/main/java/org/springblade/modules/platform/service/IUserRecomService.java
  34. 41 0
      src/main/java/org/springblade/modules/platform/service/impl/BanksServiceImpl.java
  35. 41 0
      src/main/java/org/springblade/modules/platform/service/impl/UserBankCardsServiceImpl.java
  36. 41 0
      src/main/java/org/springblade/modules/platform/service/impl/UserRecomServiceImpl.java
  37. 36 0
      src/main/java/org/springblade/modules/platform/vo/BanksVO.java
  38. 54 0
      src/main/java/org/springblade/modules/platform/vo/UserBankCardsVO.java
  39. 54 0
      src/main/java/org/springblade/modules/platform/vo/UserRecomVO.java
  40. 62 0
      src/main/java/org/springblade/modules/platform/wrapper/UserBankCardsWrapper.java
  41. 58 0
      src/main/java/org/springblade/modules/platform/wrapper/UserRecomWrapper.java
  42. 23 4
      src/main/java/org/springblade/modules/system/entity/UserApp.java
  43. 1 0
      src/main/java/org/springblade/modules/system/service/IUserService.java
  44. 27 11
      src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
  45. 74 0
      src/main/java/org/springblade/modules/system/vo/UserAppVO.java
  46. 10 0
      src/main/java/sql/banks.menu.mysql
  47. 10 0
      src/main/java/sql/userbankcards.menu.mysql
  48. 10 0
      src/main/java/sql/userrecom.menu.mysql
  49. 4 1
      src/main/resources/application.yml

+ 2 - 43
README.md

@@ -1,43 +1,2 @@
-## 版权声明
-* BladeX是一个商业化软件,系列产品知识产权归**上海布雷德网络科技**独立所有
-* 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款
-* 更多详情请看:[BladeX商业授权许可协议](/LICENSE)
-
-## 答疑流程
->1. 遇到问题或Bug
->2. 业务型问题打断点调试尝试找出问题所在
->3. 系统型问题通过百度、谷歌、社区查找解决方案
->4. 未解决问题则进入技术社区进行发帖提问:[https://sns.bladex.vip/](https://sns.bladex.vip/)
->5. 将帖子地址发至商业群,特别简单三言两语就能描述清楚的也可在答疑时间内发至商业群提问
->6. 发帖的时候一定要描述清楚,详细描述遇到问题的**重现步骤**、**报错详细信息**、**相关代码与逻辑**、**使用软件版本**以及**操作系统版本**,否则随意发帖提问将会提高我们的答疑难度。
-
-## 答疑时间
-* 工作日:9:00 ~ 17:00 提供答疑,周末、节假日休息,暂停答疑
-* 请勿**私聊提问**,以免被其他用户的消息覆盖从而无法获得答疑
-* 答疑时间外遇到问题可以将问题发帖至[技术社区](https://sns.bladex.vip/),我们后续会逐个回复
-
-## 授权范围
-* 专业版:只可用于**个人学习**及**个人私活**项目,不可用于公司或团队,不可泄露给任何第三方
-* 企业版:可用于**企业名下**的任何项目,企业版员工在**未购买**专业版授权前,只授权开发**所在授权企业名下**的项目,**不得将BladeX用于个人私活**
-* 共同遵守:若甲方需要您提供项目源码,则需代为甲方购买BladeX企业授权,甲方购买后续的所有项目都无需再次购买授权
-
-## 商用权益
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,将BladeX系列产品用于授权范围内的商用项目,并上线运营
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,不限制项目数,不限制服务器数
-* ✔️ 遵守[商业协议](/LICENSE)的前提下,将自行编写的业务代码申请软件著作权
-
-## 何为侵权
-* ❌ 不遵守商业协议,私自销售商业源码
-* ❌ 以任何理由将BladeX源码用于申请软件著作权
-* ❌ 将商业源码以任何途径任何理由泄露给未授权的单位或个人
-* ❌ 开发完毕项目,没有为甲方购买企业授权,向甲方提供了BladeX代码
-* ❌ 基于BladeX拓展研发与BladeX有竞争关系的衍生框架,并将其开源或销售
-
-## 侵权后果
-* 情节较轻:第一次发现警告处理
-* 情节较重:封禁账号,踢出商业群,并保留追究法律责任的权利
-* 情节严重:与本地律师事务所合作,以公司名义起诉侵犯计算机软件著作权
-
-## 举报有奖
-* 向官方提供有用线索并成功捣毁盗版个人或窝点,将会看成果给予 500~10000 不等的现金奖励
-* 官方唯一指定QQ:1272154962
+## 项目简介
+    商城寄售项目,包含商城、寄售

+ 2 - 27
doc/script/test/nginx.conf

@@ -32,28 +32,17 @@ http {
 
     #gzip  on;
 
-    upstream gateway1 {
+    upstream gateway {
         # 接口访问地址
         server 172.26.218.204:8800;
     }
 
-    upstream gateway2 {
-        # 接口访问地址
-        server 172.26.218.204:8801;
-    }
-
     server {
         listen       80;
         server_name  wine.gzzzyd.com;
         rewrite ^/(.*)$ https://wine.gzzzyd.com:443/$1 permanent;
     }
 
-    server {
-        listen       8080;
-        server_name  wine.gzzzyd.com;
-        rewrite ^/(.*)$ https://wine.gzzzyd.com:443/$1 permanent;
-    }
-
     # another virtual host using mix of IP-, name-, and port-based configuration
 
     # HTTPS server
@@ -74,10 +63,6 @@ http {
             index  index.html index.htm;
         }
 
-        location /x {
-            index  index.html index.htm;
-        }
-
         # 接口访问地址 域名 + /api
         location ^~/api {
             proxy_set_header Host $host;
@@ -85,17 +70,7 @@ http {
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_buffering off;
             rewrite ^/api/(.*)$ /$1 break;
-            proxy_pass http://gateway1;
-        }
-
-        # 接口访问地址 域名 + /api
-        location ^~/apix {
-            proxy_set_header Host $host;
-            proxy_set_header X-Real-IP $remote_addr;
-            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-            proxy_buffering off;
-            rewrite ^/apix/(.*)$ /$1 break;
-            proxy_pass http://gateway2;
+            proxy_pass http://gateway;
         }
     }
 

+ 43 - 0
doc/sql/Blade版权申明.md

@@ -0,0 +1,43 @@
+## 版权声明
+* BladeX是一个商业化软件,系列产品知识产权归**上海布雷德网络科技**独立所有
+* 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款
+* 更多详情请看:[BladeX商业授权许可协议](/LICENSE)
+
+## 答疑流程
+>1. 遇到问题或Bug
+>2. 业务型问题打断点调试尝试找出问题所在
+>3. 系统型问题通过百度、谷歌、社区查找解决方案
+>4. 未解决问题则进入技术社区进行发帖提问:[https://sns.bladex.vip/](https://sns.bladex.vip/)
+>5. 将帖子地址发至商业群,特别简单三言两语就能描述清楚的也可在答疑时间内发至商业群提问
+>6. 发帖的时候一定要描述清楚,详细描述遇到问题的**重现步骤**、**报错详细信息**、**相关代码与逻辑**、**使用软件版本**以及**操作系统版本**,否则随意发帖提问将会提高我们的答疑难度。
+
+## 答疑时间
+* 工作日:9:00 ~ 17:00 提供答疑,周末、节假日休息,暂停答疑
+* 请勿**私聊提问**,以免被其他用户的消息覆盖从而无法获得答疑
+* 答疑时间外遇到问题可以将问题发帖至[技术社区](https://sns.bladex.vip/),我们后续会逐个回复
+
+## 授权范围
+* 专业版:只可用于**个人学习**及**个人私活**项目,不可用于公司或团队,不可泄露给任何第三方
+* 企业版:可用于**企业名下**的任何项目,企业版员工在**未购买**专业版授权前,只授权开发**所在授权企业名下**的项目,**不得将BladeX用于个人私活**
+* 共同遵守:若甲方需要您提供项目源码,则需代为甲方购买BladeX企业授权,甲方购买后续的所有项目都无需再次购买授权
+
+## 商用权益
+* ✔️ 遵守[商业协议](/LICENSE)的前提下,将BladeX系列产品用于授权范围内的商用项目,并上线运营
+* ✔️ 遵守[商业协议](/LICENSE)的前提下,不限制项目数,不限制服务器数
+* ✔️ 遵守[商业协议](/LICENSE)的前提下,将自行编写的业务代码申请软件著作权
+
+## 何为侵权
+* ❌ 不遵守商业协议,私自销售商业源码
+* ❌ 以任何理由将BladeX源码用于申请软件著作权
+* ❌ 将商业源码以任何途径任何理由泄露给未授权的单位或个人
+* ❌ 开发完毕项目,没有为甲方购买企业授权,向甲方提供了BladeX代码
+* ❌ 基于BladeX拓展研发与BladeX有竞争关系的衍生框架,并将其开源或销售
+
+## 侵权后果
+* 情节较轻:第一次发现警告处理
+* 情节较重:封禁账号,踢出商业群,并保留追究法律责任的权利
+* 情节严重:与本地律师事务所合作,以公司名义起诉侵犯计算机软件著作权
+
+## 举报有奖
+* 向官方提供有用线索并成功捣毁盗版个人或窝点,将会看成果给予 500~10000 不等的现金奖励
+* 官方唯一指定QQ:1272154962

File diff suppressed because it is too large
+ 376 - 0
doc/sql/mysql/t-dev.sql


+ 12 - 0
doc/开发手册.md

@@ -0,0 +1,12 @@
+# 请求参数
+
+    Blade-Auth: bearer (登录返回的token)
+    Authorization: Basic c3dvcmQ6c3dvcmRfc2VjcmV0
+    password: 21232f297a57a5a743894a0e4a801fc3(admin md5加密值)
+    Tenant-Id: 用户租户号, 示例:000000
+    
+# 请求路径
+
+    http://localhost:8800/doc.html
+
+    http://localhost:1888

+ 93 - 0
doc/运维手册.md

@@ -0,0 +1,93 @@
+## 环境准备
+
+## 工程设置
+
+## 项目部署
+
+## 辅助功能
+
+## 其他
+
+
+* BladeX的注册中心
+* 具体文档详见:https://nacos.io/zh-cn/docs/quick-start.html
+* docker部署详见:https://github.com/nacos-group/nacos-docker
+
+* NACOS开发路径
+    * 启动文件地址 ```E:\Xsoftware\Nacos\distribution\target\nacos-server-2.0.3\nacos\bin```
+    * 打包 ```mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U```
+    * 单机运行命令 ```startup.cmd -m standalone```
+    * 访问地址 ```http://127.0.0.1:8848/nacos```
+    * 端口占用:
+        * 查看端口占用情况 ```netstat -ano```
+        * 查找端口的PID ```tasklist|findstr 11924```
+        * 在“启动任务管理器”中“进程”查找PID右键结束进程
+
+
+* 访问Sagger地址
+    * 地址 ```http://localhost:18000/doc.html```
+* MQTT消息传输协议
+    * EMQ X 消息服务器文档地址: ```https://docs.emqx.cn/broker/v4.3/```
+    * 官方地址: ```https://www.emqx.com/zh/downloads?product=broker```
+
+## 阿里云企业物联网平台
+
+* 地址 ```https://iot.console.aliyun.com/lk/summary/new```
+* 设备证书 {
+  "ProductKey": "gh68rFwgh0C",
+  "DeviceName": "S0001",
+  "DeviceSecret": "33ccdec0db027dbd54d9ef13bb6bf175"
+  }
+* 阿里云物联网平台文档地址 ```https://help.aliyun.com/document_detail/189193.html```
+* 设备接入Link SDK ```https://help.aliyun.com/document_detail/97331.html```
+
+## centos8安装docker
+
+* 教程:```https://www.cnblogs.com/lhd1998/p/13297229.html```
+* 命令 :
+    * ```docker run -p 6379:6379 -v $PWD/data:/data -d redis redis-server --appendonly yes --requirepass "liquor123456"```
+
+```aidl
+#java
+export JAVA_HOME=/usr/java/jdk1.8.0_221
+export PATH=$JAVA_HOME/bin:$PATH
+export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
+```
+
+```nohup java -Xms1024m -Xmx1024m -jar blade-api.jar --spring.profiles.active=test > /dev/blade/null 2>&1 &```
+
+
+### 请求参数
+#### 登录授权
+```
+    --header
+    Authorization: Basic c3dvcmQ6c3dvcmRfc2VjcmV0
+    --param
+    tenantId: 888888
+    username: liquor
+    password: 9865ec7186deb56062c1f924963d992e
+```
+#### 地图定位参数
+```
+    {
+      "lat": 106.687601,
+      "lng": 26.568466,
+      "maxCount": 12,
+      "range": 10,
+      "userId": 0
+    }
+```
+
+## 处理xml文件sql符合
+
+```aidl
+    &lt;     <    小于号
+    &gt;     >    大于号
+    &amp;    &    和
+    &apos;   '    单引号
+    &quot;   "    双引号
+    &lt;=    <=   小于等于
+    &gt;=    >=   大于等于
+```
+微信支付
+在服务器上需要指定读取证书文件的绝对路径

+ 21 - 0
src/main/java/org/springblade/common/constant/CommonConstant.java

@@ -89,4 +89,25 @@ public interface CommonConstant {
 	 */
 	String DEFAULT_AVATAR = "user:default:avatar";
 
+	/**
+	 * 默认角色
+	 */
+	String DEFAULT_ROLD = "user:default:role";
+
+
+	/**
+	 * 默认部门
+	 */
+	String DEFAULT_DEPT = "user:default:dept";
+
+	/**
+	 * 默认岗位
+	 */
+	String DEFAULT_POST = "user:default:post";
+
+	/**
+	 * 默认信誉分
+	 */
+	String DEFAULT_CREDIT_SCORE = "user:default:creditScore";
+
 }

+ 5 - 0
src/main/java/org/springblade/common/enums/DictBizEnum.java

@@ -32,6 +32,11 @@ public enum DictBizEnum {
 	 * 测试
 	 */
 	TEST("test"),
+
+	/**
+	 * 用户状态
+	 */
+	USER_STATE("user_state"),
 	;
 
 	final String name;

+ 86 - 152
src/main/java/org/springblade/modules/api/controller/Api01Controller.java

@@ -16,7 +16,6 @@
  */
 package org.springblade.modules.api.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -27,31 +26,25 @@ import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.log.annotation.ApiLog;
-import org.springblade.core.mp.support.Condition;
-import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.WebUtil;
-import org.springblade.modules.api.request.AddressSaveRequest;
-import org.springblade.modules.api.request.AddressUpdateRequest;
-import org.springblade.modules.api.request.UserFeedbacksSaveRequest;
+import org.springblade.modules.auth.enums.UserEnum;
+import org.springblade.modules.auth.provider.ITokenGranter;
+import org.springblade.modules.auth.provider.TokenGranterBuilder;
+import org.springblade.modules.auth.provider.TokenParameter;
 import org.springblade.modules.auth.utils.TokenUtil;
-import org.springblade.modules.platform.entity.Ads;
-import org.springblade.modules.platform.entity.Payments;
 import org.springblade.modules.platform.entity.UserAddress;
-import org.springblade.modules.platform.entity.UserFeedbacks;
-import org.springblade.modules.platform.service.IAdsService;
-import org.springblade.modules.platform.service.IPaymentsService;
-import org.springblade.modules.platform.service.IUserAddressService;
-import org.springblade.modules.platform.service.IUserFeedbacksService;
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.service.*;
 import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.entity.UserInfo;
 import org.springblade.modules.system.service.IUserService;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-import java.util.List;
-import java.util.Objects;
+import javax.servlet.http.HttpServletResponse;
 
 import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
 
@@ -64,7 +57,7 @@ import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
 @RestController
 @AllArgsConstructor
 @RequestMapping(CommonConstant.API_URL)
-@Api(value = "1", tags = "平台模块")
+@Api(value = "1", tags = "登录注册")
 public class Api01Controller extends BladeController {
 
 	private final IUserAddressService userAddressService;
@@ -77,17 +70,23 @@ public class Api01Controller extends BladeController {
 
 	private final IUserService userService;
 
+	private final IUserRecomService userRecomService;
+
 	@ApiLog("用户注册")
 	@PostMapping("/user-register")
 	@ApiOperationSupport(order = 1)
 	@ApiOperation(value = "用户注册", notes = "手机号注册")
-	public R userRegister(@ApiParam(value = "邀请码", required = true) @RequestParam(value = "code", required = false) String code,
-					  @ApiParam(value = "手机号", required = true) @RequestParam(value = "phone", required = false) String phone,
-					  @ApiParam(value = "密码", required = true) @RequestParam(value = "password", required = false) String password){
-		CacheUtil.clear(USER_CACHE);
-		User query = userService.getOne(Wrappers.<User>query().lambda().eq(User::getCode, code));
+	public R userRegister(@ApiParam(value = "邀请码", required = true) @RequestParam(value = "code", required = false) String inviteCode,
+						  @ApiParam(value = "手机号", required = true) @RequestParam(value = "phone", required = false) String phone,
+						  @ApiParam(value = "验证码", required = true) @RequestParam(value = "phone", required = false) String captchaCode,
+						  @ApiParam(value = "密码", required = true) @RequestParam(value = "password", required = false) String password){
+		User query = userService.getOne(Wrappers.<User>query().lambda().eq(User::getCode, inviteCode));
 		if (query == null){
-			return R.fail("邀请码输入错误");
+			return R.fail("邀请码输入错误!");
+		}
+		User query1 = userService.getOne(Wrappers.<User>query().lambda().eq(User::getAccount, phone));
+		if (query1 != null){
+			return R.fail("手机号已注册!");
 		}
 		String tenantId = WebUtil.getRequest().getHeader(TokenUtil.TENANT_HEADER_KEY);
 		User user = new User();
@@ -97,143 +96,78 @@ public class Api01Controller extends BladeController {
 		String startStr = phone.substring(0,3);
 		String endStr = phone.substring(phone.length()- 2);
 		user.setName(startStr + "*****" + endStr);
-		return R.status(userService.registerApp(user, query.getId()));
-	}
-
-	/**
-	 * 用户地址分页查询
-	 */
-	@GetMapping("/userAddress-page")
-	@ApiOperationSupport(order = 1)
-	@ApiOperation(value = "用户地址分页查询", notes = "传入用户ID")
-	public R<IPage<UserAddress>> userAddressPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
-		UserAddress userAddress = new UserAddress();
-		userAddress.setUserId(userId);
-		IPage<UserAddress> list = userAddressService.page(Condition.getPage(query), Condition.getQueryWrapper(userAddress));
-		return R.data(list);
+		CacheUtil.clear(USER_CACHE);
+		boolean flg = userService.registerApp(user, query.getId());
+		if (flg){
+			//添加用户推荐记录表数据
+			query1 = userService.getOne(Wrappers.<User>query().lambda().eq(User::getAccount, phone));
+			UserRecom userRecom = new UserRecom();
+			userRecom.setUserId(query1.getId());
+			userRecom.setRecomId(query.getId());
+			userRecom.setCreateTime(DateUtil.now());
+			userRecomService.save(userRecom);
+			return R.success("注册成功");
+		}else{
+			return R.success("注册失败");
+		}
 	}
 
-	/**
-	 * 用户地址详情
-	 */
-	@GetMapping("/userAddress-detailById")
+	@ApiLog("登录用户验证-账号密码")
+	@PostMapping("/login_account")
 	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "用户地址详情", notes = "传入地址ID")
-	public R<UserAddress> userAddressDetailById(@ApiParam(value = "地址ID", required = true) @RequestParam String id) {
-		return R.data(userAddressService.getById(id));
-	}
-
-	/**
-	 * 用户默认地址
-	 */
-	@GetMapping("/userAddress-detailByUserId")
-	@ApiOperationSupport(order = 3)
-	@ApiOperation(value = "用户默认地址", notes = "传入用户ID")
-	public R<UserAddress> userAddressDetailByUserId(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId) {
-		UserAddress userAddress = new UserAddress();
-		userAddress.setUserId(userId);
-		userAddress.setDefaultState(2);//默认标识
-		return R.data(userAddressService.getOne(Condition.getQueryWrapper(userAddress)));
-	}
-
-	/**
-	 * 添加用户地址
-	 */
-	@PostMapping("/userAddress-save")
-	@ApiOperationSupport(order = 4)
-	@ApiOperation(value = "添加用户地址", notes = "添加用户地址")
-	public R userAddressSave(@Valid @RequestBody AddressSaveRequest request) {
-		UserAddress userAddress = Objects.requireNonNull(BeanUtil.copy(request, UserAddress.class));
-		userAddress.setCreateTime(DateUtil.now());
-		//设置默认地址
-		if (userAddress.getDefaultState() == 2){
-			//用户所有的改为不默认
-			UserAddress param = new UserAddress();
-			param.setUserId(request.getUserId());
-			UserAddress entity= new UserAddress();
-			entity.setDefaultState(1);
-			userAddressService.update(entity, Condition.getQueryWrapper(param));
+	@ApiOperation(value = "账号密码登录", notes = "传入租户ID:tenantId,账号:account,密码:password")
+	public R accountLogin(@ApiParam(value = "租户ID", required = true) @RequestParam String tenantId,
+						  @ApiParam(value = "账号", required = true) @RequestParam String username,
+						  @ApiParam(value = "密码", required = true) @RequestParam String password) {
+
+		String grantType = WebUtil.getRequest().getParameter("grant_type");
+		String refreshToken = WebUtil.getRequest().getParameter("refresh_token");
+		String userType = Func.toStr(WebUtil.getRequest().getHeader(TokenUtil.USER_TYPE_HEADER_KEY), UserEnum.APP.getName());
+		TokenParameter tokenParameter = new TokenParameter();
+		tokenParameter.getArgs().set("tenantId", tenantId)
+			.set("username", username)
+			.set("password", password)
+			.set("grantType", grantType)
+			.set("refreshToken", refreshToken)
+			.set("userType", userType);
+		ITokenGranter granter = TokenGranterBuilder.getGranter(grantType);
+		UserInfo userInfo = granter.grant(tokenParameter);
+		if (userInfo == null || userInfo.getUser() == null) {
+			return R.fail("用户名或密码不正确");
 		}
-		return R.status(userAddressService.save(userAddress));
+		return R.data(TokenUtil.createAuthInfo(userInfo));
 	}
 
-	/**
-	 * 修改用户地址
-	 */
-	@PostMapping("/userAddress-update")
-	@ApiOperationSupport(order = 5)
-	@ApiOperation(value = "修改用户收货地址", notes = "修改用户地址")
-	public R userAddressUpdate(@Valid @RequestBody AddressUpdateRequest request) {
-		UserAddress userAddress = Objects.requireNonNull(BeanUtil.copy(request, UserAddress.class));
-		userAddress.setUpdateTime(DateUtil.now());
-		if (userAddress.getDefaultState() == 2){
-			UserAddress entity= new UserAddress();
-			entity.setDefaultState(1);
-			UserAddress param = new UserAddress();
-			param.setUserId(request.getUserId());
-			userAddressService.update(entity, Condition.getQueryWrapper(param));
+	@ApiLog("登录用户验证-手机验证码登录")
+	@PostMapping("/login_phone")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "手机验证码登录", notes = "传入租户ID:tenantId,账号:account,密码:password")
+	public Kv phoneLogin(@ApiParam(value = "租户ID", required = true) @RequestParam String tenantId,
+					@ApiParam(value = "账号", required = true) @RequestParam String username,
+					@ApiParam(value = "密码", required = true) @RequestParam String password) {
+
+		Kv authInfo = Kv.create();
+		String grantType = WebUtil.getRequest().getParameter("grant_type");
+		String refreshToken = WebUtil.getRequest().getParameter("refresh_token");
+
+		String userType = Func.toStr(WebUtil.getRequest().getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE);
+
+		TokenParameter tokenParameter = new TokenParameter();
+		tokenParameter.getArgs().set("tenantId", tenantId)
+			.set("username", username)
+			.set("password", password)
+			.set("grantType", grantType)
+			.set("refreshToken", refreshToken)
+			.set("userType", userType);
+
+		ITokenGranter granter = TokenGranterBuilder.getGranter(grantType);
+		UserInfo userInfo = granter.grant(tokenParameter);
+		if (userInfo == null || userInfo.getUser() == null) {
+			return authInfo.set("error_code", HttpServletResponse.SC_BAD_REQUEST).set("error_description", "用户名或密码不正确");
 		}
-		return R.status(userAddressService.updateById(userAddress));
+		return TokenUtil.createAuthInfo(userInfo);
 	}
 
-	/**
-	 * 获取广告列表数据
-	 */
-	@GetMapping("/ads-list")
-	@ApiOperationSupport(order = 6)
-	@ApiOperation(value = "获取广告列表数据", notes = "传入类型和条数")
-	public R<List<Ads>> adsList(@ApiParam(value = "类型", required = true)  @RequestParam Integer type,
-								@ApiParam(value = "条数", required = true)  @RequestParam Integer limit) {
-		return R.data(adsService.selectAdsList(type, limit));
-	}
-
-	/**
-	 * 获取支付方式数据
-	 */
-	@GetMapping("/payments-list")
-	@ApiOperationSupport(order = 7)
-	@ApiOperation(value = "获取支付方式数据", notes = "无参")
-	public R<List<Payments>> paymentsList() {
-		Payments payments = new Payments();
-		payments.setIsEnabled(2);
-		payments.setPayFor(4);//APP端
-		return R.data(paymentsService.list(Condition.getQueryWrapper(payments).lambda().orderByAsc(Payments::getSort)));
-	}
 
-	/**
-	 * 反馈意见分页查询
-	 */
-	@GetMapping("/userFeedbacks-page")
-	@ApiOperationSupport(order = 8)
-	@ApiOperation(value = "反馈意见分页查询", notes = "传入用户ID")
-	public R<IPage<UserFeedbacks>> userFeedbacksPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
-		UserFeedbacks userFeedbacks = new UserFeedbacks();
-		userFeedbacks.setUserId(userId);
-		IPage<UserFeedbacks> list = userFeedbacksService.page(Condition.getPage(query),
-			Condition.getQueryWrapper(userFeedbacks).lambda().orderByAsc(UserFeedbacks::getCreateTime));
-		return R.data(list);
-	}
-
-	/**
-	 * 反馈意见详情
-	 */
-	@GetMapping("/userFeedbacks-detailById")
-	@ApiOperationSupport(order = 9)
-	@ApiOperation(value = "反馈意见详情", notes = "传入意见ID")
-	public R<UserFeedbacks> userFeedbacksDetailById(@ApiParam(value = "意见ID", required = true) @RequestParam String id) {
-		return R.data(userFeedbacksService.getById(id));
-	}
-
-	/**
-	 * 添加反馈意见
-	 */
-	@PostMapping("/userFeedbacks-save")
-	@ApiOperationSupport(order = 10)
-	@ApiOperation(value = "添加反馈意见", notes = "添加反馈意见")
-	public R userFeedbacksSave(@Valid @RequestBody UserFeedbacksSaveRequest request) {
-		UserFeedbacks userFeedbacks = Objects.requireNonNull(BeanUtil.copy(request, UserFeedbacks.class));
-		userFeedbacks.setCreateTime(DateUtil.now());
-		return R.status(userFeedbacksService.save(userFeedbacks));
-	}
 
 }

+ 377 - 0
src/main/java/org/springblade/modules/api/controller/Api03Controller.java

@@ -0,0 +1,377 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.api.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.common.cache.DictBizCache;
+import org.springblade.common.cache.DictCache;
+import org.springblade.common.cache.SysCache;
+import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.enums.DictBizEnum;
+import org.springblade.common.enums.DictEnum;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.modules.api.request.*;
+import org.springblade.modules.platform.entity.*;
+import org.springblade.modules.platform.service.*;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import org.springblade.modules.platform.wrapper.UserBankCardsWrapper;
+import org.springblade.modules.platform.wrapper.UserRecomWrapper;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.entity.UserApp;
+import org.springblade.modules.system.mapper.UserAppMapper;
+import org.springblade.modules.system.service.IUserService;
+import org.springblade.modules.system.vo.UserAppVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 控制器
+ *
+ * @author xuwei
+ * @since 2022-02-12
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping(CommonConstant.API_URL)
+@Api(value = "3", tags = "平台模块")
+public class Api03Controller extends BladeController {
+
+	private final IUserAddressService userAddressService;
+
+	private final IAdsService adsService;
+
+	private final IPaymentsService paymentsService;
+
+	private final IUserFeedbacksService userFeedbacksService;
+
+	private final IUserService userService;
+
+	private final IUserRecomService userRecomService;
+
+	private final UserAppMapper userAppMapper;
+
+	private final IUserBankCardsService userBankCardsService;
+
+	private final BladeRedis bladeRedis;
+
+	/**
+	 * 获取用户信息
+	 */
+	@GetMapping("/userApp-detailById")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "获取用户信息", notes = "传入用户ID")
+	public R<UserAppVO> userDetailById(@ApiParam(value = "用户ID", required = true) @RequestParam Long id) {
+		UserAppVO redisVo = bladeRedis.get(String.valueOf(id));
+		if (redisVo != null){
+			return R.data(redisVo);
+		}
+		UserApp userApp = new UserApp();
+		UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, id));
+		if (query == null){
+			return R.fail("用户不存在!");
+		}
+		UserAppVO vo = Objects.requireNonNull(BeanUtil.copy(query,UserAppVO.class));
+		User user = userService.getById(id);
+		if (user == null){
+			return R.fail("用户不存在!");
+		}
+		vo.setCode(user.getCode());
+		vo.setAvatar(user.getAvatar());
+		vo.setRealName(user.getRealName());
+		vo.setName(user.getName());
+		vo.setSexDisplayName(DictCache.getValue(DictEnum.SEX,user.getSex()));
+		vo.setStateDisplayName(DictBizCache.getValue(DictBizEnum.USER_STATE,query.getState()));
+		bladeRedis.setEx(String.valueOf(id),vo, 60L);
+		return R.data(vo);
+	}
+
+	/**
+	 * 修改昵称和头像
+	 */
+	@PostMapping("/user-updateById")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "修改昵称和头像", notes = "传入用户ID")
+	public R userUpdateById(@Valid @RequestBody UserAppUpdateRequest request) {
+		User user = new User();
+		user.setId(request.getUserId());
+		user.setName(request.getName());
+		user.setAvatar(request.getAvatar());
+		boolean flg = userService.updateById(user);
+		if (flg){
+			//清除缓存
+			bladeRedis.del(String.valueOf(request.getUserId()));
+			return R.success("操作成功");
+		}
+		return R.fail("操作失败");
+	}
+
+	/**
+	 * 修改简介说明
+	 */
+	@PostMapping("/userApp-updateByUserId")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "修改简介说明", notes = "传入用户ID")
+	public R userAppUpdateByUserId(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId,
+								@ApiParam(value = "简介说明", required = true) @RequestParam String userExplain) {
+		UserApp userApp = new UserApp();
+		userApp.setUserExplain(userExplain);
+		boolean flg = userApp.update(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId,userId));
+		if (flg){
+			//清除缓存
+			bladeRedis.del(String.valueOf(userId));
+			return R.success("操作成功");
+		}
+		return R.fail("操作失败");
+	}
+
+	/**
+	 * 用户地址分页查询
+	 */
+	@GetMapping("/userAddress-page")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "用户地址分页查询", notes = "传入用户ID")
+	public R<IPage<UserAddress>> userAddressPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
+		UserAddress userAddress = new UserAddress();
+		userAddress.setUserId(userId);
+		IPage<UserAddress> list = userAddressService.page(Condition.getPage(query), Condition.getQueryWrapper(userAddress));
+		return R.data(list);
+	}
+
+	/**
+	 * 用户地址详情
+	 */
+	@GetMapping("/userAddress-detailById")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "用户地址详情", notes = "传入地址ID")
+	public R<UserAddress> userAddressDetailById(@ApiParam(value = "地址ID", required = true) @RequestParam String id) {
+		return R.data(userAddressService.getById(id));
+	}
+
+	/**
+	 * 用户默认地址
+	 */
+	@GetMapping("/userAddress-detailByUserId")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "用户默认地址", notes = "传入用户ID")
+	public R<UserAddress> userAddressDetailByUserId(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId) {
+		UserAddress userAddress = new UserAddress();
+		userAddress.setUserId(userId);
+		userAddress.setDefaultState(2);//默认标识
+		return R.data(userAddressService.getOne(Condition.getQueryWrapper(userAddress)));
+	}
+
+	/**
+	 * 添加用户地址
+	 */
+	@PostMapping("/userAddress-save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "添加用户地址", notes = "添加用户地址")
+	public R userAddressSave(@Valid @RequestBody AddressSaveRequest request) {
+		UserAddress userAddress = Objects.requireNonNull(BeanUtil.copy(request, UserAddress.class));
+		userAddress.setCreateTime(DateUtil.now());
+		//设置默认地址
+		if (userAddress.getDefaultState() == 2){
+			//用户所有的改为不默认
+			UserAddress param = new UserAddress();
+			param.setUserId(request.getUserId());
+			UserAddress entity= new UserAddress();
+			entity.setDefaultState(1);
+			userAddressService.update(entity, Condition.getQueryWrapper(param));
+		}
+		return R.status(userAddressService.save(userAddress));
+	}
+
+	/**
+	 * 修改用户地址
+	 */
+	@PostMapping("/userAddress-update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改用户收货地址", notes = "修改用户地址")
+	public R userAddressUpdate(@Valid @RequestBody AddressUpdateRequest request) {
+		UserAddress userAddress = Objects.requireNonNull(BeanUtil.copy(request, UserAddress.class));
+		userAddress.setUpdateTime(DateUtil.now());
+		if (userAddress.getDefaultState() == 2){
+			UserAddress entity= new UserAddress();
+			entity.setDefaultState(1);
+			UserAddress param = new UserAddress();
+			param.setUserId(request.getUserId());
+			userAddressService.update(entity, Condition.getQueryWrapper(param));
+		}
+		return R.status(userAddressService.updateById(userAddress));
+	}
+
+	/**
+	 * 获取广告列表数据
+	 */
+	@GetMapping("/ads-list")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "获取广告列表数据", notes = "传入类型和条数")
+	public R<List<Ads>> adsList(@ApiParam(value = "类型", required = true)  @RequestParam Integer type,
+								@ApiParam(value = "条数", required = true)  @RequestParam Integer limit) {
+		return R.data(adsService.selectAdsList(type, limit));
+	}
+
+	/**
+	 * 获取支付方式数据
+	 */
+	@GetMapping("/payments-list")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "获取支付方式数据", notes = "无参")
+	public R<List<Payments>> paymentsList() {
+		Payments payments = new Payments();
+		payments.setIsEnabled(2);
+		payments.setPayFor(4);//APP端
+		return R.data(paymentsService.list(Condition.getQueryWrapper(payments).lambda().orderByAsc(Payments::getSort)));
+	}
+
+	/**
+	 * 反馈意见分页查询
+	 */
+	@GetMapping("/userFeedbacks-page")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "反馈意见分页查询", notes = "传入用户ID")
+	public R<IPage<UserFeedbacks>> userFeedbacksPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
+		UserFeedbacks userFeedbacks = new UserFeedbacks();
+		userFeedbacks.setUserId(userId);
+		IPage<UserFeedbacks> list = userFeedbacksService.page(Condition.getPage(query),
+			Condition.getQueryWrapper(userFeedbacks).lambda().orderByAsc(UserFeedbacks::getCreateTime));
+		return R.data(list);
+	}
+
+	/**
+	 * 反馈意见详情
+	 */
+	@GetMapping("/userFeedbacks-detailById")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "反馈意见详情", notes = "传入意见ID")
+	public R<UserFeedbacks> userFeedbacksDetailById(@ApiParam(value = "意见ID", required = true) @RequestParam String id) {
+		return R.data(userFeedbacksService.getById(id));
+	}
+
+	/**
+	 * 添加反馈意见
+	 */
+	@PostMapping("/userFeedbacks-save")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "添加反馈意见", notes = "添加反馈意见")
+	public R userFeedbacksSave(@Valid @RequestBody UserFeedbacksSaveRequest request) {
+		UserFeedbacks userFeedbacks = Objects.requireNonNull(BeanUtil.copy(request, UserFeedbacks.class));
+		userFeedbacks.setCreateTime(DateUtil.now());
+		return R.status(userFeedbacksService.save(userFeedbacks));
+	}
+
+
+	/**
+	 * 用户推荐记录分页查询
+	 */
+	@GetMapping("/userRecom-page")
+	@ApiOperationSupport(order = 11)
+	@ApiOperation(value = "用户推荐记录分页查询", notes = "传入用户ID")
+	public R<IPage<UserRecomVO>> userRecomPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
+		UserRecom userRecom = new UserRecom();
+		userRecom.setUserId(userId);
+		IPage<UserRecom> list = userRecomService.page(Condition.getPage(query),
+			Condition.getQueryWrapper(userRecom).lambda().orderByAsc(UserRecom::getCreateTime));
+		return R.data(UserRecomWrapper.build().pageVO(list));
+	}
+
+	/**
+	 * 获取用户团队人数和直荐人员数据
+	 */
+	@GetMapping("/user-teamAndRecomById")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "获取用户团队人数和直荐人员数据", notes = "传入用户ID")
+	public R<Kv> userTeamAndRecomById(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId) {
+		Kv kv = Kv.create();
+		UserApp userApp = new UserApp();
+		Integer teamNum = userAppMapper.selectCount(Condition.getQueryWrapper(userApp).lambda().like(UserApp::getParentPath, userId));
+		userApp.setParentId(userId);
+		Integer recomNum = userAppMapper.selectCount(Condition.getQueryWrapper(userApp).lambda().eq(UserApp::getParentId, userId));
+		kv.set("teamNum",teamNum);
+		kv.set("recomNum", recomNum);
+		return R.data(kv);
+	}
+
+	/**
+	 * 用户银行卡分页查询
+	 */
+	@GetMapping("/userBankCards-page")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "用户银行卡分页查询", notes = "传入用户ID")
+	public R<IPage<UserBankCardsVO>> userBankCardsPage(@ApiParam(value = "用户ID", required = true) @RequestParam Long userId, Query query) {
+		UserBankCards userBankCards = new UserBankCards();
+		userBankCards.setUserId(userId);
+		IPage<UserBankCards> list = userBankCardsService.page(Condition.getPage(query),
+			Condition.getQueryWrapper(userBankCards).lambda().orderByAsc(UserBankCards::getSort));
+		return R.data(UserBankCardsWrapper.build().pageVO(list));
+	}
+
+	/**
+	 * 绑定银行卡
+	 */
+	@PostMapping("/userBankCards-save")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "绑定银行卡", notes = "绑定银行卡")
+	public R userBankCardsSave(@Valid @RequestBody UserBankCardsSaveRequest request) {
+		UserBankCards userBankCards = Objects.requireNonNull(BeanUtil.copy(request, UserBankCards.class));
+		userBankCards.setCreateTime(DateUtil.now());
+		userBankCards.setUpdateTime(DateUtil.now());
+		userBankCards.setSort(100);
+		return R.status(userBankCardsService.save(userBankCards));
+	}
+
+	/**
+	 * 绑定银行卡
+	 */
+	@PostMapping("/userBankCards-update")
+	@ApiOperationSupport(order = 15)
+	@ApiOperation(value = "修改银行卡", notes = "传入主键ID")
+	public R userBankCardsUpdate(@Valid @RequestBody UserBankCardsUpdateRequest request) {
+		UserBankCards userBankCards = Objects.requireNonNull(BeanUtil.copy(request, UserBankCards.class));
+		userBankCards.setUpdateTime(DateUtil.now());
+		return R.status(userBankCardsService.updateById(userBankCards));
+	}
+
+	/**
+	 * 银行卡详情
+	 */
+	@GetMapping("/userBankCards-detailById")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "银行卡详情", notes = "传入主键ID")
+	public R<UserBankCardsVO> userBankCardsDetailById(@ApiParam(value = "用户银行卡主键ID", required = true) @RequestParam String id) {
+		UserBankCards userBankCards = userBankCardsService.getById(id);
+		return R.data(UserBankCardsWrapper.build().entityVO(userBankCards));
+	}
+
+}

+ 1 - 1
src/main/java/org/springblade/modules/api/controller/App04Controller.java → src/main/java/org/springblade/modules/api/controller/Api04Controller.java

@@ -44,7 +44,7 @@ import org.springframework.web.multipart.MultipartFile;
 @AllArgsConstructor
 @RequestMapping(CommonConstant.API_URL + "/file")
 @Api(value = "文件管理", tags = "功能接口-04")
-public class App04Controller extends BladeController {
+public class Api04Controller extends BladeController {
 
 	private final OssBuilder ossBuilder;
 

+ 46 - 0
src/main/java/org/springblade/modules/api/request/UserAppUpdateRequest.java

@@ -0,0 +1,46 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.api.request;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@ApiModel(value = "UserAppVO对象", description = "UserAppVO对象")
+public class UserAppUpdateRequest implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private Long userId;
+
+	/**
+	 * 昵称
+	 */
+	private String name;
+
+	/**
+	 * 头像
+	 */
+	private String avatar;
+
+}

+ 86 - 0
src/main/java/org/springblade/modules/api/request/UserBankCardsSaveRequest.java

@@ -0,0 +1,86 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.api.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户银行卡信息表实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@ApiModel(value = "用户银行卡保存对象", description = "请求实体类")
+public class UserBankCardsSaveRequest implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 银行Id
+	 */
+	@ApiModelProperty(value = "银行Id")
+	private Long bankId;
+
+	/**
+	 * 用户Id
+	 */
+	@ApiModelProperty(value = "用户Id")
+	private Long userId;
+	/**
+	 * 账户姓名
+	 */
+	@ApiModelProperty(value = "账户姓名")
+	private String name;
+	/**
+	 * 银行开预留手机号
+	 */
+	@ApiModelProperty(value = "银行开预留手机号")
+	private String mobile;
+	/**
+	 * 身份证
+	 */
+	@ApiModelProperty(value = "身份证")
+	private String cardCode;
+	/**
+	 * 银行卡号
+	 */
+	@ApiModelProperty(value = "银行卡号")
+	private String backNo;
+
+	/**
+	 * 区域编号
+	 */
+	@ApiModelProperty(value = "区域编号")
+	private String areaCode;
+
+	/**
+	 * 区域名称
+	 */
+	@ApiModelProperty(value = "区域名称")
+	private String areaName;
+}

+ 77 - 0
src/main/java/org/springblade/modules/api/request/UserBankCardsUpdateRequest.java

@@ -0,0 +1,77 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.api.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 用户银行卡信息表实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@ApiModel(value = "用户银行卡保存对象", description = "请求实体类")
+public class UserBankCardsUpdateRequest implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键ID
+	 */
+	@ApiModelProperty(value = "主键ID")
+	private Long id;
+
+	/**
+	 * 银行Id
+	 */
+	@ApiModelProperty(value = "银行Id")
+	private Long bankId;
+
+	/**
+	 * 账户姓名
+	 */
+	@ApiModelProperty(value = "账户姓名")
+	private String name;
+	/**
+	 * 银行开预留手机号
+	 */
+	@ApiModelProperty(value = "银行开预留手机号")
+	private String mobile;
+
+	/**
+	 * 银行卡号
+	 */
+	@ApiModelProperty(value = "银行卡号")
+	private String backNo;
+
+	/**
+	 * 区域编号
+	 */
+	@ApiModelProperty(value = "区域编号")
+	private String areaCode;
+
+	/**
+	 * 区域名称
+	 */
+	@ApiModelProperty(value = "区域名称")
+	private String areaName;
+}

+ 0 - 1
src/main/java/org/springblade/modules/auth/granter/PasswordTokenGranter.java

@@ -112,5 +112,4 @@ public class PasswordTokenGranter implements ITokenGranter {
 		bladeRedis.del(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username));
 		return userInfo;
 	}
-
 }

+ 126 - 0
src/main/java/org/springblade/modules/platform/controller/BanksController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.platform.entity.Banks;
+import org.springblade.modules.platform.vo.BanksVO;
+import org.springblade.modules.platform.service.IBanksService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 银行表 控制器
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("platform/banks")
+@Api(value = "银行表", tags = "银行表接口")
+public class BanksController extends BladeController {
+
+	private final IBanksService banksService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入banks")
+	public R<Banks> detail(Banks banks) {
+		Banks detail = banksService.getOne(Condition.getQueryWrapper(banks));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 银行表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入banks")
+	public R<IPage<Banks>> list(Banks banks, Query query) {
+		IPage<Banks> pages = banksService.page(Condition.getPage(query), Condition.getQueryWrapper(banks));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 银行表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入banks")
+	public R<IPage<BanksVO>> page(BanksVO banks, Query query) {
+		IPage<BanksVO> pages = banksService.selectBanksPage(Condition.getPage(query), banks);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 银行表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入banks")
+	public R save(@Valid @RequestBody Banks banks) {
+		return R.status(banksService.save(banks));
+	}
+
+	/**
+	 * 修改 银行表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入banks")
+	public R update(@Valid @RequestBody Banks banks) {
+		return R.status(banksService.updateById(banks));
+	}
+
+	/**
+	 * 新增或修改 银行表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入banks")
+	public R submit(@Valid @RequestBody Banks banks) {
+		return R.status(banksService.saveOrUpdate(banks));
+	}
+
+	
+	/**
+	 * 删除 银行表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(banksService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 126 - 0
src/main/java/org/springblade/modules/platform/controller/UserBankCardsController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.platform.entity.UserBankCards;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import org.springblade.modules.platform.service.IUserBankCardsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 用户银行卡信息表 控制器
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("platform/userbankcards")
+@Api(value = "用户银行卡信息表", tags = "用户银行卡信息表接口")
+public class UserBankCardsController extends BladeController {
+
+	private final IUserBankCardsService userBankCardsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入userBankCards")
+	public R<UserBankCards> detail(UserBankCards userBankCards) {
+		UserBankCards detail = userBankCardsService.getOne(Condition.getQueryWrapper(userBankCards));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 用户银行卡信息表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入userBankCards")
+	public R<IPage<UserBankCards>> list(UserBankCards userBankCards, Query query) {
+		IPage<UserBankCards> pages = userBankCardsService.page(Condition.getPage(query), Condition.getQueryWrapper(userBankCards));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 用户银行卡信息表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入userBankCards")
+	public R<IPage<UserBankCardsVO>> page(UserBankCardsVO userBankCards, Query query) {
+		IPage<UserBankCardsVO> pages = userBankCardsService.selectUserBankCardsPage(Condition.getPage(query), userBankCards);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 用户银行卡信息表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入userBankCards")
+	public R save(@Valid @RequestBody UserBankCards userBankCards) {
+		return R.status(userBankCardsService.save(userBankCards));
+	}
+
+	/**
+	 * 修改 用户银行卡信息表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入userBankCards")
+	public R update(@Valid @RequestBody UserBankCards userBankCards) {
+		return R.status(userBankCardsService.updateById(userBankCards));
+	}
+
+	/**
+	 * 新增或修改 用户银行卡信息表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入userBankCards")
+	public R submit(@Valid @RequestBody UserBankCards userBankCards) {
+		return R.status(userBankCardsService.saveOrUpdate(userBankCards));
+	}
+
+	
+	/**
+	 * 删除 用户银行卡信息表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(userBankCardsService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 126 - 0
src/main/java/org/springblade/modules/platform/controller/UserRecomController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import org.springblade.modules.platform.service.IUserRecomService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 用户推荐记录表 控制器
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("platform/userrecom")
+@Api(value = "用户推荐记录表", tags = "用户推荐记录表接口")
+public class UserRecomController extends BladeController {
+
+	private final IUserRecomService userRecomService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入userRecom")
+	public R<UserRecom> detail(UserRecom userRecom) {
+		UserRecom detail = userRecomService.getOne(Condition.getQueryWrapper(userRecom));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 用户推荐记录表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入userRecom")
+	public R<IPage<UserRecom>> list(UserRecom userRecom, Query query) {
+		IPage<UserRecom> pages = userRecomService.page(Condition.getPage(query), Condition.getQueryWrapper(userRecom));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 用户推荐记录表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入userRecom")
+	public R<IPage<UserRecomVO>> page(UserRecomVO userRecom, Query query) {
+		IPage<UserRecomVO> pages = userRecomService.selectUserRecomPage(Condition.getPage(query), userRecom);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 用户推荐记录表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入userRecom")
+	public R save(@Valid @RequestBody UserRecom userRecom) {
+		return R.status(userRecomService.save(userRecom));
+	}
+
+	/**
+	 * 修改 用户推荐记录表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入userRecom")
+	public R update(@Valid @RequestBody UserRecom userRecom) {
+		return R.status(userRecomService.updateById(userRecom));
+	}
+
+	/**
+	 * 新增或修改 用户推荐记录表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入userRecom")
+	public R submit(@Valid @RequestBody UserRecom userRecom) {
+		return R.status(userRecomService.saveOrUpdate(userRecom));
+	}
+
+	
+	/**
+	 * 删除 用户推荐记录表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(userRecomService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 34 - 0
src/main/java/org/springblade/modules/platform/dto/BanksDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.dto;
+
+import org.springblade.modules.platform.entity.Banks;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 银行表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class BanksDTO extends Banks {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
src/main/java/org/springblade/modules/platform/dto/UserBankCardsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.dto;
+
+import org.springblade.modules.platform.entity.UserBankCards;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 用户银行卡信息表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class UserBankCardsDTO extends UserBankCards {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
src/main/java/org/springblade/modules/platform/dto/UserRecomDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.dto;
+
+import org.springblade.modules.platform.entity.UserRecom;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 用户推荐记录表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class UserRecomDTO extends UserRecom {
+	private static final long serialVersionUID = 1L;
+
+}

+ 77 - 0
src/main/java/org/springblade/modules/platform/entity/Banks.java

@@ -0,0 +1,77 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 银行表实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@TableName("t_banks")
+@ApiModel(value = "Banks对象", description = "银行表")
+public class Banks implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	@ApiModelProperty(value = "主键ID")
+	private Long id;
+	/**
+	 * 银行名称
+	 */
+	@ApiModelProperty(value = "银行名称")
+	private String bankName;
+	/**
+	 * 银行图标
+	 */
+	@ApiModelProperty(value = "银行图标")
+	private String bankImg;
+	/**
+	 * 银行代码
+	 */
+	@ApiModelProperty(value = "银行代码")
+	private String bankCode;
+	/**
+	 * 是否启用
+	 */
+	@ApiModelProperty(value = "是否启用")
+	private Integer isShow;
+	/**
+	 * 删除标识   0正常  1逻辑删除
+	 */
+	@ApiModelProperty(value = "删除标识   0正常  1逻辑删除")
+	private Integer isDeleted;
+
+
+}

+ 115 - 0
src/main/java/org/springblade/modules/platform/entity/UserBankCards.java

@@ -0,0 +1,115 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 用户银行卡信息表实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@TableName("t_user_bank_cards")
+@ApiModel(value = "UserBankCards对象", description = "用户银行卡信息表")
+public class UserBankCards implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键Id
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	@ApiModelProperty(value = "主键Id")
+	private Long id;
+
+	/**
+	 * 银行Id
+	 */
+	@ApiModelProperty(value = "银行Id")
+	private Long bankId;
+
+	/**
+	 * 用户Id
+	 */
+	@ApiModelProperty(value = "用户Id")
+	private Long userId;
+	/**
+	 * 账户姓名
+	 */
+	@ApiModelProperty(value = "账户姓名")
+	private String name;
+	/**
+	 * 银行开预留手机号
+	 */
+	@ApiModelProperty(value = "银行开预留手机号")
+	private String mobile;
+	/**
+	 * 身份证
+	 */
+	@ApiModelProperty(value = "身份证")
+	private String cardCode;
+	/**
+	 * 银行卡号
+	 */
+	@ApiModelProperty(value = "银行卡号")
+	private String backNo;
+
+	/**
+	 * 区域编号
+	 */
+	@ApiModelProperty(value = "区域编号")
+	private String areaCode;
+
+	/**
+	 * 区域名称
+	 */
+	@ApiModelProperty(value = "区域名称")
+	private String areaName;
+	/**
+	 * 排序
+	 */
+	@ApiModelProperty(value = "排序")
+	private Integer sort;
+
+	/**
+	 * 更新时间
+	 */
+	@ApiModelProperty(value = "更新时间")
+	private Date updateTime;
+
+	/**
+	 * 绑定时间
+	 */
+	@ApiModelProperty(value = "绑定时间")
+	private Date createTime;
+
+
+}

+ 70 - 0
src/main/java/org/springblade/modules/platform/entity/UserRecom.java

@@ -0,0 +1,70 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 用户推荐记录表实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@TableName("t_user_recom")
+@ApiModel(value = "UserRecom对象", description = "用户推荐记录表")
+public class UserRecom implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键ID
+	 */
+	@JsonSerialize(using = ToStringSerializer.class)
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	@ApiModelProperty(value = "主键ID")
+	private Long id;
+	/**
+	 * 用户ID
+	 */
+	@ApiModelProperty(value = "用户ID")
+	private Long userId;
+	/**
+	 * 推荐人用户ID
+	 */
+	@ApiModelProperty(value = "推荐人用户ID")
+	private Long recomId;
+	
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+
+
+}

+ 42 - 0
src/main/java/org/springblade/modules/platform/mapper/BanksMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.mapper;
+
+import org.springblade.modules.platform.entity.Banks;
+import org.springblade.modules.platform.vo.BanksVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 银行表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface BanksMapper extends BaseMapper<Banks> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param banks
+	 * @return
+	 */
+	List<BanksVO> selectBanksPage(IPage page, BanksVO banks);
+
+}

+ 20 - 0
src/main/java/org/springblade/modules/platform/mapper/BanksMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.platform.mapper.BanksMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="banksResultMap" type="org.springblade.modules.platform.entity.Banks">
+        <id column="id" property="id"/>
+        <result column="bank_name" property="bankName"/>
+        <result column="bank_img" property="bankImg"/>
+        <result column="bank_code" property="bankCode"/>
+        <result column="is_show" property="isShow"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+
+
+    <select id="selectBanksPage" resultMap="banksResultMap">
+        select * from t_banks where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
src/main/java/org/springblade/modules/platform/mapper/UserBankCardsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.mapper;
+
+import org.springblade.modules.platform.entity.UserBankCards;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 用户银行卡信息表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface UserBankCardsMapper extends BaseMapper<UserBankCards> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param userBankCards
+	 * @return
+	 */
+	List<UserBankCardsVO> selectUserBankCardsPage(IPage page, UserBankCardsVO userBankCards);
+
+}

+ 22 - 0
src/main/java/org/springblade/modules/platform/mapper/UserBankCardsMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.platform.mapper.UserBankCardsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="userBankCardsResultMap" type="org.springblade.modules.platform.entity.UserBankCards">
+        <id column="id" property="id"/>
+        <result column="user_id" property="userId"/>
+        <result column="name" property="name"/>
+        <result column="mobile" property="mobile"/>
+        <result column="card_code" property="cardCode"/>
+        <result column="back_no" property="backNo"/>
+        <result column="sort" property="sort"/>
+        <result column="create_time" property="createTime"/>
+    </resultMap>
+
+
+    <select id="selectUserBankCardsPage" resultMap="userBankCardsResultMap">
+        select * from t_user_bank_cards where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
src/main/java/org/springblade/modules/platform/mapper/UserRecomMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.mapper;
+
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 用户推荐记录表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface UserRecomMapper extends BaseMapper<UserRecom> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param userRecom
+	 * @return
+	 */
+	List<UserRecomVO> selectUserRecomPage(IPage page, UserRecomVO userRecom);
+
+}

+ 19 - 0
src/main/java/org/springblade/modules/platform/mapper/UserRecomMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.platform.mapper.UserRecomMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="userRecomResultMap" type="org.springblade.modules.platform.entity.UserRecom">
+        <id column="id" property="id"/>
+        <result column="user_id" property="userId"/>
+        <result column="recom_id" property="recomId"/>
+        <result column="recom_code" property="recomCode"/>
+        <result column="create_time" property="createTime"/>
+    </resultMap>
+
+
+    <select id="selectUserRecomPage" resultMap="userRecomResultMap">
+        select * from t_user_recom where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/IBanksService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service;
+
+import org.springblade.modules.platform.entity.Banks;
+import org.springblade.modules.platform.vo.BanksVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 银行表 服务类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface IBanksService extends IService<Banks> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param banks
+	 * @return
+	 */
+	IPage<BanksVO> selectBanksPage(IPage<BanksVO> page, BanksVO banks);
+
+}

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/IUserBankCardsService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service;
+
+import org.springblade.modules.platform.entity.UserBankCards;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 用户银行卡信息表 服务类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface IUserBankCardsService extends IService<UserBankCards> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param userBankCards
+	 * @return
+	 */
+	IPage<UserBankCardsVO> selectUserBankCardsPage(IPage<UserBankCardsVO> page, UserBankCardsVO userBankCards);
+
+}

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/IUserRecomService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service;
+
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 用户推荐记录表 服务类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+public interface IUserRecomService extends IService<UserRecom> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param userRecom
+	 * @return
+	 */
+	IPage<UserRecomVO> selectUserRecomPage(IPage<UserRecomVO> page, UserRecomVO userRecom);
+
+}

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/impl/BanksServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service.impl;
+
+import org.springblade.modules.platform.entity.Banks;
+import org.springblade.modules.platform.vo.BanksVO;
+import org.springblade.modules.platform.mapper.BanksMapper;
+import org.springblade.modules.platform.service.IBanksService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 银行表 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Service
+public class BanksServiceImpl extends ServiceImpl<BanksMapper, Banks> implements IBanksService {
+
+	@Override
+	public IPage<BanksVO> selectBanksPage(IPage<BanksVO> page, BanksVO banks) {
+		return page.setRecords(baseMapper.selectBanksPage(page, banks));
+	}
+
+}

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/impl/UserBankCardsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service.impl;
+
+import org.springblade.modules.platform.entity.UserBankCards;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import org.springblade.modules.platform.mapper.UserBankCardsMapper;
+import org.springblade.modules.platform.service.IUserBankCardsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 用户银行卡信息表 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Service
+public class UserBankCardsServiceImpl extends ServiceImpl<UserBankCardsMapper, UserBankCards> implements IUserBankCardsService {
+
+	@Override
+	public IPage<UserBankCardsVO> selectUserBankCardsPage(IPage<UserBankCardsVO> page, UserBankCardsVO userBankCards) {
+		return page.setRecords(baseMapper.selectUserBankCardsPage(page, userBankCards));
+	}
+
+}

+ 41 - 0
src/main/java/org/springblade/modules/platform/service/impl/UserRecomServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.service.impl;
+
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import org.springblade.modules.platform.mapper.UserRecomMapper;
+import org.springblade.modules.platform.service.IUserRecomService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 用户推荐记录表 服务实现类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Service
+public class UserRecomServiceImpl extends ServiceImpl<UserRecomMapper, UserRecom> implements IUserRecomService {
+
+	@Override
+	public IPage<UserRecomVO> selectUserRecomPage(IPage<UserRecomVO> page, UserRecomVO userRecom) {
+		return page.setRecords(baseMapper.selectUserRecomPage(page, userRecom));
+	}
+
+}

+ 36 - 0
src/main/java/org/springblade/modules/platform/vo/BanksVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.vo;
+
+import org.springblade.modules.platform.entity.Banks;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 银行表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "BanksVO对象", description = "银行表")
+public class BanksVO extends Banks {
+	private static final long serialVersionUID = 1L;
+
+}

+ 54 - 0
src/main/java/org/springblade/modules/platform/vo/UserBankCardsVO.java

@@ -0,0 +1,54 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.modules.platform.entity.UserBankCards;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 用户银行卡信息表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserBankCardsVO对象", description = "用户银行卡信息表")
+public class UserBankCardsVO extends UserBankCards {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 银行名称
+	 */
+	@ApiModelProperty(value = "银行名称")
+	private String bankName;
+	/**
+	 * 银行图标
+	 */
+	@ApiModelProperty(value = "银行图标")
+	private String bankImg;
+	/**
+	 * 银行代码
+	 */
+	@ApiModelProperty(value = "银行代码")
+	private String bankCode;
+
+}

+ 54 - 0
src/main/java/org/springblade/modules/platform/vo/UserRecomVO.java

@@ -0,0 +1,54 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.modules.platform.entity.UserRecom;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 用户推荐记录表视图实体类
+ *
+ * @author BladeX
+ * @since 2022-02-19
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserRecomVO对象", description = "用户推荐记录表")
+public class UserRecomVO extends UserRecom {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 头像
+	 */
+	private String avatar;
+
+	/**
+	 * 昵称
+	 */
+	private String name;
+
+	/**
+	 * 推荐人邀请码
+	 */
+	@ApiModelProperty(value = "推荐人邀请码")
+	private String recomCode;
+
+}

+ 62 - 0
src/main/java/org/springblade/modules/platform/wrapper/UserBankCardsWrapper.java

@@ -0,0 +1,62 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.modules.platform.entity.Banks;
+import org.springblade.modules.platform.entity.UserBankCards;
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.service.IBanksService;
+import org.springblade.modules.platform.vo.UserBankCardsVO;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IUserService;
+
+import java.util.Objects;
+
+/**
+ * 包装类,返回视图层所需的字段
+ *
+ * @author Chill
+ */
+public class UserBankCardsWrapper extends BaseEntityWrapper<UserBankCards, UserBankCardsVO> {
+
+	public static UserBankCardsWrapper build() {
+		return new UserBankCardsWrapper();
+	}
+
+	public static IBanksService banksService;
+
+	static {
+		banksService = SpringUtil.getBean(IBanksService.class);
+	}
+
+	@Override
+	public UserBankCardsVO entityVO(UserBankCards entity) {
+		UserBankCardsVO vo = Objects.requireNonNull(BeanUtil.copy(entity, UserBankCardsVO.class));
+		Banks banks = banksService.getById(entity.getBankId());
+		if (banks != null){
+			vo.setBankCode(banks.getBankCode());
+			vo.setBankName(banks.getBankName());
+			vo.setBankImg(banks.getBankImg());
+		}
+		return vo;
+	}
+
+}

+ 58 - 0
src/main/java/org/springblade/modules/platform/wrapper/UserRecomWrapper.java

@@ -0,0 +1,58 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.platform.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.modules.platform.entity.UserRecom;
+import org.springblade.modules.platform.vo.UserRecomVO;
+import org.springblade.modules.shopping.entity.Goods;
+import org.springblade.modules.shopping.vo.GoodsVO;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IUserService;
+
+import java.util.Objects;
+
+/**
+ * 包装类,返回视图层所需的字段
+ *
+ * @author Chill
+ */
+public class UserRecomWrapper extends BaseEntityWrapper<UserRecom, UserRecomVO> {
+
+	public static UserRecomWrapper build() {
+		return new UserRecomWrapper();
+	}
+
+	public static IUserService userService;
+
+	static {
+		userService = SpringUtil.getBean(IUserService.class);
+	}
+
+	@Override
+	public UserRecomVO entityVO(UserRecom entity) {
+		UserRecomVO vo = Objects.requireNonNull(BeanUtil.copy(entity, UserRecomVO.class));
+		User user = userService.getById(entity.getRecomId());
+		vo.setAvatar(user.getAvatar());
+		vo.setName(user.getName());
+		vo.setRecomCode(user.getCode());
+		return vo;
+	}
+
+}

+ 23 - 4
src/main/java/org/springblade/modules/system/entity/UserApp.java

@@ -68,6 +68,13 @@ public class UserApp extends Model<UserApp> {
 	 */
 	@ApiModelProperty(value = "推荐人ID")
 	private Long parentId;
+
+	/**
+	 * 推荐人字符串集合
+	 */
+	@ApiModelProperty(value = "推荐人字符串集合")
+	private String parentPath;
+
 	/**
 	 * 酒票数
 	 */
@@ -81,7 +88,7 @@ public class UserApp extends Model<UserApp> {
 	/**
 	 * 信用积分
 	 */
-	@ApiModelProperty(value = "信用积分")
+	@ApiModelProperty(value = "信分")
 	private Integer creditScore;
 	/**
 	 * 二维码地址
@@ -89,9 +96,21 @@ public class UserApp extends Model<UserApp> {
 	@ApiModelProperty(value = "二维码地址")
 	private String codeUrl;
 	/**
-	 * 是否冻结
+	 * 账号状态
+	 */
+	@ApiModelProperty(value = "账号状态:1正常,2冻结,3删除")
+	private Integer state;
+
+	/**
+	 * 简介说明
+	 */
+	@ApiModelProperty(value = "简介说明")
+	private String userExplain;
+
+	/**
+	 * 当前余额
 	 */
-	@ApiModelProperty(value = "是否冻结")
-	private Integer isEnabled;
+	@ApiModelProperty(value = "当前余额")
+	private Double nowMoney;
 
 }

+ 1 - 0
src/main/java/org/springblade/modules/system/service/IUserService.java

@@ -214,4 +214,5 @@ public interface IUserService extends BaseService<User> {
 	 * @return
 	 */
 	UserVO platformDetail(User user);
+
 }

+ 27 - 11
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java

@@ -24,12 +24,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import org.springblade.common.cache.DictCache;
-import org.springblade.common.cache.ParamCache;
-import org.springblade.common.cache.SysCache;
-import org.springblade.common.cache.UserCache;
+import org.springblade.common.cache.*;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.TenantConstant;
+import org.springblade.common.enums.DictBizEnum;
 import org.springblade.common.enums.DictEnum;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -44,6 +42,7 @@ import org.springblade.core.tool.utils.*;
 import org.springblade.modules.auth.enums.UserEnum;
 import org.springblade.modules.system.entity.*;
 import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.mapper.UserAppMapper;
 import org.springblade.modules.system.mapper.UserMapper;
 import org.springblade.modules.system.service.IRoleService;
 import org.springblade.modules.system.service.IUserDeptService;
@@ -75,6 +74,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 	private final IUserOauthService userOauthService;
 	private final IRoleService roleService;
 	private final BladeTenantProperties tenantProperties;
+	private final UserAppMapper userAppMapper;
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -224,7 +224,15 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 			UserApp userApp = new UserApp();
 			UserApp query = userApp.selectOne(Wrappers.<UserApp>lambdaQuery().eq(UserApp::getUserId, user.getId()));
 			if (ObjectUtil.isNotEmpty(query)) {
-				detail.set("ext", query.getUserExt());
+				detail.set("userExt", query.getUserExt());
+				detail.set("codeUrl", query.getCodeUrl());
+				detail.set("userExplain", query.getUserExplain());
+				detail.set("intergral", query.getIntegral());
+				detail.set("nowMoney", query.getNowMoney());
+				detail.set("state", query.getState());
+				detail.set("stateDisplayName", DictBizCache.getValue(DictBizEnum.USER_STATE,query.getState()));
+				detail.set("ticket", query.getTicket());
+				detail.set("code", user.getCode());
 			}
 		} else {
 			UserOther userOther = new UserOther();
@@ -370,9 +378,12 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 	@Transactional(rollbackFor = Exception.class)
 	public boolean registerApp(User user, Long parentId) {
 		user.setUserType(2);//APP
-		user.setPassword(DigestUtil.md5Hex(ParamCache.getValue(CommonConstant.DEFAULT_PARAM_PASSWORD)));
+		user.setPassword(DigestUtil.encrypt(ParamCache.getValue(CommonConstant.DEFAULT_PARAM_PASSWORD)));
 		user.setAvatar(ParamCache.getValue(CommonConstant.DEFAULT_AVATAR));
 		user.setCode(getCode());
+		user.setRoleId(ParamCache.getValue(CommonConstant.DEFAULT_ROLD));
+		user.setDeptId(ParamCache.getValue(CommonConstant.DEFAULT_DEPT));
+		user.setPostId(ParamCache.getValue(CommonConstant.DEFAULT_POST));
 		Integer userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, user.getTenantId()).eq(User::getAccount, user.getAccount()));
 		if (userCount > 0 && Func.isEmpty(user.getId())) {
 			throw new ServiceException("该账号已注册");
@@ -381,14 +392,20 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 		if (!flg){
 			return false;
 		}
-		User query = baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getAccount,user.getAccount()));
 		UserApp userApp = new UserApp();
+		userApp.setUserId(parentId);
+		UserApp parentUserApp = userAppMapper.selectOne(Condition.getQueryWrapper(userApp));
+		User query = baseMapper.selectOne(Wrappers.<User>query().lambda().eq(User::getAccount,user.getAccount()));
 		userApp.setUserId(query.getId());
 		userApp.setParentId(parentId);
-		userApp.setCreditScore(100);
-		userApp.setIsEnabled(2);
+		if(parentUserApp != null){
+			userApp.setParentPath(parentUserApp.getParentPath() + "," + parentId);
+		}else {
+			userApp.setParentPath(Long.toString(parentId));
+		}
+		Integer creditScore = Integer.valueOf(ParamCache.getValue(CommonConstant.DEFAULT_CREDIT_SCORE));
+		userApp.setCreditScore(creditScore);
 		flg = userApp.insert();
-
 		if (!flg){
 			throw new ServiceException("注册失败");
 		}
@@ -397,7 +414,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 
 	/**
 	 * 生成不重复的Code
-	 * @return
 	 */
 	private String getCode() {
 		String code = StringUtil.random(6, RandomType.ALL).toUpperCase();

+ 74 - 0
src/main/java/org/springblade/modules/system/vo/UserAppVO.java

@@ -0,0 +1,74 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.entity.UserApp;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "UserAppVO对象", description = "UserAppVO对象")
+public class UserAppVO extends UserApp {
+	private static final long serialVersionUID = 1L;
+
+	@JsonIgnore
+	private Long id;
+
+	/**
+	 * 用户编号
+	 */
+	private String code;
+
+	/**
+	 * 昵称
+	 */
+	private String name;
+	/**
+	 * 真名
+	 */
+	private String realName;
+	/**
+	 * 头像
+	 */
+	private String avatar;
+
+	@JsonIgnore
+	private String parentPath;
+
+	/**
+	 * 性别
+	 */
+	private String sexDisplayName;
+
+	/**
+	 * 用户状态
+	 */
+	private String stateDisplayName;
+
+}

+ 10 - 0
src/main/java/sql/banks.menu.mysql

@@ -0,0 +1,10 @@
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928611034800130', 1123598815738675201, 'banks', '银行表', 'menu', '/platform/banks', NULL, 1, 1, 0, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928611034800131', '1494928611034800130', 'banks_add', '新增', 'add', '/platform/banks/add', 'plus', 1, 2, 1, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928611034800132', '1494928611034800130', 'banks_edit', '修改', 'edit', '/platform/banks/edit', 'form', 2, 2, 2, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928611034800133', '1494928611034800130', 'banks_delete', '删除', 'delete', '/api/platform/banks/remove', 'delete', 3, 2, 3, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928611034800134', '1494928611034800130', 'banks_view', '查看', 'view', '/platform/banks/view', 'file-text', 4, 2, 2, 1, NULL, 0);

+ 10 - 0
src/main/java/sql/userbankcards.menu.mysql

@@ -0,0 +1,10 @@
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928612934819841', 1123598815738675201, 'userbankcards', '用户银行卡信息表', 'menu', '/platform/userbankcards', NULL, 1, 1, 0, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928612934819842', '1494928612934819841', 'userbankcards_add', '新增', 'add', '/platform/userbankcards/add', 'plus', 1, 2, 1, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928612934819843', '1494928612934819841', 'userbankcards_edit', '修改', 'edit', '/platform/userbankcards/edit', 'form', 2, 2, 2, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928612934819844', '1494928612934819841', 'userbankcards_delete', '删除', 'delete', '/api/platform/userbankcards/remove', 'delete', 3, 2, 3, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494928612934819845', '1494928612934819841', 'userbankcards_view', '查看', 'view', '/platform/userbankcards/view', 'file-text', 4, 2, 2, 1, NULL, 0);

+ 10 - 0
src/main/java/sql/userrecom.menu.mysql

@@ -0,0 +1,10 @@
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494896162535907330', 1123598815738675201, 'userrecom', '用户推荐记录表', 'menu', '/platform/userrecom', NULL, 1, 1, 0, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494896162535907331', '1494896162535907330', 'userrecom_add', '新增', 'add', '/platform/userrecom/add', 'plus', 1, 2, 1, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494896162535907332', '1494896162535907330', 'userrecom_edit', '修改', 'edit', '/platform/userrecom/edit', 'form', 2, 2, 2, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494896162535907333', '1494896162535907330', 'userrecom_delete', '删除', 'delete', '/api/platform/userrecom/remove', 'delete', 3, 2, 3, 1, NULL, 0);
+INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
+VALUES ('1494896162535907334', '1494896162535907330', 'userrecom_view', '查看', 'view', '/platform/userrecom/view', 'file-text', 4, 2, 2, 1, NULL, 0);

+ 4 - 1
src/main/resources/application.yml

@@ -1,6 +1,6 @@
 #服务器配置
 server:
-  port: 8801
+  port: 8800
   undertow:
     threads:
       # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
@@ -179,6 +179,9 @@ blade:
     #接口放行
     skip-url:
       - /blade-test/**
+      - /v1/user-register
+      - /v1/login_account
+      - /v1/login_phone
     #授权认证配置
     auth:
       - method: ALL

Some files were not shown because too many files changed in this diff