Commit b4e410d5 by zhoujinghao

Merge branch 'test'

2 parents 788e8060 1217a54a
Showing 214 changed files with 3833 additions and 759 deletions
...@@ -13,125 +13,124 @@ ...@@ -13,125 +13,124 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<name>nafmii-admin</name> <name>nafmii-admin</name>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>Demo project for Spring Boot</description> <description>中心端(后台管理系统)</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties> </properties>
<!--区分环境打包-->
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<!--指定默认激活-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<dependencies> <dependencies>
<!--集成SpringBoot Admin监控-->
<!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server -->
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>de.codecentric</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency> <version>2.4.1</version>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!--feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉springboot默认配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- MyBatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<!--SpringData工具包-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle/ojdbc14 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
</dependency>
<!--JWT(Json Web Token)登录支持-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!--JWT(Json Web Token)登录支持-->
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
</dependency> </dependency>
<!--集成logstash-->
<dependency> <dependency>
<groupId>net.logstash.logback</groupId> <groupId>org.nafmii</groupId>
<artifactId>logstash-logback-encoder</artifactId> <artifactId>nafmii-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<!--集成SpringBoot Admin监控--> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-sleuth -->
<dependency> <dependency>
<groupId>de.codecentric</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId> <artifactId>spring-cloud-starter-sleuth</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
<!--Knife4j API文档生产工具--> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-sleuth-zipkin -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId> <artifactId>spring-cloud-sleuth-zipkin</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId> <artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency> <dependency>
<groupId>org.nafmii</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>nafmii-common</artifactId> <artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin> </plugin>
</plugins> </plugins>
<finalName>${project.artifactId}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>application-dev.yml</exclude>
<exclude>application-test.yml</exclude>
<exclude>application-prod.yml</exclude>
</excludes>
</resource>
<!--需要动态添加的资源-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<!--读取打包命令中指定的环境-->
<include>application-${env}.yml</include>
<include>application.yml</include>
</includes>
</resource>
</resources>
</build> </build>
</project> </project>
package org.nafmii.nafmiiadmin; package org.nafmii.admin;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.nafmii.common.ftp.EnableFtpServer;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication
@EnableEurekaClient @EnableEurekaClient
@EnableSwagger2
@EnableFeignClients @EnableFeignClients
@ComponentScan(value = {"org.nafmii.nafmiiadmin"}) @MapperScan(basePackages ={"org.nafmii.admin/**/dao"})
@MapperScan(basePackages ={"org.nafmii.nafmiiadmin.mapper"}) @EnableFtpServer
public class NafmiiAdminApplication { public class NafmiiAdminApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package org.nafmii.admin.att.controller;
import cn.hutool.core.io.FileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.admin.att.service.AttService;
import org.nafmii.common.response.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.InputStream;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/7 14:30
* @ClassName:文件服务公共接口
* @version:
* @remark:
*/
@RestController
@RequestMapping("/nafmii/admin/att")
@Api(tags = "2.0.2", description = "上传文件到文件服务器【zjh】")
@Slf4j
public class AttController {
@Autowired
private AttService attService;
/**上传文件到ftp
*
* @param description 描述
* @param userId 用户id
* @param files 文件
* @return
*/
@ApiOperation( value = "上传文件到ftp",notes = "上传文件到ftp")
@PostMapping(value = "/uploadToFtp",headers = "content-type=multipart/form-data")
@ResponseBody
public ApiResponse uploadToFtp(@RequestParam("description") String description,
@RequestParam("userId") String userId,
@RequestParam("files") MultipartFile[] files) {
log.info("外部网关通过ftp批量上传文件名称参数================》{}", files);
ApiResponse apiResponse = attService.uploadToFtp(files,description,Long.valueOf(userId));
return apiResponse;
}
/**
* 下载ftp上文件到本地
*@param newFileName 新文件名
*@param fileName 原文件(路径+文件名)
*@param downUrl 下载路径
*@return
*/
@ApiOperation( value = "下载ftp上文件到本地",notes = "下载ftp上文件到本地")
@PostMapping(value = "/downloadFile",headers = "content-type=multipart/form-data")
@ResponseBody
public ApiResponse downloadFile(@RequestParam("newFileName") String newFileName,
@RequestParam("fileName") String fileName,
@RequestParam("downUrl") String downUrl) {
ApiResponse apiResponse = attService.downloadFile(newFileName,fileName,downUrl);
return apiResponse;
}
}
package org.nafmii.admin.att.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.admin.att.service.ImportExcelService;
import org.nafmii.common.response.ApiResponse;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
@RestController
@RequestMapping("/nafmii/admin/excel")
@Api(tags = "2.0.3", description = "中心端批量导入Excel接口【zjh】")
public class ImportExcelController {
@Resource
private ImportExcelService iImportExcelService;
@ApiOperation( value = "中心端导入Excel",notes = "中心端导入Excel")
@PostMapping("/import")
@ResponseBody
public ApiResponse ImportExcel(MultipartFile file) throws IOException {
ApiResponse result = iImportExcelService.importExcel(file);
return result;
}
@ApiOperation( value = "中心端导出Excel",notes = "中心端导出Excel")
@PostMapping("/export")
@ResponseBody
public ApiResponse exportExcel() throws IOException {
ApiResponse result = iImportExcelService.exportExcel();
return result;
}
}
package org.nafmii.admin.att.dao;
import org.nafmii.admin.att.entity.AttachmentInfoPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 公用附件表 Mapper 接口
* </p>
*
* @author zjh
* @since 2021-05-07
*/
public interface AttachmentInfoMapper extends BaseMapper<AttachmentInfoPO> {
}
package org.nafmii.admin.att.dao;
import org.nafmii.admin.att.entity.BusinessAttachmentInfoPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author zjh
* @since 2021-05-07
*/
public interface BusinessAttachmentInfoMapper extends BaseMapper<BusinessAttachmentInfoPO> {
}
package org.nafmii.admin.att.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.nafmii.admin.att.dto.ImportExcelDto;
/**
* <p>
* 中心端-用户表 Mapper 接口
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Mapper
public interface ImportExcelMapper extends BaseMapper<ImportExcelDto> {
/**
* @author:suncq
* @Function:批量导入EXCEL数据
* @date 2021/5/6
* @ClassName:
* @version:
* @remark:
*/
int insertExcelData(@Param("data") ImportExcelDto data);
}
package org.nafmii.admin.att.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* AttachmentInfoDto对象.对应实体描述:公用附件表
*/
@Data
@ApiModel("AttachmentInfoDto对象")
public class AttachmentInfoDto {
@ApiModelProperty("附件id")
private String id;
@ApiModelProperty("源文件名称包括后缀")
private String fileName;
@ApiModelProperty("相对url")
private String fileUrl;
@ApiModelProperty("文件存储相对目录")
private String filePath;
@ApiModelProperty("描述")
private String description;
@ApiModelProperty("软删除字段0未删除1已删除")
private String delFlag;
@ApiModelProperty("创建人")
private Long createUser;
@ApiModelProperty("创建时间")
private Date createDate;
@ApiModelProperty("修改人")
private Long updateUser;
@ApiModelProperty("修改时间")
private Date updateDate;
}
package org.nafmii.admin.att.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* AttachmentInfoDto对象.对应实体描述:公用附件表
*/
@Data
@ApiModel("AttachmentInfoListDto对象")
public class AttachmentInfoListDto {
@ApiModelProperty("附件集合信息")
List<AttachmentInfoDto> attachmentInfoDtoList;
}
package org.nafmii.admin.att.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("导入Excel参数对象")
public class ImportExcelDto {
private String column1;
private String column2;
private String column3;
}
package org.nafmii.admin.att.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 公用附件表
* </p>
*
* @author zjh
* @since 2021-05-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("ATTACHMENT_INFO")
@ApiModel(value="AttachmentInfoPO对象", description="公用附件表")
public class AttachmentInfoPO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "附件id")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "源文件名称")
@TableField("FILE_NAME")
private String fileName;
@ApiModelProperty(value = "相对url")
@TableField("FILE_URL")
private String fileUrl;
@ApiModelProperty(value = "文件存储相对目录")
@TableField("FILE_PATH")
private String filePath;
@ApiModelProperty(value = "描述")
@TableField("DESCRIPTION")
private String description;
@ApiModelProperty(value = "是否有效 0 有效 1无效")
@TableField("IS_ENABLE")
private String isEnable;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_USER_ID")
private Long createUserId;
@ApiModelProperty(value = "修改人")
@TableField("UPDATE_USER_ID")
private Long updateUserId;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
}
package org.nafmii.admin.att.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author zjh
* @since 2021-05-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("BUSINESS_ATTACHMENT_INFO")
@ApiModel(value="BusinessAttachmentInfoPO对象", description="")
public class BusinessAttachmentInfoPO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键id")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "业务类型")
@TableField("BUSINESS")
private String business;
@ApiModelProperty(value = "业务id")
@TableField("BUSINESS_ID")
private Long businessId;
@ApiModelProperty(value = "附件id")
@TableField("ATTACHMENT_ID")
private Long attachmentId;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_USER_ID")
private Long createUserId;
@ApiModelProperty(value = "修改人")
@TableField("UPDATE_USER_ID")
private Long updateUserId;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@ApiModelProperty(value = "排序")
@TableField("SORT")
private Integer sort;
@ApiModelProperty(value = "描述")
@TableField("DESCRIPTION")
private String description;
@ApiModelProperty(value = "是否有效 0 有效 1无效")
@TableField("IS_ENABLE")
private String isEnable;
}
package org.nafmii.admin.att.service;
import org.nafmii.admin.att.dto.AttachmentInfoListDto;
import org.nafmii.common.response.ApiResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.List;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/7 14:42
* @ClassName:
* @version:
* @remark:
*/
public interface AttService {
//下载ftp上文件到本地
ApiResponse downloadFile(String newFileName, String fileName, String downUrl);
//上传文件到ftp
ApiResponse uploadToFtp(MultipartFile[] files, String description, Long userId);
//ftp上传存库操作
ApiResponse uploadByFtp(AttachmentInfoListDto attachmentInfoListDto);
}
package org.nafmii.admin.att.service;
import org.nafmii.common.response.ApiResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
* <p>
* 中心端批量导入Excel
* </p>
*
* @author zjh
* @since 2021-04-27
*/
public interface ImportExcelService {
//中心端导出Excle
ApiResponse exportExcel();
//中心端批量导入Excel
ApiResponse importExcel(MultipartFile file) throws IOException;
}
package org.nafmii.admin.att.service.impl;
import cn.hutool.core.bean.copier.BeanCopier;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.admin.att.dao.AttachmentInfoMapper;
import org.nafmii.admin.att.dto.AttachmentInfoDto;
import org.nafmii.admin.att.dto.AttachmentInfoListDto;
import org.nafmii.admin.att.entity.AttachmentInfoPO;
import org.nafmii.admin.att.service.AttService;
import org.nafmii.admin.att.vo.EshopAttachmentInfoVo;
import org.nafmii.common.constant.CommonEnum;
import org.nafmii.common.constant.MessageEnum;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.FtpUtil;
import org.nafmii.common.utils.SnowFlakeUtil;
import org.nafmii.common.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.*;
import java.util.*;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/7 14:42
* @ClassName:
* @version:
* @remark:
*/
@Service
@Slf4j
public class AttServiceImpl implements AttService {
// @Value("${att.upload.docBase}")
// private String ftpPath;
// @Value("${att.upload.path}")
// private String downLoad;
//
// @Value("${web.upload.path}")
// private String fileRootPath;
@Resource
private AttachmentInfoMapper infoMapper;
/**
* 下载ftp上文件到本地
*@param newFileName 新文件名
*@param fileName 原文件(路径+文件名)
*@param downUrl 下载路径
*@return
*/
@Override
public ApiResponse downloadFile(String newFileName, String fileName, String downUrl) {
log.info("下载文件参数newFileName:{}fileName:{}downUrl:",newFileName,fileName,downUrl);
OutputStream os=null;
String lastPath="";
File localFile = new File(downUrl + "/" + newFileName);
if (!localFile.getParentFile().exists()){//文件夹目录不存在创建目录
localFile.getParentFile().mkdirs();
//存放图片的路径地址
StringBuilder sb = new StringBuilder("").append("/");
String path = sb.toString();
lastPath=path;
try {
localFile.createNewFile();
os = new FileOutputStream(localFile);
FtpUtil fileFtp = new FtpUtil();
log.info("通过ftp下载文件参数lastPath:{}ileName:{}downUrl:",lastPath,fileName,downUrl);
fileFtp.downloadFile(lastPath,fileName,downUrl);
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
/**
* 上传文件到ftp
* @param files
* @return
*/
@Override
public ApiResponse uploadToFtp(MultipartFile[] files, String description, Long userId) {
log.info("-----uploadByFtp-----MultipartFile files长度--------"+files.length);
if(files==null){
return new ApiResponse(ApiResponse.FAIL,MessageEnum.FAIL_PARAM.getRemarks());
}else{
List<AttachmentInfoDto> attachList=new ArrayList<>();
String lastPath="";
LinkedList<String> newNameList = new LinkedList<String>();
LinkedList<InputStream> fileList = new LinkedList<InputStream>();
for (MultipartFile file : files) {
AttachmentInfoDto attachVo=new AttachmentInfoDto();
//获取上传的附件原名包括后缀
String realFileName=file.getOriginalFilename();
attachVo.setFileName(realFileName);
//获取后缀名,如.jpg.png
log.info("--------源文件名开始 realFileName--------"+realFileName);
String suffixes = realFileName.substring(realFileName.lastIndexOf("."));
List<String> extList = Arrays.asList(".jpg", ".png", ".jpeg", ".gif");
if (!extList.contains(suffixes)) {
return new ApiResponse(ApiResponse.FAIL, MessageEnum.FILE_PICTURE.getRemarks());
}
//重新命名包括后缀名
String newName = StringUtil.getRandomOrderNumber() + "_" + StringUtil.getRandomOrderNumberString() + suffixes;
// String newName= UUID.randomUUID().toString().replaceAll("\\-", "")+suffixes;
newNameList.add(newName);
try {
fileList.add(file.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
//存放图片的路径地址
StringBuilder sb = new StringBuilder("").append("/");
String path = sb.toString();
lastPath=path;
// fileFtp.uploadFile(path,newName,file.getInputStream());
//文件服务器地址**********************************************
String filePath=path+newName;
//赋值附件数据存储的信息**********************************************
attachVo.setCreateDate(new Date());
attachVo.setCreateUser(userId);
attachVo.setUpdateDate(new Date());
attachVo.setUpdateUser(userId);
attachVo.setDelFlag(CommonEnum.USED.getCode());
attachVo.setDescription(description);
attachVo.setFilePath(filePath);
attachVo.setFileUrl(""+"/"+newName);
attachList.add(attachVo);
}
//ftp上传
try {
FtpUtil fileFtp = new FtpUtil();
fileFtp.uploadArrFile(lastPath,newNameList,fileList);
} catch (Exception e) {
log.error("服务器上传附件异常----------",e);
e.printStackTrace();
}
//相关数据存储到数据库里
AttachmentInfoListDto infoListDto=new AttachmentInfoListDto();
infoListDto.setAttachmentInfoDtoList(attachList);
ApiResponse apiResponse = uploadByFtp(infoListDto);
return apiResponse;
}
}
@Override
public ApiResponse uploadByFtp(AttachmentInfoListDto attachmentInfoListDto) {
if (attachmentInfoListDto == null || attachmentInfoListDto.getAttachmentInfoDtoList()==null
||attachmentInfoListDto.getAttachmentInfoDtoList().size()<=0) {
return new ApiResponse(MessageEnum.FILE_DOWN_FAIL.getCode(), MessageEnum.FILE_DOWN_FAIL.getRemarks(), null);
}
List<EshopAttachmentInfoVo> infoVoList = new ArrayList<EshopAttachmentInfoVo>();
List<AttachmentInfoDto> attList=attachmentInfoListDto.getAttachmentInfoDtoList();
for (AttachmentInfoDto infoDto : attList) {
AttachmentInfoPO attachmentInfoPO = BeanTransferUtils.transfer(infoDto, AttachmentInfoPO.class);
attachmentInfoPO.setId(SnowFlakeUtil.nextId());
int add = infoMapper.insert(attachmentInfoPO);
if (add > 0) {
EshopAttachmentInfoVo addVo = new EshopAttachmentInfoVo();
addVo.setId(attachmentInfoPO.getId()+"");
addVo.setFileName(attachmentInfoPO.getFileName());
addVo.setFileUrl(attachmentInfoPO.getFileUrl());
infoVoList.add(addVo);
}
}
log.info("文件业务数据存储完毕 {}", System.currentTimeMillis());
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT, infoVoList);
}
}
package org.nafmii.admin.att.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.enums.CellExtraTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.admin.att.dto.ImportExcelDto;
import org.nafmii.admin.att.service.ImportExcelService;
import org.nafmii.admin.att.dao.ImportExcelMapper;
import org.nafmii.admin.att.utils.NoModelDataListener;
import org.nafmii.admin.att.vo.ExcelVo;
import org.nafmii.common.constant.MessageEnum;
import org.nafmii.common.response.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* <p>
* 中心端批量导入Excel
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Slf4j
@Service
public class ImportExcelServiceImpl implements ImportExcelService {
@Resource
private ImportExcelMapper importExcelMapper;
@Autowired
HttpServletResponse response;
/**
* 导出
* @param
* @return
*/
@Override
public ApiResponse exportExcel() {
ArrayList<ExcelVo> objects = new ArrayList<>();
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileProductName = URLEncoder.encode("店铺运营售后处理导出数据", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileProductName + ".xlsx");
EasyExcel.write(response.getOutputStream(), ExcelVo.class).sheet("导出").doWrite(objects);
} catch (IOException e) {
e.printStackTrace();
}
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT,objects);
}
/**
* 导入
* @param file
* @return
* @throws IOException
*/
@Override
@Transactional(rollbackFor = Exception.class)
public ApiResponse importExcel(MultipartFile file) throws IOException {
List<Map<Integer,String>>list =EasyExcel.read(file.getInputStream(),new NoModelDataListener())
.extraRead(CellExtraTypeEnum.MERGE)
.ignoreEmptyRow(true)
.autoTrim(true)
.headRowNumber(1)
.sheet(0)
.doReadSync();
log.info("导入后生成的数据源=============>"+list);
if (!list.isEmpty()) {
for (Map<Integer,String> data : list) {
ImportExcelDto excelDto = new ImportExcelDto();
if (data.size()!=3){
return new ApiResponse(ApiResponse.FAIL, MessageEnum.EXCEL_ERROR.getRemarks());
}
excelDto.setColumn1(data.get(0));
excelDto.setColumn2(data.get(1));
excelDto.setColumn3(data.get(2));
log.info("导入处理后生成的数据源=============>"+excelDto);
importExcelMapper.insertExcelData(excelDto);
}
}
return new ApiResponse(ApiResponse.SUCCESS, ApiResponse.SUCCESS_TEXT);
}
}
\ No newline at end of file \ No newline at end of file
package org.nafmii.admin.att.utils;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.CellExtra;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/8 11:23
* @ClassName:
* @version:
* @remark:
*/
@Slf4j
public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {
/**
* 所有列到字段名的映射
* */
private Map<Integer,String> index2FieldMap ;
/**
* 解析出的数据
*/
private LinkedHashMap<Integer,Map<Integer, String>> row2DataMap = new LinkedHashMap<>();
/**
* 合并单元格
*/
private List<CellExtra> extraMergeInfoList = new ArrayList<>();
public NoModelDataListener(){}
public NoModelDataListener(Map<Integer,String> index2FieldMap){
this.index2FieldMap = index2FieldMap ;
}
@Override
public void invoke(Map<Integer, String> rowData, AnalysisContext analysisContext) {
//读取到的每行数据,其key是以0开始的索引
row2DataMap.put(analysisContext.readRowHolder().getRowIndex(),rowData) ;
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//所有行都解析完成
this.explainMergeData(row2DataMap, extraMergeInfoList) ;
}
/**
* 某行的数据解析失败
* */
@Override
public void onException(Exception exception, AnalysisContext context) {
log.info("解析失败,但是继续解析下一行: " + exception.getMessage());
// 如果是某一个单元格的转换异常 能获取到具体行号
if (exception instanceof ExcelDataConvertException) {
ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
log.info("第{}行,第{}列解析异常" + excelDataConvertException.getRowIndex() +
excelDataConvertException.getColumnIndex());
}
}
@Override
public void extra(CellExtra extra, AnalysisContext context) {
switch (extra.getType()){
case MERGE:{
extraMergeInfoList.add(extra);
break;
}
case HYPERLINK:{
break;
}
case COMMENT:{
}
default: {
}
}
}
/**
* 处理合并单元格
* @param data 解析数据
* @param extraMergeInfoList 合并单元格信息
* @return 填充好的解析数据
*/
private void explainMergeData(Map<Integer,Map<Integer, String>> data, List<CellExtra> extraMergeInfoList) {
//循环所有合并单元格信息
extraMergeInfoList.forEach(cellExtra -> {
int firstRowIndex = cellExtra.getFirstRowIndex();
int lastRowIndex = cellExtra.getLastRowIndex();
int firstColumnIndex = cellExtra.getFirstColumnIndex();
int lastColumnIndex = cellExtra.getLastColumnIndex();
Map<Integer,String> rdata = data.get(cellExtra.getRowIndex()) ;
String val = null ;
if(rdata != null){
val = rdata.get(cellExtra.getColumnIndex()) ;
}
//遍历每行
Map<Integer, String> rowData = null ;
for(int i=firstRowIndex;i<=lastRowIndex;i++){
rowData = data.get(i) ;
if(rowData == null){
continue;
}
for(int c = firstColumnIndex;c<=lastColumnIndex;c++){
rowData.put(c,val) ;
}
}
});
}
}
package org.nafmii.admin.att.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
* EshopAttachmentInfoVo对象.对应实体描述:公用附件表
*
*
*/
@Data
@ApiModel("EshopAttachmentInfoVo对象")
public class EshopAttachmentInfoVo implements Serializable {
private static final long serialVersionUID = 1L;
/** 对应字段:id,备注:附件id */
@ApiModelProperty("附件id")
private String id;
/** 对应字段:file_name,备注:源文件名称 */
@ApiModelProperty("源文件名称")
private String fileName;
/** 对应字段:file_url,备注:相对url */
@ApiModelProperty("相对url")
private String fileUrl;
/** 对应字段:file_path,备注:文件存储相对目录 */
@ApiModelProperty("文件存储相对目录")
private String filePath;
/** 对应字段:description,备注:描述 */
@ApiModelProperty("描述")
private String description;
/** 对应字段:del_flag,备注:软删除字段0未删除1已删除 */
@ApiModelProperty("软删除字段0未删除1已删除")
private Integer delFlag;
/** 对应字段:create_id,备注:创建人 */
@ApiModelProperty("创建人")
private Long createUser;
/** 对应字段:create_date,备注:创建时间 */
@ApiModelProperty("创建时间")
private Date createDate;
/** 对应字段:update_id,备注:修改时间 */
@ApiModelProperty("修改人")
private Long updateUser;
/** 对应字段:update_date,备注:修改时间 */
@ApiModelProperty("修改时间")
private Date updateDate;
/**
* 对应字段:page,备注:页码
*/
@ApiModelProperty("页码")
private int page;
/**
* 对应字段:limit,备注:每页数量
*/
@ApiModelProperty("每页数量")
private int limit;
}
package org.nafmii.admin.att.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/10 13:44
* @ClassName:
* @version:
* @remark:
*/
@ApiModel("ExcelVo")
@ColumnWidth(18)
@Data
public class ExcelVo {
@ExcelProperty(value = "id",index = 0)
@ApiModelProperty("id")
private Long id;
@ExcelProperty(value = "退款交易流水号",index = 1)
@ApiModelProperty("名称")
private String name;
@ExcelProperty(value = "性别",index = 2)
@ApiModelProperty("性别")
private String sex;
@ExcelProperty(value = "电话号",index = 3)
@ApiModelProperty("电话号")
private String phone;
}
package org.nafmii.swagger; package org.nafmii.admin.swagger;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/** /**
* 用于在swagger-ui.html上展示所有Api接口 * 用于在swagger-ui.html上展示所有Api接口
...@@ -22,20 +29,27 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; ...@@ -22,20 +29,27 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
public class SwaggerConfig { public class SwaggerConfig {
@Bean @Bean
public Docket adminApi() { public Docket adminApi() {
// String basePackage = ADMIN_SWAGGER;// 要暴露的API接口的基础包名 ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
ticketPar.name("Authorization").description("Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
return new Docket (DocumentationType.SWAGGER_2) return new Docket (DocumentationType.SWAGGER_2)
.select () .apiInfo(apiInfo())
.apis (RequestHandlerSelectors.basePackage ("org.nafmii")) .select()
.paths (PathSelectors.any ()) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build () .paths(PathSelectors.any())
.apiInfo (apiInfo ()) .build().globalOperationParameters(pars)
.useDefaultResponseMessages (false); .useDefaultResponseMessages(false)
.enableUrlTemplating(false);
} }
private static ApiInfo apiInfo() { private static ApiInfo apiInfo() {
return new ApiInfoBuilder () return new ApiInfoBuilder ()
.title ("NAFMIIapp应用层接口说明") .title ("NAFMIIweb应用层接口说明")
.description ("NAFMIIapp应用层接口说明") .description ("NAFMIIweb应用层接口说明")
.version ("1.0") .version ("1.0")
.build (); .build ();
} }
......
package org.nafmii.admin.user.controller;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.admin.user.param.EditMenuParam;
import org.nafmii.admin.user.param.QueryMenusParam;
import org.nafmii.admin.user.service.ICenterMenuService;
import org.nafmii.admin.user.vo.CenterMenuVO;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.param.PageResult;
import org.nafmii.common.response.ApiResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 中心端菜单表 前端控制器
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@RestController
@RequestMapping("/nafmii/admin/menu")
@Api(tags = "3.0.0", description = "中心端菜单接口")
public class CenterMenuController {
@Resource
private ICenterMenuService centerMenuService;
@ApiOperation( value = "中心端新增修改菜单",notes = "中心端新增修改菜单")
@PostMapping("/edit")
@ResponseBody
public ApiResponse editMenus (@RequestBody @Validated EditMenuParam param){
ApiResponse result = centerMenuService.editMenu(param);
return result;
}
@ApiOperation( value = "中心端菜单列表查询",notes = "中心端菜单列表查询")
@PostMapping("/queryMenuList")
@ResponseBody
public ApiResponse<List<CenterMenuVO>> queryMenuList (@RequestBody @Validated QueryMenusParam param){
PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageResult<CenterMenuVO> result =
BeanTransferUtils.toPagedResult(centerMenuService.queryMenuList(param), CenterMenuVO.class);
return new ApiResponse(result);
}
@ApiOperation( value = "中心端菜单删除",notes = "中心端菜单删除")
@PostMapping("/delete")
@ResponseBody
public ApiResponse deleteMenus(@RequestParam Long[] ids){
ApiResponse result = centerMenuService.deleteMenus(ids);
return result;
}
@ApiOperation( value = "中心端用户对应菜单查询",notes = "中心端用户对应菜单查询")
@PostMapping("/queryUserMenus")
@ResponseBody
public ApiResponse queryUserMenus (){
ApiResponse result = centerMenuService.queryUserMenus();
return result;
}
}
package org.nafmii.admin.user.controller;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.admin.user.dto.CenterRoleDto;
import org.nafmii.admin.user.param.QueryRolesParam;
import org.nafmii.admin.user.service.ICenterRoleService;
import org.nafmii.admin.user.vo.CenterRoleVO;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.param.PageResult;
import org.nafmii.common.response.ApiResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 中心端角色表 前端控制器
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@RestController
@RequestMapping("/nafmii/admin/role")
@Api(tags = "3.0.0", description = "中心端角色接口")
public class CenterRoleController {
@Resource
private ICenterRoleService centerRoleService;
@ApiOperation( value = "中心端角色新增修改",notes = "中心端角色新增修改")
@PostMapping("/edit")
@ResponseBody
public ApiResponse editRoles (@Validated @RequestBody CenterRoleDto centerRoleDto){
ApiResponse result = centerRoleService.editRoles(centerRoleDto);
return result;
}
@ApiOperation( value = "中心端角色列表查询",notes = "中心端角色列表查询")
@PostMapping("/queryRolesList")
@ResponseBody
public ApiResponse<List<CenterRoleVO>> queryRolesList (@RequestBody @Validated QueryRolesParam param){
PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageResult<CenterRoleVO> result =
BeanTransferUtils.toPagedResult(centerRoleService.queryRolesList(param),CenterRoleVO.class);
return new ApiResponse(result);
}
@ApiOperation( value = "中心端角色删除",notes = "中心端角色删除")
@PostMapping("/delete")
@ResponseBody
public ApiResponse deleteRoles(@RequestParam Long[] ids){
ApiResponse result = centerRoleService.deleteRoles(ids);
return result;
}
@ApiOperation( value = "中心端用户对应角色查询",notes = "中心端用户对应角色查询")
@PostMapping("/queryUserRole")
@ResponseBody
public ApiResponse queryRolesByUser (){
ApiResponse result = centerRoleService.queryRolesByUser();
return result;
}
}
package org.nafmii.admin.user.controller;
import com.github.pagehelper.PageHelper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.admin.user.param.LoginParam;
import org.nafmii.admin.user.param.QueryUsersParam;
import org.nafmii.admin.user.service.ICenterUserService;
import org.nafmii.admin.user.vo.CenterUserVO;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.param.PageResult;
import org.nafmii.common.response.ApiResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 中心端-用户表 前端控制器
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@RestController
@RequestMapping("/nafmii/admin/user")
@Api(tags = "3.0.0", description = "中心端用户接口")
public class CenterUserController {
@Resource
private ICenterUserService centerUserService;
@ApiOperation( value = "中心端用户登陆",notes = "中心端用户登陆")
@PostMapping("/login")
@ResponseBody
public ApiResponse<CenterUserVO> login (@Validated @RequestBody LoginParam param){
ApiResponse<CenterUserVO> login = centerUserService.userLogin(param);
return login;
}
@ApiOperation( value = "中心端用户列表",notes = "中心端用户列表")
@PostMapping("/queryUserList")
@ResponseBody
public ApiResponse<List<CenterUserVO>> queryUserList (@RequestBody @Validated QueryUsersParam param){
PageHelper.startPage(param.getPageNum(),param.getPageSize());
PageResult<CenterUserVO> result =
BeanTransferUtils.toPagedResult(centerUserService.queryUserList(param),CenterUserVO.class);
return new ApiResponse(result);
}
}
package org.nafmii.admin.user.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nafmii.admin.user.dto.QueryMenusDto;
import org.nafmii.admin.user.entity.CenterMenuPO;
import org.nafmii.admin.user.vo.CenterMenuVO;
import java.util.List;
/**
* <p>
* 中心端菜单表 Mapper 接口
* </p>
*
* @author suncq
* @since 2021-04-28
*/
public interface CenterMenuMapper extends BaseMapper<CenterMenuPO> {
/**
* @author:suncq
* @Function:中心端菜单新增修改
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
int updateMenuById(CenterMenuPO centerMenuPO);
/**
* @author:suncq
* @Function:中心端菜单列表查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterMenuVO> queryMenuList(QueryMenusDto dto);
/**
* @author:suncq
* @Function:中心端菜单删除
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
int deleteMenus(Long[] ids);
/**
* @author:suncq
* @Function:中心端用户对应菜单查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterMenuVO> queryUserMenus(Long userid);
}
package org.nafmii.admin.user.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nafmii.admin.user.dto.QueryRolesDto;
import org.nafmii.admin.user.entity.CenterRolePO;
import org.nafmii.admin.user.vo.CenterRoleVO;
import java.util.List;
/**
* <p>
* 中心端角色表 Mapper 接口
* </p>
*
* @author suncq
* @since 2021-04-27
*/
public interface CenterRoleMapper extends BaseMapper<CenterRolePO> {
/**
* @author:suncq
* @Function:中心端角色新增修改
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
int updateRoleById(CenterRolePO crp);
/**
* @author:suncq
* @Function:中心端角色列表查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
* @param dto
*/
List<CenterRoleVO> queryRolesList(QueryRolesDto dto);
/**
* @author:suncq
* @Function:中心端角色删除
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
int deleteRoles(Long[] ids);
/**
* @author:suncq
* @Function:中心端用户对应角色查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterRoleVO> queryRolesByUser(Long userId);
}
package org.nafmii.admin.user.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.nafmii.admin.user.dto.QueryUsersDto;
import org.nafmii.admin.user.entity.CenterUserPO;
import org.nafmii.admin.user.vo.CenterUserVO;
import java.util.List;
/**
* <p>
* 中心端-用户表 Mapper 接口
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Mapper
public interface CenterUserMapper extends BaseMapper<CenterUserPO> {
/**
* @author:suncq
* @Function:中心端用户登陆
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
CenterUserVO selectUserByPhone(@Param("phone") String phone);
/**
* @author:suncq
* @Function:用户列表查询
* @date 2021/4/28
* @ClassName:
* @version:
* @remark:
*/
List<CenterUserVO> queryUserList(QueryUsersDto dto);
}
package org.nafmii.admin.user.dto;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
* 中心端菜单表
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@Data
@ApiModel("中心端菜单参数对象")
public class CenterMenuDTO extends Model {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "菜单名称")
private String menuName;
@ApiModelProperty(value = "菜单级别")
private Integer menuLevle;
@ApiModelProperty(value = "父级主键")
private Long parentId;
@ApiModelProperty(value = "排序字段")
private Integer orderSeq;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1 禁用")
private String isEnable;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
}
package org.nafmii.admin.user.dto;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* <p>
* 中心端角色表
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Data
@ApiModel("中心端新增修改角色参数对象")
public class CenterRoleDto extends Model {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "角色名称")
@NotNull(message = "角色名称不能为空")
private String rName;
@ApiModelProperty(value = "启用禁用 0 启用 1禁用")
private String isEnable;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
}
package org.nafmii.admin.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:suncq
* @Function:TODO
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户登陆参数对象")
public class LoginDto {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@NotNull(message = "登陆密码不能为空")
@ApiModelProperty("登陆密码")
private String loginPwd;
}
package org.nafmii.admin.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author lvyp
* @date 2021/4/28
*/
@Data
@ApiModel(value = "菜单列表查询数据交互类型")
public class QueryMenusDto extends PageQuery {
@ApiModelProperty(value = "创建开始时间")
private LocalDate startCreateTime;
@ApiModelProperty(value = "创建结束时间")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author suncq
* @date 2021/4/28
*/
@Data
@ApiModel(value = "角色列表查询数据交互类型")
public class QueryRolesDto extends PageQuery {
@ApiModelProperty(value = "创建开始时间")
private LocalDate StartCreateTime;
@ApiModelProperty(value = "创建结束时间")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author lvyp
* @date 2021/4/28
*/
@Data
@ApiModel(value = "用户列表查询数据交互类型")
public class QueryUsersDto extends PageQuery {
@ApiModelProperty(value = "创建开始时间")
private LocalDate StartCreateTime;
@ApiModelProperty(value = "创建结束时间")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 中心端菜单表
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("CENTER_MENU")
@ApiModel(value="CenterMenuPO对象", description="中心端菜单表")
public class CenterMenuPO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "菜单名称")
@TableField("MENU_NAME")
private String menuName;
@ApiModelProperty(value = "菜单级别")
@TableField("MENU_LEVLE")
private Integer menuLevle;
@ApiModelProperty(value = "父级主键")
@TableField("PARENT_ID")
private Long parentId;
@ApiModelProperty(value = "排序字段")
@TableField("ORDER_SEQ")
private Integer orderSeq;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1 禁用")
@TableField("IS_ENABLE")
private String isEnable;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_USER_ID")
private Long createUserId;
@ApiModelProperty(value = "修改人")
@TableField("UPDATE_USER_ID")
private Long updateUserId;
}
package org.nafmii.admin.user.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 中心端角色表
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("CENTER_ROLE")
@ApiModel(value="CenterRolePO对象", description="中心端角色表")
public class CenterRolePO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "角色名称")
@TableField("R_NAME")
private String rName;
@ApiModelProperty(value = "创建时间")
@TableField("CREAT_TIME")
private LocalDateTime creatTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1禁用")
@TableField("IS_ENABLE")
private String isEnable;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_USER_ID")
private Long createUserId;
@ApiModelProperty(value = "修改人")
@TableField("UPDATE_USER_ID")
private Long updateUserId;
}
package org.nafmii.admin.user.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 中心端-用户表
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("CENTER_USER")
@ApiModel(value="CenterUserPO对象", description="中心端-用户表")
public class CenterUserPO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "登录用户名")
@TableField("LOGIN_NAME")
private String loginName;
@ApiModelProperty(value = "登录密码")
@TableField("LOGIN_PWD")
private String loginPwd;
@ApiModelProperty(value = "中文姓名")
@TableField("CN_NAME")
private String cnName;
@ApiModelProperty(value = "英文姓名")
@TableField("EN_NAME")
private String enName;
@ApiModelProperty(value = "移动电话")
@TableField("PHONE")
private String phone;
@ApiModelProperty(value = "固定电话")
@TableField("TELPHONE")
private String telphone;
@ApiModelProperty(value = "0 男 1 女")
@TableField("SEX")
private String sex;
@ApiModelProperty(value = "邮箱地址")
@TableField("EMAIL")
private String email;
@ApiModelProperty(value = "创建人")
@TableField("CREATE_USER_ID")
private Long createUserId;
@ApiModelProperty(value = "修改人")
@TableField("UPDATE_USER_ID")
private Long updateUserId;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@ApiModelProperty(value = "0 有效 1 无效")
@TableField("IS_ENABLE")
private String isEnable;
}
package org.nafmii.admin.user.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("IMPORT_EXCEL_TEST")
@ApiModel(value="导入ExcelPO对象", description="导入excel测试表")
public class ImportExcelPO extends Model {
private String column1;
private String column2;
private String column3;
}
package org.nafmii.admin.user.param;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
/**
* <p>
* 中心端菜单表
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@Data
@ApiModel(value="菜单列表新增修改入参对象")
public class EditMenuParam extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "菜单名称")
@NotNull(message = "菜单名称不能为空")
private String menuName;
@ApiModelProperty(value = "菜单级别")
@NotNull(message = "菜单级别不能为空")
private Integer menuLevle;
@ApiModelProperty(value = "父级主键")
@NotNull(message = "父级主键不能为空")
private Long parentId;
@ApiModelProperty(value = "排序字段")
@NotNull(message = "排序字段不能为空")
private Integer orderSeq;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1 禁用")
@NotNull(message = "启用禁用不能为空")
private String isEnable;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
}
package org.nafmii.admin.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:suncq
* @Function:TODO
* @date 2021/4/28
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("中心端用户登陆参数对象")
public class LoginParam {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("登陆密码")
@NotNull(message = "登陆密码不能为空")
private String loginPwd;
@NotNull(message = "登陆方式不能为空")
@ApiModelProperty("登陆方式0密码1验证码")
private String type;
}
package org.nafmii.admin.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author suncq
* @date 2021/4/28
*/
@Data
@ApiModel(value="菜单列表查询入参对象")
public class QueryMenusParam extends PageQuery {
@ApiModelProperty(value = "创建开始时间 yyyy-MM-dd")
private LocalDate startCreateTime;
@ApiModelProperty(value = "创建结束时间 yyyy-MM-dd")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author suncq
* @date 2021/4/28
*/
@Data
@ApiModel(value="角色列表查询入参对象")
public class QueryRolesParam extends PageQuery {
@ApiModelProperty(value = "创建开始时间 yyyy-MM-dd")
private LocalDate startCreateTime;
@ApiModelProperty(value = "创建结束时间 yyyy-MM-dd")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.nafmii.common.param.PageQuery;
import java.time.LocalDate;
/**
* @author lvyp
* @date 2021/4/28
*/
@Data
@ApiModel(value="用户列表查询入参对象")
public class QueryUsersParam extends PageQuery {
@ApiModelProperty(value = "创建开始时间 yyyy-MM-dd")
private LocalDate startCreateTime;
@ApiModelProperty(value = "创建结束时间 yyyy-MM-dd")
private LocalDate endCreateTime;
}
package org.nafmii.admin.user.service;
import org.nafmii.admin.user.param.EditMenuParam;
import org.nafmii.admin.user.param.QueryMenusParam;
import org.nafmii.admin.user.vo.CenterMenuVO;
import org.nafmii.common.response.ApiResponse;
import java.util.List;
/**
* <p>
* 中心端菜单表 服务类
* </p>
*
* @author suncq
* @since 2021-04-28
*/
public interface ICenterMenuService{
/**
* @author:suncq
* @Function:中心端菜单新增修改
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse editMenu(EditMenuParam param);
/**
* @author:suncq
* @Function:中心端菜单查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterMenuVO> queryMenuList(QueryMenusParam param);
/**
* @author:suncq
* @Function:中心端菜单删除
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse deleteMenus(Long[] ids);
/**
* @author:suncq
* @Function:中心端用户对应菜单查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse queryUserMenus();
}
package org.nafmii.admin.user.service;
import org.nafmii.admin.user.dto.CenterRoleDto;
import org.nafmii.admin.user.param.QueryRolesParam;
import org.nafmii.admin.user.vo.CenterRoleVO;
import org.nafmii.common.response.ApiResponse;
import java.util.List;
/**
* <p>
* 中心端角色表 服务类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
public interface ICenterRoleService{
/**
* @author:suncq
* @Function:中心端角色新增修改
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse editRoles(CenterRoleDto centerRoleDto);
/**
* @author:suncq
* @Function:中心端角色列表查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterRoleVO> queryRolesList(QueryRolesParam param);
/**
* @author:suncq
* @Function:中心端角色删除
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse deleteRoles(Long[] ids);
/**
* @author:suncq
* @Function:中心端用户对应角色查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse queryRolesByUser();
}
package org.nafmii.admin.user.service;
import org.nafmii.admin.user.param.LoginParam;
import org.nafmii.admin.user.param.QueryUsersParam;
import org.nafmii.admin.user.vo.CenterUserVO;
import org.nafmii.common.response.ApiResponse;
import java.util.List;
/**
* <p>
* 中心端-用户表 服务类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
public interface ICenterUserService {
/**
* @author:suncq
* @Function:中心端用户登陆
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse<CenterUserVO> userLogin(LoginParam param);
/**
* @author:suncq
* @Function:中心端用户列表查询
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
List<CenterUserVO> queryUserList(QueryUsersParam param);
}
package org.nafmii.admin.user.service.impl;
import org.nafmii.admin.user.dao.CenterMenuMapper;
import org.nafmii.admin.user.dto.QueryMenusDto;
import org.nafmii.admin.user.entity.CenterMenuPO;
import org.nafmii.admin.user.param.EditMenuParam;
import org.nafmii.admin.user.param.QueryMenusParam;
import org.nafmii.admin.user.service.ICenterMenuService;
import org.nafmii.admin.user.vo.CenterMenuVO;
import org.nafmii.common.constant.MessageEnum;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.RequestUtils;
import org.nafmii.common.utils.SnowFlakeUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 中心端菜单表 服务实现类
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@Service
public class CenterMenuServiceImpl implements ICenterMenuService {
@Resource
private CenterMenuMapper centerMenuMapper;
/**
* 中心端菜单新增修改
* @param param
* @return
*/
@Override
public ApiResponse editMenu(EditMenuParam param) {
Long menuId = param.getId();
if(null == menuId){//新增
CenterMenuPO cmp = new CenterMenuPO();
cmp.setId(SnowFlakeUtil.nextId());
cmp.setMenuName(param.getMenuName());
cmp.setMenuLevle(param.getMenuLevle());
cmp.setOrderSeq(param.getOrderSeq());
cmp.setParentId(param.getParentId());
cmp.setIsEnable(param.getIsEnable());
cmp.setCreateUserId(RequestUtils.getUserId());
cmp.setUpdateUserId(RequestUtils.getUserId());
cmp.setCreateTime(LocalDateTime.now());
cmp.setUpdateTime(LocalDateTime.now());
int i = centerMenuMapper.insert(cmp);
if (i < 0){
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
}else{//修改
CenterMenuPO cmp = new CenterMenuPO();
cmp.setId(param.getId());
cmp.setMenuName(param.getMenuName());
cmp.setMenuLevle(param.getMenuLevle());
cmp.setOrderSeq(param.getOrderSeq());
cmp.setParentId(param.getParentId());
cmp.setIsEnable(param.getIsEnable());
cmp.setUpdateUserId(param.getCreateUserId());
cmp.setUpdateTime(LocalDateTime.now());
int i = centerMenuMapper.updateMenuById(cmp);
if (i < 0){
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
}
}
/**
* 中心端菜单查询
* @param
* @return
*/
@Override
public List<CenterMenuVO> queryMenuList(QueryMenusParam param) {
QueryMenusDto dto = BeanTransferUtils.transfer(param, QueryMenusDto.class);
return centerMenuMapper.queryMenuList(dto);
}
/**
* 中心端菜单删除
* @param
* @return
*/
@Override
public ApiResponse deleteMenus(Long[] ids) {
int result = centerMenuMapper.deleteMenus(ids);
if (result < 0){
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
}
/**
* 中心端用户对应菜单查询
* @param
* @return
*/
@Override
public ApiResponse queryUserMenus() {
Long userid = RequestUtils.getUserId();
List<CenterMenuVO> result = centerMenuMapper.queryUserMenus(userid);
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT,result);
}
}
package org.nafmii.admin.user.service.impl;
import org.nafmii.admin.user.dao.CenterRoleMapper;
import org.nafmii.admin.user.dto.CenterRoleDto;
import org.nafmii.admin.user.dto.QueryRolesDto;
import org.nafmii.admin.user.entity.CenterRolePO;
import org.nafmii.admin.user.param.QueryRolesParam;
import org.nafmii.admin.user.service.ICenterRoleService;
import org.nafmii.admin.user.vo.CenterRoleVO;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.RequestUtils;
import org.nafmii.common.utils.SnowFlakeUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 中心端角色表 服务实现类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Service
public class CenterRoleServiceImpl implements ICenterRoleService {
@Resource
private CenterRoleMapper centerRoleMapper;
/**
* 中心端角色新增修改
* @param centerRoleDto
* @return
*/
@Override
public ApiResponse editRoles(CenterRoleDto centerRoleDto) {
Long roleId = centerRoleDto.getId();
if(null == roleId){//新增
CenterRolePO crp = new CenterRolePO();
crp.setId(SnowFlakeUtil.nextId());
crp.setRName(centerRoleDto.getRName());
crp.setCreateUserId(RequestUtils.getUserId());
crp.setCreatTime(LocalDateTime.now());
crp.setUpdateUserId(RequestUtils.getUserId());
crp.setUpdateTime(LocalDateTime.now());
crp.setIsEnable(centerRoleDto.getIsEnable());
int i = centerRoleMapper.insert(crp);
if (i<0){
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
}else{//修改
CenterRolePO crp = new CenterRolePO();
crp.setId(centerRoleDto.getId());
crp.setRName(centerRoleDto.getRName());
crp.setUpdateUserId(RequestUtils.getUserId());
crp.setUpdateTime(LocalDateTime.now());
crp.setIsEnable(centerRoleDto.getIsEnable());
int i = centerRoleMapper.updateRoleById(crp);
if (i<0){
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT);
}
}
}
/**
* 中心端角色列表查询
* @param
* @return
*/
@Override
public List<CenterRoleVO> queryRolesList(QueryRolesParam param) {
QueryRolesDto dto = BeanTransferUtils.transfer(param, QueryRolesDto.class);
List<CenterRoleVO> result = centerRoleMapper.queryRolesList(dto);
return result;
}
/**
* 中心端角色删除
* @param
* @return
*/
@Override
public ApiResponse deleteRoles(Long[] ids) {
int result = centerRoleMapper.deleteRoles(ids);
if (result<0) {
return new ApiResponse(ApiResponse.FAIL,ApiResponse.FAIL_TEXT);
}else{
return new ApiResponse(ApiResponse.SUCCESS, ApiResponse.SUCCESS_TEXT);
}
}
/**
* 中心端用户对应角色查询
* @param
* @return
*/
@Override
public ApiResponse queryRolesByUser() {
Long userId = RequestUtils.getUserId();
List<CenterRoleVO> result = centerRoleMapper.queryRolesByUser(userId);
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT,result);
}
}
package org.nafmii.admin.user.service.impl;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.admin.user.dao.CenterUserMapper;
import org.nafmii.admin.user.dto.QueryUsersDto;
import org.nafmii.admin.user.param.LoginParam;
import org.nafmii.admin.user.param.QueryUsersParam;
import org.nafmii.admin.user.service.ICenterUserService;
import org.nafmii.admin.user.vo.CenterUserVO;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 中心端-用户表 服务实现类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Slf4j
@Service
public class CenterUserServiceImpl implements ICenterUserService {
@Resource
private CenterUserMapper centerUserMapper;
/**
* 中心端用户登陆
* @param param
* @return
*/
@Override
public ApiResponse<CenterUserVO> userLogin(LoginParam param) {
log.info("===============中心端用户登录请求参数======》{}",param);
CenterUserVO userVo = new CenterUserVO();
//账号密码登陆
String phone = param.getPhone();
userVo = centerUserMapper.selectUserByPhone(phone);
if (null == userVo){
return new ApiResponse(ApiResponse.FAIL,"该用户未注册,请先注册!");
}
if(!param.getLoginPwd().equals(userVo.getLoginPwd())){
return new ApiResponse(ApiResponse.FAIL,"用户名或密码错误!");
}
return new ApiResponse(ApiResponse.SUCCESS,ApiResponse.SUCCESS_TEXT,userVo);
}
@Override
public List<CenterUserVO> queryUserList(QueryUsersParam param) {
QueryUsersDto dto = BeanTransferUtils.transfer(param,QueryUsersDto.class);
return centerUserMapper.queryUserList(dto);
}
}
package org.nafmii.admin.user.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
* 中心端菜单表
* </p>
*
* @author suncq
* @since 2021-04-28
*/
@Data
@ApiModel("菜单返回报文")
public class CenterMenuVO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "菜单名称")
private String menuName;
@ApiModelProperty(value = "菜单级别")
private Integer menuLevle;
@ApiModelProperty(value = "父级主键")
private Long parentId;
@ApiModelProperty(value = "排序字段")
private Integer orderSeq;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1 禁用")
private String isEnable;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
}
package org.nafmii.admin.user.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
* 中心端角色表
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Data
@ApiModel("角色返回报文")
public class CenterRoleVO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "角色名称")
private String rName;
@ApiModelProperty(value = "创建时间")
private LocalDateTime creatTime;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "启用禁用 0 启用 1禁用")
private String isEnable;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
}
package org.nafmii.admin.user.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* <p>
* 中心端-用户表
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Data
@ApiModel("用户返回报文")
public class CenterUserVO extends Model {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "登录用户名")
private String loginName;
@ApiModelProperty(value = "登录密码")
private String loginPwd;
@ApiModelProperty(value = "中文姓名")
private String cnName;
@ApiModelProperty(value = "英文姓名")
private String enName;
@ApiModelProperty(value = "移动电话")
private String phone;
@ApiModelProperty(value = "固定电话")
private String telphone;
@ApiModelProperty(value = "0 男 1 女")
private String sex;
@ApiModelProperty(value = "邮箱地址")
private String email;
@ApiModelProperty(value = "创建人")
private Long createUserId;
@ApiModelProperty(value = "修改人")
private Long updateUserId;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;
@ApiModelProperty(value = "0 有效 1 无效")
private String isEnable;
}
package org.nafmii.nafmiiadmin.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.nafmiiadmin.po.TStudent;
import org.nafmii.nafmiiadmin.service.TestService;
import org.nafmii.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/20 15:46
* @ClassName:
* @version:
* @remark:
*/
@RestController
@RequestMapping("web/nafmii/test/")
@Api(tags = "1.0.0", description = "测试")
public class TestController {
@Autowired
private TestService service;
@ApiOperation( value = "测试",notes = "测试")
@GetMapping("search")
public Result<List<TStudent>> search(){
Result<List<TStudent>> test = service.searchAll();
return test;
}
}
package org.nafmii.nafmiiadmin.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.nafmii.nafmiiadmin.po.TStudent;
import org.nafmii.nafmiiadmin.po.TStudentExample;
import java.util.List;
@Mapper
public interface TStudentMapper {
long countByExample(TStudentExample example);
int deleteByExample(TStudentExample example);
int deleteByPrimaryKey(Integer id);
int insert(TStudent record);
int insertSelective(TStudent record);
List<TStudent> selectByExample(TStudentExample example);
TStudent selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") TStudent record, @Param("example") TStudentExample example);
int updateByExample(@Param("record") TStudent record, @Param("example") TStudentExample example);
int updateByPrimaryKeySelective(TStudent record);
int updateByPrimaryKey(TStudent record);
}
\ No newline at end of file \ No newline at end of file
package org.nafmii.nafmiiadmin.po;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
public class TStudent implements Serializable {
@ApiModelProperty(value = "id")
private Integer id;
private String name;
private Short sex;
private Date createTime;
private Date updateTime;
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getSex() {
return sex;
}
public void setSex(Short sex) {
this.sex = sex;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", name=").append(name);
sb.append(", sex=").append(sex);
sb.append(", createTime=").append(createTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}
\ No newline at end of file \ No newline at end of file
package org.nafmii.nafmiiadmin.service.impl;
import org.nafmii.nafmiiadmin.mapper.TStudentMapper;
import org.nafmii.nafmiiadmin.po.TStudent;
import org.nafmii.nafmiiadmin.po.TStudentExample;
import org.nafmii.nafmiiadmin.service.TestService;
import org.nafmii.result.Result;
import org.nafmii.result.ResultCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/22 8:58
* @ClassName:
* @version:
* @remark:
*/
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TStudentMapper studentMapper;
@Override
public Result<List<TStudent>> searchAll() {
Result result = new Result();
TStudentExample studentExample = new TStudentExample();
List<TStudent> tStudents = studentMapper.selectByExample(studentExample);
result.setData(tStudents);
result.setCode(ResultCode.SUCCESS.getCode());
result.setMessage(ResultCode.SUCCESS.getMessage());
return result;
}
}
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:20000/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
statusPageUrl: http://127.0.0.1:21000/swagger-ui.html
logging:
config: classpath:logback-spring.xml
mybatis:
mapper-locations: classpath:mapper/*.xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
password: Moxi123#
url: jdbc:mysql://114.112.96.30:30029/NAFMII_2.1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 50
minimum-idle: 10
idle-timeout: 60000
auto-commit: true
connection-timeout: 3000
pool-name: NFMII_HikariCP
connection-test-query: SELECT 1
zipkin:
base-url: http://localhost:9411
enabled: true
sleuth:
web:
client:
enabled: true
sampler:
probability: 1.0 #zipkin采集率 0.1表示 10%采集率
nafmii:
log-path: D:/NAFMII
dao-uri: org.nafmii.admin
ftp:
host: 127.0.0.1
password: peng1003
prot: 21
username: ypenglv
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:20000/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
statusPageUrl: http://127.0.0.1:21000/swagger-ui.html
logging:
config: classpath:logback-spring.xml
mybatis:
mapper-locations: classpath:mapper/*.xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
password: Moxi123#
url: jdbc:mysql://114.112.96.30:30029/NAFMII_2.1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 50
minimum-idle: 10
idle-timeout: 60000
auto-commit: true
connection-timeout: 3000
pool-name: NFMII_HikariCP
connection-test-query: SELECT 1
nafmii:
log-path: D:/NAFMII
dao-uri: org.nafmii.admin
ftp:
host: 127.0.0.1
password: peng1003
prot: 21
username: ypenglv
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:20000/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
statusPageUrl: http://127.0.0.1:21000/swagger-ui.html
logging:
config: classpath:logback-spring.xml
mybatis:
mapper-locations: classpath:mapper/*.xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
password: Moxi123#
url: jdbc:mysql://114.112.96.30:30029/NAFMII_2.1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 50
minimum-idle: 10
idle-timeout: 60000
auto-commit: true
connection-timeout: 3000
pool-name: NFMII_HikariCP
connection-test-query: SELECT 1
nafmii:
log-path: D:/NAFMII
dao-uri: org.nafmii.admin
ftp:
host: 127.0.0.1
password: peng1003
prot: 21
username: ypenglv
server.port=8001
spring.application.name=nafmii-admin
logging.level.root=info
logging.file.path=d:/data/logs/nafmii-admin/
logging.file.max-history=15
logging.file.max-size=300MB
logging.pattern.dateformat=yyyy-MM-dd hh:MM:ss
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka
eureka.instance.statusPageUrl = http://127.0.0.1:8001/swagger-ui.html
eureka.instance.prefer-ip-address = true
eureka.instance.instance-id = ${spring.cloud.client.ip-address}:${server.port}
spring.datasource.url=jdbc:mysql://140.143.249.40:3308/edz?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.password=123456
spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
\ No newline at end of file \ No newline at end of file
server:
port: 21000
tomcat:
uri-encoding: UTF-8
spring:
profiles:
active: @env@
application:
name: nafmii-admin
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration monitorInterval="5">
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- <springProperty scope="context" name="logPath" source="logging.file.path"/>-->
<springProperty scope="context" name="logPath" source="logging.file.path"/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!--变量配置-->
<Properties>
<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
<!-- %logger{36} 表示 Logger 名字最长36个字符 -->
<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<!-- 定义日志存储的路径 -->
<property name="FILE_PATH" value="${logPath:-logs}/${springAppName}" />
<property name="FILE_NAME" value="${springAppName}" />
</Properties>
<appenders>
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="${LOG_PATTERN}"/>
<!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
<File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
<PatternLayout pattern="${LOG_PATTERN}"/>
</File>
<!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
</appenders>
<!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
<!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.mybatis" level="info" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<!--监控系统信息-->
<!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="Filelog"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</root>
</loggers>
</configuration>
<?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.nafmii.admin.dao.AttachmentInfoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.att.entity.AttachmentInfoPO">
<id column="ID" property="id" />
<result column="FILE_NAME" property="fileName" />
<result column="FILE_URL" property="fileUrl" />
<result column="FILE_PATH" property="filePath" />
<result column="DESCRIPTION" property="description" />
<result column="IS_ENABLE" property="isEnable" />
<result column="CREATE_USER_ID" property="createUserId" />
<result column="UPDATE_USER_ID" property="updateUserId" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_TIME" property="updateTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ID, FILE_NAME, FILE_URL, FILE_PATH, DESCRIPTION, IS_ENABLE, CREATE_USER_ID, UPDATE_USER_ID, CREATE_TIME, UPDATE_TIME
</sql>
</mapper>
<?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.nafmii.admin.att.dao.BusinessAttachmentInfoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.att.entity.BusinessAttachmentInfoPO">
<id column="ID" property="id" />
<result column="BUSINESS" property="business" />
<result column="BUSINESS_ID" property="businessId" />
<result column="ATTACHMENT_ID" property="attachmentId" />
<result column="CREATE_USER_ID" property="createUserId" />
<result column="UPDATE_USER_ID" property="updateUserId" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="SORT" property="sort" />
<result column="DESCRIPTION" property="description" />
<result column="IS_ENABLE" property="isEnable" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ID, BUSINESS, BUSINESS_ID, ATTACHMENT_ID, CREATE_USER_ID, UPDATE_USER_ID, CREATE_TIME, UPDATE_TIME, SORT, DESCRIPTION, IS_ENABLE
</sql>
</mapper>
<?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.nafmii.admin.user.dao.CenterMenuMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.user.entity.CenterMenuPO">
<id column="ID" property="id" />
<result column="MENU_NAME" property="menuName" />
<result column="MENU_LEVLE" property="menuLevle" />
<result column="PARENT_ID" property="parentId" />
<result column="ORDER_SEQ" property="orderSeq" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="IS_ENABLE" property="isEnable" />
<result column="CREATE_USER_ID" property="createUserId" />
<result column="UPDATE_USER_ID" property="updateUserId" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ID, MENU_NAME, MENU_LEVLE, PARENT_ID, ORDER_SEQ, CREATE_TIME, UPDATE_TIME, IS_ENABLE, CREATE_USER_ID, UPDATE_USER_ID
</sql>
<!-- 新增修改中心端角色 -->
<update id="updateMenuById" parameterType="map" >
update CENTER_MENU
<set >
<if test="menuName != null" >
MENU_NAME = #{menuName,jdbcType=VARCHAR},
</if>
<if test="menuLevle != null" >
MENU_LEVLE = #{menuLevle,jdbcType=INTEGER},
</if>
<if test="parentId != null" >
PARENT_ID = #{parentId,jdbcType=BIGINT},
</if>
<if test="orderSeq != null" >
ORDER_SEQ = #{orderSeq,jdbcType=INTEGER},
</if>
<if test="createTime != null" >
CREATE_TIME = #{createTime,jdbcType=BIGINT},
</if>
<if test="updateTime != null" >
UPDATE_TIME = #{updateTime,jdbcType=BIGINT},
</if>
<if test="isEnable != null" >
IS_ENABLE = #{isEnable,jdbcType=VARCHAR},
</if>
<if test="createUserId != null" >
CREATE_USER_ID = #{createUserId,jdbcType=BIGINT},
</if>
<if test="updateUserId != null" >
UPDATE_USER_ID = #{updateUserId,jdbcType=BIGINT},
</if>
</set>
where ID = #{id,jdbcType=BIGINT}
</update>
<!-- 查询中心端菜单 -->
<select id="queryMenuList" parameterType="org.nafmii.admin.user.dto.CenterMenuDTO"
resultType="org.nafmii.admin.user.vo.CenterMenuVO">
select
ID as id, MENU_NAME as menuName, MENU_LEVLE as menuLevle, PARENT_ID as parentId, ORDER_SEQ as orderSeq,
CREATE_TIME as createTime, UPDATE_TIME as updateTime, IS_ENABLE as isEnable, CREATE_USER_ID as createUserId,
UPDATE_USER_ID as updateUserId
from CENTER_MENU
<where>
<if test="startCreateTime != null and endCreateTime != null">
DATE_FORMAT(CREATE_TIME,'%Y-%m-%d') BETWEEN #{startCreateTime} and #{endCreateTime}
</if>
</where>
</select>
<!-- 删除中心端菜单 -->
<update id="deleteMenus">
update
CENTER_MENU
set IS_ENABLE = "1"
where
ID IN
<foreach collection="array" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 中心端用户对应菜单查询 -->
<select id="queryUserMenus" parameterType="map" resultType="org.nafmii.admin.user.vo.CenterMenuVO">
SELECT
cm.ID as id, cm.MENU_NAME as menuName, cm.MENU_LEVLE as menuLevle, cm.PARENT_ID as parentId, cm.ORDER_SEQ as orderSeq,
cm.CREATE_TIME as createTime,cm.UPDATE_TIME as updateTime, cm.IS_ENABLE as isEnable, cm.CREATE_USER_ID as createUserId,
cm.UPDATE_USER_ID as updateUserId
FROM
CENTER_MENU cm
INNER JOIN CENTER_ROLE_MENU crm ON cm.id = crm.menu_id
INNER JOIN CENTER_USER_ROLE cur ON cur.role_id = crm.role_id
INNER JOIN CENTER_USER cu ON cur.user_id = cu.id
WHERE
cu.id = #{userid,jdbcType=BIGINT}
</select>
</mapper>
<?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.nafmii.admin.user.dao.CenterRoleMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.user.entity.CenterRolePO">
<id column="ID" property="id" />
<result column="R_NAME" property="rName" />
<result column="CREAT_TIME" property="creatTime" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="IS_ENABLE" property="isEnable" />
<result column="CREATE_USER_ID" property="createUserId" />
<result column="UPDATE_USER_ID" property="updateUserId" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ID, R_NAME, CREAT_TIME, UPDATE_TIME, IS_ENABLE, CREATE_USER_ID, UPDATE_USER_ID
</sql>
<!-- 修改中心端角色 -->
<update id="updateRoleById" parameterType="map" >
update CENTER_ROLE
<set >
<if test="rName != null" >
R_NAME = #{rName,jdbcType=VARCHAR},
</if>
<if test="updateTime != null" >
UPDATE_TIME = #{updateTime,jdbcType=DATE},
</if>
<if test="isEnable != null" >
IS_ENABLE = #{isEnable,jdbcType=VARCHAR},
</if>
<if test="updateUserId != null" >
UPDATE_USER_ID = #{updateUserId,jdbcType=BIGINT},
</if>
</set>
where ID = #{id,jdbcType=VARCHAR}
</update>
<!-- 查询中心端角色列表 -->
<select id="queryRolesList" parameterType="org.nafmii.admin.user.dto.QueryRolesDto"
resultType="org.nafmii.admin.user.vo.CenterRoleVO">
SELECT
ID as id, R_NAME as rName, CREAT_TIME as creatTime, UPDATE_TIME as updateTime, IS_ENABLE as isEnable,
CREATE_USER_ID as createUserId, UPDATE_USER_ID as updateUserId
FROM
CENTER_ROLE
<where>
<if test="startCreateTime != null and endCreateTime != null">
DATE_FORMAT(CREAT_TIME,'%Y-%m-%d') BETWEEN #{startCreateTime} and #{endCreateTime}
</if>
</where>
</select>
<!-- 删除中心端角色 -->
<update id="deleteRoles">
update
CENTER_ROLE
set IS_ENABLE = "1"
where ID IN
<foreach collection="array" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 中心端用户对应角色查询 -->
<select id="queryRolesByUser" parameterType="map" resultType="org.nafmii.admin.user.vo.CenterRoleVO">
SELECT
cr.ID as id,
cr.R_NAME as rName,
cr.CREAT_TIME as creatTime,
cr.UPDATE_TIME as updateTime,
cr.IS_ENABLE as isEnable,
cr.CREATE_USER_ID as createUserId,
cr.UPDATE_USER_ID as updateUserId
FROM
CENTER_ROLE cr
INNER JOIN CENTER_USER_ROLE cur ON cur.role_id = cr.id
INNER JOIN CENTER_USER cu ON cur.user_id = cu.id
WHERE
cu.id = #{userid,jdbcType=BIGINT}
</select>
</mapper>
<?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.nafmii.admin.user.dao.CenterUserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.user.entity.CenterUserPO">
<id column="ID" property="id" />
<result column="LOGIN_NAME" property="loginName" />
<result column="LOGIN_PWD" property="loginPwd" />
<result column="CN_NAME" property="cnName" />
<result column="EN_NAME" property="enName" />
<result column="PHONE" property="phone" />
<result column="TELPHONE" property="telphone" />
<result column="SEX" property="sex" />
<result column="EMAIL" property="email" />
<result column="CREATE_USER_ID" property="createUserId" />
<result column="UPDATE_USER_ID" property="updateUserId" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="IS_ENABLE" property="isEnable" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ID, LOGIN_NAME, LOGIN_PWD, CN_NAME, EN_NAME, PHONE, TELPHONE, SEX, EMAIL, CREATE_USER_ID, UPDATE_USER_ID, CREATE_TIME, UPDATE_TIME, IS_ENABLE
</sql>
<!-- 根据登录人账号(手机号)查询用户信息 -->
<select id="selectUserByPhone" parameterType="map" resultType="org.nafmii.admin.user.vo.CenterUserVO">
select
ID as id, LOGIN_NAME as loginName, LOGIN_PWD as loginPwd, CN_NAME as cnName, EN_NAME as enName, PHONE as phone,
TELPHONE as telphone, SEX as sex, EMAIL as email, CREATE_USER_ID as createUserId, UPDATE_USER_ID as updateUserId,
CREATE_TIME as createTime, UPDATE_TIME as updateTime, IS_ENABLE as isEnable
from CENTER_USER
where IS_ENABLE = 0
<if test="phone !=null">
and PHONE =#{phone}
</if>
</select>
<select id="queryUserList" parameterType="org.nafmii.admin.user.dto.QueryUsersDto"
resultType="org.nafmii.admin.user.vo.CenterUserVO">
SELECT
<include refid="Base_Column_List" />
FROM CENTER_USER CU
<where>
<if test="StartCreateTime != null and endCreateTime != null">
DATE_FORMAT(CU.CREATE_TIME,'%Y-%m-%d') BETWEEN #{StartCreateTime} and #{endCreateTime}
</if>
</where>
</select>
</mapper>
<?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.nafmii.admin.att.dao.ImportExcelMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.att.dto.ImportExcelDto">
<result column="COLUMN1" property="column1" />
<result column="COLUMN2" property="column2" />
<result column="COLUMN3" property="column3" />
</resultMap>
<insert id ="insertExcelData" parameterType="org.nafmii.admin.att.dto.ImportExcelDto" >
insert into IMPORT_EXCEL_TEST
(COLUMN1,COLUMN2,COLUMN3)
values(#{data.column1},
#{data.column2},
#{data.column3})
</insert >
</mapper>
<?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.nafmii.nafmiimbg.mapper.TStudentMapper">
<resultMap id="BaseResultMap" type="org.nafmii.nafmiiadmin.po.TStudent">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="sex" jdbcType="SMALLINT" property="sex" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
id, name, sex, create_time, update_time
</sql>
<select id="selectByExample" parameterType="org.nafmii.nafmiiadmin.po.TStudentExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from t_student
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from t_student
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from t_student
where id = #{id,jdbcType=INTEGER}
</delete>
<delete id="deleteByExample" parameterType="org.nafmii.nafmiiadmin.po.TStudentExample">
delete from t_student
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="org.nafmii.nafmiiadmin.po.TStudent">
insert into t_student (id, name, sex,
create_time, update_time)
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=SMALLINT},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="org.nafmii.nafmiiadmin.po.TStudent">
insert into t_student
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="sex != null">
sex,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="sex != null">
#{sex,jdbcType=SMALLINT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="org.nafmii.nafmiiadmin.po.TStudentExample" resultType="java.lang.Long">
select count(*) from t_student
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update t_student
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=INTEGER},
</if>
<if test="record.name != null">
name = #{record.name,jdbcType=VARCHAR},
</if>
<if test="record.sex != null">
sex = #{record.sex,jdbcType=SMALLINT},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=TIMESTAMP},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update t_student
set id = #{record.id,jdbcType=INTEGER},
name = #{record.name,jdbcType=VARCHAR},
sex = #{record.sex,jdbcType=SMALLINT},
create_time = #{record.createTime,jdbcType=TIMESTAMP},
update_time = #{record.updateTime,jdbcType=TIMESTAMP}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="org.nafmii.nafmiiadmin.po.TStudent">
update t_student
<set>
<if test="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
<if test="sex != null">
sex = #{sex,jdbcType=SMALLINT},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="org.nafmii.nafmiiadmin.po.TStudent">
update t_student
set name = #{name,jdbcType=VARCHAR},
sex = #{sex,jdbcType=SMALLINT},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file \ No newline at end of file
package org.nafmii.nafmiiadmin;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class NafmiiAdminApplicationTests {
@Test
void contextLoads() {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.nafmii</groupId>
<artifactId>nafmii-app</artifactId>
<version>0.0.1-SNAPSHOT</version><!-- lookup parent from repository -->
</parent>
<groupId>org.nafmii</groupId>
<artifactId>app-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>app-client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<httpClient.version>4.5.3</httpClient.version>
<fastjson.version>1.2.58</fastjson.version>
<ojdbc.version>10.2.0.4</ojdbc.version>
<jjwt.version>0.9.1</jjwt.version>
</properties>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
package org.nafmii.app.client.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/26 16:41
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户登陆参数对象")
public class LoginClientParam {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("登陆密码")
private String loginPwd;
@ApiModelProperty("验证码")
private String code;
}
package org.nafmii.app.client.user.service;
import org.nafmii.app.client.user.param.LoginClientParam;
import org.nafmii.app.client.user.vo.UserClientVO;
import org.nafmii.common.response.ApiResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/11 13:42
* @ClassName:对外提供用户接口
* @version:1.0
* @remark:
*/
@FeignClient("nafmii-app")
@RequestMapping("/app/nafmii/user")
public interface UserClient {
@PostMapping("/userLogin")
@ResponseBody
ApiResponse<UserClientVO> userLogin (@RequestBody @Validated LoginClientParam loginClientParam);
@PostMapping("/phoneLogin")
@ResponseBody
ApiResponse<UserClientVO> phoneLogin (@RequestBody @Validated LoginClientParam loginClientParam);
}
package org.nafmii.app.client.user.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/25 10:22
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("用户返回报文")
public class UserClientVO {
private Long id;
@ApiModelProperty(value = "昵称")
private String userName;
@ApiModelProperty(value = "登录密码")
private String loginPwd;
@ApiModelProperty(value = "中文姓名")
private String realName;
@ApiModelProperty(value = "手机号/登录账号")
private String phone;
@ApiModelProperty(value = "出生日期")
private String birthday;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "头像图片地址")
private String headPicture;
@ApiModelProperty(value = "国籍")
private String nationality;
@ApiModelProperty(value = "单位全称")
private String unitName;
@ApiModelProperty(value = "微信OPENT_ID")
private String openId;
@ApiModelProperty(value = "是否开启指纹登录 0 未开启 1 已开启")
private String figerprintFalg;
@ApiModelProperty(value = "是否开启人脸识别登录 0 未开启 1 已开启")
private String faceidFalg;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效标识 0 有效用户 1无效用户")
private String isEnable;
@ApiModelProperty(value = "token")
private String authorization;
@ApiModelProperty(value = "验证码登陆判断是否第一次登陆 0是 1否")
private String loginType;
}
...@@ -13,132 +13,121 @@ ...@@ -13,132 +13,121 @@
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<name>nafmii-app</name> <name>nafmii-app</name>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<description>Demo project for Spring Boot</description> <description>移动端应用服务</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties> </properties>
<!--区分环境打包-->
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<!--指定默认激活-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.nafmii</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <artifactId>nafmii-common</artifactId>
</dependency> <version>0.0.1-SNAPSHOT</version>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
<!--MyBatis分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!--feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.mybatis.generator</groupId> <groupId>org.nafmii</groupId>
<artifactId>mybatis-generator-core</artifactId> <artifactId>app-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉springboot默认配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- MyBatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<!--SpringData工具包-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle/ojdbc14 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
</dependency>
<!--JWT(Json Web Token)登录支持-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!--JWT(Json Web Token)登录支持-->
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-sleuth -->
<!--集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
<!--集成SpringBoot Admin监控-->
<dependency> <dependency>
<groupId>de.codecentric</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId> <artifactId>spring-cloud-starter-sleuth</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
<!--Knife4j API文档生产工具--> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-sleuth-zipkin -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId> <artifactId>spring-cloud-sleuth-zipkin</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId> <artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.2.4.RELEASE</version>
</dependency> </dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency> <dependency>
<groupId>org.nafmii</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>nafmii-common</artifactId> <artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<configuration> <configuration>
<excludes> <includeSystemScope>true</includeSystemScope>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration> </configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin> </plugin>
</plugins> </plugins>
<finalName>${project.artifactId}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>application-dev.yml</exclude>
<exclude>application-test.yml</exclude>
<exclude>application-prod.yml</exclude>
</excludes>
</resource>
<!--需要动态添加的资源-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<!--读取打包命令中指定的环境-->
<include>application-${env}.yml</include>
<include>application.yml</include>
</includes>
</resource>
</resources>
</build> </build>
</project> </project>
package org.nafmii; package org.nafmii.app;
import org.mybatis.spring.annotation.MapperScan;
import org.nafmii.common.ftp.EnableFtpServer;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication(scanBasePackages={"org.nafmii"})
@EnableEurekaClient @EnableEurekaClient
@EnableSwagger2
@EnableFeignClients @EnableFeignClients
@MapperScan("org.nafmii.app/**/dao")
@EnableFtpServer
public class NafmiiAppApplication { public class NafmiiAppApplication {
public static void main(String[] args) { public static void main(String[] args) {
......
package org.nafmii.adminService; package org.nafmii.app.feign;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package org.nafmii.app.feign.controller;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.app.client.user.service.UserClient;
import org.nafmii.app.feign.service.UserFeignService;
import org.nafmii.app.user.param.LoginParam;
import org.nafmii.app.user.vo.UserVO;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.BeanTransferUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/11 14:12
* @ClassName:
* @version:
* @remark:
*/
@RestController
@RequestMapping("/app/nafmii/user/client")
@Api(tags = "2.0.4", description = "用户登陆对外提供【zjh】")
public class UserFeignController {
@Resource
private UserFeignService feignService;
@ApiOperation( value = "app用户登陆接口",notes = "app用户登陆接口")
@PostMapping("/userLogin")
@ResponseBody
public ApiResponse userLogin (@RequestBody JSONObject object){
ApiResponse userLogin = feignService.userLogin(object);
return userLogin;
}
@ApiOperation( value = "app手机号登陆接口",notes = "app手机号登陆接口")
@PostMapping("/phoneLogin")
@ResponseBody
public ApiResponse phoneLogin (@RequestBody JSONObject object){
ApiResponse phoneLogin = feignService.phoneLogin(object);
return phoneLogin;
}
}
package org.nafmii.nafmiiadmin.service; package org.nafmii.app.feign.service;
import org.nafmii.nafmiiadmin.po.TStudent; import com.alibaba.fastjson.JSONObject;
import org.nafmii.result.Result; import org.nafmii.common.response.ApiResponse;
import java.util.List;
/** /**
* @author:zhoujh * @author:zhoujh
* @Function:TODO * @Function:TODO
* @date 2021/4/22 8:57 * @date 2021/5/11 14:21
* @ClassName: * @ClassName:
* @version: * @version:
* @remark: * @remark:
*/ */
public interface TestService { public interface UserFeignService {
Result<List<TStudent>> searchAll(); //对外提供手机号登陆接口
ApiResponse phoneLogin(JSONObject object);
//对外提供用户登陆接口
ApiResponse userLogin(JSONObject object);
} }
package org.nafmii.app.feign.service.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.app.client.user.param.LoginClientParam;
import org.nafmii.app.client.user.service.UserClient;
import org.nafmii.app.feign.service.UserFeignService;
import org.nafmii.app.feign.vo.UserFeignVO;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.BeanTransferUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/11 14:21
* @ClassName:
* @version:
* @remark:
*/
@Service
@Slf4j
public class UserFeignServiceImpl implements UserFeignService {
@Resource
private UserClient userClient;
/**
* 对外提供手机号登陆接口
* @param object
* @return
*/
@Override
public ApiResponse phoneLogin(JSONObject object) {
ApiResponse<UserFeignVO> apiResponse = new ApiResponse<>();
log.info("对外提供手机号登陆接口相关json参数========》{}",object.toJSONString());
LoginClientParam loginClientParam = BeanTransferUtils.transfer(object, LoginClientParam.class);
log.info("对外提供手机号登陆接口相关对象参数========》{}",loginClientParam);
if("002".equals(object.get("apiCode"))){
apiResponse = userClient.phoneLogin(loginClientParam);
}
return apiResponse;
}
/**
* 对外提供用户登陆接口
* @param object
* @return
*/
@Override
public ApiResponse userLogin(JSONObject object) {
ApiResponse<UserFeignVO> apiResponse = new ApiResponse<>();
log.info("对外提供登陆接口相关json参数========》{}",object.toJSONString());
LoginClientParam loginClientParam = BeanTransferUtils.transfer(object, LoginClientParam.class);
log.info("对外提供登陆接口相关对象参数========》{}",loginClientParam);
if("001".equals(object.get("apiCode"))){
apiResponse = userClient.userLogin(loginClientParam);
}
return apiResponse;
}
}
package org.nafmii.app.feign.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/25 10:22
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("用户返回报文")
public class UserFeignVO {
private Long id;
@ApiModelProperty(value = "昵称")
private String userName;
@ApiModelProperty(value = "登录密码")
private String loginPwd;
@ApiModelProperty(value = "中文姓名")
private String realName;
@ApiModelProperty(value = "手机号/登录账号")
private String phone;
@ApiModelProperty(value = "出生日期")
private String birthday;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "头像图片地址")
private String headPicture;
@ApiModelProperty(value = "国籍")
private String nationality;
@ApiModelProperty(value = "单位全称")
private String unitName;
@ApiModelProperty(value = "微信OPENT_ID")
private String openId;
@ApiModelProperty(value = "是否开启指纹登录 0 未开启 1 已开启")
private String figerprintFalg;
@ApiModelProperty(value = "是否开启人脸识别登录 0 未开启 1 已开启")
private String faceidFalg;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否有效标识 0 有效用户 1无效用户")
private String isEnable;
@ApiModelProperty(value = "token")
private String authorization;
@ApiModelProperty(value = "验证码登陆判断是否第一次登陆 0是 1否")
private String loginType;
}
package org.nafmii.nafmiiadmin.swagger; package org.nafmii.app.swagger;
import org.springframework.beans.factory.annotation.Value; import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo; import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/** /**
...@@ -24,20 +29,28 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; ...@@ -24,20 +29,28 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
public class SwaggerConfig { public class SwaggerConfig {
@Bean @Bean
public Docket adminApi() { public Docket adminApi() {
// String basePackage = ADMIN_SWAGGER;// 要暴露的API接口的基础包名 ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
ticketPar.name("Authorization").description("Authorization")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build(); //header中的ticket参数非必填,传空也可以
pars.add(ticketPar.build()); //根据每个方法名也知道当前方法在设置什么参数
return new Docket (DocumentationType.SWAGGER_2) return new Docket (DocumentationType.SWAGGER_2)
.select () .apiInfo(apiInfo())
.apis (RequestHandlerSelectors.basePackage ("org.nafmii.nafmiiadmin")) .select()
.paths (PathSelectors.any ()) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build () .paths(PathSelectors.any())
.apiInfo (apiInfo ()) .build().globalOperationParameters(pars)
.useDefaultResponseMessages (false); .useDefaultResponseMessages(false)
.enableUrlTemplating(false);
} }
private static ApiInfo apiInfo() { private static ApiInfo apiInfo() {
return new ApiInfoBuilder () return new ApiInfoBuilder ()
.title ("NAFMIIweb管理平台应用层接口说明") .title ("NAFMII-APP应用层接口说明")
.description ("NAFMIIweb管理平台应用层接口说明") .description ("NAFMII-APP应用层接口说明")
.version ("1.0") .version ("1.0")
.build (); .build ();
} }
......
package org.nafmii.controller; package org.nafmii.app.user.controller;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.nafmii.adminService.AdminService; import org.nafmii.app.user.service.AppService;
import org.nafmii.service.AppService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
......
package org.nafmii.app.user.controller;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.app.user.dto.LoginDto;
import org.nafmii.app.user.dto.RegisterDto;
import org.nafmii.app.user.param.LoginParam;
import org.nafmii.app.user.param.RegisterParam;
import org.nafmii.app.user.service.UserService;
import org.nafmii.app.user.vo.UserVO;
import org.nafmii.common.ftp.FTPClientHelper;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.BeanTransferUtils;
import org.nafmii.common.utils.RequestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.File;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/25 10:10
* @ClassName:
* @version:
* @remark:
*/
@RestController
@RequestMapping("/app/nafmii/user")
@Api(tags = "2.0.1", description = "用户登陆注册操作操作【zjh】")
public class UserController {
@Resource
private UserService userService;
@ApiOperation( value = "app用户注册接口",notes = "app用户注册接口")
@PostMapping("/register")
@ResponseBody
public ApiResponse register (@RequestBody RegisterParam registerParam){
ApiResponse register = userService.register(registerParam);
return register;
}
@ApiOperation( value = "app用户登陆接口",notes = "app用户登陆接口")
@PostMapping("/userLogin")
@ResponseBody
public ApiResponse<UserVO> login (@RequestBody @Validated LoginParam loginParam){
ApiResponse<UserVO> login = userService.userLogin(loginParam);
return login;
}
@ApiOperation( value = "app手机号登陆接口",notes = "app手机号登陆接口")
@PostMapping("/phoneLogin")
@ResponseBody
public ApiResponse<UserVO> phoneLogin (@RequestBody @Validated LoginParam loginParam){
ApiResponse<UserVO> phoneLogin = userService.phoneLogin(loginParam);
return phoneLogin;
}
@ApiOperation( value = "测试ftp",notes = "测试ftp")
@PostMapping("/testFtp")
@ResponseBody
public ApiResponse testFtp (){
String ftpClient = FTPClientHelper.uploadFile("1",new File("e:/new1.txt"),"aa");
System.out.println(ftpClient);
return new ApiResponse();
}
}
package org.nafmii.app.user.dao;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.nafmii.app.user.dto.LoginDto;
import org.nafmii.app.user.entity.AppUserPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nafmii.app.user.vo.UserVO;
import java.util.List;
/**
* <p>
* APP用户表 Mapper 接口
* </p>
*
* @author zjh
* @since 2021-04-27
*/
@Mapper
public interface AppUserMapper extends BaseMapper<AppUserPO> {
UserVO selectByPassword(LoginDto loginDto);
UserVO selectByPhone(@Param("phone") String phone);
}
package org.nafmii.app.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/26 16:41
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户登陆参数对象")
public class LoginDto {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("登陆密码")
private String loginPwd;
@ApiModelProperty("验证码")
private String code;
}
package org.nafmii.app.user.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/26 13:39
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户注册参数对象")
public class RegisterDto {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("头像图片地址")
private String headPicture;
@NotNull(message = "验证码不能为空")
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "注册密码不能为空")
@ApiModelProperty("登陆密码")
private String loginPwd;
@NotNull(message = "确认密码不能为空")
@ApiModelProperty("确认密码")
private String confirmPwd;
}
package org.nafmii.app.user.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* APP用户表
* </p>
*
* @author zjh
* @since 2021-04-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("APP_USER")
@ApiModel(value="AppUserPO对象", description="APP用户表")
public class AppUserPO extends Model {
private static final long serialVersionUID=1L;
@TableId("ID")
private Long id;
@ApiModelProperty(value = "昵称")
@TableField("USER_NAME")
private String userName;
@ApiModelProperty(value = "登录密码")
@TableField("LOGIN_PWD")
private String loginPwd;
@ApiModelProperty(value = "中文姓名")
@TableField("REAL_NAME")
private String realName;
@ApiModelProperty(value = "手机号/登录账号")
@TableField("PHONE")
private String phone;
@ApiModelProperty(value = "出生日期 示例:2020-10-10")
@TableField("BIRTHDAY")
private String birthday;
@ApiModelProperty(value = "邮箱")
@TableField("EMAIL")
private String email;
@ApiModelProperty(value = "头像图片地址")
@TableField("HEAD_PICTURE")
private String headPicture;
@ApiModelProperty(value = "国籍")
@TableField("NATIONALITY")
private String nationality;
@ApiModelProperty(value = "单位全称")
@TableField("UNIT_NAME")
private String unitName;
@ApiModelProperty(value = "微信OPENT_ID")
@TableField("OPEN_ID")
private String openId;
@ApiModelProperty(value = "是否开启指纹登录 0 未开启 1 已开启")
@TableField("FIGERPRINT_FALG")
private String figerprintFalg;
@ApiModelProperty(value = "是否开启人脸识别登录 0 未开启 1 已开启")
@TableField("FACEID_FALG")
private String faceidFalg;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
private LocalDateTime updateTime;
@ApiModelProperty(value = "是否有效标识 0 有效用户 1无效用户")
@TableField("IS_ENABLE")
private String isEnable;
}
package org.nafmii.app.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/26 16:41
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户登陆参数对象")
public class LoginParam {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("登陆密码")
private String loginPwd;
@ApiModelProperty("验证码")
private String code;
}
package org.nafmii.app.user.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/26 13:39
* @ClassName:
* @version:
* @remark:
*/
@Data
@ApiModel("app用户注册参数对象")
public class RegisterParam {
@NotNull(message = "手机号或登录账号不能为空")
@ApiModelProperty("手机号/登录账号")
private String phone;
@ApiModelProperty("头像图片地址")
private String headPicture;
@NotNull(message = "验证码不能为空")
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "注册密码不能为空")
@ApiModelProperty("登陆密码")
private String loginPwd;
@NotNull(message = "确认密码不能为空")
@ApiModelProperty("确认密码")
private String confirmPwd;
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!