Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
polysoft-nafmii
/
polysoft-parent
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 869f2152
authored
May 10, 2021
by
zhoujinghao
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
导入加入校验方法
1 parent
d389671c
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
110 additions
and
42 deletions
nafmii-admin/src/main/java/org/nafmii/admin/att/controller/ImportExcelController.java
nafmii-admin/src/main/java/org/nafmii/admin/att/service/ImportExcelService.java
nafmii-admin/src/main/java/org/nafmii/admin/att/service/impl/ImportExcelServiceImpl.java
nafmii-admin/src/main/java/org/nafmii/admin/att/utils/NoModelDataListener.java
nafmii-admin/src/main/java/org/nafmii/admin/att/vo/ExcelVo.java
nafmii-app/src/main/java/org/nafmii/app/user/controller/UserController.java
nafmii-app/src/main/java/org/nafmii/app/user/dto/LoginDto.java
nafmii-app/src/main/java/org/nafmii/app/user/param/LoginParam.java
nafmii-app/src/main/java/org/nafmii/app/user/service/impl/UserServiceImpl.java
nafmii-common/src/main/java/org/nafmii/common/constant/MessageEnum.java
nafmii-admin/src/main/java/org/nafmii/admin/att/controller/ImportExcelController.java
View file @
869f215
...
@@ -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
;
}
}
}
}
nafmii-admin/src/main/java/org/nafmii/admin/att/service/ImportExcelService.java
View file @
869f215
...
@@ -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
;
}
}
nafmii-admin/src/main/java/org/nafmii/admin/att/service/impl/ImportExcelServiceImpl.java
View file @
869f215
...
@@ -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
batchI
mportExcel
(
MultipartFile
file
)
throws
IOException
{
public
ApiResponse
i
mportExcel
(
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
);
}
}
...
...
nafmii-admin/src/main/java/org/nafmii/admin/att/utils/NoModelDataListener.java
View file @
869f215
...
@@ -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
());
}
}
}
}
...
...
nafmii-admin/src/main/java/org/nafmii/admin/att/vo/ExcelVo.java
0 → 100644
View file @
869f215
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
;
}
nafmii-app/src/main/java/org/nafmii/app/user/controller/UserController.java
View file @
869f215
...
@@ -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
){
...
...
nafmii-app/src/main/java/org/nafmii/app/user/dto/LoginDto.java
View file @
869f215
...
@@ -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验证码"
)
...
...
nafmii-app/src/main/java/org/nafmii/app/user/param/LoginParam.java
View file @
869f215
...
@@ -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验证码"
)
...
...
nafmii-app/src/main/java/org/nafmii/app/user/service/impl/UserServiceImpl.java
View file @
869f215
...
@@ -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
());
...
...
nafmii-common/src/main/java/org/nafmii/common/constant/MessageEnum.java
View file @
869f215
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment