Commit 55294af3 by xiehongfei

Merge branch 'feature/20250618-erqian' into 'master'

Feature/20250618 erqian

See merge request !3064
parents dfbe4484 166f1dc4
...@@ -35,10 +35,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -35,10 +35,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -64,7 +61,20 @@ public class EventTrackingController extends NewBaseController { ...@@ -64,7 +61,20 @@ public class EventTrackingController extends NewBaseController {
*/ */
@RequestMapping(value = "overview") @RequestMapping(value = "overview")
public RestResponse<WechatEventTrackingOverviewVO> overview(@RequestBody WechatOverviewQO qo) { public RestResponse<WechatEventTrackingOverviewVO> overview(@RequestBody WechatOverviewQO qo) {
Map<String, Object> res = DataApiUtils.http(getOverviewParam(qo).toJSONString(), "data_point_anal_hb_app_overview"); String jsonParam = null;
String apolloKey = "data_point_anal_hb_app_overview";
if (Objects.equals(qo.getClerkBizType(), 2)) {
apolloKey = "data_point_anal_hb_app_manage_overview";
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
jsonParam = jsonObject.toJSONString();
} else {
jsonParam = getOverviewParam(qo).toJSONString();
}
Map<String, Object> res = DataApiUtils.http(jsonParam, apolloKey);
List<JSONObject> list = DataApiUtils.getDataList(res); List<JSONObject> list = DataApiUtils.getDataList(res);
return RestResponse.successResult(CollectionUtils.isEmpty(list) ? new WechatEventTrackingOverviewVO() : JSONObject.parseObject(JSON.toJSONString(list.get(0)), WechatEventTrackingOverviewVO.class)); return RestResponse.successResult(CollectionUtils.isEmpty(list) ? new WechatEventTrackingOverviewVO() : JSONObject.parseObject(JSON.toJSONString(list.get(0)), WechatEventTrackingOverviewVO.class));
} }
...@@ -76,7 +86,20 @@ public class EventTrackingController extends NewBaseController { ...@@ -76,7 +86,20 @@ public class EventTrackingController extends NewBaseController {
*/ */
@RequestMapping(value = "trend") @RequestMapping(value = "trend")
public RestResponse<List<TrendVO>> trend(@RequestBody WechatOverviewQO qo) { public RestResponse<List<TrendVO>> trend(@RequestBody WechatOverviewQO qo) {
Map<String, Object> res = DataApiUtils.http(getOverviewParam(qo).toJSONString(), "data_point_anal_hb_app_trend"); String jsonParam = null;
String apolloKey = "data_point_anal_hb_app_trend";
if (Objects.equals(qo.getClerkBizType(), 2)) {
apolloKey = "data_point_anal_hb_app_manage_trend";
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
jsonParam = jsonObject.toJSONString();
} else {
jsonParam = getOverviewParam(qo).toJSONString();
}
Map<String, Object> res = DataApiUtils.http(jsonParam, apolloKey);
List<JSONObject> list = DataApiUtils.getDataList(res); List<JSONObject> list = DataApiUtils.getDataList(res);
Map<String, JSONObject> map = new HashMap<>(); Map<String, JSONObject> map = new HashMap<>();
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
...@@ -107,15 +130,26 @@ public class EventTrackingController extends NewBaseController { ...@@ -107,15 +130,26 @@ public class EventTrackingController extends NewBaseController {
*/ */
@RequestMapping(value = "view-module") @RequestMapping(value = "view-module")
public RestResponse<List<ViewModuleVO>> viewModule(@RequestBody WechatOverviewQO qo) { public RestResponse<List<ViewModuleVO>> viewModule(@RequestBody WechatOverviewQO qo) {
JSONObject jsonParam = getOverviewParam(qo); JSONObject jsonParam = null;
String apolloKey = "data_point_anal_hb_app_module";
if (Objects.equals(qo.getClerkBizType(), 2)) {
apolloKey = "data_point_anal_hb_app_manage_module";
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
jsonParam = jsonObject;
} else {
jsonParam = getOverviewParam(qo);
}
List<MapThreadHandlerRequest> list = new ArrayList<>(); List<MapThreadHandlerRequest> list = new ArrayList<>();
// 1 访问次数 2 访问人数 3 访问时长 // 1 访问次数 2 访问人数 3 访问时长
jsonParam.put("orderByFields", 1); jsonParam.put("orderByFields", 1);
list.add(new MapThreadHandlerRequest(jsonParam, "data_point_anal_hb_app_module", "1_visitCnt")); list.add(new MapThreadHandlerRequest(jsonParam, apolloKey, "1_visitCnt"));
jsonParam.put("orderByFields", 2); jsonParam.put("orderByFields", 2);
list.add(new MapThreadHandlerRequest(jsonParam, "data_point_anal_hb_app_module", "2_visitNum")); list.add(new MapThreadHandlerRequest(jsonParam, apolloKey, "2_visitNum"));
jsonParam.put("orderByFields", 3); jsonParam.put("orderByFields", 3);
list.add(new MapThreadHandlerRequest(jsonParam, "data_point_anal_hb_app_module", "3_visitTime")); list.add(new MapThreadHandlerRequest(jsonParam, apolloKey, "3_visitTime"));
Map<String, List<JSONObject>> map = ConcurrencyUtils.concurrencyDataForMap(list); Map<String, List<JSONObject>> map = ConcurrencyUtils.concurrencyDataForMap(list);
...@@ -229,7 +263,7 @@ public class EventTrackingController extends NewBaseController { ...@@ -229,7 +263,7 @@ public class EventTrackingController extends NewBaseController {
} }
/** /**
* 导购明细 * 导购/区经/督导明细
* @param qo * @param qo
* @return * @return
*/ */
...@@ -237,12 +271,20 @@ public class EventTrackingController extends NewBaseController { ...@@ -237,12 +271,20 @@ public class EventTrackingController extends NewBaseController {
public RestResponse<DataPageVO<WechatEventTrackingClerkVO>> clerk(@RequestBody WechatEventTrackingClerkDetailQO qo) { public RestResponse<DataPageVO<WechatEventTrackingClerkVO>> clerk(@RequestBody WechatEventTrackingClerkDetailQO qo) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
qo.dealWithParam(jsonObject); qo.dealWithParam(jsonObject);
String apolloKey = "data_point_anal_hb_app_clerk";
if (Objects.equals(qo.getClerkBizType(), 2)) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
apolloKey = "data_point_anal_hb_app_manage";
} else {
List<String> statusList = new ArrayList<>(); List<String> statusList = new ArrayList<>();
statusList.add("2"); statusList.add("2");
storeAuthUtils.setStoreGroupJsonParam(jsonObject, new StoreGroupCommonQO() storeAuthUtils.setStoreGroupJsonParam(jsonObject, new StoreGroupCommonQO()
.setStoreGroupId(qo.getStoreGroupId()).setStoreId(qo.getStoreId()).setStatusList(statusList)); .setStoreGroupId(qo.getStoreGroupId()).setStoreId(qo.getStoreId()).setStatusList(statusList));
}
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_point_anal_hb_app_clerk"); Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), apolloKey);
DataPageVO<WechatEventTrackingClerkVO> vo = new DataPageVO<>(); DataPageVO<WechatEventTrackingClerkVO> vo = new DataPageVO<>();
Page page = DataApiUtils.getPageData(res); Page page = DataApiUtils.getPageData(res);
vo.setTotalNum(page.getTotalCount()); vo.setTotalNum(page.getTotalCount());
...@@ -286,14 +328,28 @@ public class EventTrackingController extends NewBaseController { ...@@ -286,14 +328,28 @@ public class EventTrackingController extends NewBaseController {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
qo.dealWithParam(jsonObject); qo.dealWithParam(jsonObject);
//Excel的标题是字段进行计算
List<String> indexList = new ArrayList<>();
List<String> fieldList = new ArrayList<>();
if (Objects.equals(qo.getClerkBizType(), 2)) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
jsonObject.put("apolloKey", "data_point_anal_hb_app_manage");
indexList.add("区经/督导code");
fieldList.add("clerkCode");
indexList.add("区经/督导名称");
fieldList.add("clerkName");
task.setFileName("区经/督导明细数据-" + qo.getStartDate() + (StringUtils.isNotBlank(qo.getEndDate()) ? "_" + qo.getEndDate() : ""));
} else {
List<String> statusList = new ArrayList<>(); List<String> statusList = new ArrayList<>();
statusList.add("2"); statusList.add("2");
storeAuthUtils.setStoreGroupJsonParam(jsonObject, new StoreGroupCommonQO() storeAuthUtils.setStoreGroupJsonParam(jsonObject, new StoreGroupCommonQO()
.setStoreGroupId(qo.getStoreGroupId()).setStoreId(qo.getStoreId()).setStatusList(statusList)); .setStoreGroupId(qo.getStoreGroupId()).setStoreId(qo.getStoreId()).setStatusList(statusList));
jsonObject.put("apolloKey", "data_point_anal_hb_app_clerk"); jsonObject.put("apolloKey", "data_point_anal_hb_app_clerk");
//Excel的标题是字段进行计算
List<String> indexList = new ArrayList<>();
List<String> fieldList = new ArrayList<>();
indexList.add("导购code"); indexList.add("导购code");
fieldList.add("clerkCode"); fieldList.add("clerkCode");
...@@ -304,6 +360,9 @@ public class EventTrackingController extends NewBaseController { ...@@ -304,6 +360,9 @@ public class EventTrackingController extends NewBaseController {
indexList.add("归属门店code"); indexList.add("归属门店code");
fieldList.add("storeCode"); fieldList.add("storeCode");
task.setFileName("导购明细数据-" + qo.getStartDate() + (StringUtils.isNotBlank(qo.getEndDate()) ? "_" + qo.getEndDate() : ""));
}
indexList.add("是否绑定"); indexList.add("是否绑定");
fieldList.add("isBinding"); fieldList.add("isBinding");
indexList.add("是否登陆"); indexList.add("是否登陆");
...@@ -316,7 +375,6 @@ public class EventTrackingController extends NewBaseController { ...@@ -316,7 +375,6 @@ public class EventTrackingController extends NewBaseController {
fieldList.add("lastVisitTime"); fieldList.add("lastVisitTime");
task.setFileName("导购明细数据-" + qo.getStartDate() + (StringUtils.isNotBlank(qo.getEndDate()) ? "_" + qo.getEndDate() : ""));
task.setChannelName("数据-登录数据-好办使用详情"); task.setChannelName("数据-登录数据-好办使用详情");
task.setBucketName(BucketNameEnum.REPORT_50000.getName()); task.setBucketName(BucketNameEnum.REPORT_50000.getName());
jsonObject.put("indexList", indexList); jsonObject.put("indexList", indexList);
......
...@@ -6,12 +6,17 @@ import java.net.URLDecoder; ...@@ -6,12 +6,17 @@ import java.net.URLDecoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.servlet.http.Cookie; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.gic.api.base.commons.Page;
import com.gic.enterprise.api.dto.EnterpriseSettingDTO;
import com.gic.enterprise.api.dto.StoreWidgetDTO;
import com.gic.enterprise.api.service.StoreWidgetService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -88,6 +93,8 @@ public class LoginController extends WebBaseController { ...@@ -88,6 +93,8 @@ public class LoginController extends WebBaseController {
private HaobanUserApiService haobanUserApiService; private HaobanUserApiService haobanUserApiService;
@Autowired @Autowired
private RightService rightService ; private RightService rightService ;
@Autowired
private StoreWidgetService storeWidgetService;
/** /**
* 企微后台登录 * 企微后台登录
...@@ -442,12 +449,61 @@ public class LoginController extends WebBaseController { ...@@ -442,12 +449,61 @@ public class LoginController extends WebBaseController {
if(null != loginUser) { if(null != loginUser) {
logger.info("当前登录信息={}", JSON.toJSON(loginUser)); logger.info("当前登录信息={}", JSON.toJSON(loginUser));
vo = EntityUtil.changeEntityByOrika(WebLoginVO.class, loginUser); vo = EntityUtil.changeEntityByOrika(WebLoginVO.class, loginUser);
String clerkId = loginUser.getClerkId();
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
vo.setHasAllStorePermission(0);
if (null != clerkDTO) {
vo.setHasAllStorePermission(isAdminAuthStore(loginUser.getEnterpriseId(), clerkDTO) ? 1:0);
}
} }
String gicHost = this.getGicHost(); String gicHost = this.getGicHost();
vo.setGicHost(gicHost); vo.setGicHost(gicHost);
return this.success(vo); return this.success(vo);
} }
private boolean isAdminAuthStore(String enterpriseId, ClerkDTO clerkDTO) {
if (!isAuthEnterprise(enterpriseId)) {
return true;
}
boolean isAdmin = clerkDTO.getSuperAdmin() != null && clerkDTO.getSuperAdmin() == 1;
return isAdmin || StringUtils.isBlank(clerkDTO.getStoreWidgetId()) || isAllAuth(clerkDTO.getStoreWidgetId());
}
private boolean isAuthEnterprise(String enterpriseId) {
EnterpriseSettingDTO enterpriseSettingDTO = enterpriseService.getEnterpriseSettingByEnterpriseId(enterpriseId);
Integer enableAccessControl = enterpriseSettingDTO.getEnableAccessControl();
//是否开启权限控制
boolean isEnableAccessControl = enableAccessControl != null && enableAccessControl.intValue() == 1;
return isEnableAccessControl;
}
private boolean isAllAuth(String key) {
StoreWidgetDTO storeWidgetDTO = storeWidgetService.getStoreWidgetBykey(key);
if (storeWidgetDTO != null) {
if (storeWidgetDTO.getSelectType().intValue() == 0) {
logger.info("isAllAuth selectType 0");
return true;
}
if (storeWidgetDTO.getSelectType().intValue() == 4) {
logger.info("isAllAuth selectType 4");
Page page = new Page();
page.setPageSize(1);
page.setCurrentPage(1);
Page listRightData = storeWidgetService.listRightData(key, page, null);
logger.info("listRightData resp:{}", JSONObject.toJSONString(listRightData));
if (listRightData.getTotalCount() > 0) {
Object rightDataItem = listRightData.getResult().get(0);
JSONObject rightDataItemJsonObject = JSONObject.parseObject(JSONObject.toJSONString(rightDataItem));
if (Objects.equals(rightDataItemJsonObject.getString("name"), "所有门店")) {
return true;
}
}
}
}
return false;
}
@RequestMapping("get-login-session") @RequestMapping("get-login-session")
@IgnoreLogin @IgnoreLogin
public HaobanResponse getLoginSession() { public HaobanResponse getLoginSession() {
......
...@@ -34,7 +34,7 @@ public class WechatEventTrackingClerkDetailHandle extends DownloadHandlerAbstrac ...@@ -34,7 +34,7 @@ public class WechatEventTrackingClerkDetailHandle extends DownloadHandlerAbstrac
JSONObject jsonObject = JSON.parseObject(searchDataParams); JSONObject jsonObject = JSON.parseObject(searchDataParams);
jsonObject.put("pageNum", currentPage); jsonObject.put("pageNum", currentPage);
jsonObject.put("pageSize", getPageSize()); jsonObject.put("pageSize", getPageSize());
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_point_anal_hb_app_clerk"); Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), jsonObject.getString("apolloKey"));
List<JSONObject> list = DataApiUtils.getPageList(res); List<JSONObject> list = DataApiUtils.getPageList(res);
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
List<WechatEventTrackingClerkVO> result = JSONObject.parseArray(JSON.toJSONString(list), WechatEventTrackingClerkVO.class); List<WechatEventTrackingClerkVO> result = JSONObject.parseArray(JSON.toJSONString(list), WechatEventTrackingClerkVO.class);
......
...@@ -77,6 +77,11 @@ public class WechatEventTrackingClerkDetailQO implements Serializable { ...@@ -77,6 +77,11 @@ public class WechatEventTrackingClerkDetailQO implements Serializable {
*/ */
private String requestProject; private String requestProject;
/**
* 业务类型:1:导购,2:区经/督导
*/
private Integer clerkBizType = 1;
public Integer getDataApiOrderField() { public Integer getDataApiOrderField() {
Map<String, Integer> map = new HashMap<>(8); Map<String, Integer> map = new HashMap<>(8);
map.put("avgVisitTime", 1); map.put("avgVisitTime", 1);
......
...@@ -34,4 +34,9 @@ public class WechatOverviewQO implements Serializable { ...@@ -34,4 +34,9 @@ public class WechatOverviewQO implements Serializable {
* 门店ID。可为空 * 门店ID。可为空
*/ */
private String storeId; private String storeId;
/**
* 业务类型:1:导购,2:区经/督导
*/
private Integer clerkBizType = 1;
} }
...@@ -37,6 +37,11 @@ public class WebLoginVO implements Serializable { ...@@ -37,6 +37,11 @@ public class WebLoginVO implements Serializable {
//登录用户关联的企业是否是集团:1是0否 //登录用户关联的企业是否是集团:1是0否
private Integer isClique ; private Integer isClique ;
/**
* 是否有所有门店权限,1:是,0:否
*/
private Integer hasAllStorePermission;
public String getCliqueId() { public String getCliqueId() {
return cliqueId; return cliqueId;
} }
...@@ -183,4 +188,12 @@ public class WebLoginVO implements Serializable { ...@@ -183,4 +188,12 @@ public class WebLoginVO implements Serializable {
this.clerkPhone = clerkPhone; this.clerkPhone = clerkPhone;
return this; return this;
} }
public Integer getHasAllStorePermission() {
return hasAllStorePermission;
}
public void setHasAllStorePermission(Integer hasAllStorePermission) {
this.hasAllStorePermission = hasAllStorePermission;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment