Commit 9b03b82a by ypenglv

Merge

2 parents c6cebdb2 44fcc3a2
Showing 22 changed files with 378 additions and 397 deletions
package org.nafmii.admin.user.controller;
package org.nafmii.admin.att.controller;
import com.alibaba.excel.EasyExcel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.admin.user.dto.ImportExcelDto;
import org.nafmii.admin.user.service.IImportExcelService;
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;
......@@ -13,20 +11,27 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.List;
import java.io.IOException;
@RestController
@RequestMapping("/nafmii/admin/import")
@Api(tags = "3.0.0", description = "中心端批量导入Excel接口")
@RequestMapping("/nafmii/admin/excel")
@Api(tags = "2.0.1", description = "中心端批量导入Excel接口【zjh】")
public class ImportExcelController {
@Resource
private IImportExcelService iImportExcelService;
private ImportExcelService iImportExcelService;
@ApiOperation( value = "中心端批量导入Excel",notes = "中心端批量导入Excel")
@PostMapping("/batchImportExcel")
@ApiOperation( value = "中心端导入Excel",notes = "中心端导入Excel")
@PostMapping("/import")
@ResponseBody
public ApiResponse batchImportExcel(MultipartFile file){
ApiResponse result = iImportExcelService.batchImportExcel(file);
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.user.dao;
package org.nafmii.admin.att.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.nafmii.admin.user.dto.ImportExcelDto;
import org.nafmii.admin.user.entity.CenterUserPO;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.nafmii.admin.att.dto.ImportExcelDto;
/**
* <p>
......@@ -16,14 +14,14 @@ import java.util.List;
* @since 2021-04-27
*/
@Mapper
public interface ImportExcelMapper extends BaseMapper<CenterUserPO> {
public interface ImportExcelMapper extends BaseMapper<ImportExcelDto> {
/**
* @author:suncq
* @Function:中心端用户登陆
* @date 2021/4/27
* @Function:批量导入EXCEL数据
* @date 2021/5/6
* @ClassName:
* @version:
* @remark:
*/
int insertExcelData(ImportExcelDto data);
int insertExcelData(@Param("data") ImportExcelDto data);
}
package org.nafmii.admin.user.dto;
package org.nafmii.admin.att.dto;
import io.swagger.annotations.ApiModel;
import lombok.Data;
......
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;
}
......@@ -39,13 +39,13 @@ import java.util.*;
@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;
// @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;
......@@ -65,7 +65,7 @@ public class AttServiceImpl implements AttService {
if (!localFile.getParentFile().exists()){//文件夹目录不存在创建目录
localFile.getParentFile().mkdirs();
//存放图片的路径地址
StringBuilder sb = new StringBuilder(ftpPath).append("/");
StringBuilder sb = new StringBuilder("").append("/");
String path = sb.toString();
lastPath=path;
try {
......@@ -120,7 +120,7 @@ public class AttServiceImpl implements AttService {
e.printStackTrace();
}
//存放图片的路径地址
StringBuilder sb = new StringBuilder(ftpPath).append("/");
StringBuilder sb = new StringBuilder("").append("/");
String path = sb.toString();
lastPath=path;
// fileFtp.uploadFile(path,newName,file.getInputStream());
......@@ -134,7 +134,7 @@ public class AttServiceImpl implements AttService {
attachVo.setDelFlag(CommonEnum.USED.getCode());
attachVo.setDescription(description);
attachVo.setFilePath(filePath);
attachVo.setFileUrl(downLoad+"/"+newName);
attachVo.setFileUrl(""+"/"+newName);
attachList.add(attachVo);
}
//ftp上传
......
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
package org.nafmii.admin.att.service;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/5/7 14:41
* @ClassName:
* @version:
* @remark:
*/
public class test {
}
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 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.admin.user.service;
import org.nafmii.admin.user.dto.ImportExcelDto;
import org.nafmii.common.response.ApiResponse;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* <p>
* 中心端-用户表 服务类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
public interface IImportExcelService {
/**
* @author:suncq
* @Function:中心端用户登陆
* @date 2021/4/27
* @ClassName:
* @version:
* @remark:
*/
ApiResponse batchImportExcel(MultipartFile file);
}
package org.nafmii.admin.user.service.impl;
import com.alibaba.excel.EasyExcel;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.admin.user.dao.ImportExcelMapper;
import org.nafmii.admin.user.dto.ImportExcelDto;
import org.nafmii.admin.user.service.IImportExcelService;
import org.nafmii.common.response.ApiResponse;
import org.springframework.stereotype.Service;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.nafmii.admin.user.service.IImportExcelService;
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 java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 中心端-用户表 服务实现类
* </p>
*
* @author suncq
* @since 2021-04-27
*/
@Slf4j
@Service
public class ImportExcelServiceImpl implements IImportExcelService {
@Resource
private ImportExcelMapper importExcelMapper;
@Override
public ApiResponse batchImportExcel(MultipartFile file) {
List<ImportExcelDto> list = null;
try {
list = EasyExcel.read(file.getInputStream()).sheet(0).head(ImportExcelDto.class).doReadSync();
} catch (IOException e) {
e.printStackTrace();
}
log.info("导入后生成的数据源=============>"+list);
if (!list.isEmpty()) {
for (ImportExcelDto data : list) {
int i = importExcelMapper.insertExcelData(data);
if (i < 0){
return new ApiResponse(ApiResponse.FAIL, ApiResponse.FAIL_TEXT);
}
}
}
return new ApiResponse(ApiResponse.SUCCESS, ApiResponse.SUCCESS_TEXT);
}
public String importExcel(InputStream inputStream, String fileName) throws Exception {
String message = "Import success";
boolean isE2007 = false;
//判断是否是excel2007格式
if (fileName.endsWith("xlsx")) {
isE2007 = true;
}
int rowIndex = 0;
try {
InputStream input = inputStream; //建立输入流
Workbook wb;
//根据文件格式(2003或者2007)来初始化
if (isE2007) {
wb = new XSSFWorkbook(input);
} else {
wb = new HSSFWorkbook(input);
}
Sheet sheet = wb.getSheetAt(0); //获得第一个表单
int rowCount = sheet.getLastRowNum() + 1;
for (int i = 1; i < rowCount; i++) {
rowIndex = i;
Row row;
for (int j = 0; j < 26; j++) {
if (isMergedRegion(sheet, i, j)) {
System.out.print(getMergedRegionValue(sheet, i, j) + "\t");
} else {
row = sheet.getRow(i);
System.out.print(row.getCell(j) + "\t");
}
}
System.out.print("\n");
}
} catch (Exception ex) {
message = "Import failed, please check the data in " + rowIndex + " rows ";
}
return message;
}
/**
* 获取单元格的值
*
* @param cell
* @return
*/
public String getCellValue(Cell cell) {
if (cell == null) return "";
return cell.getStringCellValue();
}
/**
* 合并单元格处理,获取合并行
*
* @param sheet
* @return List<CellRangeAddress>
*/
public List<CellRangeAddress> getCombineCell(Sheet sheet) {
List<CellRangeAddress> list = new ArrayList<>();
//获得一个 sheet 中合并单元格的数量
int sheetmergerCount = sheet.getNumMergedRegions();
//遍历所有的合并单元格
for (int i = 0; i < sheetmergerCount; i++) {
//获得合并单元格保存进list中
CellRangeAddress ca = sheet.getMergedRegion(i);
list.add(ca);
}
return list;
}
private int getRowNum(List<CellRangeAddress> listCombineCell, Cell cell, Sheet sheet) {
int xr = 0;
int firstC = 0;
int lastC = 0;
int firstR = 0;
int lastR = 0;
for (CellRangeAddress ca : listCombineCell) {
//获得合并单元格的起始行, 结束行, 起始列, 结束列
firstC = ca.getFirstColumn();
lastC = ca.getLastColumn();
firstR = ca.getFirstRow();
lastR = ca.getLastRow();
if (cell.getRowIndex() >= firstR && cell.getRowIndex() <= lastR) {
if (cell.getColumnIndex() >= firstC && cell.getColumnIndex() <= lastC) {
xr = lastR;
}
}
}
return xr;
}
/**
* 判断单元格是否为合并单元格,是的话则将单元格的值返回
*
* @param listCombineCell 存放合并单元格的list
* @param cell 需要判断的单元格
* @param sheet sheet
* @return
*/
public String isCombineCell(List<CellRangeAddress> listCombineCell, Cell cell, Sheet sheet)
throws Exception {
int firstC = 0;
int lastC = 0;
int firstR = 0;
int lastR = 0;
String cellValue = null;
for (CellRangeAddress ca : listCombineCell) {
//获得合并单元格的起始行, 结束行, 起始列, 结束列
firstC = ca.getFirstColumn();
lastC = ca.getLastColumn();
firstR = ca.getFirstRow();
lastR = ca.getLastRow();
if (cell.getRowIndex() >= firstR && cell.getRowIndex() <= lastR) {
if (cell.getColumnIndex() >= firstC && cell.getColumnIndex() <= lastC) {
Row fRow = sheet.getRow(firstR);
Cell fCell = fRow.getCell(firstC);
cellValue = getCellValue(fCell);
break;
}
} else {
cellValue = "";
}
}
return cellValue;
}
/**
* 获取合并单元格的值
*
* @param sheet
* @param row
* @param column
* @return
*/
public String getMergedRegionValue(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress ca = sheet.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();
if (row >= firstRow && row <= lastRow) {
if (column >= firstColumn && column <= lastColumn) {
Row fRow = sheet.getRow(firstRow);
Cell fCell = fRow.getCell(firstColumn);
return getCellValue(fCell);
}
}
}
return null;
}
/**
* 判断指定的单元格是否是合并单元格
*
* @param sheet
* @param row 行下标
* @param column 列下标
* @return
*/
private boolean isMergedRegion(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress range = sheet.getMergedRegion(i);
int firstColumn = range.getFirstColumn();
int lastColumn = range.getLastColumn();
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();
if (row >= firstRow && row <= lastRow) {
if (column >= firstColumn && column <= lastColumn) {
return true;
}
}
}
return false;
}
}
\ No newline at end of file
......@@ -3,7 +3,7 @@
<mapper namespace="org.nafmii.admin.dao.AttachmentInfoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.entity.AttachmentInfoPO">
<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" />
......
<?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.ImportExcelMapper">
<mapper namespace="org.nafmii.admin.att.dao.ImportExcelMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="org.nafmii.admin.user.entity.ImportExcelPO">
<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.user.dto.ImportExcelDto" >
<insert id ="insertExcelData" parameterType="org.nafmii.admin.att.dto.ImportExcelDto" >
insert into IMPORT_EXCEL_TEST
(COLUMN1,COLUMN2,COLUMN3)
values(#{column1},
#{column2},
#{column3})
values(#{data.column1},
#{data.column2},
#{data.column3})
</insert >
</mapper>
package org.nafmii.app.user.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.app.user.dto.LoginDto;
......@@ -10,17 +8,13 @@ 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 sun.net.ftp.FtpClient;
import javax.annotation.Resource;
import java.io.File;
/**
* @author:zhoujh
......@@ -33,12 +27,10 @@ import java.io.File;
@RestController
@RequestMapping("/app/nafmii/user")
@Api(tags = "2.0.1", description = "用户登陆注册操作操作【zjh】")
public class UserController {
@Resource
private UserService userService;
@Resource
private TestClinet testClinet;
@ApiOperation( value = "模拟用户登陆",notes = "模拟用户登陆")
@PostMapping("/loginTest")
@ResponseBody
......@@ -62,24 +54,6 @@ public class UserController {
ApiResponse<UserVO> login = userService.userLogin(loginParam);
return login;
}
@ApiOperation( value = "app用户登陆接口(密码加验证码)",notes = "app用户登陆接口(密码加验证码)")
@PostMapping("/testFtp")
@ResponseBody
public ApiResponse testFtp (){
String ftpClient = FTPClientHelper.uploadFile("1",new File("e:/new1.txt"),"aa");
System.out.println(ftpClient);
return new ApiResponse();
}
@ApiOperation( value = "app用户登陆接口(密码加验证码)",notes = "app用户登陆接口(密码加验证码)")
@PostMapping("/yyy")
@ResponseBody
public ApiResponse yyy (@RequestBody JSONObject object){
LoginParam loginParam = BeanTransferUtils.transfer(object,LoginParam.class);
if("001".equals(object.get("apiCode"))){
testClinet.login(loginParam);
}
return new ApiResponse();
}
}
......@@ -27,8 +27,4 @@ public class LoginDto {
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "登陆方式不能为空")
@ApiModelProperty("登陆方式0密码1验证码")
private String type;
}
......@@ -28,7 +28,4 @@ public class LoginParam {
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "登陆方式不能为空")
@ApiModelProperty("登陆方式0密码1验证码")
private String type;
}
......@@ -18,6 +18,8 @@ import org.nafmii.common.response.ApiResponse;
public interface UserService {
//模拟用户登陆接口
ApiResponse<UserVO> login();
//手机号登陆接口
ApiResponse<UserVO> phoneLogin(LoginParam loginParam);
//app注册接口
ApiResponse register(RegisterParam registerParam);
//用户登陆接口
......
......@@ -12,6 +12,7 @@ import org.nafmii.app.user.service.UserService;
import org.nafmii.app.user.vo.UserAndRoleVo;
import org.nafmii.app.user.vo.UserVO;
import org.nafmii.common.constant.HttpClientHeaderEnum;
import org.nafmii.common.constant.MessageEnum;
import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.JwtUtils;
......@@ -86,6 +87,37 @@ public class UserServiceImpl implements UserService {
}
/**
* 手机号登陆接口
* @param loginParam
* @return
*/
@Override
public ApiResponse<UserVO> phoneLogin(LoginParam loginParam) {
LoginDto loginDto = BeanTransferUtils.transfer(loginParam, LoginDto.class);
log.info("========登陆接口相关参数======>"+loginDto);
long EXPIRITION = 1000 * 60 * 60 * 24 * 7;
//验证码登陆
String code = stringRedisTemplate.opsForValue().get(USER_CODE_KEY+loginDto.getPhone());
log.info("重redis中获取的验证码===============》{}",code);
if (null == code){
return new ApiResponse(ApiResponse.FAIL, MessageEnum.CODE_ERROR.getRemarks());
}
if (!loginDto.getCode().equals(code)){
return new ApiResponse(ApiResponse.FAIL, MessageEnum.CODE_ERROR.getRemarks());
}
UserVO userVo = appUserMapper.selectByPhone(loginDto.getPhone());
log.info("验证码登录返回用户实体=======》{}",userVo);
userVo.setLoginType(userVo!=null ? UserEnum.NOTFIRSTLOGIN.getCode() :UserEnum.FIRSTLOGIN.getCode());
Map<String,Object> map = new HashMap<>();
map.put(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode(),userVo.getId());
String token = JwtUtils.generateJsonWebToken(map,EXPIRITION);
userVo.setAuthorization(token);
ApiResponse apiResponse =new ApiResponse();
apiResponse.setData(userVo);
return apiResponse;
}
/**
* app用户注册接口
* @param registerParam
* @return ApiResponse
......@@ -141,30 +173,15 @@ public class UserServiceImpl implements UserService {
@Override
public ApiResponse<UserVO> userLogin(LoginParam loginParam) {
LoginDto loginDto = BeanTransferUtils.transfer(loginParam, LoginDto.class);
UserVO userVo = new UserVO();
log.info("========登陆接口相关参数======>"+loginDto);
long EXPIRITION = 1000 * 60 * 60 * 24 * 7;
//首先判断登陆方式
if (loginDto.getType().equals("0")){
//密码登陆
userVo = appUserMapper.selectByPassword(loginDto);
if (null == userVo){
return new ApiResponse(ApiResponse.FAIL,"请先注册");
}
}else{
//验证码登陆
String code = stringRedisTemplate.opsForValue().get(USER_CODE_KEY+loginDto.getPhone());
log.info("冲redis中获取的验证码===============》{}",code);
if (null == code){
return new ApiResponse(ApiResponse.FAIL,"验证码已过期");
}
if (!code.equals(loginDto.getCode())){
return new ApiResponse(ApiResponse.FAIL,"验证码错误请重新输入");
}
userVo = appUserMapper.selectByPhone(loginDto.getPhone());
if (null != userVo){
return new ApiResponse(ApiResponse.FAIL,"请先注册");
}
//密码登陆
UserVO userVo = appUserMapper.selectByPassword(loginDto);
log.info("账号密码登录返回用户实体=======》{}",userVo);
if (null == userVo){
return new ApiResponse(ApiResponse.FAIL, MessageEnum.FAIR_PASSWORD.getRemarks());
}
userVo.setLoginType(UserEnum.NOTFIRSTLOGIN.getCode());
Map<String,Object> map = new HashMap<>();
map.put(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode(),userVo.getId());
String token = JwtUtils.generateJsonWebToken(map,EXPIRITION);
......
......@@ -64,6 +64,10 @@ public class UserVO {
@ApiModelProperty(value = "是否有效标识 0 有效用户 1无效用户")
private String isEnable;
@ApiModelProperty(value = "token")
private String authorization;
@ApiModelProperty(value = "验证码登陆判断是否第一次登陆 0是 1否")
private String loginType;
}
......@@ -176,7 +176,7 @@
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
<version>2.2.7</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
......
......@@ -20,6 +20,9 @@ public enum MessageEnum {
FILE_UPLOAD_FAIL(-111L, "文件上传失败!"),
FILE_DOWN_FAIL(-112L, "文件不存在或已被删除!"),
FILE_PICTURE(-113L, "图片格式非法!"),
CODE_ERROR(-114L, "验证码错误或失效!"),
EXCEL_ERROR(-115L, "导入模板列数不匹配!"),
FAIR_PASSWORD(-116L, "密码有误!"),
;
private Long code;
......
......@@ -25,9 +25,16 @@ public enum UserEnum{
*/
ENABLE("0","有效用户"),
NOTENABLE("1","无效用户"),
/**
* 登陆方式
*/
LOGINPHONE("1","验证码"),
LOGINPWD("0","密码"),
/**
*用户是否第一次登陆
*/
FIRSTLOGIN("0","是第一次登陆"),
NOTFIRSTLOGIN("1","不是第一次登陆"),
;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!