Commit 1ab951b6 by songyinghui

Merge remote-tracking branch 'origin/master' into feature-wm-data

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/InteractRecordApiServiceImpl.java
parents e5f4054a bf1fb41d
package com.gic.haoban.manage.api;
import java.io.Serializable;
/**
* 会员和导购加的好友列表
*/
public class ExternalUserClerkDTO implements Serializable {
private String memberId ;
private String clerkId ;
private String storeId ;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
}
......@@ -30,6 +30,16 @@ public class MemberUnionidWechatAccountQDTO implements Serializable {
*/
private String sceneStr;
private boolean eventFlag = false ;
public boolean isEventFlag() {
return eventFlag;
}
public void setEventFlag(boolean eventFlag) {
this.eventFlag = eventFlag;
}
public String getEnterpriseId() {
return enterpriseId;
}
......
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.ExternalUserClerkDTO;
import com.gic.haoban.manage.api.dto.*;
import java.util.Date;
......@@ -180,6 +181,8 @@ public interface ExternalClerkRelatedApiService {
// 0 删除会员 1合并会员 2会员换绑
void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type);
void delByMemberIdAndEnterpriseIdEvent(String memberId, String enterpriseId, String mergeMemberId, int type);
/**
* 导购和会员是否好友关系,true是好友
*
......@@ -321,4 +324,12 @@ public interface ExternalClerkRelatedApiService {
*/
com.gic.api.base.commons.ServiceResponse<String> getMemberIdByExternalId(String wxEnterpriseId,String externalUserId);
/**
* 查询会员和那些导购加好友
* @param enterpriseId
* @param memberId
* @return
*/
List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId , String memberId) ;
}
......@@ -26,4 +26,13 @@ public interface HaobanCommonMQApiService {
public void noticeMemberMQ(String params) ;
// 会员换绑
public void memberEventChange(String params) ;
// 会员合并
public void memberEventMerge(String params) ;
// 会员注销
public void memberEventDel(String params) ;
// 会员扫码关注
public void memberEventWechat(String params) ;
}
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import com.gic.commons.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -33,8 +35,9 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
String unionid = dto.getUnionid() ;
// unionid不保存,但需要传递
dto.setUnionid(null);
mapper.insert(EntityUtil.changeEntityByJSON(MemberUnionidRelated.class, dto));
// mapper.insert(EntityUtil.changeEntityByJSON(MemberUnionidRelated.class, dto));
dto.setUnionid(unionid);
dto.setMemberUnionidRelatedId(ToolUtil.randomUUID());
return dto.getMemberUnionidRelatedId();
}
......
......@@ -332,15 +332,19 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService {
if (ObjectUtil.isNull(noticeMessageTypeEnum)) {
return ServiceResponse.failure("-1", "模版枚举不存在");
}
noticeMessageHandler.sendMessage(NoticeMessageForm.builder()
.messageCode(noticeMessageTypeEnum.getMessageCode())
.mqRouterCode(noticeMessageTypeEnum.getRouterCode())
.businessId(notifyMessageBatchQDTO.getOptTargetId())
.createTime(new Date())
.enterpriseId(notifyMessageBatchQDTO.getEnterpriseId())
.uniqueKey(UniqueIdUtils.uniqueLongHex())
.userIdList(relationList.stream().map(StaffClerkRelationDTO::getClerkId).distinct().collect(Collectors.toList()))
.variableMap(variableMap).build());
List<String> userIdList = relationList.stream().map(StaffClerkRelationDTO::getClerkId).distinct().collect(Collectors.toList());
List<List<String>> listList = ListUtil.split(userIdList, 1000);
for (List<String> list : listList) {
noticeMessageHandler.sendMessage(NoticeMessageForm.builder()
.messageCode(noticeMessageTypeEnum.getMessageCode())
.mqRouterCode(noticeMessageTypeEnum.getRouterCode())
.businessId(notifyMessageBatchQDTO.getOptTargetId())
.createTime(new Date())
.enterpriseId(notifyMessageBatchQDTO.getEnterpriseId())
.uniqueKey(UniqueIdUtils.uniqueLongHex())
.userIdList(list)
.variableMap(variableMap).build());
}
} catch (Exception e) {
logger.error("发送消息通知失败",e);
}
......
......@@ -16,6 +16,7 @@ import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.base.api.common.errCode.HaoBanErrCodeCommon;
import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.manage.api.ExternalUserClerkDTO;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskTypeEnum;
......@@ -35,6 +36,7 @@ import com.gic.haoban.manage.service.pojo.QywxTagSyncInfoPojo;
import com.gic.haoban.manage.service.service.ExternalClerkRelatedService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.MemberSourceDetailDTO;
import com.gic.member.api.dto.MemberSourceShowDTO;
......@@ -404,8 +406,15 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
return tabHaobanExternalClerkRelatedMapper.listStoreIdByMemberId(memberId , addCreateTime);
}
@Override
public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type) {
if(EventUtils.isOpenEvent()) {
return ;
}
this.delByMemberIdAndEnterpriseIdEvent(memberId,enterpriseId,mergeMemberId,type);
}
@Override
public void delByMemberIdAndEnterpriseIdEvent(String memberId, String enterpriseId, String mergeMemberId, int type) {
// 0 删除会员 1合并会员 2会员换绑
if(type==0) {
log.info("删除会员,memberId:{}", memberId);
......@@ -445,7 +454,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
}
}
}
@Override
public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId) {
log.info("删除会员或者合并会员,memberId:{},enterpriseId:{},mergeMemberId:{}", memberId, enterpriseId, mergeMemberId);
......@@ -785,4 +794,22 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
public com.gic.api.base.commons.ServiceResponse<String> getMemberIdByExternalId(String wxEnterpriseId, String externalUserId) {
return com.gic.api.base.commons.ServiceResponse.success(externalClerkRelatedService.getMemberIdByExternalId(wxEnterpriseId,externalUserId));
}
@Override
public List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId, String memberId) {
log.info("查询会员导购好友={}",memberId);
List<TabHaobanExternalClerkRelated> list = this.externalClerkRelatedService.getAddTimeByMemberId(memberId,enterpriseId,"1") ;
if(CollectionUtils.isEmpty(list)) {
return null;
}
List<ExternalUserClerkDTO> retList = list.stream().filter(o->StringUtils.isNotBlank(o.getClerkId())).map(o->{
ExternalUserClerkDTO dto = new ExternalUserClerkDTO();
dto.setClerkId(o.getClerkId());
dto.setStoreId(o.getStoreId());
dto.setMemberId(memberId);
return dto ;
}).collect(Collectors.toList());
log.info("好友={}",JSONObject.toJSONString(retList));
return retList;
}
}
......@@ -5,6 +5,12 @@ import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.commons.util.StringUtil;
import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.member.api.dto.MemberInfoChangeNotifyDTO;
import com.gic.member.api.dto.event.wechat.WeChatOfficialAccountEventParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -39,6 +45,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService ;
@Autowired
private ExternalClerkRelatedApiService externalClerkRelatedApiService ;
@Autowired
private StaffClerkRelationService staffClerkRelationService ;
@Override
......@@ -132,4 +140,99 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
log.error("发送MQ异常");
}
}
@Override
public void memberEventChange(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员换绑事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
String changeBindMemberId = json.getString("changeBindMemberId") ;
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(memberId,enterpriseId,changeBindMemberId,2);
}
@Override
public void memberEventMerge(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员合并事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
JSONObject delMemberObj = json.getJSONObject("delMember") ;
if(null == delMemberObj) {
log.info("删除会员为空,不处理");
return ;
}
String delMemberId = delMemberObj.getString("memberId") ;
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(delMemberId, enterpriseId, memberId, 1);
// 内容中台
MemberInfoChangeNotifyDTO dto = new MemberInfoChangeNotifyDTO();
dto.setMemberId(delMemberId);
dto.setMergeMemberId(memberId);
dto.setEnterpriseId(enterpriseId);
dto.setOpt(2);
JSONObject msg = JSONObject.parseObject(JSON.toJSONString(dto)) ;
msg.put("eventFlag",1) ;
try {
GICMQClientUtil.getClientInstance().sendMessage("memberIdChangeNotify", msg.toJSONString());
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
@Override
public void memberEventDel(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员注销事件={}",params);
JSONObject json = JSONObject.parseObject(params) ;
String memberId = json.getString("memberId") ;
String enterpriseId = json.getString("enterpriseId") ;
boolean mergeDel = json.getBooleanValue("mergeDel") ;
if(!mergeDel) {
this.externalClerkRelatedApiService.delByMemberIdAndEnterpriseIdEvent(memberId, enterpriseId, null, 0);
}
}
@Override
public void memberEventWechat(String params) {
if(!EventUtils.isOpenEvent()) {
return ;
}
log.info("会员扫码关注事件={}",params);
WeChatOfficialAccountEventParam json = JSONObject.parseObject(params,WeChatOfficialAccountEventParam.class) ;
String memberId = json.getMemberId() ;
String unionid = json.getUnionId() ;
if (StringUtil.isBlankVerifyMinusOne(memberId) || StringUtil.isBlankVerifyMinusOne(unionid)) {
log.warn("memberId、unionid为空,不通知");
return;
}
String enterpriseId = json.getEnterpriseId() ;
String openId = json.getOpenId() ;
String qrcodeParam = json.getQrCode() ;
try {
MemberUnionidWechatAccountQDTO dto = new MemberUnionidWechatAccountQDTO();
dto.setEnterpriseId(enterpriseId);
dto.setUnionid(unionid);
dto.setOpenId(openId);
dto.setSceneStr(qrcodeParam);
dto.setMemberId(memberId);
dto.setEventFlag(true);
if (qrcodeParam != null && qrcodeParam.startsWith("QWHY")) {
GICMQClientUtil.getClientInstance().sendMessage("addMemberUnionidWechatAccountByClerkMq", JSON.toJSONString(dto));
} else {
GICMQClientUtil.getClientInstance().sendMessage("addMemberUnionidWechatAccountMq", JSON.toJSONString(dto));
}
} catch (Exception e) {
log.error("通知好办失败", e);
}
}
}
......@@ -4,6 +4,7 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.gic.haoban.manage.service.util.EventUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -1643,6 +1644,16 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return;
}
MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO = JSON.parseObject(res, MemberUnionidWechatAccountQDTO.class);
boolean eventFlag = memberUnionidWechatAccountQDTO.isEventFlag() ;
if(EventUtils.isOpenEvent()) {
if(!eventFlag) {
return ;
}
}else {
if(eventFlag) {
return ;
}
}
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
......@@ -1720,6 +1731,16 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return;
}
MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO = JSON.parseObject(res, MemberUnionidWechatAccountQDTO.class);
boolean eventFlag = memberUnionidWechatAccountQDTO.isEventFlag() ;
if(EventUtils.isOpenEvent()) {
if(!eventFlag) {
return ;
}
}else {
if(eventFlag) {
return ;
}
}
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
......
......@@ -146,7 +146,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
}
}
items = needAddList ;
logger.info("更新标签,新增={}",needAddList);
logger.info("更新标签,新增={}",JSONObject.toJSONString(needAddList));
}
if(CollectionUtils.isEmpty(items)) {
logger.info("没有需要处理的标签");
......
package com.gic.haoban.manage.service.service.out.impl.content;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.GICMQClientUtil;
......@@ -24,6 +25,7 @@ import com.gic.order.api.constant.OrderChannelEnum;
import com.gic.order.api.dto.OrderSaveNotifyDTO;
import com.gic.order.api.dto.resp.OrderInfoResp;
import com.gic.order.api.service.member.MemberOrderReadApiService;
import com.gic.haoban.manage.service.util.EventUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -115,6 +117,19 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
log.info("会员id发生变化 {}", params);
return ServiceResponse.success();
}
JSONObject jsonObject = JSONObject.parseObject(params);
int eventFlag = jsonObject.getIntValue("eventFlag") ;
if(EventUtils.isOpenEvent()) {
if(eventFlag == 0) {
log.info("非事件入口,不处理");
return ServiceResponse.success();
}
}else {
if(eventFlag == 1) {
log.info("事件入口,不处理");
return ServiceResponse.success();
}
}
MemberAttrChangeBO memberAttrChangeBO = JSON.parseObject(params, MemberAttrChangeBO.class);
if (memberAttrChangeBO == null) {
return ServiceResponse.success();
......
......@@ -20,6 +20,7 @@ public class WxUserAddLogApiServiceImpl implements WxUserAddLogApiService {
private WxUserAddLogService wxUserAddLogService ;
@Override
public ServiceResponse<Page<WxUserAddLogDTO>> page(WxUserAddLogSearchQDTO qdto, BasePageInfo pageInfo) {
qdto.setAddChannel(null);
Page<WxUserAddLogBO> page = this.wxUserAddLogService.page(qdto, pageInfo) ;
Page<WxUserAddLogDTO> resultPage = PageHelperUtils.changePageToCurrentPage(page, WxUserAddLogDTO.class);
return ServiceResponse.success(resultPage);
......
package com.gic.haoban.manage.service.util;
import com.gic.redis.data.util.RedisUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class EventUtils {
private static Logger log = LogManager.getLogger(EventUtils.class);
public static boolean isOpenEvent() {
Object o = RedisUtil.getCache("open-marketing-member-event") ;
if(null == o) {
log.info("未开启事件-好办");
return false ;
}
log.info("开启事件-好办");
return true ;
}
}
package com.gic.haoban.manage.web.controller.data;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.web.qo.PageQo;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.StoreWidgetDTO;
import com.gic.enterprise.api.dto.data.DataIndexExplainDTO;
import com.gic.enterprise.api.dto.rank.StoreRankAreaDTO;
import com.gic.enterprise.api.dto.rank.StoreRankIndexDTO;
import com.gic.enterprise.api.service.StoreWidgetService;
import com.gic.enterprise.api.service.data.DataIndexApiService;
import com.gic.enterprise.api.service.rank.StoreRankApiService;
import com.gic.enterprise.service.CustomSettingApiService;
import com.gic.haoban.manage.web.vo.rank.IndexVO;
import com.gic.haoban.manage.web.vo.rank.StoreRankAreaVO;
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.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.*;
import java.util.stream.Collectors;
/**
* 单项排行榜
* @Author guojx
* @Date 2023/12/28 14:14
*/
@Controller
@RequestMapping("store-rank")
@Slf4j
public class StoreRankController {
@Autowired
private StoreRankApiService storeRankApiService;
@Autowired
private CustomSettingApiService customSettingApiService;
@Autowired
private StoreWidgetService storeWidgetService;
@Autowired
private DataIndexApiService dataIndexApiService;
public static final String RANK_INDEX_DB_NAME = "tab_store_pk_index_dict";
public static final String ORDER_FIELD = "custom_order_field_name";
public static final String ORDER_FIELD_DESC = "custom_order_field_name_desc";
/**
* 企业竞赛单项
* @param enterpriseId
* @return
*/
@RequestMapping(value = "sales-structure")
@ResponseBody
public RestResponse<List<IndexVO>> salesStructure(String enterpriseId, String storeId) {
Map<String, Object> queryMap = new HashMap<>();
queryMap.put(ORDER_FIELD, "indexSort");
queryMap.put(ORDER_FIELD_DESC, 1);
Page<JSONObject> page = customSettingApiService.page(RANK_INDEX_DB_NAME, queryMap, 1, 100).getResult();
List<JSONObject> list = page.getResult();
List<IndexVO> indexList = JSON.parseArray(JSON.toJSONString(list), IndexVO.class);
List<DataIndexExplainDTO> dictIndex = dataIndexApiService.listDataIndexExplain();
Map<String, DataIndexExplainDTO> map = dictIndex.stream().collect(Collectors.toMap(e -> e.getIndexCode(), e -> e));
for (IndexVO vo : indexList) {
DataIndexExplainDTO dto = map.get(vo.getIndexCode());
if (dto != null) {
vo.setIndexExample(dto.getIndexExample());
vo.setIndexName(dto.getIndexName());
vo.setApiColName(dto.getApiColName());
vo.setIndexExplain(dto.getIndexExplain());
vo.setIndexRemark(dto.getIndexRemark());
}
}
List<StoreRankIndexDTO> enterpriseIndexList = storeRankApiService.listStoreRankIndex(enterpriseId);
if (CollectionUtils.isEmpty(enterpriseIndexList)) {
return RestResponse.successResult(Collections.emptyList());
}
Set<String> set = enterpriseIndexList.stream().map(e -> e.getIndexCode()).collect(Collectors.toSet());
indexList = indexList.stream().filter(e -> set.contains(e.getIndexCode())).collect(Collectors.toList());
List<IndexVO> resultList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(indexList) && StringUtils.isNotBlank(storeId)) {
PageQo pageQo = new PageQo();
pageQo.setPageNum(1);
pageQo.setPageSize(1);
for (IndexVO temp : indexList) {
if (listStoreRankArea(pageQo, enterpriseId, temp.getIndexCode(), storeId).getResult().getTotalCount() > 0) {
resultList.add(temp);
}
}
return RestResponse.successResult(resultList);
}
return RestResponse.successResult(indexList);
}
/**
* 赛区列表
* @param pageQo
* @param enterpriseId
* @param indexCode
* @param storeId
* @return
*/
@RequestMapping("list-store-rank-area")
@ResponseBody
public RestResponse<Page<StoreRankAreaVO>> listStoreRankArea(PageQo pageQo, String enterpriseId, String indexCode, String storeId) {
List<String> authStoreIdList = new ArrayList<>();
if (StringUtils.isNotBlank(storeId)) {
authStoreIdList.add(storeId);
}
Page<StoreRankAreaDTO> page = storeRankApiService
.pageStoreRankArea(enterpriseId, indexCode, null, null, pageQo.getBasePageInfo(), authStoreIdList);
Page<StoreRankAreaVO> voPage = EntityUtil.changeEntityNew(Page.class, page);
List<StoreRankAreaVO> voList = EntityUtil.changeEntityListNew(StoreRankAreaVO.class, page.getResult());
if (CollectionUtils.isNotEmpty(voList)) {
for (StoreRankAreaVO vo : voList) {
StoreWidgetDTO storeWidgetDTO = storeWidgetService.getStoreWidgetBykey(vo.getStoreWidgetId());
if (storeWidgetDTO != null) {
//0:所有门店 1:门店类型 2:门店标签 3:门店区域 4:门店分组 5:部分门店
Integer selectType = storeWidgetDTO.getSelectType();
String areaName;
switch (selectType) {
case 0:
areaName = "所有门店";
break;
case 1:
areaName = "门店类型";
break;
case 2:
areaName = "门店标签";
break;
case 3:
areaName = "门店区域";
break;
case 4:
areaName = "门店分组";
break;
case 5:
areaName = "部分门店";
break;
default:
areaName = "未知";
}
vo.setAreaName(areaName);
}
}
}
voPage.setResult(voList);
return RestResponse.successResult(voPage);
}
}
package com.gic.haoban.manage.web.qo.data;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2023/11/23 9:13
*/
@Data
public class ClerkListQO implements Serializable {
/**
* 1:销售 2:会员
*/
private Integer queryDataType = 1;
/**
* 数据组配置的接口key。数据组提供的yapi文档上有
*/
private String apolloKey;
/**
* 组装的参数,JSON字符串.数据组提供的yapi文档上有.
* 销售:data_sales_perf_anal_cont_clerk_group 会员:
* 0: 'data_mbr_scale_stat_clerk_overview',
* 1: 'data_mbr_scale_stat_week_clerk_overview',
* 2: 'data_mbr_scale_stat_month_clerk_overview',
* 3: 'data_mbr_scale_stat_year_clerk_overview',
* 4: 'data_mbr_scale_stat_custm_clerk_overview'
* params里面的销售的storeGroup字段和会员的groupType字段不需要,如果有,也是无效,后端定值覆盖
*/
private String params;
}
package com.gic.haoban.manage.web.qo.data;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2023/12/26 14:32
*/
@Data
public class SalesStructureQO implements Serializable {
/**
* 1:新老客维度 2:生日会员 3:等级
*/
private Integer salesStructureType = 1;
/**
* 开始时间
*/
private String startDate;
/**
* 结束时间
*/
private String endDate;
/**
* 门店查询参数. 区经可以为空,查询所有管辖门店
*/
private String storeId;
/**
* 企业ID.
*/
private String enterpriseId;
/**
* 微信企业
*/
private String wxEnterpriseId;
/**
* 如果是区经,用于查询管辖门店权限
*/
private String clerkId;
}
......@@ -120,6 +120,18 @@ public class DateFillUtils {
return dateList;
}
public static List<String> getMonthOfYear(String date) {
List<String> dateList = new ArrayList<>();
for (int i = 1; i <= 12; i++) {
if (i < 10) {
dateList.add(date + "-0" + i);
} else {
dateList.add(date + "-" + i);
}
}
return dateList;
}
public static void main(String[] args) {
log.info("" + JSONObject.toJSONString(getWeek("2023-11-27")));
}
......
package com.gic.haoban.manage.web.vo.data;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2023/12/26 14:50
*/
@Data
public class SalesStructureVO implements Serializable {
/**
* 1:新老客维度 2:生日会员 3:等级
*/
private Integer salesStructureType = 1;
/**
* 实付金额
*/
private Double payAmt;
/**
* 消费人数
*/
private Integer csmeNum;
/**
* 有效订单数
*/
private Integer effOrderCnt;
/**
* 名称类型
*/
private String mbrType;
/**
* 实付金额占比
*/
private String payAmtRate;
/**
* 消费人数占比
*/
private String csmeNumRate;
/**
* 有效订单数占比
*/
private String effOrderCntRate;
}
package com.gic.haoban.manage.web.vo.rank;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author guojx
* @Date 2023/12/25 9:56
*/
@Data
public class IndexVO implements Serializable {
private String indexCode;
private String indexName;
private String indexExplain;
/**
* 前端使用:指标说明:若指标注释中有需要说明的
*/
private List<String> indexRemarkList;
/**
* 前端使用:指标例子
*/
private List<String> indexExampleList;
/**
* 指标说明:若指标注释中有需要说明的,英文分号隔开,可能多个。
*/
private String indexRemark;
/**
* 指标例子: 英文分号隔开,可能多个
*/
private String indexExample;
/**
* yapi文档上的驼峰字段名称
*/
private String apiColName;
/**
* 观云台原指标code
*/
private String itemId;
public List<String> getIndexRemarkList() {
if (StringUtils.isNotBlank(indexRemark)) {
return Arrays.stream(indexRemark.split(";")).collect(Collectors.toList());
}
return indexRemarkList;
}
public List<String> getIndexExampleList() {
if (StringUtils.isNotBlank(indexExample)) {
return Arrays.stream(indexExample.split(";")).collect(Collectors.toList());
}
return indexExampleList;
}
}
package com.gic.haoban.manage.web.vo.rank;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author guojx
* @Date 2023/12/25 15:44
*/
@Data
public class StoreRankAreaVO implements Serializable {
private String competitionAreaId;
/**
* 赛区范围
*/
private String areaName;
private String indexCode;
/**
* 赛区名称
*/
private String name;
/**
* 是否显示指标(0:否,1:是)
*/
private Integer showIndex;
/**
* 是否固化门店(0:否,1:是)
*/
private Integer fixedStore;
/**
* 管辖门店控件id
*/
private String storeWidgetId;
private String creatorUserId;
private String creatorName;
private Date createTime;
private Date updateTime;
private Integer storeCount;
}
......@@ -167,4 +167,7 @@
<dubbo:reference id="enterpriseChannelApiService" interface="com.gic.enterprise.api.service.EnterpriseChannelApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="storeRankApiService" interface="com.gic.enterprise.api.service.rank.StoreRankApiService" timeout="100000" retries="0" check="false" />
</beans>
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