Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-store
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
base_platform_enterprise
gic-store
Commits
b0c89a71
Commit
b0c89a71
authored
Dec 10, 2019
by
zhiwj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
导购下载
parent
2c4ae401
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
271 additions
and
7 deletions
+271
-7
ClerkDTO.java
gic-store-api/src/main/java/com/gic/store/dto/ClerkDTO.java
+9
-0
ClerkSearchDTO.java
...e-api/src/main/java/com/gic/store/dto/ClerkSearchDTO.java
+39
-0
ClerkApiService.java
.../src/main/java/com/gic/store/service/ClerkApiService.java
+13
-0
TabClerkMapper.java
...rc/main/java/com/gic/store/dao/mapper/TabClerkMapper.java
+5
-0
ClerkService.java
...ice/src/main/java/com/gic/store/service/ClerkService.java
+4
-1
ClerkServiceImpl.java
...ain/java/com/gic/store/service/impl/ClerkServiceImpl.java
+5
-0
ClerkApiServiceImpl.java
...com/gic/store/service/outer/impl/ClerkApiServiceImpl.java
+32
-0
TabClerkMapper.xml
...tore-service/src/main/resources/mapper/TabClerkMapper.xml
+15
-0
ClerkController.java
...in/java/com/gic/store/web/controller/ClerkController.java
+146
-6
dubbo-gic-store-web.xml
gic-store-web/src/main/resources/dubbo-gic-store-web.xml
+3
-0
No files found.
gic-store-api/src/main/java/com/gic/store/dto/ClerkDTO.java
View file @
b0c89a71
...
...
@@ -66,6 +66,7 @@ public class ClerkDTO implements Serializable {
private
String
remark
;
private
Integer
operatorId
;
private
String
operatorName
;
private
String
storeName
;
public
Integer
getClerkId
()
{
return
clerkId
;
...
...
@@ -178,4 +179,12 @@ public class ClerkDTO implements Serializable {
public
void
setOperatorName
(
String
operatorName
)
{
this
.
operatorName
=
operatorName
;
}
public
String
getStoreName
()
{
return
storeName
;
}
public
void
setStoreName
(
String
storeName
)
{
this
.
storeName
=
storeName
;
}
}
gic-store-api/src/main/java/com/gic/store/dto/ClerkSearchDTO.java
View file @
b0c89a71
package
com
.
gic
.
store
.
dto
;
import
java.io.Serializable
;
import
java.util.List
;
/**
*
...
...
@@ -18,6 +19,12 @@ public class ClerkSearchDTO implements Serializable {
private
Integer
currentPage
=
1
;
private
Integer
pageSize
=
20
;
private
String
fileName
;
private
Integer
excelExtension
;
private
List
<
String
>
fieldCodeList
;
private
Integer
dataType
;
public
String
getSearch
()
{
return
search
;
}
...
...
@@ -73,4 +80,36 @@ public class ClerkSearchDTO implements Serializable {
public
void
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
public
List
<
String
>
getFieldCodeList
()
{
return
fieldCodeList
;
}
public
void
setFieldCodeList
(
List
<
String
>
fieldCodeList
)
{
this
.
fieldCodeList
=
fieldCodeList
;
}
public
Integer
getExcelExtension
()
{
return
excelExtension
;
}
public
void
setExcelExtension
(
Integer
excelExtension
)
{
this
.
excelExtension
=
excelExtension
;
}
public
Integer
getDataType
()
{
return
dataType
;
}
public
void
setDataType
(
Integer
dataType
)
{
this
.
dataType
=
dataType
;
}
}
gic-store-api/src/main/java/com/gic/store/service/ClerkApiService.java
View file @
b0c89a71
...
...
@@ -40,6 +40,18 @@ public interface ClerkApiService {
ServiceResponse
<
Page
<
ClerkStoreListDTO
>>
listClerk
(
Integer
enterpriseId
,
ClerkSearchDTO
clerkSearchDTO
,
Integer
pageNum
,
Integer
pageSize
);
/**
* 获取clerk总数
* @Title: getTotalClerk
* @Description:
* @author zhiwj
* @param enterpriseId
* @param clerkSearchDTO
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Integer>
* @throws
*/
ServiceResponse
<
Integer
>
getTotalClerk
(
Integer
enterpriseId
,
ClerkSearchDTO
clerkSearchDTO
);
/**
* 批量修改状态
* @Title: updateClerkStatus
* @Description: 批量修改导购状态
...
...
@@ -63,4 +75,5 @@ public interface ClerkApiService {
* @throws
*/
ServiceResponse
<
List
<
ClerkDTO
>>
listClerkByIds
(
Integer
enterpriseId
,
String
clerkIds
);
}
gic-store-service/src/main/java/com/gic/store/dao/mapper/TabClerkMapper.java
View file @
b0c89a71
...
...
@@ -60,6 +60,8 @@ public interface TabClerkMapper {
List
<
TabClerk
>
listClerkByStoreInfoId
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"storeClerkIds"
)
List
<
Integer
>
storeClerkIds
,
@Param
(
"search"
)
String
search
);
Integer
getTotalClerk
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"storeClerkIds"
)
List
<
Integer
>
storeClerkIds
,
@Param
(
"search"
)
String
search
);
List
<
Integer
>
getStoreInfoIdsBySearch
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"search"
)
String
search
);
Integer
updateClerkStatus
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"clerkIds"
)
List
<
Integer
>
clerkIds
,
@Param
(
"status"
)
Integer
status
);
...
...
@@ -67,4 +69,6 @@ public interface TabClerkMapper {
TabClerk
getBySelective
(
TabClerk
tabClerk
);
List
<
TabClerk
>
listClerkByIds
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"ids"
)
List
<
Integer
>
clerkIdList
);
}
\ No newline at end of file
gic-store-service/src/main/java/com/gic/store/service/ClerkService.java
View file @
b0c89a71
...
...
@@ -79,7 +79,8 @@ public interface ClerkService {
* @throws
*/
List
<
TabClerk
>
listClerkByStoreInfoId
(
Integer
enterpriseId
,
List
<
Integer
>
storeIds
,
String
search
);
Integer
getTotalClerk
(
Integer
enterpriseId
,
List
<
Integer
>
storeInfoIds
,
String
search
);
/**
* @Title: getStoreInfoIdsBySearch
* @Description: 查询符合条件的门店id
...
...
@@ -106,4 +107,6 @@ public interface ClerkService {
List
<
TabClerk
>
listClerkByIds
(
Integer
enterpriseId
,
String
clerkIds
);
TabClerk
getById
(
Integer
clerkId
);
}
gic-store-service/src/main/java/com/gic/store/service/impl/ClerkServiceImpl.java
View file @
b0c89a71
...
...
@@ -89,6 +89,11 @@ public class ClerkServiceImpl implements ClerkService {
}
@Override
public
Integer
getTotalClerk
(
Integer
enterpriseId
,
List
<
Integer
>
storeInfoIds
,
String
search
)
{
return
tabClerkMapper
.
getTotalClerk
(
enterpriseId
,
storeInfoIds
,
search
);
}
@Override
public
List
<
Integer
>
getStoreInfoIdsBySearch
(
Integer
enterpriseId
,
String
search
)
{
return
tabClerkMapper
.
getStoreInfoIdsBySearch
(
enterpriseId
,
search
);
}
...
...
gic-store-service/src/main/java/com/gic/store/service/outer/impl/ClerkApiServiceImpl.java
View file @
b0c89a71
...
...
@@ -147,6 +147,38 @@ public class ClerkApiServiceImpl implements ClerkApiService {
return
ServiceResponse
.
success
(
resultPage
);
}
@Override
public
ServiceResponse
<
Integer
>
getTotalClerk
(
Integer
enterpriseId
,
ClerkSearchDTO
clerkSearchDTO
)
{
if
(
clerkSearchDTO
.
getStoreGroupId
()
==
null
)
{
return
ServiceResponse
.
failure
(
ErrorCode
.
MISS_PARAMETER
.
getCode
(),
ErrorCode
.
MISS_PARAMETER
.
getMsg
());
}
// 分组的id
List
<
TabStoreGroup
>
groupList
=
storeGroupService
.
listStoreGroupAndChildren
(
clerkSearchDTO
.
getStoreGroupId
());
List
<
Integer
>
groupIds
=
groupList
.
stream
().
map
(
TabStoreGroup:
:
getStoreGroupId
).
collect
(
Collectors
.
toList
());
// 查询条件对应的storeId
String
storeIdByClerkSearch
;
if
(
StringUtils
.
isNotBlank
(
clerkSearchDTO
.
getSearch
()))
{
List
<
Integer
>
storeInfoIdsBySearch
=
clerkService
.
getStoreInfoIdsBySearch
(
enterpriseId
,
clerkSearchDTO
.
getSearch
());
if
(
CollectionUtils
.
isEmpty
(
groupIds
)
||
CollectionUtils
.
isEmpty
(
storeInfoIdsBySearch
))
{
return
ServiceResponse
.
success
();
}
storeIdByClerkSearch
=
getStoreIdByStoreInfoIds
(
storeInfoIdsBySearch
);
}
else
{
storeIdByClerkSearch
=
""
;
}
clerkSearchDTO
.
setEnterpriseId
(
enterpriseId
);
clerkSearchDTO
.
setStoreIds
(
storeIdByClerkSearch
);
ServiceResponse
<
Page
<
StoreDTO
>>
serviceResponse
=
listStoreIds
(
clerkSearchDTO
,
1
,
Integer
.
MAX_VALUE
);
if
(!
serviceResponse
.
isSuccess
())
{
return
ServiceResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
Page
<
StoreDTO
>
page
=
serviceResponse
.
getResult
();
List
<
Integer
>
storeInfoIds
=
page
.
getResult
().
stream
().
map
(
StoreDTO:
:
getStoreInfoId
).
collect
(
Collectors
.
toList
());
Integer
totalClerk
=
clerkService
.
getTotalClerk
(
enterpriseId
,
storeInfoIds
,
clerkSearchDTO
.
getSearch
());
return
ServiceResponse
.
success
(
totalClerk
);
}
private
String
getStoreIdByStoreInfoIds
(
List
<
Integer
>
storeInfoIdsBySearch
)
{
StoreSearchDBDTO
storeSearchDBDTO
=
new
StoreSearchDBDTO
();
storeSearchDBDTO
.
setStoreInfoIdList
(
storeInfoIdsBySearch
);
...
...
gic-store-service/src/main/resources/mapper/TabClerkMapper.xml
View file @
b0c89a71
...
...
@@ -222,6 +222,21 @@
and (clerk_code like concat('%', #{search} ,'%') or clerk_name like concat('%', #{search} ,'%') )
</if>
</select>
<select
id=
"getTotalClerk"
resultType=
"int"
>
select
count(*)
from tab_clerk
where enterprise_id = #{enterpriseId}
<if
test=
"null != storeClerkIds and storeClerkIds.size() > 0"
>
and store_info_id in
<foreach
close=
")"
collection=
"storeClerkIds"
index=
"index"
item=
"item"
open=
"("
separator=
","
>
#{item}
</foreach>
</if>
<if
test=
"search != null and search != '' "
>
and (clerk_code like concat('%', #{search} ,'%') or clerk_name like concat('%', #{search} ,'%') )
</if>
</select>
<select
id=
"getStoreInfoIdsBySearch"
resultType=
"java.lang.Integer"
>
select
distinct store_info_id
...
...
gic-store-web/src/main/java/com/gic/store/web/controller/ClerkController.java
View file @
b0c89a71
package
com
.
gic
.
store
.
web
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.auth.dto.MenuDTO
;
import
com.gic.auth.service.MenuApiService
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.download.utils.DataDownloadUtils
;
import
com.gic.download.utils.DownloadReport
;
import
com.gic.download.utils.DownloadUtils
;
import
com.gic.download.utils.ExecutorPoolSingleton
;
import
com.gic.download.utils.log.LogUtils
;
import
com.gic.enterprise.constants.Constants
;
import
com.gic.enterprise.context.RequestContext
;
import
com.gic.enterprise.error.ErrorCode
;
import
com.gic.enterprise.utils.ResultControllerUtils
;
import
com.gic.enterprise.utils.UserDetailUtils
;
import
com.gic.store.constant.ClerkLogReasonEnum
;
import
com.gic.store.dto.ClerkDTO
;
import
com.gic.store.dto.ClerkLogDTO
;
import
com.gic.store.dto.ClerkSearchDTO
;
import
com.gic.store.dto.ClerkStoreListDTO
;
import
com.gic.store.service.ClerkApiService
;
import
com.gic.store.service.ClerkLogApiService
;
import
com.gic.store.web.qo.PageQO
;
import
com.gic.store.web.qo.clerk.ClerkQO
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.*
;
/**
* @author zhiwj
* @date 2019/7/16
*/
@RestController
public
class
ClerkController
{
public
class
ClerkController
extends
DownloadUtils
{
private
Logger
logger
=
LogManager
.
getLogger
(
ClerkController
.
class
);
@Autowired
private
ClerkApiService
clerkApiService
;
@Autowired
private
ClerkLogApiService
clerkLogApiService
;
@Autowired
private
MenuApiService
menuApiService
;
@RequestMapping
(
"/list-clerk-field"
)
public
RestResponse
listClerkField
()
{
//language=JSON
String
json
=
"[{\"fliedName\":\"店员名称\",\"fliedCode\":\"clerkName\"},{\"fliedName\":\"店员唯一关联主键\",\"fliedCode\":\"clerkCode\"},{\"fliedName\":\"职位\",\"fliedCode\":\"positionName\"},{\"fliedName\":\"性别\",\"fliedCode\":\"clerkGender\"},{\"fliedName\":\"国际码\",\"fliedCode\":\"nationcode\"},{\"fliedName\":\"手机号\",\"fliedCode\":\"phoneNumber\"},{\"fliedName\":\"好办状态\",\"fliedCode\":\"haobanStatus\"},{\"fliedName\":\"启用状态\",\"fliedCode\":\"status\"}]"
;
return
RestResponse
.
success
(
JSON
.
parseArray
(
json
));
ClerkFiledEnum
[]
values
=
ClerkFiledEnum
.
values
();
List
<
Map
<
String
,
Object
>>
arrayList
=
new
ArrayList
<>(
values
.
length
);
for
(
ClerkFiledEnum
value
:
values
)
{
Map
<
String
,
Object
>
hashMap
=
new
HashMap
<>(
4
);
hashMap
.
put
(
"fieldCode"
,
value
.
getFieldCode
());
hashMap
.
put
(
"fieldName"
,
value
.
getFieldName
());
hashMap
.
put
(
"needEncrypt"
,
value
.
getNeedEncrypt
());
arrayList
.
add
(
hashMap
);
}
return
RestResponse
.
success
(
arrayList
);
}
@RequestMapping
(
"/export-clerk"
)
public
RestResponse
exportClerk
(
HttpServletRequest
request
,
@RequestBody
ClerkSearchDTO
clerkSearchDTO
)
{
clerkSearchDTO
.
setEnterpriseId
(
UserDetailUtils
.
getUserDetail
().
getEnterpriseId
());
ServiceResponse
<
Integer
>
totalClerkServiceResponse
=
clerkApiService
.
getTotalClerk
(
UserDetailUtils
.
getUserDetail
().
getEnterpriseId
(),
clerkSearchDTO
);
if
(
totalClerkServiceResponse
.
getResult
()
==
0
)
{
return
RestResponse
.
failure
(
ErrorCode
.
NOTEXISTS
.
getCode
(),
ErrorCode
.
NOTEXISTS
.
getMsg
());
}
List
<
String
>
fieldCodeList
=
clerkSearchDTO
.
getFieldCodeList
();
List
<
String
>
fieldNameList
=
new
ArrayList
<>(
fieldCodeList
.
size
());
for
(
String
fieldCode:
fieldCodeList
)
{
String
fieldName
=
ClerkFiledEnum
.
valueOf
(
fieldCode
).
getFieldName
();
fieldNameList
.
add
(
fieldName
);
}
// 开始下载
String
dataContent
=
getDataContent
();
// 生成入参数据
DownloadReport
report
=
new
DownloadReport
();
//申请人ID
report
.
setApplyUserId
(
UserDetailUtils
.
getUserDetail
().
getUserId
());
//数据源(频道页),用 "-" 隔开上级和本级
report
.
setDataContent
(
dataContent
);
//待下载数据的数据总量
report
.
setDataCount
(
totalClerkServiceResponse
.
getResult
());
//报告类型 1:完整数据, 2:脱敏数据, 3:二维码
report
.
setDataType
(
clerkSearchDTO
.
getDataType
());
//数据源超链接,用于点击跳转对应频道页面
report
.
setDataUrl
((
String
)
RequestContext
.
getContext
().
getRequest
().
getAttribute
(
"moduleMenuUrl"
));
report
.
setEnterpriseId
(
UserDetailUtils
.
getUserDetail
().
getEnterpriseId
());
//待下载文件名
report
.
setFileName
(
clerkSearchDTO
.
getFileName
());
//待下载数据的结束时间
report
.
setReportEndTime
(
null
);
//待下载数据的开始时间
report
.
setReportStartTime
(
null
);
//调用生成方法,获取reportId
Integer
reportId
=
DataDownloadUtils
.
createDownloadReport
(
report
);
String
path
=
request
.
getSession
().
getServletContext
().
getRealPath
(
"/excel/csv/collaborator/file/"
);
//CollaboratorListDTO是分页接口的返回类,不同业务场景对应不同的返回类
ExecutorPoolSingleton
.
getInstance
().
executeTask
(()
->
{
DownloadDataLoader
<
ClerkDTO
>
loader
=
new
DownloadDataLoader
<
ClerkDTO
>()
{
@Override
protected
List
<
ClerkDTO
>
getDownloadData
(
Integer
pageNum
)
throws
Exception
{
//调用分页查询接口
ServiceResponse
<
Page
<
ClerkStoreListDTO
>>
result
=
clerkApiService
.
listClerk
(
clerkSearchDTO
.
getEnterpriseId
(),
clerkSearchDTO
,
pageNum
,
500
);
List
<
ClerkStoreListDTO
>
clerkStoreList
=
result
.
getResult
().
getResult
();
List
<
ClerkDTO
>
clerkDTOS
=
new
ArrayList
<>();
for
(
ClerkStoreListDTO
clerkStoreListDTO
:
clerkStoreList
)
{
List
<
ClerkDTO
>
clerkList
=
clerkStoreListDTO
.
getClerkList
();
for
(
ClerkDTO
clerkDTO
:
clerkList
)
{
clerkDTO
.
setStoreName
(
clerkStoreListDTO
.
getStoreName
());
}
clerkDTOS
.
addAll
(
clerkList
);
}
return
clerkDTOS
;
}
};
try
{
//参数说明:excelExtensionCode,Excel后缀名code ,枚举类:ExcelExtensionEnum, Arrays.asList("phone")这个phone是需要加密的字段
download
(
path
,
reportId
,
clerkSearchDTO
.
getFileName
(),
clerkSearchDTO
.
getExcelExtension
(),
fieldNameList
,
fieldCodeList
,
loader
,
Arrays
.
asList
(
"phoneNumber"
),
null
);
}
catch
(
Exception
e
)
{
logger
.
warn
(
"下载错误"
,
e
);
}
});
return
RestResponse
.
success
();
}
private
String
getDataContent
()
{
String
dataContent
;
Integer
moduleMenuId
=
(
Integer
)
RequestContext
.
getContext
().
getRequest
().
getAttribute
(
"moduleMenuId"
);
ServiceResponse
<
MenuDTO
>
response
=
menuApiService
.
getDetailById
(
moduleMenuId
);
MenuDTO
menuDTO
=
response
.
getResult
();
ServiceResponse
<
MenuDTO
>
parentResponse
=
menuApiService
.
getDetailById
(
menuDTO
.
getParentId
());
MenuDTO
parentMenuDTO
=
parentResponse
.
getResult
();
if
(
parentMenuDTO
!=
null
)
{
dataContent
=
parentMenuDTO
.
getMenuName
()
+
"-"
+
menuDTO
.
getMenuName
();
}
else
{
dataContent
=
menuDTO
.
getMenuName
();
}
return
dataContent
;
}
@RequestMapping
(
"/save-clerk"
)
...
...
@@ -108,4 +217,35 @@ public class ClerkController {
return
ResultControllerUtils
.
commonResult
(
response
);
}
enum
ClerkFiledEnum
{
storeName
(
"storeName"
,
"所属门店"
,
0
),
clerkName
(
"clerkName"
,
"店员名称"
,
0
),
positionName
(
"positionName"
,
"职位"
,
0
),
phoneNumber
(
"phoneNumber"
,
"手机号"
,
1
),
haobanStatus
(
"haobanStatus"
,
"好办状态"
,
0
);
;
private
String
fieldCode
;
private
String
fieldName
;
private
Integer
needEncrypt
;
ClerkFiledEnum
(
String
fieldCode
,
String
fieldName
,
Integer
needEncrypt
)
{
this
.
fieldCode
=
fieldCode
;
this
.
fieldName
=
fieldName
;
this
.
needEncrypt
=
needEncrypt
;
}
public
String
getFieldCode
()
{
return
fieldCode
;
}
public
String
getFieldName
()
{
return
fieldName
;
}
public
Integer
getNeedEncrypt
()
{
return
needEncrypt
;
}
}
}
gic-store-web/src/main/resources/dubbo-gic-store-web.xml
View file @
b0c89a71
...
...
@@ -48,4 +48,6 @@
<dubbo:reference
interface=
"com.gic.enterprise.service.DownloadReportApiService"
id=
"downloadReportApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.enterprise.service.EnterpriseInitApiService"
id=
"enterpriseInitApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.auth.service.MenuApiService"
id=
"menuApiService"
timeout=
"6000"
/>
</beans>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment