Commit 869f2152 by zhoujinghao

导入加入校验方法

1 parent d389671c
...@@ -14,17 +14,24 @@ import javax.annotation.Resource; ...@@ -14,17 +14,24 @@ import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
@RestController @RestController
@RequestMapping("/nafmii/admin/import") @RequestMapping("/nafmii/admin/excel")
@Api(tags = "2.0.1", description = "中心端批量导入Excel接口【zjh】") @Api(tags = "2.0.1", description = "中心端批量导入Excel接口【zjh】")
public class ImportExcelController { public class ImportExcelController {
@Resource @Resource
private ImportExcelService iImportExcelService; private ImportExcelService iImportExcelService;
@ApiOperation( value = "中心端批量导入Excel",notes = "中心端批量导入Excel") @ApiOperation( value = "中心端导入Excel",notes = "中心端导入Excel")
@PostMapping("/batchImportExcel") @PostMapping("/import")
@ResponseBody @ResponseBody
public ApiResponse batchImportExcel(MultipartFile file) throws IOException { public ApiResponse ImportExcel(MultipartFile file) throws IOException {
ApiResponse result = iImportExcelService.batchImportExcel(file); 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; return result;
} }
} }
...@@ -10,18 +10,14 @@ import java.io.IOException; ...@@ -10,18 +10,14 @@ import java.io.IOException;
* 中心端批量导入Excel * 中心端批量导入Excel
* </p> * </p>
* *
* @author suncq * @author zjh
* @since 2021-04-27 * @since 2021-04-27
*/ */
public interface ImportExcelService { public interface ImportExcelService {
/** //中心端导出Excle
* @author:suncq ApiResponse exportExcel();
* @Function:中心端批量导入Excel
* @date 2021/4/27 //中心端批量导入Excel
* @ClassName: ApiResponse importExcel(MultipartFile file) throws IOException;
* @version:
* @remark:
*/
ApiResponse batchImportExcel(MultipartFile file) throws IOException;
} }
...@@ -7,13 +7,18 @@ import org.nafmii.admin.att.dto.ImportExcelDto; ...@@ -7,13 +7,18 @@ import org.nafmii.admin.att.dto.ImportExcelDto;
import org.nafmii.admin.att.service.ImportExcelService; import org.nafmii.admin.att.service.ImportExcelService;
import org.nafmii.admin.att.dao.ImportExcelMapper; import org.nafmii.admin.att.dao.ImportExcelMapper;
import org.nafmii.admin.att.utils.NoModelDataListener; 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.nafmii.common.response.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
...@@ -34,10 +39,39 @@ import java.util.Map; ...@@ -34,10 +39,39 @@ import java.util.Map;
public class ImportExcelServiceImpl implements ImportExcelService { public class ImportExcelServiceImpl implements ImportExcelService {
@Resource @Resource
private ImportExcelMapper importExcelMapper; 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 @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApiResponse batchImportExcel(MultipartFile file) throws IOException { public ApiResponse importExcel(MultipartFile file) throws IOException {
List<Map<Integer,String>>list =EasyExcel.read(file.getInputStream(),new NoModelDataListener()) List<Map<Integer,String>>list =EasyExcel.read(file.getInputStream(),new NoModelDataListener())
.extraRead(CellExtraTypeEnum.MERGE) .extraRead(CellExtraTypeEnum.MERGE)
.ignoreEmptyRow(true) .ignoreEmptyRow(true)
...@@ -48,13 +82,13 @@ public class ImportExcelServiceImpl implements ImportExcelService { ...@@ -48,13 +82,13 @@ public class ImportExcelServiceImpl implements ImportExcelService {
log.info("导入后生成的数据源=============>"+list); log.info("导入后生成的数据源=============>"+list);
if (!list.isEmpty()) { if (!list.isEmpty()) {
for (Map<Integer,String> data : list) { for (Map<Integer,String> data : list) {
String v1 = data.get(0);
String v2 = data.get(1);
String v3 = data.get(2);
ImportExcelDto excelDto = new ImportExcelDto(); ImportExcelDto excelDto = new ImportExcelDto();
excelDto.setColumn1(v1); if (data.size()!=3){
excelDto.setColumn2(v2); return new ApiResponse(ApiResponse.FAIL, MessageEnum.EXCEL_ERROR.getRemarks());
excelDto.setColumn3(v3); }
excelDto.setColumn1(data.get(0));
excelDto.setColumn2(data.get(1));
excelDto.setColumn3(data.get(2));
log.info("导入处理后生成的数据源=============>"+excelDto); log.info("导入处理后生成的数据源=============>"+excelDto);
importExcelMapper.insertExcelData(excelDto); importExcelMapper.insertExcelData(excelDto);
} }
......
...@@ -5,6 +5,7 @@ import com.alibaba.excel.context.AnalysisContext; ...@@ -5,6 +5,7 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException; import com.alibaba.excel.exception.ExcelDataConvertException;
import com.alibaba.excel.metadata.CellExtra; import com.alibaba.excel.metadata.CellExtra;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
...@@ -19,6 +20,7 @@ import java.util.Map; ...@@ -19,6 +20,7 @@ import java.util.Map;
* @version: * @version:
* @remark: * @remark:
*/ */
@Slf4j
public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> { public class NoModelDataListener extends AnalysisEventListener<Map<Integer, String>> {
/** /**
* 所有列到字段名的映射 * 所有列到字段名的映射
...@@ -56,11 +58,11 @@ public class NoModelDataListener extends AnalysisEventListener<Map<Integer, Stri ...@@ -56,11 +58,11 @@ public class NoModelDataListener extends AnalysisEventListener<Map<Integer, Stri
* */ * */
@Override @Override
public void onException(Exception exception, AnalysisContext context) { public void onException(Exception exception, AnalysisContext context) {
System.err.println("解析失败,但是继续解析下一行: " + exception.getMessage()); log.info("解析失败,但是继续解析下一行: " + exception.getMessage());
// 如果是某一个单元格的转换异常 能获取到具体行号 // 如果是某一个单元格的转换异常 能获取到具体行号
if (exception instanceof ExcelDataConvertException) { if (exception instanceof ExcelDataConvertException) {
ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception; ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
System.err.println("第{}行,第{}列解析异常" + excelDataConvertException.getRowIndex() + log.info("第{}行,第{}列解析异常" + excelDataConvertException.getRowIndex() +
excelDataConvertException.getColumnIndex()); excelDataConvertException.getColumnIndex());
} }
} }
......
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;
}
...@@ -47,7 +47,7 @@ public class UserController { ...@@ -47,7 +47,7 @@ public class UserController {
return register; return register;
} }
@ApiOperation( value = "app用户登陆接口(密码加验证码)",notes = "app用户登陆接口(密码加验证码)") @ApiOperation( value = "app用户登陆接口(两种登陆方式)",notes = "app用户登陆接口(两种登陆方式)")
@PostMapping("/userLogin") @PostMapping("/userLogin")
@ResponseBody @ResponseBody
public ApiResponse<UserVO> login (@RequestBody @Validated LoginParam loginParam){ public ApiResponse<UserVO> login (@RequestBody @Validated LoginParam loginParam){
......
...@@ -25,8 +25,6 @@ public class LoginDto { ...@@ -25,8 +25,6 @@ public class LoginDto {
@ApiModelProperty("登陆密码") @ApiModelProperty("登陆密码")
private String loginPwd; private String loginPwd;
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "登陆方式不能为空") @NotNull(message = "登陆方式不能为空")
@ApiModelProperty("登陆方式0密码1验证码") @ApiModelProperty("登陆方式0密码1验证码")
......
...@@ -24,9 +24,7 @@ public class LoginParam { ...@@ -24,9 +24,7 @@ public class LoginParam {
@ApiModelProperty("登陆密码") @ApiModelProperty("登陆密码")
private String loginPwd; private String loginPwd;
@ApiModelProperty("验证码")
private String code;
@NotNull(message = "登陆方式不能为空") @NotNull(message = "登陆方式不能为空")
@ApiModelProperty("登陆方式0密码1验证码") @ApiModelProperty("登陆方式0密码1验证码")
......
...@@ -12,6 +12,7 @@ import org.nafmii.app.user.service.UserService; ...@@ -12,6 +12,7 @@ import org.nafmii.app.user.service.UserService;
import org.nafmii.app.user.vo.UserAndRoleVo; import org.nafmii.app.user.vo.UserAndRoleVo;
import org.nafmii.app.user.vo.UserVO; import org.nafmii.app.user.vo.UserVO;
import org.nafmii.common.constant.HttpClientHeaderEnum; import org.nafmii.common.constant.HttpClientHeaderEnum;
import org.nafmii.common.constant.MessageEnum;
import org.nafmii.common.param.BeanTransferUtils; import org.nafmii.common.param.BeanTransferUtils;
import org.nafmii.common.response.ApiResponse; import org.nafmii.common.response.ApiResponse;
import org.nafmii.common.utils.JwtUtils; import org.nafmii.common.utils.JwtUtils;
...@@ -141,29 +142,21 @@ public class UserServiceImpl implements UserService { ...@@ -141,29 +142,21 @@ public class UserServiceImpl implements UserService {
@Override @Override
public ApiResponse<UserVO> userLogin(LoginParam loginParam) { public ApiResponse<UserVO> userLogin(LoginParam loginParam) {
LoginDto loginDto = BeanTransferUtils.transfer(loginParam, LoginDto.class); LoginDto loginDto = BeanTransferUtils.transfer(loginParam, LoginDto.class);
log.info("========登陆接口相关参数======>"+loginDto);
UserVO userVo = new UserVO(); UserVO userVo = new UserVO();
long EXPIRITION = 1000 * 60 * 60 * 24 * 7; long EXPIRITION = 1000 * 60 * 60 * 24 * 7;
//首先判断登陆方式 //首先判断登陆方式
if (loginDto.getType().equals("0")){ if (loginDto.getType().equals(UserEnum.LOGINPWD.getCode())){
//密码登陆 //密码登陆
userVo = appUserMapper.selectByPassword(loginDto); userVo = appUserMapper.selectByPassword(loginDto);
if (null == userVo){
return new ApiResponse(ApiResponse.FAIL,"请先注册");
}
}else{ }else{
//验证码登陆 //验证码登陆
String code = stringRedisTemplate.opsForValue().get(USER_CODE_KEY+loginDto.getPhone()); String code = stringRedisTemplate.opsForValue().get(USER_CODE_KEY+loginDto.getPhone());
log.info("redis中获取的验证码===============》{}",code); log.info("redis中获取的验证码===============》{}",code);
if (null == code){ if (null == code){
return new ApiResponse(ApiResponse.FAIL,"验证码已过期"); return new ApiResponse(ApiResponse.FAIL, MessageEnum.CODE_ERROR.getRemarks());
}
if (!code.equals(loginDto.getCode())){
return new ApiResponse(ApiResponse.FAIL,"验证码错误请重新输入");
} }
userVo = appUserMapper.selectByPhone(loginDto.getPhone()); userVo = appUserMapper.selectByPhone(loginDto.getPhone());
if (null != userVo){
return new ApiResponse(ApiResponse.FAIL,"请先注册");
}
} }
Map<String,Object> map = new HashMap<>(); Map<String,Object> map = new HashMap<>();
map.put(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode(),userVo.getId()); map.put(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode(),userVo.getId());
......
...@@ -20,6 +20,8 @@ public enum MessageEnum { ...@@ -20,6 +20,8 @@ public enum MessageEnum {
FILE_UPLOAD_FAIL(-111L, "文件上传失败!"), FILE_UPLOAD_FAIL(-111L, "文件上传失败!"),
FILE_DOWN_FAIL(-112L, "文件不存在或已被删除!"), FILE_DOWN_FAIL(-112L, "文件不存在或已被删除!"),
FILE_PICTURE(-113L, "图片格式非法!"), FILE_PICTURE(-113L, "图片格式非法!"),
CODE_ERROR(-114L, "验证码错误或失效!"),
EXCEL_ERROR(-115L, "导入模板列数不匹配!"),
; ;
private Long code; private Long code;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!