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
ac7bff25
Commit
ac7bff25
authored
Dec 23, 2024
by
guojx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
活动已完成的会员
parent
41a1e6ca
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
345 additions
and
2 deletions
+345
-2
pom.xml
haoban-manage3-wx/pom.xml
+6
-0
CanvasDataController.java
...oban/manage/web/controller/data/CanvasDataController.java
+39
-2
CanvasConversionMemberQO.java
...haoban/manage/web/qo/canvas/CanvasConversionMemberQO.java
+15
-0
EsMemberInfoUtils.java
...va/com/gic/haoban/manage/web/utils/EsMemberInfoUtils.java
+161
-0
MemberInfoQO.java
...in/java/com/gic/haoban/manage/web/utils/MemberInfoQO.java
+33
-0
ReflectUtils.java
...in/java/com/gic/haoban/manage/web/utils/ReflectUtils.java
+47
-0
CanvasConversionMemberVO.java
...haoban/manage/web/vo/canvas/CanvasConversionMemberVO.java
+41
-0
dubbo-haoban-manage-wx.xml
...ge3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
+3
-0
No files found.
haoban-manage3-wx/pom.xml
View file @
ac7bff25
...
...
@@ -263,6 +263,12 @@
<version>
${gic-webapp-common}
</version>
</dependency>
<dependency>
<groupId>
com.gic
</groupId>
<artifactId>
gic-search-engine-api
</artifactId>
<version>
${gic-search-engine-api}
</version>
</dependency>
</dependencies>
<build>
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/data/CanvasDataController.java
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
data
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.commons.util.DataApiUtils
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.haoban.manage.web.qo.canvas.CanvasConversionDataQO
;
import
com.gic.haoban.manage.web.qo.canvas.CanvasConversionMemberQO
;
import
com.gic.haoban.manage.web.utils.EsMemberInfoUtils
;
import
com.gic.haoban.manage.web.vo.canvas.CanvasConversionDataVO
;
import
com.gic.haoban.manage.web.vo.canvas.CanvasConversionMemberVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
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
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* 画布数据
...
...
@@ -20,6 +27,8 @@ import java.util.Map;
@RestController
@RequestMapping
(
"/canvas-data"
)
public
class
CanvasDataController
{
@Autowired
private
EsMemberInfoUtils
esMemberInfoUtils
;
/**
* 活动转化数据
...
...
@@ -29,11 +38,39 @@ public class CanvasDataController {
@RequestMapping
(
"get-canvas-conversion-data"
)
public
RestResponse
<
CanvasConversionDataVO
>
getCanvasConversionData
(
@RequestBody
CanvasConversionDataQO
qo
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
jsonObject
.
put
(
"pageNum"
,
1
);
jsonObject
.
put
(
"pageSize"
,
10
);
setPageParam
(
jsonObject
,
null
,
null
);
//1画布维度2导购维度3会员维度
jsonObject
.
put
(
"dataType"
,
1
);
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
"data_mkt_canvas_haoban_list"
);
List
<
CanvasConversionDataVO
>
list
=
DataApiUtils
.
parsePageDataList
(
res
,
CanvasConversionDataVO
.
class
);
return
RestResponse
.
successResult
(
list
.
size
()
>
0
?
list
.
get
(
0
)
:
new
CanvasConversionDataVO
());
}
/**
* 活动已完成的会员
* @param qo
* @return
*/
@RequestMapping
(
"get-canvas-conversion-data"
)
public
RestResponse
<
Page
<
CanvasConversionMemberVO
>>
getCanvasConversionData
(
@RequestBody
CanvasConversionMemberQO
qo
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
setPageParam
(
jsonObject
,
qo
.
getPageNum
(),
qo
.
getPageSize
());
//1导购2会员
jsonObject
.
put
(
"dataType"
,
2
);
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
"data_mkt_canvas_haoban_clerk"
);
Page
<
CanvasConversionMemberVO
>
page
=
DataApiUtils
.
getPageData
(
res
,
CanvasConversionMemberVO
.
class
);
List
<
CanvasConversionMemberVO
>
list
=
page
.
getResult
();
esMemberInfoUtils
.
setMemberInfo
(
qo
.
getEnterpriseId
(),
list
,
Stream
.
of
(
"memberName"
,
"memberNick"
,
"photoUrl"
,
"clerkCode"
,
"clerkName"
)
.
collect
(
Collectors
.
toSet
()));
return
RestResponse
.
successResult
(
page
);
}
private
void
setPageParam
(
JSONObject
jsonObject
,
Integer
pageNum
,
Integer
pageSize
)
{
jsonObject
.
put
(
"pageNum"
,
pageNum
==
null
?
1
:
pageNum
);
jsonObject
.
put
(
"pageSize"
,
pageSize
==
null
?
10
:
pageSize
);
//1画布维度2导购维度3会员维度
jsonObject
.
put
(
"dataType"
,
1
);
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/canvas/CanvasConversionMemberQO.java
0 → 100644
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
canvas
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
CanvasConversionMemberQO
extends
CanvasConversionDataQO
implements
Serializable
{
private
Integer
pageNum
;
private
Integer
pageSize
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/utils/EsMemberInfoUtils.java
0 → 100644
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.search.engine.api.constant.OperateEnum
;
import
com.gic.search.engine.api.dto.ESResponseQueryBatch
;
import
com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO
;
import
com.gic.search.engine.api.filter.NewNodeAddUtil
;
import
com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Component
@Slf4j
public
class
EsMemberInfoUtils
{
@Autowired
private
ESDataDynamicOperationApiService
esDataDynamicOperationApiService
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
ClerkService
clerkService
;
public
void
setMemberInfo
(
String
enterpriseId
,
List
list
,
Set
<
String
>
fieldName
)
{
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
List
<
String
>
memberIdList
=
new
ArrayList
<>();
for
(
Object
o
:
list
)
{
String
memberId
=
ReflectUtils
.
getDateFieldValue
(
o
,
"memberId"
);
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
memberId
)
&&
!
"-1"
.
equals
(
memberId
))
{
memberIdList
.
add
(
memberId
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
List
<
JSONObject
>
memberJson
=
queryDataBatch
(
enterpriseId
,
memberIdList
,
"memberId,name,mainStoreId,phoneNumber,name,nickName,mainClerkId,photoUrl"
);
if
(
CollectionUtils
.
isNotEmpty
(
memberJson
))
{
Map
<
String
,
JSONObject
>
map
=
memberJson
.
stream
()
.
collect
(
Collectors
.
toMap
(
e
->
e
.
getString
(
"memberId"
),
e
->
e
));
Map
<
String
,
StoreDTO
>
storeMap
=
new
HashMap
<>();
Map
<
String
,
ClerkDTO
>
clerkMap
=
new
HashMap
<>();
boolean
isQueryStore
=
fieldName
.
contains
(
"storeName"
)
||
fieldName
.
contains
(
"storeCode"
);
if
(
isQueryStore
)
{
List
<
String
>
mainStoreIdList
=
memberJson
.
stream
().
filter
(
e
->
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
e
.
getString
(
"mainStoreId"
)))
.
map
(
e
->
e
.
getString
(
"mainStoreId"
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
mainStoreIdList
))
{
List
<
StoreDTO
>
mainStoreList
=
storeService
.
queryStore
(
mainStoreIdList
);
if
(
CollectionUtils
.
isNotEmpty
(
mainStoreList
))
{
storeMap
=
mainStoreList
.
stream
().
collect
(
Collectors
.
toMap
(
e
->
e
.
getStoreId
(),
e
->
e
));
}
}
}
boolean
isQueryClerk
=
fieldName
.
contains
(
"clerkCode"
)
||
fieldName
.
contains
(
"clerkName"
);
if
(
isQueryClerk
)
{
Set
<
String
>
mainClerkIdList
=
memberJson
.
stream
().
filter
(
e
->
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNotBlank
(
e
.
getString
(
"mainClerkId"
)))
.
map
(
e
->
e
.
getString
(
"mainClerkId"
)).
collect
(
Collectors
.
toSet
());
if
(
CollectionUtils
.
isNotEmpty
(
mainClerkIdList
))
{
List
<
ClerkDTO
>
mainClerkList
=
clerkService
.
getClerkByClerkIds
(
mainClerkIdList
);
if
(
CollectionUtils
.
isNotEmpty
(
mainClerkList
))
{
clerkMap
=
mainClerkList
.
stream
().
collect
(
Collectors
.
toMap
(
e
->
e
.
getClerkId
(),
e
->
e
));
}
}
}
for
(
Object
vo
:
list
)
{
String
memberId
=
ReflectUtils
.
getDateFieldValue
(
vo
,
"memberId"
);
JSONObject
jsonValue
=
map
.
get
(
memberId
);
if
(
jsonValue
!=
null
)
{
if
(
fieldName
.
contains
(
"memberPhone"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberPhone"
,
jsonValue
.
getString
(
"phoneNumber"
));
}
if
(
fieldName
.
contains
(
"memberName"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberName"
,
jsonValue
.
getString
(
"name"
));
}
if
(
fieldName
.
contains
(
"memberNick"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberNick"
,
jsonValue
.
getString
(
"nickName"
));
}
if
(
fieldName
.
contains
(
"photoUrl"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"photoUrl"
,
jsonValue
.
getString
(
"photoUrl"
));
}
if
(
fieldName
.
contains
(
"memberScene"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberScene"
,
3
);
}
if
(
isQueryStore
)
{
String
mainStoreId
=
jsonValue
.
getString
(
"mainStoreId"
);
// ReflectUtils.setDateFieldValue(vo, "storeId", mainStoreId);
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
mainStoreId
))
{
StoreDTO
storeValue
=
storeMap
.
get
(
mainStoreId
);
if
(
storeValue
!=
null
)
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"storeCode"
,
storeValue
.
getStoreCode
());
ReflectUtils
.
setDateFieldValue
(
vo
,
"storeName"
,
storeValue
.
getStoreName
());
if
(
fieldName
.
contains
(
"parentStoreGroupName"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"parentStoreGroupName"
,
storeValue
.
getStoreGroupName
());
}
}
}
}
if
(
isQueryClerk
)
{
String
mainClerkId
=
jsonValue
.
getString
(
"mainClerkId"
);
// ReflectUtils.setDateFieldValue(vo, "clerkId", mainClerkId);
if
(
org
.
apache
.
commons
.
lang
.
StringUtils
.
isNotBlank
(
mainClerkId
))
{
ClerkDTO
clerkDTO
=
clerkMap
.
get
(
mainClerkId
);
if
(
clerkDTO
!=
null
)
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"clerkCode"
,
clerkDTO
.
getClerkCode
());
ReflectUtils
.
setDateFieldValue
(
vo
,
"clerkName"
,
clerkDTO
.
getClerkName
());
}
}
}
}
}
}
}
}
}
public
List
<
JSONObject
>
queryDataBatch
(
String
enterpriseId
,
List
<
String
>
memberIdList
,
String
returnFields
)
{
if
(
CollectionUtils
.
isEmpty
(
memberIdList
))
{
log
.
warn
(
"memberIdList 为空"
,
enterpriseId
);
return
null
;
}
List
<
JSONObject
>
jsonObjList
=
new
ArrayList
<
JSONObject
>();
try
{
JSONObject
searchJson
=
new
JSONObject
();
String
[]
memberIdArr
=
memberIdList
.
toArray
(
new
String
[
memberIdList
.
size
()]);
String
memberIds
=
StringUtils
.
join
(
memberIdArr
,
" "
);
searchJson
=
NewNodeAddUtil
.
addNewNodeForAnd
(
"memberId"
,
OperateEnum
.
OPERATE_CONTAIN
.
getValue
(),
memberIds
,
searchJson
);
DynamicSearchDTO
search
=
new
DynamicSearchDTO
();
log
.
info
(
"==============搜索条件==============: {}"
,
JSON
.
toJSONString
(
searchJson
));
search
.
setRecordNumber
(
memberIdList
.
size
()
+
1
);
search
.
setSearchJson
(
searchJson
);
search
.
setEnterpriseId
(
enterpriseId
);
search
.
setColumnCategoryCode
(
"member"
);
search
.
setReturnFileds
(
returnFields
);
search
.
setSortJson
(
NewNodeAddUtil
.
createSortNode
(
"memberId"
,
NewNodeAddUtil
.
SORT_RULE_ASC
));
ESResponseQueryBatch
esRes
=
esDataDynamicOperationApiService
.
queryDataBatch
(
search
,
false
,
null
);
jsonObjList
=
esRes
.
getRes
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"从搜索引擎搜索会员数据异常"
,
memberIdList
,
enterpriseId
,
e
);
}
return
jsonObjList
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/utils/MemberInfoQO.java
0 → 100644
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
utils
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
MemberInfoQO
implements
Serializable
{
/**
* 是否设置服务门店名称和code
*/
private
boolean
setStore
;
/**
* 是否设置专属导购名称和code
*/
private
boolean
setClerk
;
/**
* 是否设置服务门店上级分组名称
*/
private
boolean
setParentStoreGroup
;
/**
* 是否设置会员类型。
* 1:非会员 2:会员已注销 3:正常
*/
private
boolean
setMemberScene
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/utils/ReflectUtils.java
0 → 100644
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
java.lang.reflect.Method
;
@Slf4j
public
class
ReflectUtils
{
public
static
String
getDateFieldValue
(
Object
obj
,
String
fieldName
)
{
try
{
Method
method
=
obj
.
getClass
().
getMethod
(
"get"
+
fieldName
.
substring
(
0
,
1
).
toUpperCase
()
+
fieldName
.
substring
(
1
));
return
(
String
)
method
.
invoke
(
obj
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"反射get值错误:{}"
,
e
.
getMessage
(),
e
);
return
null
;
}
}
public
static
void
setDateFieldValue
(
Object
obj
,
String
fieldName
,
String
dataValue
)
{
try
{
Method
method
=
obj
.
getClass
().
getMethod
(
"set"
+
fieldName
.
substring
(
0
,
1
).
toUpperCase
()
+
fieldName
.
substring
(
1
),
String
.
class
);
method
.
invoke
(
obj
,
dataValue
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"反射set值错误:{}"
,
e
.
getMessage
(),
e
);
}
}
public
static
void
setDateFieldValue
(
Object
obj
,
String
fieldName
,
Integer
dataValue
)
{
try
{
Method
method
=
obj
.
getClass
().
getMethod
(
"set"
+
fieldName
.
substring
(
0
,
1
).
toUpperCase
()
+
fieldName
.
substring
(
1
),
Integer
.
class
);
method
.
invoke
(
obj
,
dataValue
);
}
catch
(
Exception
e
)
{
log
.
warn
(
"反射set值错误:{}"
,
e
.
getMessage
(),
e
);
}
}
public
static
<
T
>
T
createInstance
(
Class
<
T
>
clazz
)
{
try
{
return
clazz
.
newInstance
();
}
catch
(
InstantiationException
e
)
{
return
null
;
}
catch
(
IllegalAccessException
e
)
{
return
null
;
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/canvas/CanvasConversionMemberVO.java
0 → 100644
View file @
ac7bff25
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
canvas
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
CanvasConversionMemberVO
extends
CanvasConversionDataVO
implements
Serializable
{
/**
* 会员id
*/
private
String
mbrId
;
private
String
memberId
;
private
String
clerkId
;
private
String
clerkCode
;
private
String
clerkName
;
/**
* 会员名称
*/
private
String
memberName
;
/**
* 会员昵称
*/
private
String
memberNick
;
/**
* 头像
*/
private
String
photoUrl
;
public
String
getMemberId
()
{
return
mbrId
;
}
}
haoban-manage3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
View file @
ac7bff25
...
...
@@ -186,4 +186,7 @@
<dubbo:reference
id=
"gatheringActivityWxApiService"
interface=
"com.gic.marketing.pro.api.service.activity.GatheringActivityWxApiService"
timeout=
"10000"
retries=
"0"
check=
"false"
/>
<dubbo:reference
id=
"eSDataDynamicOperationApiService"
interface=
"com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService"
timeout=
"10000"
/>
</beans>
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