Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-manage3.0
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
haoban3.0
haoban-manage3.0
Commits
ea26ab57
Commit
ea26ab57
authored
May 17, 2023
by
徐高华
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/自建应用验证' into 'master'
文案 See merge request
!1264
parents
35fdd778
653390b6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
765 additions
and
765 deletions
+765
-765
WxEnterpriseController.java
.../haoban/manage/web/controller/WxEnterpriseController.java
+765
-765
No files found.
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/WxEnterpriseController.java
View file @
ea26ab57
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.dto.*
;
import
com.gic.enterprise.api.service.AuthorizeService
;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO
;
import
com.gic.haoban.common.anno.IgnoreLogin
;
import
com.gic.haoban.common.utils.AuthWebRequestUtil
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.common.utils.HaobanResponse
;
import
com.gic.haoban.manage.api.dto.DepartmentDTO
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.fee.HaobanQywxFeeDTO
;
import
com.gic.haoban.manage.api.enums.ChannelCodeEnum
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.*
;
import
com.gic.haoban.manage.api.service.fee.HaobanQywxFeeApiService
;
import
com.gic.haoban.manage.api.service.out.SecretSettingApiService
;
import
com.gic.haoban.manage.web.config.Config
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.qo.MiniprogramSettingQo
;
import
com.gic.haoban.manage.web.vo.StoreVo
;
import
com.gic.haoban.manage.web.vo.*
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxCorpApiService
;
import
com.gic.wechat.token.api.dto.QywxCorpInfoDTO
;
import
com.gic.wechat.token.api.service.QywxTokenManageService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@RestController
public
class
WxEnterpriseController
extends
WebBaseController
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
WxEnterpriseController
.
class
);
@Autowired
private
WxEnterpriseRelatedApiService
wxEnterpriseRelatedApiService
;
@Autowired
private
EnterpriseService
enterpriseService
;
@Autowired
private
WxEnterpriseApiService
wxEnterpriseApiService
;
@Autowired
private
DepartmentApiService
departmentApiService
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
QywxTokenManageService
qywxTokenManageService
;
@Autowired
private
Config
config
;
@Autowired
private
QywxCorpApiService
qywxCorpApiService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
@Autowired
private
MaterialApiService
materialApiService
;
@Autowired
private
AuthorizeService
authorizeService
;
@Autowired
private
HaobanUserApiService
haobanUserApiService
;
@Autowired
private
HaobanQywxFeeApiService
haobanQywxFeeApiService
;
@Autowired
private
SecretSettingApiService
secretSettingApiService
;
@Autowired
private
ClerkService
clerkService
;
//授权企业列表
@RequestMapping
(
"wxa-enterprise-list"
)
public
HaobanResponse
wxEnterpriseList
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
phoneNumber
=
login
.
getPhoneNumber
()
;
List
<
EnterpriseDetailDTO
>
list
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
,
phoneNumber
,
true
);
List
<
EnterpriseDetailVO
>
detailVOS
=
EntityUtil
.
changeEntityListByOrika
(
EnterpriseDetailVO
.
class
,
list
);
if
(
CollectionUtil
.
isNotEmpty
(
detailVOS
))
{
List
<
String
>
enterpriseIds
=
detailVOS
.
stream
().
map
(
s
->
s
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
List
<
EnterpriseDTO
>
enterpriseList
=
enterpriseService
.
listEnterpriseByIds
(
enterpriseIds
);
Map
<
String
,
EnterpriseDTO
>
map
=
com
.
gic
.
commons
.
util
.
CollectionUtil
.
toMap
(
enterpriseList
,
"enterpriseId"
);
for
(
EnterpriseDetailVO
dto
:
detailVOS
)
{
List
<
EnterpriseWxaRelationDTO
>
relationDTOS
=
authorizeService
.
queryList
(
dto
.
getEnterpriseId
());
EnterpriseDTO
enterpriseDTO
=
map
.
get
(
dto
.
getEnterpriseId
());
EnterpriseWxaRelationDTO
wxaRelationDTO
=
relationDTOS
.
stream
().
filter
(
mid
->
mid
.
getWxaAppkey
().
equals
(
enterpriseDTO
.
getMallMiniprogramAppid
())).
findFirst
().
orElse
(
null
);
if
(
wxaRelationDTO
!=
null
)
{
dto
.
setEnterpriseName
(
enterpriseDTO
.
getEnterpriseName
());
dto
.
setImageUrl
(
wxaRelationDTO
.
getAuthImg
());
dto
.
setAppId
(
wxaRelationDTO
.
getWxaAppkey
());
dto
.
setMiniprogramName
(
wxaRelationDTO
.
getAuthName
());
dto
.
setTitle
(
wxaRelationDTO
.
getAuthName
());
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
detailVOS
);
}
//授权企业列表 filteRight 是否过滤无登录权限的列表
@RequestMapping
(
"wx-enterprise-list"
)
public
HaobanResponse
wxaEnterpriseList
(
@RequestParam
(
defaultValue
=
"0"
)
int
filteRight
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
phoneNumber
=
login
.
getPhoneNumber
()
;
List
<
EnterpriseDetailDTO
>
list
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
,
phoneNumber
,
filteRight
==
1
);
String
userId
=
login
.
getHanbaoUserId
()
;
HaobanUserDTO
dto
=
this
.
haobanUserApiService
.
selectById
(
userId
)
;
if
(
null
!=
dto
)
{
String
eid
=
dto
.
getDefaultGicEid
()
;
for
(
EnterpriseDetailDTO
item
:
list
)
{
if
(
null
!=
eid
&&
eid
.
equals
(
item
.
getEnterpriseId
()))
{
item
.
setDefaultFlag
(
1
);
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
list
);
}
//企业信息
@IgnoreLogin
@RequestMapping
(
"wxEnterprise-detail"
)
public
HaobanResponse
enterpriseDetail
(
String
wxEnterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterpriseDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100018
);
}
wxEnterpriseDTO
.
setSmallVersion
(
"免费版"
);
wxEnterpriseDTO
.
setStoreTotal
(
departmentApiService
.
totalStoreCountByEnterpriseId
(
wxEnterpriseId
));
WxEnterpriseVO
vo
=
com
.
gic
.
commons
.
util
.
EntityUtil
.
changeEntityNew
(
WxEnterpriseVO
.
class
,
wxEnterpriseDTO
)
;
vo
.
setCorpid
(
getCorpid
(
wxEnterpriseDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
//企业信息
@IgnoreLogin
@RequestMapping
(
"wxEnterprise-refresh"
)
public
HaobanResponse
enterpriseRefresh
(
String
wxEnterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterpriseDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
.
isSelf
())
{
return
this
.
fail
(
"
自建应用不能刷新"
);
}
QywxCorpInfoDTO
dto
=
qywxTokenManageService
.
getCorpInfo
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
());
if
(
dto
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
Long
verifiedEndTime
=
dto
.
getVerifiedEndTime
();
logger
.
info
(
"【企业同步】dto={}"
,
JSON
.
toJSONString
(
dto
));
WxEnterpriseDTO
wxDTO
=
EntityUtil
.
changeEntityByJSON
(
WxEnterpriseDTO
.
class
,
dto
);
if
(
verifiedEndTime
!=
null
)
{
wxDTO
.
setVerifiedEndTime
(
new
Date
(
verifiedEndTime
*
1000
));
}
wxDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
Integer
contactFlag
=
wxEnterpriseDTO
.
getContactFlag
();
if
(
contactFlag
==
0
)
{
wxDTO
.
setContactFlag
(
1
);
}
wxEnterpriseApiService
.
update
(
wxDTO
);
WxEnterpriseVO
vo
=
com
.
gic
.
commons
.
util
.
EntityUtil
.
changeEntityNew
(
WxEnterpriseVO
.
class
,
wxEnterpriseDTO
)
;
vo
.
setCorpid
(
getCorpid
(
wxEnterpriseDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
private
String
getCorpid
(
WxEnterpriseDTO
wxEnterpriseDTO
)
{
Integer
wxType
=
wxEnterpriseDTO
.
getWxSecurityType
()
;
String
wxEnterpriseId
=
wxEnterpriseDTO
.
getWxEnterpriseId
()
;
if
(
null
==
wxType
||
0
==
wxType
)
{
this
.
wxEnterpriseApiService
.
updateWxSecurityType
(
wxEnterpriseId
);
wxType
=
this
.
wxEnterpriseApiService
.
calcSecretType
(
wxEnterpriseId
)
;
}
String
desc
=
" (企微加密方式待确认,请联系运营人员) "
;
if
(
wxType
==
1
)
{
desc
=
"(全明文)"
;
}
if
(
wxType
==
2
)
{
desc
=
"(全密文)"
;
}
if
(
wxType
==
3
)
{
desc
=
"(第三方密文,代开明文)"
;
}
if
(
wxType
==
4
)
{
desc
=
"(第三方明文,代开密文)"
;
}
if
(
wxType
==
5
)
{
desc
=
" ( "
+
wxEnterpriseDTO
.
getWxaAppid
()
+
" / "
+
wxEnterpriseDTO
.
getUrlHost
()+
") "
;
}
int
newType
=
this
.
wxEnterpriseApiService
.
calcSecretType
(
wxEnterpriseId
)
;
String
diff
=
""
;
if
(
null
!=
wxType
&&
wxType
.
intValue
()
!=
newType
&&
wxType
!=
5
)
{
diff
=
"*"
;
}
return
Arrays
.
asList
(
wxEnterpriseDTO
.
getWxCorpid
(),
wxEnterpriseDTO
.
getOpenCorpid
()).
stream
().
filter
(
str
->
StringUtils
.
isNotBlank
(
str
)).
collect
(
Collectors
.
joining
(
" / "
))
+
desc
+
diff
;
}
//gic企业列表
@IgnoreLogin
@RequestMapping
(
"enterprise-search"
)
public
HaobanResponse
gicEnterpriseDetail
(
String
enterpriseId
)
{
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isEmpty
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
EnterpriseSearchVO
vo
=
new
EnterpriseSearchVO
();
EnterpriseDTO
enterprise
=
enterpriseService
.
getEnterpriseById
(
enterpriseId
);
if
(
enterprise
!=
null
)
{
vo
.
setEnterpriseId
(
enterpriseId
);
vo
.
setEnterpriseName
(
enterprise
.
getEnterpriseName
());
vo
.
setBrandName
(
enterprise
.
getBrandName
());
ClerkDTO
clerk
=
clerkService
.
getSuperAdminByEnterpriseId
(
enterpriseId
);
if
(
clerk
!=
null
)
{
vo
.
setClerkId
(
clerk
.
getClerkId
());
vo
.
setClerkCode
(
clerk
.
getClerkCode
());
vo
.
setClerkName
(
clerk
.
getClerkName
());
vo
.
setPhoneNumber
(
clerk
.
getPhoneNumber
());
vo
.
setNationCode
(
clerk
.
getNationcode
());
}
}
else
{
//enterpriseId 参数可以是企业id,也可以是企业名称
//按名称去查
EnterpriseAndUserDTO
dto
=
enterpriseService
.
getEnterpriseAndUserByName
(
enterpriseId
);
vo
=
EntityUtil
.
changeEntityByJSON
(
EnterpriseSearchVO
.
class
,
dto
);
if
(
vo
!=
null
)
{
EnterpriseDTO
enterprise1
=
enterpriseService
.
getEnterpriseById
(
vo
.
getEnterpriseId
());
if
(
enterprise1
!=
null
)
{
vo
.
setBrandName
(
enterprise1
.
getBrandName
());
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
//溢出门店列表
@RequestMapping
(
"store-full-list"
)
public
HaobanResponse
storeFullList
(
BasePageInfo
basePageInfo
,
String
keyWord
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
int
maxVersionCount
=
0
;
List
<
EnterpriseDetailDTO
>
enterpriseList
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtil
.
isEmpty
(
enterpriseList
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10010
);
}
List
<
String
>
enterpriseIds
=
enterpriseList
.
stream
().
map
(
s
->
s
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
//获取门店列表
Page
page1
=
new
Page
<>();
page1
.
setCurrentPage
(
1
);
page1
.
setPageSize
(
Integer
.
MAX_VALUE
);
StoreSearchDTO
storeSearchDTO
=
new
StoreSearchDTO
();
storeSearchDTO
.
setEnterpriseIdList
(
enterpriseIds
);
storeSearchDTO
.
setSearchName
(
keyWord
);
Page
storePage
=
storeService
.
storeListPage
(
page1
,
storeSearchDTO
);
if
(
storePage
==
null
||
storePage
.
getResult
()
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10009
);
}
List
<
StoreDTO
>
t_list
=
storePage
.
getResult
();
List
<
String
>
storeIds
=
t_list
.
stream
().
map
(
s
->
s
.
getStoreId
()).
collect
(
Collectors
.
toList
());
if
(
StringUtils
.
isEmpty
(
keyWord
))
{
storeIds
=
null
;
}
Page
<
DepartmentDTO
>
page
=
departmentApiService
.
pageFullStoreByWxEnterpriseId
(
wxEnterpriseId
,
keyWord
,
storeIds
,
maxVersionCount
,
basePageInfo
);
List
<
DepartmentDTO
>
list
=
page
.
getResult
();
List
<
StoreVo
>
resultList
=
EntityUtil
.
changeEntityListByJSON
(
StoreVo
.
class
,
list
);
List
<
String
>
t_storeIds
=
list
.
stream
().
map
(
s
->
s
.
getRelatedId
()).
collect
(
Collectors
.
toList
());
String
[]
storeIdArr
=
t_storeIds
.
toArray
(
new
String
[
t_storeIds
.
size
()]);
List
<
StoreDTO
>
storeList
=
storeService
.
getStores
(
storeIdArr
);
Map
<
String
,
StoreDTO
>
map
=
com
.
gic
.
commons
.
util
.
CollectionUtil
.
toMap
(
storeList
,
"storeId"
);
for
(
StoreVo
vo
:
resultList
)
{
if
(
map
.
get
(
vo
.
getRelatedId
())
!=
null
)
{
vo
.
setStoreCode
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreCode
());
vo
.
setStoreId
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreId
());
vo
.
setStoreName
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreName
());
}
}
Page
resultPage
=
new
Page
<>();
resultPage
.
setCurrentPage
(
page
.
getCurrentPage
());
resultPage
.
setPageSize
(
page
.
getPageSize
());
resultPage
.
setTotalCount
(
page
.
getTotalCount
());
resultPage
.
setResult
(
resultList
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
resultPage
);
}
//微信企业是否设置key
@RequestMapping
(
"is-wx-enterprise-secret-set"
)
public
HaobanResponse
isWxEnterpriseSecretSet
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
List
<
SecretSettingDTO
>
listSecret
=
wxEnterpriseApiService
.
listSecret
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
listSecret
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
Set
<
Integer
>
secretTypeList
=
listSecret
.
stream
().
filter
(
secretSettingDTO
->
secretSettingDTO
.
getCheckFlag
()
==
1
).
map
(
secretSettingDTO
->
secretSettingDTO
.
getSecretType
()).
collect
(
Collectors
.
toSet
());
if
(
CollectionUtils
.
isEmpty
(
secretTypeList
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
// 如果是第三方校验待开发
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
.
isSelf
())
{
if
((
secretTypeList
.
contains
(
SecretTypeEnum
.
SELF_APP
.
getVal
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
}
else
{
if
((
secretTypeList
.
contains
(
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
/**
* 微信企业绑定接口绑定通讯录key
*
* @param wxSecretKey
* @return
*/
@RequestMapping
(
"wx-enterprise-wx-secret-set"
)
public
HaobanResponse
wxEnterpriseWxSecretSet
(
String
wxSecretKey
)
{
if
(
StringUtils
.
isAnyBlank
(
wxSecretKey
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
wxSecretKey
=
wxSecretKey
.
trim
();
String
token
=
this
.
qywxCorpApiService
.
getToken
(
qwDTO
.
getDkCorpid
(),
wxSecretKey
);
logger
.
info
(
"查询token={}"
,
token
)
;
if
(
StringUtils
.
isEmpty
(
token
)
||
token
.
length
()
<
10
)
{
return
this
.
fail
(
"请确认secret是否正确"
)
;
}
SecretSettingDTO
secretSetting
=
wxEnterpriseApiService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
SELF_APP
.
getVal
(),
null
);
if
(
null
==
secretSetting
)
{
secretSetting
=
new
SecretSettingDTO
();
}
secretSetting
.
setSecretType
(
SecretTypeEnum
.
SELF_APP
.
getVal
());
secretSetting
.
setSecretName
(
SecretTypeEnum
.
SELF_APP
.
getName
());
secretSetting
.
setWxEnterpriseId
(
wxEnterpriseId
);
secretSetting
.
setEnterpriseId
(
"-1"
);
secretSetting
.
setSecretVal
(
wxSecretKey
);
secretSetting
.
setCheckFlag
(
1
);
wxEnterpriseApiService
.
saveSecretSetting
(
secretSetting
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
/**
* 微信企业会员小程序
*
* @param memberSecret
* @param enterpriseId
* @param secretName
* @return
*/
@RequestMapping
(
"wx-enterprise-member-secret-set"
)
public
HaobanResponse
wxEnterpriseMemberSecretSet
(
String
secretId
,
String
memberSecret
,
String
enterpriseId
,
String
secretName
)
{
if
(
StringUtils
.
isAnyBlank
(
memberSecret
,
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
memberSecret
=
memberSecret
.
trim
();
SecretSettingDTO
secretSetting
=
null
;
if
(
StringUtils
.
isNotBlank
(
secretId
))
{
secretSetting
=
wxEnterpriseApiService
.
getSecretSettingById
(
secretId
);
}
if
(
null
==
secretSetting
)
{
secretSetting
=
new
SecretSettingDTO
();
}
List
<
SecretSettingDTO
>
enList
=
this
.
secretSettingApiService
.
exsitGicEidMemberApp
(
wxEnterpriseId
)
;
if
(
CollectionUtils
.
isNotEmpty
(
enList
))
{
Map
<
String
,
SecretSettingDTO
>
map
=
enList
.
stream
().
collect
(
Collectors
.
toMap
(
SecretSettingDTO:
:
getEnterpriseId
,
dto
->
dto
,(
k1
,
k2
)->
k1
));
if
(
StringUtils
.
isEmpty
(
secretId
))
{
if
(
null
!=
map
.
get
(
enterpriseId
))
{
return
this
.
fail
(
"此商户小程序已存在"
)
;
}
}
else
{
if
(
null
!=
map
.
get
(
enterpriseId
)
&&
!
secretId
.
equals
(
map
.
get
(
enterpriseId
).
getSecretId
()))
{
return
this
.
fail
(
"此商户小程序已存在"
)
;
}
}
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
String
token
=
this
.
qywxCorpApiService
.
getToken
(
qwDTO
.
getMemberCorpid
(),
memberSecret
);
logger
.
info
(
"查询token"
,
token
)
;
if
(
StringUtils
.
isEmpty
(
token
)
||
token
.
length
()
<
10
)
{
return
this
.
fail
(
"请确认secret是否正确"
)
;
}
secretSetting
.
setSecretType
(
SecretTypeEnum
.
MEMBER_WAPP
.
getVal
());
secretSetting
.
setSecretName
(
secretName
);
secretSetting
.
setEnterpriseId
(
enterpriseId
);
secretSetting
.
setWxEnterpriseId
(
wxEnterpriseId
);
secretSetting
.
setSecretVal
(
memberSecret
);
secretSetting
.
setCheckFlag
(
1
);
wxEnterpriseApiService
.
saveSecretSetting
(
secretSetting
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
/**
* 企微相关密钥列表
*
* @return
*/
@RequestMapping
(
"secret-list"
)
public
HaobanResponse
secretList
()
{
String
wxEnterpriseId
=
""
;
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
List
<
SecretSettingDTO
>
listSecret
=
wxEnterpriseApiService
.
listSecret
(
wxEnterpriseId
);
List
<
SecretSettingVO
>
listRet
=
EntityUtil
.
changeEntityListByJSON
(
SecretSettingVO
.
class
,
listSecret
);
if
(
CollectionUtils
.
isNotEmpty
(
listRet
))
{
listRet
.
forEach
(
secretSettingVO
->
{
if
((!
StringUtils
.
isEmpty
(
secretSettingVO
.
getEnterpriseId
()))
&&
(!
secretSettingVO
.
getEnterpriseId
().
equals
(
"-1"
)))
{
EnterpriseDTO
enterpriseDTO
=
enterpriseService
.
getEnterpriseById
(
secretSettingVO
.
getEnterpriseId
());
secretSettingVO
.
setEnterpriseName
(
enterpriseDTO
==
null
?
""
:
enterpriseDTO
.
getBrandName
());
}
});
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
listRet
);
}
//微信企业会员小程序
@RequestMapping
(
"member-secret-del"
)
public
HaobanResponse
delMemberSecret
(
String
secretId
)
{
if
(
StringUtils
.
isAnyBlank
(
secretId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
boolean
b
=
wxEnterpriseApiService
.
delSecretSetting
(
secretId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
b
);
}
/**
* 刷新企业微信好友
*
* @return
*/
@RequestMapping
(
"/fresh-wx-friend"
)
public
HaobanResponse
freshWxFriend
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dayKey
=
"haoban_fresh-wx-friend-day"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM-dd"
);
String
monthKey
=
"haoban_fresh-wx-friend-month"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM"
);
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
Integer
dayCount
=
RedisUtil
.
getCache
(
dayKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
dayKey
).
toString
());
Integer
monthCount
=
RedisUtil
.
getCache
(
monthKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
monthKey
).
toString
());
if
(
dayCount
>=
1
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100019
);
}
if
(
monthCount
>=
3
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100020
);
}
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTask
(
wxEnterpriseId
,
"刷新企微好友"
,
login
.
getClerkId
(),
"刷新企微好友"
);
if
(
StringUtils
.
isEmpty
(
taskId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100021
);
}
RedisUtil
.
setCache
(
dayKey
,
dayCount
+
1
);
RedisUtil
.
setCache
(
monthKey
,
monthCount
+
1
);
RedisUtil
.
setCache
(
dateKey
,
DateUtil
.
dateToStr
(
new
Date
(),
DateUtil
.
FORMAT_DATETIME_19
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 获取企业微信好友刷新时间
*
* @return
*/
@RequestMapping
(
"/get-fresh-detail"
)
public
HaobanResponse
getFreshDetail
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
RedisUtil
.
getCache
(
dateKey
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
RedisUtil
.
getCache
(
dateKey
));
}
/**
* 微信企业绑定详情
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"wx-enterprise-bind-detail"
)
public
HaobanResponse
wxEnterpriseBindDetail
(
String
enterpriseId
)
{
if
(
StringUtils
.
isAnyBlank
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseRelationDetailDTO
bindInfo
=
wxEnterpriseRelatedApiService
.
getEnterpriseBindInfo
(
wxEnterpriseId
,
enterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
bindInfo
);
}
/**
* 绑定门店列表
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"bind-store-list"
)
public
HaobanResponse
bindStoreList
(
String
enterpriseId
,
String
search
,
BasePageInfo
basePageInfo
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
Page
<
BindStoreInfoDTO
>
retPage
=
wxEnterpriseRelatedApiService
.
pageBindStoreByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
,
search
,
basePageInfo
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
retPage
);
}
/**
* 绑定门店列表
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"flush-bind-store-list"
)
public
HaobanResponse
flushBindStoreList
(
String
enterpriseId
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
ServiceResponse
response
=
wxEnterpriseRelatedApiService
.
flushBindStoreByEnterpriseId
(
enterpriseId
,
wxEnterpriseId
,
login
.
getClerkId
(),
ChannelCodeEnum
.
SYNC_UNBIND
.
getCode
());
logger
.
info
(
"返回信息:{}"
,
JSONObject
.
toJSONString
(
response
));
if
(
response
.
getCode
()
!=
1
)
{
HaoBanErrCode
.
ERR_DEFINE
.
setMsg
(
response
.
getMessage
());
return
resultResponse
(
HaoBanErrCode
.
ERR_DEFINE
);
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 绑定小程序配置列表
*
* @return
*/
@RequestMapping
(
"list-miniprogram-setting"
)
public
HaobanResponse
miniprogramList
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
List
<
MiniprogramSettingDTO
>
settingDTOS
=
wxEnterpriseApiService
.
listMiniprogramSetting
(
wxEnterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
settingDTOS
);
}
/**
* 保存小程序配置列表
*
* @return
*/
@RequestMapping
(
"save-miniprogram-setting"
)
public
HaobanResponse
saveMiniprogram
(
MiniprogramSettingQo
settingDTO
)
{
if
(
StringUtils
.
isAnyBlank
(
settingDTO
.
getAppId
(),
settingDTO
.
getImageUrl
(),
settingDTO
.
getMiniprogramName
(),
settingDTO
.
getTitle
()))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
settingDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
settingDTO
.
setEnterpriseId
(
login
.
getEnterpriseId
());
MiniprogramSettingDTO
miniprogramSettingDTO
=
wxEnterpriseApiService
.
getMiniprogramSettingByAppId
(
wxEnterpriseId
,
settingDTO
.
getAppId
());
if
(
null
!=
miniprogramSettingDTO
&&
(!
miniprogramSettingDTO
.
getMiniprogramSettingId
().
equals
(
settingDTO
.
getMiniprogramSettingId
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100031
);
}
wxEnterpriseApiService
.
saveMiniprogramSetting
(
EntityUtil
.
changeEntityByOrika
(
MiniprogramSettingDTO
.
class
,
settingDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 获取小程序配置
*
* @return
*/
@RequestMapping
(
"get-miniprogram-setting"
)
public
HaobanResponse
getMiniprogram
(
String
enterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
MiniprogramSettingDTO
settingDTO
=
wxEnterpriseApiService
.
getMiniprogramSettingByEid
(
wxEnterpriseId
,
enterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
settingDTO
);
}
/**
* 删除小程序配置
*
* @return
*/
@RequestMapping
(
"del-miniprogram-setting"
)
public
HaobanResponse
delMiniprogram
(
String
id
)
{
if
(
StringUtils
.
isEmpty
(
id
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
wxEnterpriseApiService
.
delMiniprogramSettingByEid
(
id
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 分析素材
*
* @return
*/
@RequestMapping
(
"/agent-wx-enterprise-list"
)
public
HaobanResponse
materialShare
(
String
materialId
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
List
<
EnterpriseDetailDTO
>
detailDTOS
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
List
<
String
>
enterpriseIds
=
detailDTOS
.
stream
().
filter
(
dto
->
dto
.
getWxEnterpriseType
()
==
0
).
map
(
dto
->
dto
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
List
<
EnterpriseDetailDTO
>
retList
=
wxEnterpriseRelatedApiService
.
listEnterpriseByEnterpriseIds
(
enterpriseIds
);
Map
<
String
,
EnterpriseDetailDTO
>
detailDTOMap
=
retList
.
stream
().
filter
(
dto
->
dto
.
getWxEnterpriseType
()
==
1
).
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getWxEnterpriseId
(),
dto
->
dto
,
(
ne
,
ol
)
->
ol
));
Collection
<
EnterpriseDetailDTO
>
values
=
detailDTOMap
.
values
();
List
<
AgentEnterpriseDTO
>
enterpriseList
=
EntityUtil
.
changeEntityListByOrika
(
AgentEnterpriseDTO
.
class
,
values
);
if
(
CollectionUtils
.
isNotEmpty
(
values
))
{
List
<
MaterialDTO
>
materialDTOS
=
materialApiService
.
listByFromMaterialId
(
materialId
);
List
<
String
>
wxEids
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
materialDTOS
))
{
wxEids
=
materialDTOS
.
stream
().
map
(
dto
->
dto
.
getWxEnterpriseId
()).
collect
(
Collectors
.
toList
());
}
List
<
String
>
finalWxEids
=
wxEids
;
for
(
AgentEnterpriseDTO
dto
:
enterpriseList
)
{
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
dto
.
getWxEnterpriseId
());
if
(
null
==
wxEnterpriseDTO
)
{
continue
;
}
logger
.
info
(
"wxEnterpriseDTO={},dto={}"
,
JSON
.
toJSONString
(
wxEnterpriseDTO
),
JSON
.
toJSONString
(
dto
));
dto
.
setEnterpriseName
(
wxEnterpriseDTO
.
getCorpName
());
if
(
finalWxEids
.
contains
(
dto
.
getWxEnterpriseId
()))
{
dto
.
setBindFlag
(
1
);
}
else
{
dto
.
setBindFlag
(
0
);
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
enterpriseList
);
}
/**
* 删除欢迎语
*
* @return
*/
@RequestMapping
(
"del-welcome"
)
public
HaobanResponse
delWelcome
()
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
delWelcome
(
wxEnterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 欢迎语开启关闭
*
* @return
*/
@RequestMapping
(
"set-welcome"
)
public
HaobanResponse
setWelcome
(
int
openFlag
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
setWelcome
(
wxEnterpriseId
,
openFlag
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 授权绑定-设置导购编辑权限
*
* @return
*/
@IgnoreLogin
@RequestMapping
(
"set-clerk-edit"
)
public
HaobanResponse
setClerkEdit
(
String
wxEnterprieseRelatedId
,
int
clerkEditFlag
)
{
if
(
StringUtils
.
isBlank
(
wxEnterprieseRelatedId
))
{
logger
.
info
(
"缺少参数"
);
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
boolean
b
=
wxEnterpriseRelatedApiService
.
setClerkEditFlag
(
wxEnterprieseRelatedId
,
clerkEditFlag
);
if
(
b
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
else
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100032
);
}
}
/**
* 是否同意授权
*
* @param openFlag
* @return
*/
@RequestMapping
(
"agree_external_userid_flag"
)
public
HaobanResponse
agreeExternalUseridFlag
(
Integer
openFlag
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
agreeExternalUseridFlag
(
wxEnterpriseId
,
openFlag
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
@RequestMapping
(
path
=
"/current/enterprise/info"
)
public
RestResponse
<?>
queryCurrentInfo
(){
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
EnterpriseDetailDTO
>
serviceResponse
=
wxEnterpriseRelatedApiService
.
queryEnterpriseDetail
(
loginUser
.
getWxEnterpriseId
(),
loginUser
.
getEnterpriseId
());
if
(
serviceResponse
.
isSuccess
()){
return
RestResponse
.
successResult
(
serviceResponse
.
getResult
());
}
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
/**
* 最新一条将要被拦截记录
* @return
*/
@RequestMapping
(
value
=
"qywx-fee-wxEnterprise-detail"
,
method
=
RequestMethod
.
GET
)
public
RestResponse
qywxFeeWxEnterpriseListDetail
()
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
HaobanQywxFeeDTO
haobanQywxFeeDTO
=
haobanQywxFeeApiService
.
queryByWxEnterpriseId
(
wxEnterpriseId
);
if
(
haobanQywxFeeDTO
==
null
)
{
return
RestResponse
.
successResult
();
}
List
<
EnterpriseDetailDTO
>
enterpriseDetailDTOS
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isNotEmpty
(
enterpriseDetailDTOS
))
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
for
(
EnterpriseDetailDTO
enterpriseDetailDTO
:
enterpriseDetailDTOS
)
{
stringBuffer
.
append
(
enterpriseDetailDTO
.
getEnterpriseName
()).
append
(
" "
);
}
haobanQywxFeeDTO
.
setEnterpriseNames
(
stringBuffer
.
toString
());
}
return
RestResponse
.
successResult
(
haobanQywxFeeDTO
);
}
}
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.dto.*
;
import
com.gic.enterprise.api.service.AuthorizeService
;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO
;
import
com.gic.haoban.common.anno.IgnoreLogin
;
import
com.gic.haoban.common.utils.AuthWebRequestUtil
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.common.utils.HaobanResponse
;
import
com.gic.haoban.manage.api.dto.DepartmentDTO
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.fee.HaobanQywxFeeDTO
;
import
com.gic.haoban.manage.api.enums.ChannelCodeEnum
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.*
;
import
com.gic.haoban.manage.api.service.fee.HaobanQywxFeeApiService
;
import
com.gic.haoban.manage.api.service.out.SecretSettingApiService
;
import
com.gic.haoban.manage.web.config.Config
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.qo.MiniprogramSettingQo
;
import
com.gic.haoban.manage.web.vo.StoreVo
;
import
com.gic.haoban.manage.web.vo.*
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxCorpApiService
;
import
com.gic.wechat.token.api.dto.QywxCorpInfoDTO
;
import
com.gic.wechat.token.api.service.QywxTokenManageService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@RestController
public
class
WxEnterpriseController
extends
WebBaseController
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
WxEnterpriseController
.
class
);
@Autowired
private
WxEnterpriseRelatedApiService
wxEnterpriseRelatedApiService
;
@Autowired
private
EnterpriseService
enterpriseService
;
@Autowired
private
WxEnterpriseApiService
wxEnterpriseApiService
;
@Autowired
private
DepartmentApiService
departmentApiService
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
QywxTokenManageService
qywxTokenManageService
;
@Autowired
private
Config
config
;
@Autowired
private
QywxCorpApiService
qywxCorpApiService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
@Autowired
private
MaterialApiService
materialApiService
;
@Autowired
private
AuthorizeService
authorizeService
;
@Autowired
private
HaobanUserApiService
haobanUserApiService
;
@Autowired
private
HaobanQywxFeeApiService
haobanQywxFeeApiService
;
@Autowired
private
SecretSettingApiService
secretSettingApiService
;
@Autowired
private
ClerkService
clerkService
;
//授权企业列表
@RequestMapping
(
"wxa-enterprise-list"
)
public
HaobanResponse
wxEnterpriseList
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
phoneNumber
=
login
.
getPhoneNumber
()
;
List
<
EnterpriseDetailDTO
>
list
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
,
phoneNumber
,
true
);
List
<
EnterpriseDetailVO
>
detailVOS
=
EntityUtil
.
changeEntityListByOrika
(
EnterpriseDetailVO
.
class
,
list
);
if
(
CollectionUtil
.
isNotEmpty
(
detailVOS
))
{
List
<
String
>
enterpriseIds
=
detailVOS
.
stream
().
map
(
s
->
s
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
List
<
EnterpriseDTO
>
enterpriseList
=
enterpriseService
.
listEnterpriseByIds
(
enterpriseIds
);
Map
<
String
,
EnterpriseDTO
>
map
=
com
.
gic
.
commons
.
util
.
CollectionUtil
.
toMap
(
enterpriseList
,
"enterpriseId"
);
for
(
EnterpriseDetailVO
dto
:
detailVOS
)
{
List
<
EnterpriseWxaRelationDTO
>
relationDTOS
=
authorizeService
.
queryList
(
dto
.
getEnterpriseId
());
EnterpriseDTO
enterpriseDTO
=
map
.
get
(
dto
.
getEnterpriseId
());
EnterpriseWxaRelationDTO
wxaRelationDTO
=
relationDTOS
.
stream
().
filter
(
mid
->
mid
.
getWxaAppkey
().
equals
(
enterpriseDTO
.
getMallMiniprogramAppid
())).
findFirst
().
orElse
(
null
);
if
(
wxaRelationDTO
!=
null
)
{
dto
.
setEnterpriseName
(
enterpriseDTO
.
getEnterpriseName
());
dto
.
setImageUrl
(
wxaRelationDTO
.
getAuthImg
());
dto
.
setAppId
(
wxaRelationDTO
.
getWxaAppkey
());
dto
.
setMiniprogramName
(
wxaRelationDTO
.
getAuthName
());
dto
.
setTitle
(
wxaRelationDTO
.
getAuthName
());
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
detailVOS
);
}
//授权企业列表 filteRight 是否过滤无登录权限的列表
@RequestMapping
(
"wx-enterprise-list"
)
public
HaobanResponse
wxaEnterpriseList
(
@RequestParam
(
defaultValue
=
"0"
)
int
filteRight
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
phoneNumber
=
login
.
getPhoneNumber
()
;
List
<
EnterpriseDetailDTO
>
list
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
,
phoneNumber
,
filteRight
==
1
);
String
userId
=
login
.
getHanbaoUserId
()
;
HaobanUserDTO
dto
=
this
.
haobanUserApiService
.
selectById
(
userId
)
;
if
(
null
!=
dto
)
{
String
eid
=
dto
.
getDefaultGicEid
()
;
for
(
EnterpriseDetailDTO
item
:
list
)
{
if
(
null
!=
eid
&&
eid
.
equals
(
item
.
getEnterpriseId
()))
{
item
.
setDefaultFlag
(
1
);
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
list
);
}
//企业信息
@IgnoreLogin
@RequestMapping
(
"wxEnterprise-detail"
)
public
HaobanResponse
enterpriseDetail
(
String
wxEnterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterpriseDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100018
);
}
wxEnterpriseDTO
.
setSmallVersion
(
"免费版"
);
wxEnterpriseDTO
.
setStoreTotal
(
departmentApiService
.
totalStoreCountByEnterpriseId
(
wxEnterpriseId
));
WxEnterpriseVO
vo
=
com
.
gic
.
commons
.
util
.
EntityUtil
.
changeEntityNew
(
WxEnterpriseVO
.
class
,
wxEnterpriseDTO
)
;
vo
.
setCorpid
(
getCorpid
(
wxEnterpriseDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
//企业信息
@IgnoreLogin
@RequestMapping
(
"wxEnterprise-refresh"
)
public
HaobanResponse
enterpriseRefresh
(
String
wxEnterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterpriseDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
.
isSelf
())
{
return
this
.
fail
(
"
已刷新"
);
}
QywxCorpInfoDTO
dto
=
qywxTokenManageService
.
getCorpInfo
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
());
if
(
dto
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
Long
verifiedEndTime
=
dto
.
getVerifiedEndTime
();
logger
.
info
(
"【企业同步】dto={}"
,
JSON
.
toJSONString
(
dto
));
WxEnterpriseDTO
wxDTO
=
EntityUtil
.
changeEntityByJSON
(
WxEnterpriseDTO
.
class
,
dto
);
if
(
verifiedEndTime
!=
null
)
{
wxDTO
.
setVerifiedEndTime
(
new
Date
(
verifiedEndTime
*
1000
));
}
wxDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
Integer
contactFlag
=
wxEnterpriseDTO
.
getContactFlag
();
if
(
contactFlag
==
0
)
{
wxDTO
.
setContactFlag
(
1
);
}
wxEnterpriseApiService
.
update
(
wxDTO
);
WxEnterpriseVO
vo
=
com
.
gic
.
commons
.
util
.
EntityUtil
.
changeEntityNew
(
WxEnterpriseVO
.
class
,
wxEnterpriseDTO
)
;
vo
.
setCorpid
(
getCorpid
(
wxEnterpriseDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
private
String
getCorpid
(
WxEnterpriseDTO
wxEnterpriseDTO
)
{
Integer
wxType
=
wxEnterpriseDTO
.
getWxSecurityType
()
;
String
wxEnterpriseId
=
wxEnterpriseDTO
.
getWxEnterpriseId
()
;
if
(
null
==
wxType
||
0
==
wxType
)
{
this
.
wxEnterpriseApiService
.
updateWxSecurityType
(
wxEnterpriseId
);
wxType
=
this
.
wxEnterpriseApiService
.
calcSecretType
(
wxEnterpriseId
)
;
}
String
desc
=
" (企微加密方式待确认,请联系运营人员) "
;
if
(
wxType
==
1
)
{
desc
=
"(全明文)"
;
}
if
(
wxType
==
2
)
{
desc
=
"(全密文)"
;
}
if
(
wxType
==
3
)
{
desc
=
"(第三方密文,代开明文)"
;
}
if
(
wxType
==
4
)
{
desc
=
"(第三方明文,代开密文)"
;
}
if
(
wxType
==
5
)
{
desc
=
" ( "
+
wxEnterpriseDTO
.
getWxaAppid
()
+
" / "
+
wxEnterpriseDTO
.
getUrlHost
()+
") "
;
}
int
newType
=
this
.
wxEnterpriseApiService
.
calcSecretType
(
wxEnterpriseId
)
;
String
diff
=
""
;
if
(
null
!=
wxType
&&
wxType
.
intValue
()
!=
newType
&&
wxType
!=
5
)
{
diff
=
"*"
;
}
return
Arrays
.
asList
(
wxEnterpriseDTO
.
getWxCorpid
(),
wxEnterpriseDTO
.
getOpenCorpid
()).
stream
().
filter
(
str
->
StringUtils
.
isNotBlank
(
str
)).
collect
(
Collectors
.
joining
(
" / "
))
+
desc
+
diff
;
}
//gic企业列表
@IgnoreLogin
@RequestMapping
(
"enterprise-search"
)
public
HaobanResponse
gicEnterpriseDetail
(
String
enterpriseId
)
{
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isEmpty
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
EnterpriseSearchVO
vo
=
new
EnterpriseSearchVO
();
EnterpriseDTO
enterprise
=
enterpriseService
.
getEnterpriseById
(
enterpriseId
);
if
(
enterprise
!=
null
)
{
vo
.
setEnterpriseId
(
enterpriseId
);
vo
.
setEnterpriseName
(
enterprise
.
getEnterpriseName
());
vo
.
setBrandName
(
enterprise
.
getBrandName
());
ClerkDTO
clerk
=
clerkService
.
getSuperAdminByEnterpriseId
(
enterpriseId
);
if
(
clerk
!=
null
)
{
vo
.
setClerkId
(
clerk
.
getClerkId
());
vo
.
setClerkCode
(
clerk
.
getClerkCode
());
vo
.
setClerkName
(
clerk
.
getClerkName
());
vo
.
setPhoneNumber
(
clerk
.
getPhoneNumber
());
vo
.
setNationCode
(
clerk
.
getNationcode
());
}
}
else
{
//enterpriseId 参数可以是企业id,也可以是企业名称
//按名称去查
EnterpriseAndUserDTO
dto
=
enterpriseService
.
getEnterpriseAndUserByName
(
enterpriseId
);
vo
=
EntityUtil
.
changeEntityByJSON
(
EnterpriseSearchVO
.
class
,
dto
);
if
(
vo
!=
null
)
{
EnterpriseDTO
enterprise1
=
enterpriseService
.
getEnterpriseById
(
vo
.
getEnterpriseId
());
if
(
enterprise1
!=
null
)
{
vo
.
setBrandName
(
enterprise1
.
getBrandName
());
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
vo
);
}
//溢出门店列表
@RequestMapping
(
"store-full-list"
)
public
HaobanResponse
storeFullList
(
BasePageInfo
basePageInfo
,
String
keyWord
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
int
maxVersionCount
=
0
;
List
<
EnterpriseDetailDTO
>
enterpriseList
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtil
.
isEmpty
(
enterpriseList
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10010
);
}
List
<
String
>
enterpriseIds
=
enterpriseList
.
stream
().
map
(
s
->
s
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
//获取门店列表
Page
page1
=
new
Page
<>();
page1
.
setCurrentPage
(
1
);
page1
.
setPageSize
(
Integer
.
MAX_VALUE
);
StoreSearchDTO
storeSearchDTO
=
new
StoreSearchDTO
();
storeSearchDTO
.
setEnterpriseIdList
(
enterpriseIds
);
storeSearchDTO
.
setSearchName
(
keyWord
);
Page
storePage
=
storeService
.
storeListPage
(
page1
,
storeSearchDTO
);
if
(
storePage
==
null
||
storePage
.
getResult
()
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10009
);
}
List
<
StoreDTO
>
t_list
=
storePage
.
getResult
();
List
<
String
>
storeIds
=
t_list
.
stream
().
map
(
s
->
s
.
getStoreId
()).
collect
(
Collectors
.
toList
());
if
(
StringUtils
.
isEmpty
(
keyWord
))
{
storeIds
=
null
;
}
Page
<
DepartmentDTO
>
page
=
departmentApiService
.
pageFullStoreByWxEnterpriseId
(
wxEnterpriseId
,
keyWord
,
storeIds
,
maxVersionCount
,
basePageInfo
);
List
<
DepartmentDTO
>
list
=
page
.
getResult
();
List
<
StoreVo
>
resultList
=
EntityUtil
.
changeEntityListByJSON
(
StoreVo
.
class
,
list
);
List
<
String
>
t_storeIds
=
list
.
stream
().
map
(
s
->
s
.
getRelatedId
()).
collect
(
Collectors
.
toList
());
String
[]
storeIdArr
=
t_storeIds
.
toArray
(
new
String
[
t_storeIds
.
size
()]);
List
<
StoreDTO
>
storeList
=
storeService
.
getStores
(
storeIdArr
);
Map
<
String
,
StoreDTO
>
map
=
com
.
gic
.
commons
.
util
.
CollectionUtil
.
toMap
(
storeList
,
"storeId"
);
for
(
StoreVo
vo
:
resultList
)
{
if
(
map
.
get
(
vo
.
getRelatedId
())
!=
null
)
{
vo
.
setStoreCode
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreCode
());
vo
.
setStoreId
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreId
());
vo
.
setStoreName
(
map
.
get
(
vo
.
getRelatedId
()).
getStoreName
());
}
}
Page
resultPage
=
new
Page
<>();
resultPage
.
setCurrentPage
(
page
.
getCurrentPage
());
resultPage
.
setPageSize
(
page
.
getPageSize
());
resultPage
.
setTotalCount
(
page
.
getTotalCount
());
resultPage
.
setResult
(
resultList
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
resultPage
);
}
//微信企业是否设置key
@RequestMapping
(
"is-wx-enterprise-secret-set"
)
public
HaobanResponse
isWxEnterpriseSecretSet
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
List
<
SecretSettingDTO
>
listSecret
=
wxEnterpriseApiService
.
listSecret
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
listSecret
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
Set
<
Integer
>
secretTypeList
=
listSecret
.
stream
().
filter
(
secretSettingDTO
->
secretSettingDTO
.
getCheckFlag
()
==
1
).
map
(
secretSettingDTO
->
secretSettingDTO
.
getSecretType
()).
collect
(
Collectors
.
toSet
());
if
(
CollectionUtils
.
isEmpty
(
secretTypeList
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
// 如果是第三方校验待开发
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
.
isSelf
())
{
if
((
secretTypeList
.
contains
(
SecretTypeEnum
.
SELF_APP
.
getVal
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
}
else
{
if
((
secretTypeList
.
contains
(
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
/**
* 微信企业绑定接口绑定通讯录key
*
* @param wxSecretKey
* @return
*/
@RequestMapping
(
"wx-enterprise-wx-secret-set"
)
public
HaobanResponse
wxEnterpriseWxSecretSet
(
String
wxSecretKey
)
{
if
(
StringUtils
.
isAnyBlank
(
wxSecretKey
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
qwDTO
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
wxSecretKey
=
wxSecretKey
.
trim
();
String
token
=
this
.
qywxCorpApiService
.
getToken
(
qwDTO
.
getDkCorpid
(),
wxSecretKey
);
logger
.
info
(
"查询token={}"
,
token
)
;
if
(
StringUtils
.
isEmpty
(
token
)
||
token
.
length
()
<
10
)
{
return
this
.
fail
(
"请确认secret是否正确"
)
;
}
SecretSettingDTO
secretSetting
=
wxEnterpriseApiService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
SELF_APP
.
getVal
(),
null
);
if
(
null
==
secretSetting
)
{
secretSetting
=
new
SecretSettingDTO
();
}
secretSetting
.
setSecretType
(
SecretTypeEnum
.
SELF_APP
.
getVal
());
secretSetting
.
setSecretName
(
SecretTypeEnum
.
SELF_APP
.
getName
());
secretSetting
.
setWxEnterpriseId
(
wxEnterpriseId
);
secretSetting
.
setEnterpriseId
(
"-1"
);
secretSetting
.
setSecretVal
(
wxSecretKey
);
secretSetting
.
setCheckFlag
(
1
);
wxEnterpriseApiService
.
saveSecretSetting
(
secretSetting
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
/**
* 微信企业会员小程序
*
* @param memberSecret
* @param enterpriseId
* @param secretName
* @return
*/
@RequestMapping
(
"wx-enterprise-member-secret-set"
)
public
HaobanResponse
wxEnterpriseMemberSecretSet
(
String
secretId
,
String
memberSecret
,
String
enterpriseId
,
String
secretName
)
{
if
(
StringUtils
.
isAnyBlank
(
memberSecret
,
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
memberSecret
=
memberSecret
.
trim
();
SecretSettingDTO
secretSetting
=
null
;
if
(
StringUtils
.
isNotBlank
(
secretId
))
{
secretSetting
=
wxEnterpriseApiService
.
getSecretSettingById
(
secretId
);
}
if
(
null
==
secretSetting
)
{
secretSetting
=
new
SecretSettingDTO
();
}
List
<
SecretSettingDTO
>
enList
=
this
.
secretSettingApiService
.
exsitGicEidMemberApp
(
wxEnterpriseId
)
;
if
(
CollectionUtils
.
isNotEmpty
(
enList
))
{
Map
<
String
,
SecretSettingDTO
>
map
=
enList
.
stream
().
collect
(
Collectors
.
toMap
(
SecretSettingDTO:
:
getEnterpriseId
,
dto
->
dto
,(
k1
,
k2
)->
k1
));
if
(
StringUtils
.
isEmpty
(
secretId
))
{
if
(
null
!=
map
.
get
(
enterpriseId
))
{
return
this
.
fail
(
"此商户小程序已存在"
)
;
}
}
else
{
if
(
null
!=
map
.
get
(
enterpriseId
)
&&
!
secretId
.
equals
(
map
.
get
(
enterpriseId
).
getSecretId
()))
{
return
this
.
fail
(
"此商户小程序已存在"
)
;
}
}
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseApiService
.
getQwInfo
(
wxEnterpriseId
)
;
String
token
=
this
.
qywxCorpApiService
.
getToken
(
qwDTO
.
getMemberCorpid
(),
memberSecret
);
logger
.
info
(
"查询token"
,
token
)
;
if
(
StringUtils
.
isEmpty
(
token
)
||
token
.
length
()
<
10
)
{
return
this
.
fail
(
"请确认secret是否正确"
)
;
}
secretSetting
.
setSecretType
(
SecretTypeEnum
.
MEMBER_WAPP
.
getVal
());
secretSetting
.
setSecretName
(
secretName
);
secretSetting
.
setEnterpriseId
(
enterpriseId
);
secretSetting
.
setWxEnterpriseId
(
wxEnterpriseId
);
secretSetting
.
setSecretVal
(
memberSecret
);
secretSetting
.
setCheckFlag
(
1
);
wxEnterpriseApiService
.
saveSecretSetting
(
secretSetting
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
/**
* 企微相关密钥列表
*
* @return
*/
@RequestMapping
(
"secret-list"
)
public
HaobanResponse
secretList
()
{
String
wxEnterpriseId
=
""
;
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseApiService
.
getOne
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10012
);
}
List
<
SecretSettingDTO
>
listSecret
=
wxEnterpriseApiService
.
listSecret
(
wxEnterpriseId
);
List
<
SecretSettingVO
>
listRet
=
EntityUtil
.
changeEntityListByJSON
(
SecretSettingVO
.
class
,
listSecret
);
if
(
CollectionUtils
.
isNotEmpty
(
listRet
))
{
listRet
.
forEach
(
secretSettingVO
->
{
if
((!
StringUtils
.
isEmpty
(
secretSettingVO
.
getEnterpriseId
()))
&&
(!
secretSettingVO
.
getEnterpriseId
().
equals
(
"-1"
)))
{
EnterpriseDTO
enterpriseDTO
=
enterpriseService
.
getEnterpriseById
(
secretSettingVO
.
getEnterpriseId
());
secretSettingVO
.
setEnterpriseName
(
enterpriseDTO
==
null
?
""
:
enterpriseDTO
.
getBrandName
());
}
});
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
listRet
);
}
//微信企业会员小程序
@RequestMapping
(
"member-secret-del"
)
public
HaobanResponse
delMemberSecret
(
String
secretId
)
{
if
(
StringUtils
.
isAnyBlank
(
secretId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
boolean
b
=
wxEnterpriseApiService
.
delSecretSetting
(
secretId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
b
);
}
/**
* 刷新企业微信好友
*
* @return
*/
@RequestMapping
(
"/fresh-wx-friend"
)
public
HaobanResponse
freshWxFriend
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dayKey
=
"haoban_fresh-wx-friend-day"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM-dd"
);
String
monthKey
=
"haoban_fresh-wx-friend-month"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM"
);
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
Integer
dayCount
=
RedisUtil
.
getCache
(
dayKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
dayKey
).
toString
());
Integer
monthCount
=
RedisUtil
.
getCache
(
monthKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
monthKey
).
toString
());
if
(
dayCount
>=
1
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100019
);
}
if
(
monthCount
>=
3
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100020
);
}
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTask
(
wxEnterpriseId
,
"刷新企微好友"
,
login
.
getClerkId
(),
"刷新企微好友"
);
if
(
StringUtils
.
isEmpty
(
taskId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100021
);
}
RedisUtil
.
setCache
(
dayKey
,
dayCount
+
1
);
RedisUtil
.
setCache
(
monthKey
,
monthCount
+
1
);
RedisUtil
.
setCache
(
dateKey
,
DateUtil
.
dateToStr
(
new
Date
(),
DateUtil
.
FORMAT_DATETIME_19
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 获取企业微信好友刷新时间
*
* @return
*/
@RequestMapping
(
"/get-fresh-detail"
)
public
HaobanResponse
getFreshDetail
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
RedisUtil
.
getCache
(
dateKey
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
RedisUtil
.
getCache
(
dateKey
));
}
/**
* 微信企业绑定详情
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"wx-enterprise-bind-detail"
)
public
HaobanResponse
wxEnterpriseBindDetail
(
String
enterpriseId
)
{
if
(
StringUtils
.
isAnyBlank
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
WxEnterpriseRelationDetailDTO
bindInfo
=
wxEnterpriseRelatedApiService
.
getEnterpriseBindInfo
(
wxEnterpriseId
,
enterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
bindInfo
);
}
/**
* 绑定门店列表
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"bind-store-list"
)
public
HaobanResponse
bindStoreList
(
String
enterpriseId
,
String
search
,
BasePageInfo
basePageInfo
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
Page
<
BindStoreInfoDTO
>
retPage
=
wxEnterpriseRelatedApiService
.
pageBindStoreByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
,
search
,
basePageInfo
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
retPage
);
}
/**
* 绑定门店列表
*
* @param enterpriseId
* @return
*/
@RequestMapping
(
"flush-bind-store-list"
)
public
HaobanResponse
flushBindStoreList
(
String
enterpriseId
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
ServiceResponse
response
=
wxEnterpriseRelatedApiService
.
flushBindStoreByEnterpriseId
(
enterpriseId
,
wxEnterpriseId
,
login
.
getClerkId
(),
ChannelCodeEnum
.
SYNC_UNBIND
.
getCode
());
logger
.
info
(
"返回信息:{}"
,
JSONObject
.
toJSONString
(
response
));
if
(
response
.
getCode
()
!=
1
)
{
HaoBanErrCode
.
ERR_DEFINE
.
setMsg
(
response
.
getMessage
());
return
resultResponse
(
HaoBanErrCode
.
ERR_DEFINE
);
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 绑定小程序配置列表
*
* @return
*/
@RequestMapping
(
"list-miniprogram-setting"
)
public
HaobanResponse
miniprogramList
()
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
List
<
MiniprogramSettingDTO
>
settingDTOS
=
wxEnterpriseApiService
.
listMiniprogramSetting
(
wxEnterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
settingDTOS
);
}
/**
* 保存小程序配置列表
*
* @return
*/
@RequestMapping
(
"save-miniprogram-setting"
)
public
HaobanResponse
saveMiniprogram
(
MiniprogramSettingQo
settingDTO
)
{
if
(
StringUtils
.
isAnyBlank
(
settingDTO
.
getAppId
(),
settingDTO
.
getImageUrl
(),
settingDTO
.
getMiniprogramName
(),
settingDTO
.
getTitle
()))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
settingDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
settingDTO
.
setEnterpriseId
(
login
.
getEnterpriseId
());
MiniprogramSettingDTO
miniprogramSettingDTO
=
wxEnterpriseApiService
.
getMiniprogramSettingByAppId
(
wxEnterpriseId
,
settingDTO
.
getAppId
());
if
(
null
!=
miniprogramSettingDTO
&&
(!
miniprogramSettingDTO
.
getMiniprogramSettingId
().
equals
(
settingDTO
.
getMiniprogramSettingId
())))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100031
);
}
wxEnterpriseApiService
.
saveMiniprogramSetting
(
EntityUtil
.
changeEntityByOrika
(
MiniprogramSettingDTO
.
class
,
settingDTO
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 获取小程序配置
*
* @return
*/
@RequestMapping
(
"get-miniprogram-setting"
)
public
HaobanResponse
getMiniprogram
(
String
enterpriseId
)
{
if
(
StringUtils
.
isEmpty
(
enterpriseId
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
MiniprogramSettingDTO
settingDTO
=
wxEnterpriseApiService
.
getMiniprogramSettingByEid
(
wxEnterpriseId
,
enterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
settingDTO
);
}
/**
* 删除小程序配置
*
* @return
*/
@RequestMapping
(
"del-miniprogram-setting"
)
public
HaobanResponse
delMiniprogram
(
String
id
)
{
if
(
StringUtils
.
isEmpty
(
id
))
{
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
wxEnterpriseApiService
.
delMiniprogramSettingByEid
(
id
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 分析素材
*
* @return
*/
@RequestMapping
(
"/agent-wx-enterprise-list"
)
public
HaobanResponse
materialShare
(
String
materialId
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
List
<
EnterpriseDetailDTO
>
detailDTOS
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
List
<
String
>
enterpriseIds
=
detailDTOS
.
stream
().
filter
(
dto
->
dto
.
getWxEnterpriseType
()
==
0
).
map
(
dto
->
dto
.
getEnterpriseId
()).
collect
(
Collectors
.
toList
());
List
<
EnterpriseDetailDTO
>
retList
=
wxEnterpriseRelatedApiService
.
listEnterpriseByEnterpriseIds
(
enterpriseIds
);
Map
<
String
,
EnterpriseDetailDTO
>
detailDTOMap
=
retList
.
stream
().
filter
(
dto
->
dto
.
getWxEnterpriseType
()
==
1
).
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getWxEnterpriseId
(),
dto
->
dto
,
(
ne
,
ol
)
->
ol
));
Collection
<
EnterpriseDetailDTO
>
values
=
detailDTOMap
.
values
();
List
<
AgentEnterpriseDTO
>
enterpriseList
=
EntityUtil
.
changeEntityListByOrika
(
AgentEnterpriseDTO
.
class
,
values
);
if
(
CollectionUtils
.
isNotEmpty
(
values
))
{
List
<
MaterialDTO
>
materialDTOS
=
materialApiService
.
listByFromMaterialId
(
materialId
);
List
<
String
>
wxEids
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
materialDTOS
))
{
wxEids
=
materialDTOS
.
stream
().
map
(
dto
->
dto
.
getWxEnterpriseId
()).
collect
(
Collectors
.
toList
());
}
List
<
String
>
finalWxEids
=
wxEids
;
for
(
AgentEnterpriseDTO
dto
:
enterpriseList
)
{
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseApiService
.
getOne
(
dto
.
getWxEnterpriseId
());
if
(
null
==
wxEnterpriseDTO
)
{
continue
;
}
logger
.
info
(
"wxEnterpriseDTO={},dto={}"
,
JSON
.
toJSONString
(
wxEnterpriseDTO
),
JSON
.
toJSONString
(
dto
));
dto
.
setEnterpriseName
(
wxEnterpriseDTO
.
getCorpName
());
if
(
finalWxEids
.
contains
(
dto
.
getWxEnterpriseId
()))
{
dto
.
setBindFlag
(
1
);
}
else
{
dto
.
setBindFlag
(
0
);
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
enterpriseList
);
}
/**
* 删除欢迎语
*
* @return
*/
@RequestMapping
(
"del-welcome"
)
public
HaobanResponse
delWelcome
()
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
delWelcome
(
wxEnterpriseId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 欢迎语开启关闭
*
* @return
*/
@RequestMapping
(
"set-welcome"
)
public
HaobanResponse
setWelcome
(
int
openFlag
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
setWelcome
(
wxEnterpriseId
,
openFlag
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
/**
* 授权绑定-设置导购编辑权限
*
* @return
*/
@IgnoreLogin
@RequestMapping
(
"set-clerk-edit"
)
public
HaobanResponse
setClerkEdit
(
String
wxEnterprieseRelatedId
,
int
clerkEditFlag
)
{
if
(
StringUtils
.
isBlank
(
wxEnterprieseRelatedId
))
{
logger
.
info
(
"缺少参数"
);
return
resultResponse
(
HaoBanErrCode
.
ERR_2
);
}
boolean
b
=
wxEnterpriseRelatedApiService
.
setClerkEditFlag
(
wxEnterprieseRelatedId
,
clerkEditFlag
);
if
(
b
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
else
{
return
resultResponse
(
HaoBanErrCode
.
ERR_100032
);
}
}
/**
* 是否同意授权
*
* @param openFlag
* @return
*/
@RequestMapping
(
"agree_external_userid_flag"
)
public
HaobanResponse
agreeExternalUseridFlag
(
Integer
openFlag
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
wxEnterpriseApiService
.
agreeExternalUseridFlag
(
wxEnterpriseId
,
openFlag
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
@RequestMapping
(
path
=
"/current/enterprise/info"
)
public
RestResponse
<?>
queryCurrentInfo
(){
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
EnterpriseDetailDTO
>
serviceResponse
=
wxEnterpriseRelatedApiService
.
queryEnterpriseDetail
(
loginUser
.
getWxEnterpriseId
(),
loginUser
.
getEnterpriseId
());
if
(
serviceResponse
.
isSuccess
()){
return
RestResponse
.
successResult
(
serviceResponse
.
getResult
());
}
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
/**
* 最新一条将要被拦截记录
* @return
*/
@RequestMapping
(
value
=
"qywx-fee-wxEnterprise-detail"
,
method
=
RequestMethod
.
GET
)
public
RestResponse
qywxFeeWxEnterpriseListDetail
()
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
HaobanQywxFeeDTO
haobanQywxFeeDTO
=
haobanQywxFeeApiService
.
queryByWxEnterpriseId
(
wxEnterpriseId
);
if
(
haobanQywxFeeDTO
==
null
)
{
return
RestResponse
.
successResult
();
}
List
<
EnterpriseDetailDTO
>
enterpriseDetailDTOS
=
wxEnterpriseRelatedApiService
.
listEnterpriseByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isNotEmpty
(
enterpriseDetailDTOS
))
{
StringBuffer
stringBuffer
=
new
StringBuffer
();
for
(
EnterpriseDetailDTO
enterpriseDetailDTO
:
enterpriseDetailDTOS
)
{
stringBuffer
.
append
(
enterpriseDetailDTO
.
getEnterpriseName
()).
append
(
" "
);
}
haobanQywxFeeDTO
.
setEnterpriseNames
(
stringBuffer
.
toString
());
}
return
RestResponse
.
successResult
(
haobanQywxFeeDTO
);
}
}
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