checkCode() {
+ ValidateCodeVo vo = loginService.checkCode();
+ return Result.success(vo);
+ }
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/controller/UserController.java b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserController.java
new file mode 100644
index 0000000..1fad15f
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserController.java
@@ -0,0 +1,18 @@
+package cn.bunny.service.web.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 用户信息 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@RestController
+@RequestMapping("/user")
+public class UserController {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/controller/UserIntegralRecordController.java b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserIntegralRecordController.java
new file mode 100644
index 0000000..727cf66
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserIntegralRecordController.java
@@ -0,0 +1,18 @@
+package cn.bunny.service.web.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 用户积分记录表 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@RestController
+@RequestMapping("/userIntegralRecord")
+public class UserIntegralRecordController {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/controller/UserRoleController.java b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserRoleController.java
new file mode 100644
index 0000000..c222e9f
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/controller/UserRoleController.java
@@ -0,0 +1,18 @@
+package cn.bunny.service.web.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@RestController
+@RequestMapping("/userRole")
+public class UserRoleController {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserIntegralRecordMapper.java b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserIntegralRecordMapper.java
new file mode 100644
index 0000000..257458d
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserIntegralRecordMapper.java
@@ -0,0 +1,18 @@
+package cn.bunny.service.web.mapper;
+
+import cn.bunny.entity.system.UserIntegralRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 用户积分记录表 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Mapper
+public interface UserIntegralRecordMapper extends BaseMapper {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserMapper.java b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserMapper.java
new file mode 100644
index 0000000..7332cba
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserMapper.java
@@ -0,0 +1,27 @@
+package cn.bunny.service.web.mapper;
+
+import cn.bunny.entity.system.User;
+import cn.bunny.vo.system.LoginVo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 用户信息 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Mapper
+public interface UserMapper extends BaseMapper {
+
+ /**
+ * 前台用户登录接口
+ *
+ * @param username 邮箱/昵称
+ * @param password 吗,Image
+ * @return 登录参数
+ */
+ LoginVo login(String username, String password);
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserRoleMapper.java b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserRoleMapper.java
new file mode 100644
index 0000000..fd5e6e1
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/mapper/UserRoleMapper.java
@@ -0,0 +1,18 @@
+package cn.bunny.service.web.mapper;
+
+import cn.bunny.entity.system.UserRole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Mapper
+public interface UserRoleMapper extends BaseMapper {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/security/CustomAuthorizationManagerServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/security/CustomAuthorizationManagerServiceImpl.java
new file mode 100644
index 0000000..608bf57
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/security/CustomAuthorizationManagerServiceImpl.java
@@ -0,0 +1,36 @@
+package cn.bunny.service.web.security;
+
+import cn.bunny.security.service.CustomAuthorizationManagerService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.authorization.AuthorizationDecision;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.access.intercept.RequestAuthorizationContext;
+import org.springframework.stereotype.Service;
+
+import java.util.function.Supplier;
+
+
+/**
+ * 自定义权限判断
+ * 判断用户有哪些权限
+ */
+@Service
+@Slf4j
+public class CustomAuthorizationManagerServiceImpl implements CustomAuthorizationManagerService {
+ @Override
+ public void verify(Supplier authentication, RequestAuthorizationContext requestAuthorizationContext) {
+ CustomAuthorizationManagerService.super.verify(authentication, requestAuthorizationContext);
+ }
+
+ @Override
+ public AuthorizationDecision check(Supplier authentication, RequestAuthorizationContext object) {
+ String token = object.getRequest().getHeader("token");
+
+ if (token == null) {
+ throw new AccessDeniedException("");
+ }
+
+ return new AuthorizationDecision(true);
+ }
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/security/CustomUserDetailsService.java b/service/service-web/src/main/java/cn/bunny/service/web/security/CustomUserDetailsService.java
new file mode 100644
index 0000000..61867c8
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/security/CustomUserDetailsService.java
@@ -0,0 +1,58 @@
+package cn.bunny.service.web.security;
+
+import cn.bunny.dto.LoginDto;
+import cn.bunny.entity.system.User;
+import cn.bunny.entity.system.UserRole;
+import cn.bunny.security.custom.CustomUser;
+import cn.bunny.service.web.mapper.UserMapper;
+import cn.bunny.service.web.mapper.UserRoleMapper;
+import cn.bunny.service.web.service.LoginService;
+import cn.bunny.vo.system.LoginVo;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.authority.AuthorityUtils;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+
+import java.util.List;
+
+@Configuration
+public class CustomUserDetailsService implements cn.bunny.security.service.CustomUserDetailsService {
+ @Autowired
+ private UserMapper userMapper;
+ @Autowired
+ private LoginService loginService;
+ @Autowired
+ private UserRoleMapper userRoleMapper;
+
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ // 根据邮箱查询用户名
+ User user = userMapper.selectOne(Wrappers.lambdaQuery().eq(User::getEmail, username));
+ List sysRoleList = userRoleMapper.selectList(null);
+ // 如果这次为空,再试下查询昵称
+ if (user == null) {
+ user = userMapper.selectOne(Wrappers.lambdaQuery().eq(User::getNickName, username));
+ }
+ // 都为空抛出异常,用户不存在
+ if (user == null) {
+ throw new UsernameNotFoundException("");
+ }
+
+ // 查询所有的角色
+ List roleAuthoritieList = sysRoleList.stream().map(UserRole::getRoleCode).toList();
+ return new CustomUser(user, AuthorityUtils.createAuthorityList(roleAuthoritieList));
+ }
+
+ /**
+ * 前台用户登录接口
+ *
+ * @param loginDto 登录参数
+ * @return 登录后结果返回
+ */
+ @Override
+ public LoginVo login(LoginDto loginDto) {
+ return loginService.login(loginDto);
+ }
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java b/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java
new file mode 100644
index 0000000..433c1b0
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/LoginService.java
@@ -0,0 +1,24 @@
+package cn.bunny.service.web.service;
+
+import cn.bunny.dto.LoginDto;
+import cn.bunny.entity.system.User;
+import cn.bunny.vo.system.LoginVo;
+import cn.bunny.vo.system.ValidateCodeVo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface LoginService extends IService {
+ /**
+ * 前台用户登录接口
+ *
+ * @param loginDto 登录参数
+ * @return 登录后结果返回
+ */
+ LoginVo login(LoginDto loginDto);
+
+ /**
+ * 生成验证码
+ *
+ * @return 验证码生成信息
+ */
+ ValidateCodeVo checkCode();
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/UserIntegralRecordService.java b/service/service-web/src/main/java/cn/bunny/service/web/service/UserIntegralRecordService.java
new file mode 100644
index 0000000..091d37f
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/UserIntegralRecordService.java
@@ -0,0 +1,16 @@
+package cn.bunny.service.web.service;
+
+import cn.bunny.entity.system.UserIntegralRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 用户积分记录表 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+public interface UserIntegralRecordService extends IService {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/UserRoleService.java b/service/service-web/src/main/java/cn/bunny/service/web/service/UserRoleService.java
new file mode 100644
index 0000000..f3b6f5a
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/UserRoleService.java
@@ -0,0 +1,16 @@
+package cn.bunny.service.web.service;
+
+import cn.bunny.entity.system.UserRole;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+public interface UserRoleService extends IService {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/UserService.java b/service/service-web/src/main/java/cn/bunny/service/web/service/UserService.java
new file mode 100644
index 0000000..2f5ffd4
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/UserService.java
@@ -0,0 +1,16 @@
+package cn.bunny.service.web.service;
+
+import cn.bunny.entity.system.User;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 用户信息 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+public interface UserService extends IService {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java
new file mode 100644
index 0000000..c4c22df
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/LoginServiceImpl.java
@@ -0,0 +1,69 @@
+package cn.bunny.service.web.service.impl;
+
+import cn.bunny.common.result.constant.CommonMessageConstant;
+import cn.bunny.common.service.utils.EmptyUtil;
+import cn.bunny.common.service.utils.JwtHelper;
+import cn.bunny.dto.LoginDto;
+import cn.bunny.entity.system.User;
+import cn.bunny.service.web.mapper.UserMapper;
+import cn.bunny.service.web.service.LoginService;
+import cn.bunny.vo.system.LoginVo;
+import cn.bunny.vo.system.ValidateCodeVo;
+import cn.hutool.captcha.CaptchaUtil;
+import cn.hutool.captcha.CircleCaptcha;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.DigestUtils;
+
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class LoginServiceImpl extends ServiceImpl implements LoginService {
+ @Autowired
+ private UserMapper userMapper;
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ /**
+ * 前台用户登录接口
+ *
+ * @param loginDto 登录参数
+ * @return 登录后结果返回
+ */
+ @Override
+ public LoginVo login(LoginDto loginDto) {
+ // 判断用户和密码是否为空
+ String username = loginDto.getUsername();
+ EmptyUtil.isEmpty(username, CommonMessageConstant.USERNAME_NOT_EMPTY);
+ // 密码不能为空
+ EmptyUtil.isEmpty(loginDto.getPassword(), CommonMessageConstant.PASSWORD_NOT_EMPTY);
+ String password = DigestUtils.md5DigestAsHex(loginDto.getPassword().getBytes());
+
+ // 设置返回类型
+ LoginVo loginVo = userMapper.login(username, password);
+ String token = JwtHelper.createToken(Long.valueOf(loginVo.getUserId()), loginVo.getEmail(), 7);
+ loginVo.setToken(token);
+
+ return loginVo;
+ }
+
+ /**
+ * 生成验证码
+ *
+ * @return 验证码生成信息
+ */
+ @Override
+ public ValidateCodeVo checkCode() {
+ // 生成验证码
+ CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(150, 48, 4, 2);
+ String code = captcha.getCode();
+ String base64Image = "data:image/png;base64," + captcha.getImageBase64();
+ // 存储到Redis中
+ String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+ redisTemplate.opsForValue().set(uuid, code, 10, TimeUnit.MINUTES);
+ return ValidateCodeVo.builder().codeKey(uuid).codeValue(base64Image).build();
+ }
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserIntegralRecordServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserIntegralRecordServiceImpl.java
new file mode 100644
index 0000000..072bf9d
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserIntegralRecordServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.bunny.service.web.service.impl;
+
+import cn.bunny.entity.system.UserIntegralRecord;
+import cn.bunny.service.web.mapper.UserIntegralRecordMapper;
+import cn.bunny.service.web.service.UserIntegralRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 用户积分记录表 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Service
+public class UserIntegralRecordServiceImpl extends ServiceImpl implements UserIntegralRecordService {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserRoleServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserRoleServiceImpl.java
new file mode 100644
index 0000000..1758324
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserRoleServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.bunny.service.web.service.impl;
+
+import cn.bunny.entity.system.UserRole;
+import cn.bunny.service.web.mapper.UserRoleMapper;
+import cn.bunny.service.web.service.UserRoleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Service
+public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService {
+
+}
diff --git a/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserServiceImpl.java b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..e63451a
--- /dev/null
+++ b/service/service-web/src/main/java/cn/bunny/service/web/service/impl/UserServiceImpl.java
@@ -0,0 +1,20 @@
+package cn.bunny.service.web.service.impl;
+
+import cn.bunny.entity.system.User;
+import cn.bunny.service.web.mapper.UserMapper;
+import cn.bunny.service.web.service.UserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 用户信息 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2024-05-13
+ */
+@Service
+public class UserServiceImpl extends ServiceImpl implements UserService {
+
+}
diff --git a/service/service-web/src/main/resources/application-dev.yml b/service/service-web/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..0209e71
--- /dev/null
+++ b/service/service-web/src/main/resources/application-dev.yml
@@ -0,0 +1,24 @@
+bunny:
+ datasource:
+ host: 106.15.251.123
+ port: 3305
+ sqlData: bunny_docs
+ username: root
+ password: "02120212"
+
+ redis:
+ host: 47.120.65.66
+ port: 6379
+ database: 3
+ password: "02120212"
+
+ minio:
+ endpointUrl: "http://129.211.31.58:9000"
+ bucket-name: ssyx
+ accessKey: bunny
+ secretKey: "02120212"
+
+ nacos:
+ server-addr: z-bunny.cn:8848
+ discovery:
+ namespace: bunnyBBS
\ No newline at end of file
diff --git a/service/service-web/src/main/resources/application.yml b/service/service-web/src/main/resources/application.yml
new file mode 100644
index 0000000..0ec40d1
--- /dev/null
+++ b/service/service-web/src/main/resources/application.yml
@@ -0,0 +1,71 @@
+server:
+ port: 8801
+
+spring:
+ profiles:
+ active: dev
+ application:
+ name: service-web
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+ username: ${bunny.datasource.username}
+ password: ${bunny.datasource.password}
+
+ data:
+ redis:
+ host: ${bunny.redis.host}
+ port: ${bunny.redis.port}
+ database: ${bunny.redis.database}
+ password: ${bunny.redis.password}
+ lettuce:
+ pool:
+ max-active: 20 #最大连接数
+ max-wait: -1 #最大阻塞等待时间(负数表示没限制)
+ max-idle: 5 #最大空闲
+ min-idle: 0 #最小空闲
+
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+
+ cloud:
+ sentinel:
+ log:
+ dir: logs/${spring.application.name}/sentinel
+ nacos:
+ discovery:
+ namespace: ${bunny.nacos.discovery.namespace}
+ server-addr: ${bunny.nacos.server-addr}
+
+mybatis-plus:
+ mapper-locations: classpath:mapper/*.xml
+ configuration:
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志
+
+logging:
+ level:
+ cn.bunny.service.mapper: debug
+ cn.bunny.service.controller: info
+ cn.bunny.service.service: info
+ pattern:
+ dateformat: HH:mm:ss:SSS
+ file:
+ path: "logs/${spring.application.name}"
+
+bunny:
+ minio:
+ endpointUrl: ${bunny.minio.endpointUrl}
+ accessKey: ${bunny.minio.accessKey}
+ secretKey: ${bunny.minio.secretKey}
+ bucket-name: ${bunny.minio.bucket-name}
+
+ snowflake:
+ datacenterBits: 5 # 数据中心id位数
+ workerBits: 5 # 机器id位数
+ sequenceBits: 12 # 序列id所占位数
+ datacenterId: 1 # 数据中心id,范围0-2^5-1
+ workerId: 1 # 机器id,范围0-2^5-1
+ twepoch: 1704038400000 # 时间戳起始点(2024-01-01 00::00:00 的毫秒数)
+ maxBatchCount: 100000 #单次批量生成id的最大数量 默认10万
\ No newline at end of file
diff --git a/service/service-web/src/main/resources/banner.txt b/service/service-web/src/main/resources/banner.txt
new file mode 100644
index 0000000..cc77fc2
--- /dev/null
+++ b/service/service-web/src/main/resources/banner.txt
@@ -0,0 +1,16 @@
+-----------------▄██-█▄---------
+-----------------███▄██▄--------
+-----------------███████--------
+-----------------▀███████-------
+-------------------██████▄▄-----
+-------------------█████████▄---
+-------------------██████▄████--
+-------▄███████████████████████-
+-----▄███████████████████████▀--
+---▄██████████████████████------
+---███████████████████████------
+---███████████████████████------
+-▄▄██████████████████████▀------
+-█████████████████▀█████--------
+-▀██████████████▀▀-▀█████▄------
+-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------
\ No newline at end of file
diff --git a/service/service-web/src/main/resources/favicon.ico b/service/service-web/src/main/resources/favicon.ico
new file mode 100644
index 0000000..385f8a6
Binary files /dev/null and b/service/service-web/src/main/resources/favicon.ico differ
diff --git a/service/service-web/src/main/resources/logback.xml b/service/service-web/src/main/resources/logback.xml
new file mode 100644
index 0000000..04ecbe3
--- /dev/null
+++ b/service/service-web/src/main/resources/logback.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+ %cyan([%thread]) %yellow(%-5level) %green(%logger{100}).%boldRed(%method)-%boldMagenta(%line) - %blue(%msg%n)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/service/service-web/src/main/resources/mapper/UserIntegralRecordMapper.xml b/service/service-web/src/main/resources/mapper/UserIntegralRecordMapper.xml
new file mode 100644
index 0000000..198bd01
--- /dev/null
+++ b/service/service-web/src/main/resources/mapper/UserIntegralRecordMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ user_id, oper_type, integral, create_time
+
+
+
diff --git a/service/service-web/src/main/resources/mapper/UserMapper.xml b/service/service-web/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000..a45e006
--- /dev/null
+++ b/service/service-web/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ user_id, nick_name, email, password, sex, person_description, join_time, last_login_time, last_login_ip, last_login_ip_address, total_integral, current_integral, status
+
+
+
+
+
+
diff --git a/service/service-web/src/main/resources/mapper/UserRoleMapper.xml b/service/service-web/src/main/resources/mapper/UserRoleMapper.xml
new file mode 100644
index 0000000..332b514
--- /dev/null
+++ b/service/service-web/src/main/resources/mapper/UserRoleMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, user_id, role_name, description, role_code, create_time, update_time
+
+
+