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
75c1ae02
Commit
75c1ae02
authored
Sep 24, 2024
by
guojx
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-2024-08-喜好洞察优化' into 'master'
Feature 2024 08 喜好洞察优化 See merge request
!2159
parents
ce2811a4
6f45fbeb
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1387 additions
and
6 deletions
+1387
-6
ClerkShareGoodsLogDTO.java
...haoban/manage/api/dto/anaylsis/ClerkShareGoodsLogDTO.java
+157
-0
MaterialShareLogApiService.java
...anage/api/service/content/MaterialShareLogApiService.java
+11
-0
ProTriggerCustomerDetailBO.java
.../service/pojo/bo/anaylsis/ProTriggerCustomerDetailBO.java
+189
-0
TriggerCustomerDetailService.java
...service/service/content/TriggerCustomerDetailService.java
+8
-0
TriggerCustomerDetailServiceImpl.java
...ervice/content/impl/TriggerCustomerDetailServiceImpl.java
+36
-1
MaterialShareLogApiServiceImpl.java
...vice/out/impl/content/MaterialShareLogApiServiceImpl.java
+36
-3
MaterialShareLogApiServiceTest.java
...service/src/test/java/MaterialShareLogApiServiceTest.java
+21
-0
WechatWorkOverviewController.java
...b/controller/wechatwork/WechatWorkOverviewController.java
+2
-0
StoreAuthUtils.java
.../com/gic/haoban/manage/web/utils/data/StoreAuthUtils.java
+1
-1
WechatWorkOverviewStoreGroupVO.java
...age/web/vo/wechatwork/WechatWorkOverviewStoreGroupVO.java
+5
-0
WechatWorkOverviewVO.java
...haoban/manage/web/vo/wechatwork/WechatWorkOverviewVO.java
+5
-0
ClerkMaterialShareController.java
.../web/controller/content/ClerkMaterialShareController.java
+77
-1
GoodsAnalysisController.java
...n/manage/web/controller/data/GoodsAnalysisController.java
+179
-0
RecommendShareLogQO.java
...haoban/manage/web/qo/content/log/RecommendShareLogQO.java
+155
-0
GoodsAnalysisClerkDetailQO.java
...web/qo/data/goodsanalysis/GoodsAnalysisClerkDetailQO.java
+49
-0
GoodsAnalysisOverviewQO.java
...ge/web/qo/data/goodsanalysis/GoodsAnalysisOverviewQO.java
+26
-0
StoreAuthUtils.java
.../java/com/gic/haoban/manage/web/utils/StoreAuthUtils.java
+56
-0
ClerkDateTrendVO.java
...a/com/gic/haoban/manage/web/vo/data/ClerkDateTrendVO.java
+114
-0
ClerkUseDetailVO.java
...a/com/gic/haoban/manage/web/vo/data/ClerkUseDetailVO.java
+98
-0
GoodsAnalysisDateTrendVO.java
...c/haoban/manage/web/vo/data/GoodsAnalysisDateTrendVO.java
+111
-0
GoodsAnalysisOverviewVO.java
...ic/haoban/manage/web/vo/data/GoodsAnalysisOverviewVO.java
+48
-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-api/src/main/java/com/gic/haoban/manage/api/dto/anaylsis/ClerkShareGoodsLogDTO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
.
anaylsis
;
import
java.io.Serializable
;
/**
* @author shangfeng
* @date 2024-08-29 09:55:06
*/
public
class
ClerkShareGoodsLogDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
903792260439296719L
;
/**
* 企业id
*/
private
String
enterpriseId
;
/**
* 微信企业id
*/
private
String
wxEnterpriseId
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 成员id
*/
private
String
staffId
;
/**
* 素材分享类型
* @see com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType
*/
private
Integer
shareType
;
/**
* 业务id
*/
private
String
bizId
;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private
Integer
bizType
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 外部联系人id
*/
private
String
externalUserId
;
/**
* 会员id
*/
private
String
memberId
;
/**
* 额外数据
*/
private
String
extend
;
public
String
getEnterpriseId
()
{
return
enterpriseId
;
}
public
void
setEnterpriseId
(
String
enterpriseId
)
{
this
.
enterpriseId
=
enterpriseId
;
}
public
String
getWxEnterpriseId
()
{
return
wxEnterpriseId
;
}
public
void
setWxEnterpriseId
(
String
wxEnterpriseId
)
{
this
.
wxEnterpriseId
=
wxEnterpriseId
;
}
public
String
getClerkId
()
{
return
clerkId
;
}
public
void
setClerkId
(
String
clerkId
)
{
this
.
clerkId
=
clerkId
;
}
public
String
getStaffId
()
{
return
staffId
;
}
public
void
setStaffId
(
String
staffId
)
{
this
.
staffId
=
staffId
;
}
public
Integer
getShareType
()
{
return
shareType
;
}
public
void
setShareType
(
Integer
shareType
)
{
this
.
shareType
=
shareType
;
}
public
String
getBizId
()
{
return
bizId
;
}
public
void
setBizId
(
String
bizId
)
{
this
.
bizId
=
bizId
;
}
public
Integer
getBizType
()
{
return
bizType
;
}
public
void
setBizType
(
Integer
bizType
)
{
this
.
bizType
=
bizType
;
}
public
String
getStoreId
()
{
return
storeId
;
}
public
void
setStoreId
(
String
storeId
)
{
this
.
storeId
=
storeId
;
}
public
String
getExternalUserId
()
{
return
externalUserId
;
}
public
void
setExternalUserId
(
String
externalUserId
)
{
this
.
externalUserId
=
externalUserId
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
String
getExtend
()
{
return
extend
;
}
public
void
setExtend
(
String
extend
)
{
this
.
extend
=
extend
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/content/MaterialShareLogApiService.java
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
api
.
service
.
content
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO
;
import
com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO
;
import
java.util.List
;
/**
* @Author MUSI
* @Date 2023/3/18 8:20 PM
...
...
@@ -19,4 +22,12 @@ public interface MaterialShareLogApiService {
* @return
*/
ServiceResponse
<
Long
>
saveClerkShareMaterialLog
(
ClerkShareMaterialLogDTO
clerkShareMaterialLogDTO
);
/**
* 保存导购分享记录
*
* @param clerkShareGoodsLogDTOList
* @return
*/
ServiceResponse
<
Long
>
saveClerkShareRecommendLog
(
List
<
ClerkShareGoodsLogDTO
>
clerkShareGoodsLogDTOList
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/anaylsis/ProTriggerCustomerDetailBO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
anaylsis
;
import
java.util.Date
;
/**
* @author shangfeng
* @date 2024-08-29 10:03:10
*/
public
class
ProTriggerCustomerDetailBO
{
private
Long
id
;
/**
* 企业id
*/
private
String
enterpriseId
;
/**
* 微信企业id
*/
private
String
wxEnterpriseId
;
/**
* 业务id
*/
private
String
bizId
;
/**
* 业务类型 2商品
*/
private
Integer
bizType
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 成员id
*/
private
String
staffId
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 渠道类型 1朋友圈; 2客户群; 3 对话框; 4 复制文案; 5 下载素材;6 潜客推荐
*/
private
Integer
channelType
;
/**
* 触达客户标识 外部联系人id
*/
private
String
customerId
;
/**
* 会员id
*/
private
String
memberId
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
/**
* 0正常; 1删除
*/
private
Integer
deleteFlag
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
String
getEnterpriseId
()
{
return
enterpriseId
;
}
public
void
setEnterpriseId
(
String
enterpriseId
)
{
this
.
enterpriseId
=
enterpriseId
;
}
public
String
getWxEnterpriseId
()
{
return
wxEnterpriseId
;
}
public
void
setWxEnterpriseId
(
String
wxEnterpriseId
)
{
this
.
wxEnterpriseId
=
wxEnterpriseId
;
}
public
String
getBizId
()
{
return
bizId
;
}
public
void
setBizId
(
String
bizId
)
{
this
.
bizId
=
bizId
;
}
public
Integer
getBizType
()
{
return
bizType
;
}
public
void
setBizType
(
Integer
bizType
)
{
this
.
bizType
=
bizType
;
}
public
String
getClerkId
()
{
return
clerkId
;
}
public
void
setClerkId
(
String
clerkId
)
{
this
.
clerkId
=
clerkId
;
}
public
String
getStaffId
()
{
return
staffId
;
}
public
void
setStaffId
(
String
staffId
)
{
this
.
staffId
=
staffId
;
}
public
String
getStoreId
()
{
return
storeId
;
}
public
void
setStoreId
(
String
storeId
)
{
this
.
storeId
=
storeId
;
}
public
Integer
getChannelType
()
{
return
channelType
;
}
public
void
setChannelType
(
Integer
channelType
)
{
this
.
channelType
=
channelType
;
}
public
String
getCustomerId
()
{
return
customerId
;
}
public
void
setCustomerId
(
String
customerId
)
{
this
.
customerId
=
customerId
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
public
Integer
getDeleteFlag
()
{
return
deleteFlag
;
}
public
void
setDeleteFlag
(
Integer
deleteFlag
)
{
this
.
deleteFlag
=
deleteFlag
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/TriggerCustomerDetailService.java
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
;
import
com.gic.haoban.manage.service.pojo.bo.anaylsis.ProTriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO
;
...
...
@@ -27,6 +28,13 @@ public interface TriggerCustomerDetailService {
void
batchSave
(
List
<
TriggerCustomerDetailBO
>
triggerCustomerDetailBos
);
/**
* 批量保存
* @param triggerCustomerDetailBos
*/
void
batchSaveGoodsShare
(
List
<
ProTriggerCustomerDetailBO
>
triggerCustomerDetailBos
);
/**
* 查询客户触达日志
* @param triggerCustomerDetailQO
* @return
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/TriggerCustomerDetailServiceImpl.java
View file @
75c1ae02
...
...
@@ -13,6 +13,7 @@ import com.gic.haoban.common.utils.DateUtil;
import
com.gic.haoban.manage.service.dao.mapper.content.TabHaobanTriggerCustomerDetailMapper
;
import
com.gic.haoban.manage.service.dao.mapper.content.holo.HoloDataSource
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail
;
import
com.gic.haoban.manage.service.pojo.bo.anaylsis.ProTriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO
;
import
com.gic.haoban.manage.service.service.content.TriggerCustomerDetailService
;
...
...
@@ -103,7 +104,41 @@ public class TriggerCustomerDetailServiceImpl implements TriggerCustomerDetailSe
.
collect
(
Collectors
.
toList
());
client
.
put
(
puts
);
log
.
info
(
"客户触达写数据组完成 >>>>>"
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
log
.
info
(
"数据组写入异常 {}"
,
JSON
.
toJSONString
(
triggerCustomerDetailBos
),
ex
);
}
}
@Override
public
void
batchSaveGoodsShare
(
List
<
ProTriggerCustomerDetailBO
>
triggerCustomerDetailBos
)
{
try
{
HoloClient
client
=
holoDataSource
.
getClient
();
if
(
client
==
null
)
{
log
.
error
(
"数仓数据源链接异常, 请检查!!!!{}"
,
JSON
.
toJSONString
(
triggerCustomerDetailBos
));
return
;
}
TableSchema
tableSchema
=
client
.
getTableSchema
(
"tab_pro_trigger_customer_detail"
);
SerializeConfig
serializeConfig
=
new
SerializeConfig
();
serializeConfig
.
setPropertyNamingStrategy
(
PropertyNamingStrategy
.
SnakeCase
);
// id, enterprise_id, wx_enterprise_id, biz_id, biz_type, clerk_id, staff_id,store_id, channel_type, customer_id,member_id, create_time, update_time, delete_flag
List
<
Put
>
puts
=
triggerCustomerDetailBos
.
stream
()
.
map
(
item
->
{
Put
temp
=
new
Put
(
tableSchema
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
item
,
serializeConfig
));
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
jsonObject
.
entrySet
())
{
temp
.
setObject
(
entry
.
getKey
(),
entry
.
getValue
());
}
// 时间戳格式不行
temp
.
setObject
(
"create_time"
,
DateUtil
.
dateToStr
(
item
.
getCreateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setObject
(
"update_time"
,
DateUtil
.
dateToStr
(
item
.
getUpdateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
return
temp
;
})
.
collect
(
Collectors
.
toList
());
client
.
put
(
puts
);
log
.
info
(
"客户触达写数据组完成 >>>>>"
);
}
catch
(
Exception
ex
)
{
log
.
info
(
"数据组写入异常 {}"
,
JSON
.
toJSONString
(
triggerCustomerDetailBos
),
ex
);
}
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/MaterialShareLogApiServiceImpl.java
View file @
75c1ae02
...
...
@@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSON;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.commons.util.UniqueIdUtils
;
import
com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO
;
import
com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO
;
import
com.gic.haoban.manage.api.dto.content.log.TriggerCustomerDetailLogDTO
;
import
com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType
;
import
com.gic.haoban.manage.api.service.content.MaterialShareLogApiService
;
import
com.gic.haoban.manage.service.pojo.bo.anaylsis.ProTriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.ClerkShareLogBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO
;
import
com.gic.haoban.manage.service.service.content.ClerkShareLogService
;
...
...
@@ -21,6 +23,8 @@ import org.springframework.stereotype.Component;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @Author MUSI
...
...
@@ -35,11 +39,14 @@ public class MaterialShareLogApiServiceImpl implements MaterialShareLogApiServic
/**
* 导购分享素材 客户触达日志
*
* @see com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService#handlerTriggerCustomerDetailLog(String)
*/
private
static
final
String
SHARE_MATERIAL_DETAIL_LOG
=
"handlerTriggerCustomerDetailLog"
;
@Autowired
private
ClerkShareLogService
clerkShareLogService
;
@Autowired
TriggerCustomerDetailService
triggerCustomerDetailService
;
...
...
@@ -72,7 +79,7 @@ public class MaterialShareLogApiServiceImpl implements MaterialShareLogApiServic
ClerkShareLogBO
clerkShareLogBO
=
new
ClerkShareLogBO
();
BeanUtils
.
copyProperties
(
clerkShareMaterialLogDTO
,
clerkShareLogBO
);
Long
logId
=
clerkShareLogService
.
saveClerkShareLog
(
clerkShareLogBO
);
if
(
logId
!=
null
&&
ClerkShareMaterialType
.
SHARE_PYQ
.
getCode
().
equals
(
clerkShareLogBO
.
getShareType
())){
if
(
logId
!=
null
&&
ClerkShareMaterialType
.
SHARE_PYQ
.
getCode
().
equals
(
clerkShareLogBO
.
getShareType
()))
{
// MQ 通知处理导购分享日志
TriggerCustomerDetailLogDTO
triggerCustomerDetailLog
=
new
TriggerCustomerDetailLogDTO
();
triggerCustomerDetailLog
.
setEnterpriseId
(
clerkShareLogBO
.
getEnterpriseId
());
...
...
@@ -81,13 +88,39 @@ public class MaterialShareLogApiServiceImpl implements MaterialShareLogApiServic
TriggerCustomerDetailLogDTO
.
SharePYQ
sharePYQ
=
new
TriggerCustomerDetailLogDTO
.
SharePYQ
();
sharePYQ
.
setShareLogId
(
logId
);
triggerCustomerDetailLog
.
setSharePYQ
(
sharePYQ
);
try
{
try
{
log
.
info
(
"分享朋友圈日志 MQ {}"
,
JSON
.
toJSONString
(
triggerCustomerDetailLog
));
GICMQClientUtil
.
getClientInstance
().
sendMessage
(
SHARE_MATERIAL_DETAIL_LOG
,
JSON
.
toJSONString
(
triggerCustomerDetailLog
),
60
);
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
log
.
warn
(
"客户分享素材 触达日志MQ异常 {}"
,
JSON
.
toJSONString
(
triggerCustomerDetailLog
),
ex
);
}
}
return
ServiceResponse
.
success
(
logId
);
}
@Override
public
ServiceResponse
<
Long
>
saveClerkShareRecommendLog
(
List
<
ClerkShareGoodsLogDTO
>
clerkShareGoodsLogDTOList
)
{
List
<
ProTriggerCustomerDetailBO
>
list
=
clerkShareGoodsLogDTOList
.
stream
().
map
(
clerkShareGoodsLogDTO
->
{
ProTriggerCustomerDetailBO
temp
=
new
ProTriggerCustomerDetailBO
();
temp
.
setId
(
UniqueIdUtils
.
uniqueLong
());
temp
.
setEnterpriseId
(
clerkShareGoodsLogDTO
.
getEnterpriseId
());
temp
.
setWxEnterpriseId
(
clerkShareGoodsLogDTO
.
getWxEnterpriseId
());
temp
.
setBizId
(
clerkShareGoodsLogDTO
.
getBizId
());
temp
.
setBizType
(
clerkShareGoodsLogDTO
.
getBizType
());
temp
.
setClerkId
(
clerkShareGoodsLogDTO
.
getClerkId
());
temp
.
setStaffId
(
clerkShareGoodsLogDTO
.
getStaffId
());
temp
.
setStoreId
(
clerkShareGoodsLogDTO
.
getStoreId
());
temp
.
setChannelType
(
clerkShareGoodsLogDTO
.
getShareType
());
temp
.
setCustomerId
(
clerkShareGoodsLogDTO
.
getExternalUserId
());
temp
.
setMemberId
(
clerkShareGoodsLogDTO
.
getMemberId
());
temp
.
setCreateTime
(
new
Date
());
temp
.
setUpdateTime
(
new
Date
());
temp
.
setDeleteFlag
(
0
);
return
temp
;
}).
collect
(
Collectors
.
toList
());
triggerCustomerDetailService
.
batchSaveGoodsShare
(
list
);
return
ServiceResponse
.
success
();
}
}
haoban-manage3-service/src/test/java/MaterialShareLogApiServiceTest.java
View file @
75c1ae02
import
com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO
;
import
com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO
;
import
com.gic.haoban.manage.api.service.content.MaterialShareLogApiService
;
import
com.google.common.collect.Lists
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.List
;
/**
* @Author MUSI
* @Date 2023/4/7 5:56 PM
...
...
@@ -41,4 +45,21 @@ public class MaterialShareLogApiServiceTest {
clerkShareMaterialLogDTO
.
setBizId
(
materialId
);
materialShareLogApiService
.
saveClerkShareMaterialLog
(
clerkShareMaterialLogDTO
);
}
@Test
public
void
saveClerkShareRecommendLog
(){
List
<
ClerkShareGoodsLogDTO
>
clerkShareGoodsLogDTOList
=
Lists
.
newArrayList
();
ClerkShareGoodsLogDTO
clerkShareGoodsLogDTO
=
new
ClerkShareGoodsLogDTO
();
clerkShareGoodsLogDTO
.
setClerkId
(
clerkId
);
clerkShareGoodsLogDTO
.
setShareType
(
1
);
clerkShareGoodsLogDTO
.
setStoreId
(
staffId
);
clerkShareGoodsLogDTO
.
setStaffId
(
staffId
);
clerkShareGoodsLogDTO
.
setWxEnterpriseId
(
wxEid
);
clerkShareGoodsLogDTO
.
setEnterpriseId
(
eid
);
clerkShareGoodsLogDTO
.
setBizType
(
2
);
clerkShareGoodsLogDTO
.
setBizId
(
"8a80908c916e4e3e0191704c588200a4"
);
clerkShareGoodsLogDTOList
.
add
(
clerkShareGoodsLogDTO
);
materialShareLogApiService
.
saveClerkShareRecommendLog
(
clerkShareGoodsLogDTOList
);
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/wechatwork/WechatWorkOverviewController.java
View file @
75c1ae02
...
...
@@ -180,6 +180,8 @@ public class WechatWorkOverviewController extends NewBaseController {
if
(
isTotalQuery
)
{
indexList
.
add
(
"企微好友总数(去重)"
);
fieldList
.
add
(
"newEntwchFdNum"
);
indexList
.
add
(
"企微好友总数"
);
fieldList
.
add
(
"entwchFdNumTotal"
);
indexList
.
add
(
"已注册会员好友数"
);
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/utils/data/StoreAuthUtils.java
View file @
75c1ae02
...
...
@@ -53,7 +53,7 @@ public class StoreAuthUtils {
jsonObject
.
put
(
"wxEnterpriseId"
,
login
.
getWxEnterpriseId
());
}
public
<
T
>
List
<
T
>
getOverview
(
String
apolloKey
,
JSONObject
jsonObject
,
StoreGroupCommonQO
storeGroupCommonQO
,
Class
clazz
)
{
public
<
T
>
List
<
T
>
getOverview
(
String
apolloKey
,
JSONObject
jsonObject
,
StoreGroupCommonQO
storeGroupCommonQO
,
Class
<
T
>
clazz
)
{
setCommonParam
(
jsonObject
,
storeGroupCommonQO
);
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
apolloKey
);
List
<
JSONObject
>
list
=
DataApiUtils
.
getDataList
(
res
);
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/wechatwork/WechatWorkOverviewStoreGroupVO.java
View file @
75c1ae02
...
...
@@ -40,4 +40,9 @@ public class WechatWorkOverviewStoreGroupVO extends StoreGroupCommonVO implement
* 未注册微信好友数
*/
private
Integer
entwchFdNumNonmbr
;
/**
* 微信好友总数(去重)
*/
private
Integer
newEntwchFdNum
;
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/wechatwork/WechatWorkOverviewVO.java
View file @
75c1ae02
...
...
@@ -29,6 +29,11 @@ public class WechatWorkOverviewVO implements Serializable {
private
Integer
entwchFdNumNonmbr
;
/**
* 微信好友总数(去重)
*/
private
Integer
newEntwchFdNum
;
/**
* 已注册微信好友数占比
*/
private
Double
entwchFdNumMbrRate
;
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/ClerkMaterialShareController.java
View file @
75c1ae02
...
...
@@ -11,16 +11,22 @@ import com.gic.content.api.dto.material.ProductInfoDTO;
import
com.gic.content.api.qdto.material.ContentMaterialLandingPageQDTO
;
import
com.gic.content.api.qdto.share.MaterialLinkShareQDTO
;
import
com.gic.content.api.service.ContentMaterialShareApiService
;
import
com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO
;
import
com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO
;
import
com.gic.haoban.manage.api.enums.content.ShareBizType
;
import
com.gic.haoban.manage.api.service.content.MaterialShareLogApiService
;
import
com.gic.haoban.manage.web.qo.content.ContentMaterialBaseQO
;
import
com.gic.haoban.manage.web.qo.content.log.MaterialShareLogQO
;
import
com.gic.haoban.manage.web.qo.content.log.RecommendShareLogQO
;
import
com.gic.haoban.manage.web.qo.content.share.ContentLinkShareQO
;
import
com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO
;
import
com.gic.haoban.manage.web.vo.content.SimpleGoodsInfoVO
;
import
com.gic.haoban.manage.web.vo.content.share.ContentMaterialLandingPageVO
;
import
com.gic.member.api.constant.MemberExtKeyEnum
;
import
com.gic.member.api.dto.member.req.MemberExtraPropertyReq
;
import
com.gic.member.api.service.extra.MemberExtraPropertyApiService
;
import
com.google.common.base.Splitter
;
import
com.google.common.collect.Lists
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -32,6 +38,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -45,9 +52,13 @@ public class ClerkMaterialShareController {
@Autowired
private
MaterialShareLogApiService
materialShareLogApiService
;
@Autowired
private
ContentMaterialShareApiService
contentMaterialShareApiService
;
@Autowired
private
MemberExtraPropertyApiService
memberExtraPropertyApiService
;
/**
* 导购分享素材日志
*
...
...
@@ -80,6 +91,70 @@ public class ClerkMaterialShareController {
/**
* 导购分享推荐商品日志
* *
*
* @param recommendShareLogQO
* @return
*/
@RequestMapping
(
path
=
"/clerk/share/recommend/log"
,
method
=
RequestMethod
.
POST
)
public
RestResponse
<
Void
>
clerkShareRecommendLog
(
@RequestBody
RecommendShareLogQO
recommendShareLogQO
)
{
if
(
CollectionUtils
.
isEmpty
(
recommendShareLogQO
.
getGoodsIdList
())
||
CollectionUtils
.
isEmpty
(
recommendShareLogQO
.
getMemberInfoList
())
||
StringUtils
.
isBlank
(
recommendShareLogQO
.
getClerkId
()))
{
log
.
info
(
"参数缺失 {}"
,
JSON
.
toJSONString
(
recommendShareLogQO
));
return
RestResponse
.
failure
(
"-1"
,
"参数异常"
);
}
log
.
info
(
"saveClerkShareMaterialLog 保存导购分享推荐商品日志 clerkId:{}, recommendShareLogQO{}"
,
recommendShareLogQO
.
getClerkId
(),
JSON
.
toJSONString
(
recommendShareLogQO
));
List
<
ClerkShareGoodsLogDTO
>
list
=
Lists
.
newArrayList
();
List
<
String
>
memberIdList
=
Lists
.
newArrayList
();
List
<
String
>
goodsIdList
=
recommendShareLogQO
.
getGoodsIdList
();
List
<
RecommendShareLogQO
.
MemberInfo
>
externalUserIdList
=
recommendShareLogQO
.
getMemberInfoList
();
for
(
RecommendShareLogQO
.
MemberInfo
memberInfo
:
externalUserIdList
)
{
for
(
String
goodsId
:
goodsIdList
)
{
ClerkShareGoodsLogDTO
temp
=
new
ClerkShareGoodsLogDTO
();
temp
.
setEnterpriseId
(
recommendShareLogQO
.
getEnterpriseId
());
temp
.
setWxEnterpriseId
(
recommendShareLogQO
.
getWxEnterpriseId
());
temp
.
setClerkId
(
recommendShareLogQO
.
getClerkId
());
temp
.
setExternalUserId
(
memberInfo
.
getExternalUserId
());
temp
.
setMemberId
(
memberInfo
.
getMemberId
());
if
(
StringUtils
.
isNotEmpty
(
memberInfo
.
getMemberId
())){
memberIdList
.
add
(
memberInfo
.
getMemberId
());
}
temp
.
setBizId
(
goodsId
);
temp
.
setBizType
(
ShareBizType
.
GOODS
.
getCode
());
temp
.
setStoreId
(
recommendShareLogQO
.
getStoreId
());
temp
.
setExtend
(
recommendShareLogQO
.
getExtend
());
temp
.
setStaffId
(
recommendShareLogQO
.
getStaffId
());
list
.
add
(
temp
);
}
}
ServiceResponse
<
Long
>
serviceResponse
=
materialShareLogApiService
.
saveClerkShareRecommendLog
(
list
);
if
(!
serviceResponse
.
isSuccess
())
{
return
RestResponse
.
failure
(
"-701"
,
"系统异常"
);
}
//更新会员推荐时间更新
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
)){
for
(
String
memberId
:
memberIdList
)
{
MemberExtraPropertyReq
memberExtraPropertyReq
=
new
MemberExtraPropertyReq
();
memberExtraPropertyReq
.
setEnterpriseId
(
recommendShareLogQO
.
getEnterpriseId
());
memberExtraPropertyReq
.
setMemberId
(
memberId
);
memberExtraPropertyReq
.
setExtraKey
(
MemberExtKeyEnum
.
MEMBER_GOODS_SUGGEST_TIME
.
key
());
memberExtraPropertyReq
.
setExtraValue
(
new
Date
());
memberExtraPropertyApiService
.
updateMemberExtraProperty
(
memberExtraPropertyReq
);
}
}
return
RestResponse
.
successResult
();
}
/**
* 查询素材落地页信息
*
* @param contentMaterialBaseQO
...
...
@@ -126,7 +201,8 @@ public class ClerkMaterialShareController {
/**
* 生成素材外链跳转地址
* @param materialBaseQO
*
* @param linkShareQO
* @return
*/
@RequestMapping
(
path
=
"/clerk/share-material-link"
,
method
=
RequestMethod
.
POST
)
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/data/GoodsAnalysisController.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
data
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.clerk.api.dto.ClerkListDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.DataApiUtils
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.web.qo.data.goodsanalysis.GoodsAnalysisClerkDetailQO
;
import
com.gic.haoban.manage.web.qo.data.goodsanalysis.GoodsAnalysisOverviewQO
;
import
com.gic.haoban.manage.web.utils.StoreAuthUtils
;
import
com.gic.haoban.manage.web.vo.data.ClerkDateTrendVO
;
import
com.gic.haoban.manage.web.vo.data.ClerkUseDetailVO
;
import
com.gic.haoban.manage.web.vo.data.GoodsAnalysisDateTrendVO
;
import
com.gic.haoban.manage.web.vo.data.GoodsAnalysisOverviewVO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* 看数据-商品洞察
*/
@Controller
@RequestMapping
(
"data-goods-analysis"
)
@Slf4j
public
class
GoodsAnalysisController
{
@Autowired
private
StaffApiService
staffApiService
;
@Autowired
private
StoreAuthUtils
storeAuthUtils
;
@Autowired
private
ClerkService
clerkService
;
/**
* 商品洞察看板(店长、区经)
* @param qo
* @return
*/
@RequestMapping
(
value
=
"get-overview-of-manager"
)
@ResponseBody
public
RestResponse
<
GoodsAnalysisOverviewVO
>
getOverviewOfManager
(
@RequestBody
GoodsAnalysisOverviewQO
qo
)
{
// boolean isManager = staffApiService.isManager(qo.getClerkId());
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
jsonObject
.
put
(
"days"
,
storeAuthUtils
.
getDays
(
qo
.
getStartDate
(),
qo
.
getEndDate
()));
return
RestResponse
.
successResult
(
storeAuthUtils
.
getPageOverview
(
jsonObject
,
"data_pro_pref_ent_overview"
,
GoodsAnalysisOverviewVO
.
class
));
}
/**
* 导购明细(店长、区经)
* @param qo
* @return
*/
@RequestMapping
(
value
=
"get-clerk-detail-of-manager"
)
@ResponseBody
public
RestResponse
<
Page
<
ClerkUseDetailVO
>>
getClerkDetailOfManager
(
@RequestBody
GoodsAnalysisClerkDetailQO
qo
)
{
boolean
isFirstPage
=
qo
.
getPageNum
()
==
1
;
List
<
ClerkListDTO
>
clerkList
=
clerkService
.
getClerkByStoreIdOfAllStatus
(
qo
.
getEnterpriseId
(),
qo
.
getStoreId
());
List
<
String
>
deleteList
=
new
ArrayList
<>();
List
<
String
>
normalList
=
new
ArrayList
<>();
List
<
String
>
allList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
clerkList
))
{
for
(
ClerkListDTO
dto
:
clerkList
)
{
Integer
status
=
dto
.
getStatus
();
allList
.
add
(
dto
.
getClerkId
());
if
(
status
!=
null
&&
status
==
0
)
{
deleteList
.
add
(
dto
.
getClerkId
());
}
else
{
normalList
.
add
(
dto
.
getClerkId
());
}
}
}
if
(
CollectionUtils
.
isEmpty
(
deleteList
))
{
deleteList
.
add
(
"no_delete_clerk_id"
);
}
if
(
CollectionUtils
.
isEmpty
(
normalList
))
{
normalList
.
add
(
"no_normal_clerk_id"
);
}
if
(
CollectionUtils
.
isEmpty
(
allList
))
{
allList
.
add
(
"no_clerk_id"
);
}
//转化金额
qo
.
setOrderByFields
(
qo
.
getOrderByFields
()
==
null
?
12
:
qo
.
getOrderByFields
());
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
jsonObject
.
put
(
"clerkId"
,
normalList
.
stream
().
collect
(
Collectors
.
joining
(
","
)));
//8:合计 非8:列表
jsonObject
.
put
(
"storeGroup"
,
"1"
);
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
"data_pro_pref_clerk_use_detail"
);
Page
page
=
DataApiUtils
.
getPageData
(
res
);
List
<
JSONObject
>
pageList
=
page
.
getResult
();
if
(
pageList
==
null
)
{
pageList
=
new
ArrayList
<>();
}
if
(
isFirstPage
)
{
jsonObject
.
put
(
"clerkId"
,
allList
.
stream
().
collect
(
Collectors
.
joining
(
","
)));
JSONObject
allTotal
=
storeAuthUtils
.
getTotalJson
(
jsonObject
,
"data_pro_pref_clerk_use_detail"
);
if
(
allTotal
!=
null
)
{
allTotal
.
put
(
"clerkName"
,
"门店"
);
pageList
.
add
(
0
,
allTotal
);
}
}
int
totalPage
=
page
.
getTotalCount
()
%
page
.
getPageSize
()
!=
0
?
page
.
getTotalCount
()
/
page
.
getPageSize
()
+
1
:
page
.
getTotalCount
()
/
page
.
getPageSize
();
boolean
isLastPage
=
totalPage
==
qo
.
getPageNum
();
if
(
isLastPage
)
{
// 最后一页添加离职导购数据
jsonObject
.
put
(
"clerkId"
,
deleteList
.
stream
().
collect
(
Collectors
.
joining
(
","
)));
JSONObject
deleteTotal
=
storeAuthUtils
.
getTotalJson
(
jsonObject
,
"data_pro_pref_clerk_use_detail"
);
if
(
deleteTotal
!=
null
)
{
deleteTotal
.
put
(
"clerkName"
,
"离职导购(汇总)"
);
pageList
.
add
(
deleteTotal
);
}
}
page
.
setResult
(
JSONArray
.
parseArray
(
JSON
.
toJSONString
(
pageList
),
ClerkUseDetailVO
.
class
));
return
RestResponse
.
successResult
(
page
);
}
/**
* 时间趋势(店长)
* @param qo
* @return
*/
@RequestMapping
(
value
=
"get-date-trend-of-manager"
)
@ResponseBody
public
RestResponse
<
Page
<
GoodsAnalysisDateTrendVO
>>
getDateTrendOfManager
(
@RequestBody
GoodsAnalysisClerkDetailQO
qo
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
"data_pro_pref_ent_date_overview"
);
Page
<
GoodsAnalysisDateTrendVO
>
page
=
DataApiUtils
.
getPageData
(
res
,
GoodsAnalysisDateTrendVO
.
class
);
return
RestResponse
.
successResult
(
page
);
}
/**
* 导购商品看板
* @param qo
* @return
*/
@RequestMapping
(
value
=
"get-overview-of-clerk"
)
@ResponseBody
public
RestResponse
<
ClerkUseDetailVO
>
getOverviewOfClerk
(
@RequestBody
GoodsAnalysisOverviewQO
qo
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
jsonObject
.
put
(
"clerkId"
,
qo
.
getClerkId
());
jsonObject
.
put
(
"storeGroup"
,
"1"
);
return
RestResponse
.
successResult
(
storeAuthUtils
.
getPageOverview
(
jsonObject
,
"data_pro_pref_clerk_use_detail"
,
ClerkUseDetailVO
.
class
));
}
/**
* 导购趋势
* @param qo
* @return
*/
@RequestMapping
(
value
=
"get-date-trend-of-clerk"
)
@ResponseBody
public
RestResponse
<
Page
<
ClerkDateTrendVO
>>
getDateTrendOfClerk
(
@RequestBody
GoodsAnalysisClerkDetailQO
qo
)
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
qo
);
jsonObject
.
put
(
"clerkId"
,
qo
.
getClerkId
());
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonObject
.
toJSONString
(),
"data_pro_pref_clerk_date_overview"
);
Page
<
ClerkDateTrendVO
>
page
=
DataApiUtils
.
getPageData
(
res
,
ClerkDateTrendVO
.
class
);
return
RestResponse
.
successResult
(
page
);
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/content/log/RecommendShareLogQO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
content
.
log
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @author shangfeng
* @date 2024-08-27 16:57:54
*/
public
class
RecommendShareLogQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
2329468480342306582L
;
/**
* 企业id
*/
private
String
enterpriseId
;
/**
* 微信企业id
*/
private
String
wxEnterpriseId
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 商品id
*/
private
List
<
String
>
goodsIdList
;
/**
* 成员id
*/
private
String
staffId
;
/**
* 会员信息
*/
private
List
<
MemberInfo
>
memberInfoList
;
/**
* 微信unionId
*/
private
String
unionId
;
/**
* 额外数据
*/
private
String
extend
;
public
static
class
MemberInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6888489586106817983L
;
private
String
memberId
;
private
String
externalUserId
;
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
String
getExternalUserId
()
{
return
externalUserId
;
}
public
void
setExternalUserId
(
String
externalUserId
)
{
this
.
externalUserId
=
externalUserId
;
}
}
public
String
getEnterpriseId
()
{
return
enterpriseId
;
}
public
void
setEnterpriseId
(
String
enterpriseId
)
{
this
.
enterpriseId
=
enterpriseId
;
}
public
String
getWxEnterpriseId
()
{
return
wxEnterpriseId
;
}
public
void
setWxEnterpriseId
(
String
wxEnterpriseId
)
{
this
.
wxEnterpriseId
=
wxEnterpriseId
;
}
public
String
getStoreId
()
{
return
storeId
;
}
public
void
setStoreId
(
String
storeId
)
{
this
.
storeId
=
storeId
;
}
public
String
getClerkId
()
{
return
clerkId
;
}
public
void
setClerkId
(
String
clerkId
)
{
this
.
clerkId
=
clerkId
;
}
public
List
<
String
>
getGoodsIdList
()
{
return
goodsIdList
;
}
public
void
setGoodsIdList
(
List
<
String
>
goodsIdList
)
{
this
.
goodsIdList
=
goodsIdList
;
}
public
String
getStaffId
()
{
return
staffId
;
}
public
void
setStaffId
(
String
staffId
)
{
this
.
staffId
=
staffId
;
}
public
List
<
MemberInfo
>
getMemberInfoList
()
{
return
memberInfoList
;
}
public
void
setMemberInfoList
(
List
<
MemberInfo
>
memberInfoList
)
{
this
.
memberInfoList
=
memberInfoList
;
}
public
String
getUnionId
()
{
return
unionId
;
}
public
void
setUnionId
(
String
unionId
)
{
this
.
unionId
=
unionId
;
}
public
String
getExtend
()
{
return
extend
;
}
public
void
setExtend
(
String
extend
)
{
this
.
extend
=
extend
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/data/goodsanalysis/GoodsAnalysisClerkDetailQO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
data
.
goodsanalysis
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
GoodsAnalysisClerkDetailQO
implements
Serializable
{
/**
* 排序字段
*/
private
Integer
orderByFields
;
/**
* 排序类型 1升序 2降序
*/
private
Integer
orderByType
;
private
String
startDate
;
private
String
endDate
;
private
Integer
pageNum
;
private
Integer
pageSize
;
private
String
storeId
;
@JSONField
(
serialize
=
false
)
private
String
clerkId
;
private
String
enterpriseId
;
public
Integer
getPageNum
()
{
return
pageNum
==
null
?
1
:
pageNum
;
}
public
Integer
getPageSize
()
{
return
pageSize
==
null
?
10
:
pageSize
;
}
public
Integer
getOrderByType
()
{
return
orderByType
==
null
?
2
:
orderByType
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/data/goodsanalysis/GoodsAnalysisOverviewQO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
data
.
goodsanalysis
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
GoodsAnalysisOverviewQO
implements
Serializable
{
private
String
storeId
;
/**
*
*/
@JSONField
(
serialize
=
false
)
private
String
clerkId
;
private
String
startDate
;
private
String
endDate
;
private
String
enterpriseId
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/utils/StoreAuthUtils.java
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.DataApiUtils
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -8,8 +13,10 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.text.SimpleDateFormat
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
/**
* @Author guojx
...
...
@@ -22,6 +29,16 @@ public class StoreAuthUtils {
@Autowired
private
StaffApiService
staffApiService
;
public
JSONObject
getTotalJson
(
JSONObject
param
,
String
apolloKey
)
{
Map
<
String
,
Object
>
totalRes
=
DataApiUtils
.
http
(
param
.
toJSONString
(),
apolloKey
);
List
<
JSONObject
>
totalList
=
DataApiUtils
.
getPageList
(
totalRes
);
if
(
CollectionUtils
.
isEmpty
(
totalList
))
{
return
null
;
}
JSONObject
total
=
totalList
.
get
(
0
);
return
total
;
}
/**
* 查询区经角色下管辖的门店权限
* @param clerkId
...
...
@@ -41,4 +58,43 @@ public class StoreAuthUtils {
}
return
storeIds
;
}
public
<
T
>
T
getPageOverview
(
JSONObject
jsonParam
,
String
apolloKey
,
Class
clazz
)
{
List
<
T
>
list
=
getPageTrend
(
jsonParam
,
apolloKey
,
clazz
,
null
);
if
(
list
!=
null
)
{
return
list
.
get
(
0
);
}
return
null
;
}
public
<
T
>
List
<
T
>
getPageTrend
(
JSONObject
jsonParam
,
String
apolloKey
,
Class
clazz
,
Integer
pageSize
)
{
if
(
jsonParam
==
null
)
{
jsonParam
=
new
JSONObject
();
}
jsonParam
.
put
(
"pageNum"
,
1
);
jsonParam
.
put
(
"orderByFields"
,
1
);
jsonParam
.
put
(
"orderByType"
,
1
);
jsonParam
.
put
(
"pageSize"
,
pageSize
==
null
?
1
:
pageSize
);
if
(!
jsonParam
.
containsKey
(
"storeGroup"
))
{
jsonParam
.
put
(
"storeGroup"
,
8
);
}
Map
<
String
,
Object
>
res
=
DataApiUtils
.
http
(
jsonParam
.
toJSONString
(),
apolloKey
);
List
<
JSONObject
>
list
=
DataApiUtils
.
getPageList
(
res
);
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
return
(
List
<
T
>)
JSONArray
.
parseArray
(
JSON
.
toJSONString
(
list
),
clazz
);
}
return
null
;
}
public
Integer
getDays
(
String
startDate
,
String
endDate
)
{
if
(
StringUtils
.
isNotBlank
(
startDate
)
&&
StringUtils
.
isNotBlank
(
endDate
))
{
try
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
DateUtil
.
daysBetween
(
sdf
.
parse
(
startDate
),
sdf
.
parse
(
endDate
))
+
1
;
}
catch
(
Exception
e
)
{
}
}
return
null
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/data/ClerkDateTrendVO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
data
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author guojx
* @Date 2024/6/26 13:36
*/
@Data
public
class
ClerkDateTrendVO
implements
Serializable
{
/**
* 1人找货次数
*/
private
Long
perToProCnt
;
/**
* 2货找人次数
*/
private
Long
proToPerCnt
;
/**
* 3使用天数
*/
private
Long
useDay
;
/**
* 4推荐商品数量
*/
private
Long
shareProCnt
;
/**
* 5触达客户数
*/
private
Long
touchNum
;
/**
* 6商城转化客户数
*/
private
Long
onlineConvsNum
;
/**
* 7商城转化金额
*/
private
Double
onlineConvsPayAmt
;
/**
* 8线下转化客户数
*/
private
Long
offlineConvsNum
;
/**
* 9线下转化金额
*/
private
Double
offlineConvsPayAmt
;
/**
* 10商城转化商品数
*/
private
Long
onlineConvsProCnt
;
/**
* 11线下转化商品数
*/
private
Long
offlineConvsProCnt
;
/**
* 12转化金额
*/
private
Double
convsPayAmt
;
/**
* 13转化客户数
*/
private
Long
convsNum
;
/**
* 14转化商品数
*/
private
Long
convsProCnt
;
/**
* 15点击客户数
*/
private
Double
clickNum
;
/**
* 16点击率
*/
private
Double
clickRate
;
/**
* 17转化率
*/
private
Double
convsRate
;
/**
*
*/
private
String
clerkCode
;
private
String
clerkName
;
private
String
storeName
;
private
String
storeCode
;
/**
* 日期
*/
private
String
bizDate
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/data/ClerkUseDetailVO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
data
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author guojx
* @Date 2024/6/26 13:36
*/
@Data
public
class
ClerkUseDetailVO
implements
Serializable
{
/**
* 1人找货次数
*/
private
Long
perToProCnt
;
/**
* 2货找人次数
*/
private
Long
proToPerCnt
;
/**
* 3使用天数
*/
private
Long
useDay
;
/**
* 4推荐商品数量
*/
private
Long
shareProCnt
;
/**
* 5触达客户数
*/
private
Long
touchNum
;
/**
* 6商城转化客户数
*/
private
Long
onlineConvsNum
;
/**
* 7商城转化金额
*/
private
Double
onlineConvsPayAmt
;
/**
* 8线下转化客户数
*/
private
Long
offlineConvsNum
;
/**
* 9线下转化金额
*/
private
Double
offlineConvsPayAmt
;
/**
* 10商城转化商品数
*/
private
Long
onlineConvsProCnt
;
/**
* 11线下转化商品数
*/
private
Long
offlineConvsProCnt
;
/**
* 12转化金额
*/
private
Double
convsPayAmt
;
/**
* 13转化客户数
*/
private
Long
convsNum
;
/**
* 14转化商品数
*/
private
Long
convsProCnt
;
/**
* 15点击客户数
*/
private
Double
clickNum
;
/**
*
*/
private
String
clerkCode
;
private
String
clerkName
;
private
String
storeName
;
private
String
storeCode
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/data/GoodsAnalysisDateTrendVO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
data
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
GoodsAnalysisDateTrendVO
implements
Serializable
{
/**
* 1推荐商品数
*/
private
Long
shareProCnt
;
/**
* 2转化商品数
*/
private
Long
convsProCnt
;
/**
* 3转化金额
*/
private
Double
convsPayAmt
;
/**
* 4商城转化商品数
*/
private
Long
onlineConvsProCnt
;
/**
* 5商城转化客户数
*/
private
Long
onlineConvsNum
;
/**
* 6商城转化金额
*/
private
Double
onlineConvsPayAmt
;
/**
* 7线下转化商品数
*/
private
Long
offlineConvsProCnt
;
/**
* 8线下转化客户数
*/
private
Long
offlineConvsNum
;
/**
* 9线下转化金额
*/
private
Double
offlineConvsPayAmt
;
/**
* 10访问导购数
*/
private
Long
visitNum
;
/**
* 11使用导购数
*/
private
Long
useNum
;
/**
* 12使用率
*/
private
Double
useRate
;
/**
* 13触达客户数
*/
private
Long
touchNum
;
/**
* 14点击客户数
*/
private
Long
clickNum
;
/**
* 15点击率
*/
private
Double
clickRate
;
/**
* 16转化客户数
*/
private
Long
convsNum
;
/**
* 17转化率
*/
private
Double
convsRate
;
/**
* 18人找货次数
*/
private
Long
perToProCnt
;
/**
* 20分享商品转化数
*/
private
Long
proToPerCnt
;
/**
* 20分享商品转化数
*/
private
Long
shareConvsProCnt
;
/**
* 日期
*/
private
String
bizDate
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/data/GoodsAnalysisOverviewVO.java
0 → 100644
View file @
75c1ae02
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
data
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Author guojx
* @Date 2024/9/02 09:30
*/
@Data
public
class
GoodsAnalysisOverviewVO
implements
Serializable
{
/**
* 1推荐商品数
*/
private
Long
shareProCnt
;
/**
* 2转化商品数
*/
private
Long
convsProCnt
;
/**
* 3转化金额
*/
private
Double
convsPayAmt
;
/**
* 10日均访问导购数
*/
private
Double
avgVisitNum
;
/**
* 11日均使用导购数
*/
private
Double
avgUseNum
;
/**
* 13触达客户数
*/
private
Long
touchNum
;
/**
* 16转化客户数
*/
private
Long
convsNum
;
}
haoban-manage3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
View file @
75c1ae02
...
...
@@ -177,4 +177,7 @@
<dubbo:reference
id=
"memberExtraPropertyApiService"
interface=
"com.gic.member.api.service.extra.MemberExtraPropertyApiService"
timeout=
"100000"
retries=
"0"
check=
"false"
/>
</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