Commit 1a272c42 by xiongjiangtao

Merge branch 'master' into feature-2024-08-喜好洞察优化

parents dc14b6c1 abf222cf
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
/**
* 会员加群、好友信息
*/
public class MemberGroupFriendDTO implements Serializable {
// 0好友 1群
private int type ;
private String clerkId ;
private String storeId ;
private Long groupChatId ;
private String remark ;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
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;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
import java.util.List;
public class OpenStaffImportDTO implements Serializable {
private String wxEnterpriseId ;
private String enterpriseId ;
private List<String> clerkCodeList ;
private String loginClerkId ;
private String loginName;
private String realName;
private String clerkCode ;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getLoginClerkId() {
return loginClerkId;
}
public void setLoginClerkId(String loginClerkId) {
this.loginClerkId = loginClerkId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public List<String> getClerkCodeList() {
return clerkCodeList;
}
public void setClerkCodeList(List<String> clerkCodeList) {
this.clerkCodeList = clerkCodeList;
}
}
...@@ -26,6 +26,17 @@ public class WxUserAddLogQDTO implements Serializable{ ...@@ -26,6 +26,17 @@ public class WxUserAddLogQDTO implements Serializable{
private String friendStoreId ; private String friendStoreId ;
// 0手动 1系统 // 0手动 1系统
private int delType ; private int delType ;
// 删除时是否单向好友 1是0否
private int delIsSingle ;
public int getDelIsSingle() {
return delIsSingle;
}
public void setDelIsSingle(int delIsSingle) {
this.delIsSingle = delIsSingle;
}
public int getDelType() { public int getDelType() {
return delType; return delType;
......
...@@ -53,6 +53,16 @@ public class WelcomeDetailDTO implements Serializable { ...@@ -53,6 +53,16 @@ public class WelcomeDetailDTO implements Serializable {
*/ */
private List<WelcomeMediaDTO> welcomeMediaList; private List<WelcomeMediaDTO> welcomeMediaList;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getWelcomeId() { public String getWelcomeId() {
return welcomeId; return welcomeId;
} }
......
...@@ -68,6 +68,16 @@ public class WelcomeListDTO implements Serializable { ...@@ -68,6 +68,16 @@ public class WelcomeListDTO implements Serializable {
private Integer type; private Integer type;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getModifierId() { public String getModifierId() {
return modifierId; return modifierId;
} }
......
...@@ -23,6 +23,17 @@ public class QueryWelcomeQDTO extends BasePageInfo { ...@@ -23,6 +23,17 @@ public class QueryWelcomeQDTO extends BasePageInfo {
*/ */
private Integer type; private Integer type;
// 发送场景 0无条件 1全部 2加好友 3继承
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getWxEnterpriseId() { public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
...@@ -73,6 +73,16 @@ public class SaveWelcomeQDTO implements Serializable { ...@@ -73,6 +73,16 @@ public class SaveWelcomeQDTO implements Serializable {
*/ */
private Integer type; private Integer type;
private int scene = 1 ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getModifierId() { public String getModifierId() {
return modifierId; return modifierId;
} }
......
...@@ -95,7 +95,8 @@ public enum NoticeMessageTypeEnum { ...@@ -95,7 +95,8 @@ public enum NoticeMessageTypeEnum {
CASH_APPLY_OFFLINE_SUCCESS_NOTIFY(7003,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_offline_success_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyOfflineSuccessNotify","haobanNotice"), CASH_APPLY_OFFLINE_SUCCESS_NOTIFY(7003,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_offline_success_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyOfflineSuccessNotify","haobanNotice"),
AUTHORIZED_LOGIN_NOTIFY(8001,"账号授权通知", NoticeMessageCategoryTypeEnum.AUTHORIZED.getType(),"authorized_login_notify","/pages/route/index?pageType=","hbapp_video_auth","authorizedLoginNotify","haobanNotice"); AUTHORIZED_LOGIN_NOTIFY(8001,"账号授权通知", NoticeMessageCategoryTypeEnum.AUTHORIZED.getType(),"authorized_login_notify","/pages/route/index?pageType=","hbapp_video_auth","authorizedLoginNotify","haobanNotice"),
AUTHORIZED_LOGOUT_NOTIFY(8002,"账号异常退出登录通知", NoticeMessageCategoryTypeEnum.AUTHORIZED.getType(),"authorized_logout_notify","/pages/route/index?pageType=","hbapp_video_auth","authorizedLogoutNotify","haobanNotice");
/** /**
* 消息类型 * 消息类型
......
...@@ -9,6 +9,17 @@ public class OpenStaffInitQDTO implements Serializable { ...@@ -9,6 +9,17 @@ public class OpenStaffInitQDTO implements Serializable {
private String staffId ; private String staffId ;
private int loginAgainFlag ; private int loginAgainFlag ;
// 导入操作 1是0否
private int importFlag ;
public int getImportFlag() {
return importFlag;
}
public void setImportFlag(int importFlag) {
this.importFlag = importFlag;
}
public int getLoginAgainFlag() { public int getLoginAgainFlag() {
return loginAgainFlag; return loginAgainFlag;
} }
......
...@@ -343,5 +343,13 @@ public interface ExternalClerkRelatedApiService { ...@@ -343,5 +343,13 @@ public interface ExternalClerkRelatedApiService {
ExternalClerkRelatedDTO getDelFriend(String wxEnterpriseId , String enterpriseId , String staffId) ; ExternalClerkRelatedDTO getDelFriend(String wxEnterpriseId , String enterpriseId , String staffId) ;
/**
* 判断会员是否加过好友
* @param enterpriseId
* @param memberId
* @return
*/
public com.gic.api.base.commons.ServiceResponse<MemberGroupFriendDTO> memberIsAddClerk(String enterpriseId, String memberId) ;
} }
package com.gic.haoban.manage.api.service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.OpenStaffImportDTO;
public interface OpenStaffImportTaskApiService {
ServiceResponse<Void> callBack(String params);
ServiceResponse<String> createTask(OpenStaffImportDTO dto);
}
\ No newline at end of file
...@@ -83,6 +83,10 @@ public interface QywxTagApiService { ...@@ -83,6 +83,10 @@ public interface QywxTagApiService {
*/ */
public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds); public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds);
public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds , String externalUserInfo);
/** /**
* 同步企业微信导入gic的会员标签 * 同步企业微信导入gic的会员标签
* *
......
...@@ -235,6 +235,8 @@ public interface StaffApiService { ...@@ -235,6 +235,8 @@ public interface StaffApiService {
*/ */
List<String> getHaoBanStoreIdsRolesByClerkId(String clerkId, String wxEnterpriseId); List<String> getHaoBanStoreIdsRolesByClerkId(String clerkId, String wxEnterpriseId);
List<String> isGicSuper(String clerkId , String wxEnterpriseId) ;
/** /**
* 门店筛选器id和好办企业门店交集 * 门店筛选器id和好办企业门店交集
......
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import com.gic.api.base.commons.BasePageInfo; import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.MemberGroupFriendDTO;
import com.gic.haoban.manage.api.dto.chat.ChatEventDTO; import com.gic.haoban.manage.api.dto.chat.ChatEventDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
...@@ -173,4 +174,12 @@ public interface GroupChatApiService { ...@@ -173,4 +174,12 @@ public interface GroupChatApiService {
*/ */
public List<String> listOpenGroupChatDK(String enterpriseId , String staffId) ; public List<String> listOpenGroupChatDK(String enterpriseId , String staffId) ;
/**
* 判断会员是否入群
* @param enterpriseId
* @param memberId
* @return
*/
public ServiceResponse<MemberGroupFriendDTO> memberIsAddGroup(String enterpriseId, String memberId) ;
} }
...@@ -12,14 +12,17 @@ import com.gic.haoban.task.manage.api.enums.OpenQwMsgTypeEnum; ...@@ -12,14 +12,17 @@ import com.gic.haoban.task.manage.api.enums.OpenQwMsgTypeEnum;
import com.gic.mq.sdk.GicMQClient; import com.gic.mq.sdk.GicMQClient;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.sql.Struct;
import java.util.*; import java.util.*;
@Controller @Controller
...@@ -35,10 +38,14 @@ public class QywxCallbackController extends WebBaseController { ...@@ -35,10 +38,14 @@ public class QywxCallbackController extends WebBaseController {
@RequestMapping("qywx-msg-notice") @RequestMapping("qywx-msg-notice")
@IgnoreLogin @IgnoreLogin
@ResponseBody
public Object callback(HttpServletRequest request , HttpServletResponse response) { public Object callback(HttpServletRequest request , HttpServletResponse response) {
try { try {
String body = IOUtils.toString(request.getInputStream()) ; String body = IOUtils.toString(request.getInputStream()) ;
logger.info("企微消息下发={}",body); logger.info("企微消息下发={}",body);
if(StringUtils.isBlank(body)) {
return "ok" ;
}
JSONObject jsonObject = JSONObject.parseObject(body) ; JSONObject jsonObject = JSONObject.parseObject(body) ;
int type = jsonObject.getIntValue("type") ; int type = jsonObject.getIntValue("type") ;
String uuid = jsonObject.getString("uuid") ; String uuid = jsonObject.getString("uuid") ;
...@@ -91,7 +98,7 @@ public class QywxCallbackController extends WebBaseController { ...@@ -91,7 +98,7 @@ public class QywxCallbackController extends WebBaseController {
this.close(uuid,OpenStaffOfflineEnum.OFFLINE4); this.close(uuid,OpenStaffOfflineEnum.OFFLINE4);
break; break;
case 100007: case 100007:
this.close(uuid,OpenStaffOfflineEnum.OFFLINE2); this.close(uuid,OpenStaffOfflineEnum.OFFLINE2,json.getString("msg"));
break; break;
default: default:
break; break;
...@@ -290,6 +297,12 @@ public class QywxCallbackController extends WebBaseController { ...@@ -290,6 +297,12 @@ public class QywxCallbackController extends WebBaseController {
logger.info("退出={}",uuid); logger.info("退出={}",uuid);
this.openStaffApiService.logout(uuid, offlineEnum) ; this.openStaffApiService.logout(uuid, offlineEnum) ;
} }
private void close(String uuid , OpenStaffOfflineEnum offlineEnum , String msg) {
logger.info("退出={},msg={}",uuid,msg);
com.gic.haoban.common.utils.DingUtils.send("请检查企微托管"+uuid+msg, false);
this.openStaffApiService.logout(uuid, offlineEnum) ;
}
private void v100003(String uuid , JSONObject json) { private void v100003(String uuid , JSONObject json) {
logger.info("取消登录={}",uuid); logger.info("取消登录={}",uuid);
this.openStaffApiService.updateLoginStep(uuid,QwOpenStepEnum.step2.getStep()) ; this.openStaffApiService.updateLoginStep(uuid,QwOpenStepEnum.step2.getStep()) ;
......
...@@ -224,6 +224,11 @@ ...@@ -224,6 +224,11 @@
<artifactId>gic-content-api</artifactId> <artifactId>gic-content-api</artifactId>
<version>${gic-content-api}</version> <version>${gic-content-api}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-member-ext-api</artifactId>
<version>${gic-member-ext-api}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -32,7 +32,7 @@ public interface OpenStaffMapper { ...@@ -32,7 +32,7 @@ public interface OpenStaffMapper {
void update2QrcodeFlag(@Param("id") Long openStaffId); void update2QrcodeFlag(@Param("id") Long openStaffId);
void update2Qrcode(@Param("id") Long id , @Param("qrcode")String qrcode , @Param("key")String key) ; void update2Qrcode(@Param("id") Long id , @Param("qrCode")String qrcode , @Param("key")String key) ;
void updateLoginStep(@Param("id")Long openStaffId, @Param("step")int step); void updateLoginStep(@Param("id")Long openStaffId, @Param("step")int step);
......
...@@ -76,4 +76,5 @@ public interface GroupChatUserMapper { ...@@ -76,4 +76,5 @@ public interface GroupChatUserMapper {
*/ */
List<UserQuitBO> listQuitNum(@Param("wxEnterpriseId") String wxEnterpriseId ,@Param("start") Date start ,@Param("end") Date end) ; List<UserQuitBO> listQuitNum(@Param("wxEnterpriseId") String wxEnterpriseId ,@Param("start") Date start ,@Param("end") Date end) ;
List<TabGroupChatUser> getByMember(@Param("enterpriseId")String enterpriseId, @Param("memberId")String memberId);
} }
\ No newline at end of file
...@@ -78,6 +78,17 @@ public class TabWelcome implements Serializable { ...@@ -78,6 +78,17 @@ public class TabWelcome implements Serializable {
private String modifierName ; private String modifierName ;
private Integer type; private Integer type;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getModifierId() { public String getModifierId() {
return modifierId; return modifierId;
} }
......
...@@ -64,6 +64,15 @@ public class TabWxUserAddLog implements Serializable { ...@@ -64,6 +64,15 @@ public class TabWxUserAddLog implements Serializable {
private String friendClerkId ; private String friendClerkId ;
private String friendStoreId ; private String friendStoreId ;
private int delType ; private int delType ;
private int delIsSingle ;
public int getDelIsSingle() {
return delIsSingle;
}
public void setDelIsSingle(int delIsSingle) {
this.delIsSingle = delIsSingle;
}
public int getDelType() { public int getDelType() {
return delType; return delType;
......
package com.gic.haoban.manage.service.pojo;
import java.io.Serializable;
public class WelcomeUserInfoBO implements Serializable {
private String name ;
private int addWay ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAddWay() {
return addWay;
}
public void setAddWay(int addWay) {
this.addWay = addWay;
}
public WelcomeUserInfoBO(String name, int addWay) {
this.name = name;
this.addWay = addWay;
}
}
...@@ -27,6 +27,8 @@ public class SaveWelcomeBO { ...@@ -27,6 +27,8 @@ public class SaveWelcomeBO {
* @see com.gic.haoban.manage.api.enums.hm.HmWelcomeType * @see com.gic.haoban.manage.api.enums.hm.HmWelcomeType
*/ */
private Integer type; private Integer type;
private int scene = 1 ;
/** /**
* 内容 * 内容
*/ */
...@@ -68,6 +70,14 @@ public class SaveWelcomeBO { ...@@ -68,6 +70,14 @@ public class SaveWelcomeBO {
*/ */
private List<WelcomeSuitStaffBO> suitStaffDeleteList; private List<WelcomeSuitStaffBO> suitStaffDeleteList;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getModifierId() { public String getModifierId() {
return modifierId; return modifierId;
} }
......
...@@ -26,6 +26,8 @@ public class WelcomeDetailBO { ...@@ -26,6 +26,8 @@ public class WelcomeDetailBO {
* 欢迎语类型 * 欢迎语类型
*/ */
private Integer type; private Integer type;
private int scene ;
/** /**
* 内容 * 内容
*/ */
...@@ -51,6 +53,14 @@ public class WelcomeDetailBO { ...@@ -51,6 +53,14 @@ public class WelcomeDetailBO {
*/ */
private List<WelcomeMediaBO> welcomeMediaList; private List<WelcomeMediaBO> welcomeMediaList;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getWelcomeId() { public String getWelcomeId() {
return welcomeId; return welcomeId;
} }
......
...@@ -66,6 +66,16 @@ public class WelcomeListBO { ...@@ -66,6 +66,16 @@ public class WelcomeListBO {
private Integer type; private Integer type;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getCreatorId() { public String getCreatorId() {
return creatorId; return creatorId;
} }
......
...@@ -18,6 +18,27 @@ public class WelcomeInfoQO extends BasePageInfo { ...@@ -18,6 +18,27 @@ public class WelcomeInfoQO extends BasePageInfo {
private Integer type; private Integer type;
//1 正常加好友 2离职继承
private int sceneType ;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public int getSceneType() {
return sceneType;
}
public void setSceneType(int sceneType) {
this.sceneType = sceneType;
}
public String getWxEnterpriseId() { public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
...@@ -13,4 +13,6 @@ public interface ExternalMemberService { ...@@ -13,4 +13,6 @@ public interface ExternalMemberService {
public void welcomeForMember(); public void welcomeForMember();
} public void updateMemberGrowth(String enterpriseId , String memberId , String ruleCode , String title , String remark) ;
}
...@@ -27,9 +27,11 @@ public interface OpenStaffService { ...@@ -27,9 +27,11 @@ public interface OpenStaffService {
* @param qwUserId * @param qwUserId
* @return * @return
*/ */
String autoLogin(Long openStaffId , Long qwUserId) ; String autoLogin(Long openStaffId , Long qwUserId ,String wxEnterpriseId) ;
void openStaffTimer(); void openStaffTimer();
void openStaffServiceTimer(); void openStaffServiceTimer();
String getDeverType(String wxEnterpriseId) ;
} }
...@@ -36,7 +36,7 @@ public interface QywxSendService { ...@@ -36,7 +36,7 @@ public interface QywxSendService {
* @return * @return
* @throws * @throws
*/ */
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList); public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList, int planType ,String planId);
/** /**
* 群群发 * 群群发
......
...@@ -87,7 +87,8 @@ public interface WelcomeService { ...@@ -87,7 +87,8 @@ public interface WelcomeService {
* @author : YongEn * @author : YongEn
* @date : 2022/2/9 * @date : 2022/2/9
*/ */
WelcomeDetailBO getMatchWelcome(String staffId, String wxEnterpriseId); WelcomeDetailBO getMatchWelcome(String staffId, String wxEnterpriseId,int welcomeScene);
/** /**
* desc: 新增默认欢迎语 * desc: 新增默认欢迎语
......
...@@ -4,6 +4,7 @@ import com.gic.api.base.commons.BasePageInfo; ...@@ -4,6 +4,7 @@ import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatUserBO; import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatUserBO;
import java.util.List; import java.util.List;
...@@ -16,4 +17,14 @@ public interface GroupChatUserService { ...@@ -16,4 +17,14 @@ public interface GroupChatUserService {
* 查询群组内群成员 * 查询群组内群成员
*/ */
List<GroupChatUserBO> queryGroupMemberWithChatId(String enterpriseId, String wxEnterpriseId, Long groupChatId); List<GroupChatUserBO> queryGroupMemberWithChatId(String enterpriseId, String wxEnterpriseId, Long groupChatId);
/**
* 判断会员是否进过群
* @param enterpriseId
* @param memberId
* @return
*/
List<TabGroupChatUser> getByMember(String enterpriseId , String memberId) ;
} }
\ No newline at end of file
...@@ -399,7 +399,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -399,7 +399,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
String staffId = ownerLog.getStaffId(); String staffId = ownerLog.getStaffId();
if (plan.getMaterialFrom() == null || plan.getMaterialFrom() == 1) { if (plan.getMaterialFrom() == null || plan.getMaterialFrom() == 1) {
sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId, sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
sendIdList); sendIdList,2,planId+"");
}else { }else {
sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId, sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
materialList,message); materialList,message);
......
...@@ -13,6 +13,8 @@ import java.util.stream.Collectors; ...@@ -13,6 +13,8 @@ import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.StoreDTO; import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper; import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper;
import com.gic.haoban.manage.service.service.*;
import com.gic.member.ext.api.enums.growth.GrowthRuleEnum;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -64,11 +66,6 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner; ...@@ -64,11 +66,6 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwnerHistory; import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwnerHistory;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser; import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatBO; import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatBO;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.chat.GroupChatHmService; import com.gic.haoban.manage.service.service.chat.GroupChatHmService;
import com.gic.haoban.manage.service.service.chat.GroupChatService; import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.member.api.dto.MemberDTO; import com.gic.member.api.dto.MemberDTO;
...@@ -129,6 +126,8 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -129,6 +126,8 @@ public class GroupChatServiceImpl implements GroupChatService {
private StoreService storeService ; private StoreService storeService ;
@Autowired @Autowired
private WxEnterpriseMapper wxEnterpriseMapper ; private WxEnterpriseMapper wxEnterpriseMapper ;
@Autowired
private ExternalMemberService externalMemberService ;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance(); private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
...@@ -819,7 +818,7 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -819,7 +818,7 @@ public class GroupChatServiceImpl implements GroupChatService {
hbUser.setAdminFlag(2); hbUser.setAdminFlag(2);
} }
if (StringUtils.isEmpty(hbUser.getMemberId()) && qwUser.getType() == 2) { if (StringUtils.isEmpty(hbUser.getMemberId()) && qwUser.getType() == 2) {
this.matchGicMember(wxEnterpriseId, enterpriseId, qwUser.getUnionid(), userId, hbUser); this.matchGicMember(wxEnterpriseId, enterpriseId, qwUser.getUnionid(), userId, hbUser,groupChatId);
} }
if (hbUser.getUserType() == 3) { if (hbUser.getUserType() == 3) {
totalMemberCount = 1; totalMemberCount = 1;
...@@ -957,7 +956,7 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -957,7 +956,7 @@ public class GroupChatServiceImpl implements GroupChatService {
// 匹配群成员-客户 // 匹配群成员-客户
private void matchGicMember(String wxEnterpriseId, String enterpriseId, String unionid, String externalUserId, private void matchGicMember(String wxEnterpriseId, String enterpriseId, String unionid, String externalUserId,
TabGroupChatUser user) { TabGroupChatUser user , Long groupChatId) {
logger.info("入群匹配群客户,unionid={},exteruserid={}", unionid, externalUserId); logger.info("入群匹配群客户,unionid={},exteruserid={}", unionid, externalUserId);
if (StringUtils.isBlank(enterpriseId)) { if (StringUtils.isBlank(enterpriseId)) {
return; return;
...@@ -976,6 +975,10 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -976,6 +975,10 @@ public class GroupChatServiceImpl implements GroupChatService {
logger.info("匹配群客户,externalUserId"); logger.info("匹配群客户,externalUserId");
user.setMemberId(related.getMemberId()); user.setMemberId(related.getMemberId());
user.setUserType(3); user.setUserType(3);
TabGroupChat group = this.groupChatMapper.selectById(groupChatId) ;
if(null != group) {
this.externalMemberService.updateMemberGrowth(related.getEnterpriseId(),related.getMemberId(), GrowthRuleEnum.ADD_HAOBAN_GROUP.getRuleCode(), "群信息",group.getName() + "(" + groupChatId + ")");
}
} }
} }
} }
......
...@@ -67,4 +67,9 @@ public class GroupChatUserServiceImpl implements GroupChatUserService { ...@@ -67,4 +67,9 @@ public class GroupChatUserServiceImpl implements GroupChatUserService {
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public List<TabGroupChatUser> getByMember(String enterpriseId, String memberId) {
return this.groupChatUserMapper.getByMember(enterpriseId,memberId);
}
} }
\ No newline at end of file
...@@ -43,6 +43,11 @@ public class MessageConvertHelper { ...@@ -43,6 +43,11 @@ public class MessageConvertHelper {
String cusp = jsonObject.getString("cusp"); String cusp = jsonObject.getString("cusp");
JSONObject cuspJson = JSON.parseObject(cusp); JSONObject cuspJson = JSON.parseObject(cusp);
Integer isPreview = cuspJson.getInteger("is_preview");
if (Objects.equals(isPreview, 1)) {
log.info("预览数据不处理");
return null;
}
String sysp = jsonObject.getString("sysp"); String sysp = jsonObject.getString("sysp");
JSONObject syspJson = JSON.parseObject(sysp); JSONObject syspJson = JSON.parseObject(sysp);
......
...@@ -151,6 +151,7 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService { ...@@ -151,6 +151,7 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService {
entity.setFriendClerkId(qdto.getFriendClerkId()); entity.setFriendClerkId(qdto.getFriendClerkId());
entity.setFriendStoreId(qdto.getFriendStoreId()); entity.setFriendStoreId(qdto.getFriendStoreId());
entity.setDelType(qdto.getDelType()); entity.setDelType(qdto.getDelType());
entity.setDelIsSingle(qdto.getDelIsSingle());
this.wxUserAddLogMapper.insert(entity); this.wxUserAddLogMapper.insert(entity);
}catch(Exception e) { }catch(Exception e) {
log.info("异常",e); log.info("异常",e);
......
...@@ -179,6 +179,9 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -179,6 +179,9 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
if(autoDelNum>0) { if(autoDelNum>0) {
wxUserAddLogQDTO.setDelType(1); wxUserAddLogQDTO.setDelType(1);
} }
if(related.getExternalStatus()==3) {
wxUserAddLogQDTO.setDelIsSingle(1) ;
}
wxUserAddLogService.save(wxUserAddLogQDTO); wxUserAddLogService.save(wxUserAddLogQDTO);
//定制 //定制
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0); addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0);
......
...@@ -3,6 +3,12 @@ package com.gic.haoban.manage.service.service.impl; ...@@ -3,6 +3,12 @@ package com.gic.haoban.manage.service.service.impl;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.ToolUtil;
import com.gic.member.ext.api.dto.growth.req.MemberGrowthChangeValueReq;
import com.gic.member.ext.api.dto.growth.resp.MemberGrowthOperateResp;
import com.gic.member.ext.api.service.MemberGrowthWriteApiService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -35,6 +41,8 @@ public class ExternalMemberServiceImpl implements ExternalMemberService { ...@@ -35,6 +41,8 @@ public class ExternalMemberServiceImpl implements ExternalMemberService {
private TabHaobanExternalClerkRelatedMapper tabHaobanExternalClerkRelatedMapper ; private TabHaobanExternalClerkRelatedMapper tabHaobanExternalClerkRelatedMapper ;
@Autowired @Autowired
private MemberService memberService ; private MemberService memberService ;
@Autowired
private MemberGrowthWriteApiService memberGrowthWriteApiService ;
@Override @Override
public int insert(ExternalMemberLogDTO log) { public int insert(ExternalMemberLogDTO log) {
...@@ -90,4 +98,21 @@ public class ExternalMemberServiceImpl implements ExternalMemberService { ...@@ -90,4 +98,21 @@ public class ExternalMemberServiceImpl implements ExternalMemberService {
} }
} }
public void updateMemberGrowth(String enterpriseId , String memberId , String ruleCode , String title , String remark) {
try {
MemberGrowthChangeValueReq req = new MemberGrowthChangeValueReq();
req.setEnterpriseId(enterpriseId);
req.setMemberId(memberId);
req.setRuleCode(ruleCode);
req.setChannelCode(com.gic.enterprise.api.enums.PlatformChannelEnum.C_WORK_WECHAT.getChannelCode());
req.setOuterChangeId(ToolUtil.randomUUID());
req = req.desc(title, remark);
ServiceResponse<MemberGrowthOperateResp> resp = this.memberGrowthWriteApiService.updateMemberGrowthChangeValue(req) ;
logger.info("调用成长值={},{}", JSONObject.toJSONString(req), JSONObject.toJSONString(resp));
}catch (Exception e) {
logger.info("异常",e);
}
}
} }
...@@ -30,6 +30,7 @@ import com.gic.haoban.manage.service.entity.TabOpenStaff; ...@@ -30,6 +30,7 @@ import com.gic.haoban.manage.service.entity.TabOpenStaff;
import com.gic.haoban.manage.service.pojo.QwOpenResultInitBO; import com.gic.haoban.manage.service.pojo.QwOpenResultInitBO;
import com.gic.haoban.manage.service.service.OpenStaffService; import com.gic.haoban.manage.service.service.OpenStaffService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService; import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.util.CustomSwitcher;
import com.gic.haoban.manage.service.util.OpenUtils; import com.gic.haoban.manage.service.util.OpenUtils;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
...@@ -86,7 +87,7 @@ public class OpenStaffServiceImpl implements OpenStaffService { ...@@ -86,7 +87,7 @@ public class OpenStaffServiceImpl implements OpenStaffService {
TabOpenStaff openStaff = this.openStaffMapper.getByUUID(uuid); TabOpenStaff openStaff = this.openStaffMapper.getByUUID(uuid);
if (null == openStaff) { if (null == openStaff) {
log.info("通过uuid查不到={}", uuid); log.info("通过uuid查不到={}", uuid);
OpenUtils.logout(uuid); // OpenUtils.logout(uuid);
} }
return openStaff; return openStaff;
} }
...@@ -116,10 +117,12 @@ public class OpenStaffServiceImpl implements OpenStaffService { ...@@ -116,10 +117,12 @@ public class OpenStaffServiceImpl implements OpenStaffService {
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(openStaff.getStaffId()); TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(openStaff.getStaffId());
this.noticeMessageApiService.sendMessageForOpenStaff(openStaff.getEnterpriseId(), staff.getStaffName(), noticeReason); this.noticeMessageApiService.sendMessageForOpenStaff(openStaff.getEnterpriseId(), staff.getStaffName(), noticeReason);
// 发送通知 // 发送通知
Map<String, String> map = new HashMap<String, String>(); if(!noticeReason.equals(OpenStaffOfflineEnum.OFFLINE1.getDesc())) {
map.put("reason", noticeReason); Map<String, String> map = new HashMap<String, String>();
int messageType = NoticeMessageTypeEnum.HAOBAN_OPEN_STAFF_LOGOUT.getType(); map.put("reason", noticeReason);
NoticeMessageUtil.sendNoticeMessageByStaff(openStaff.getEnterpriseId(), openStaff.getStaffId(), "-1", messageType, null, map, null); int messageType = NoticeMessageTypeEnum.HAOBAN_OPEN_STAFF_LOGOUT.getType();
NoticeMessageUtil.sendNoticeMessageByStaff(openStaff.getEnterpriseId(), openStaff.getStaffId(), "-1", messageType, null, map, null);
}
} }
} }
...@@ -221,19 +224,19 @@ public class OpenStaffServiceImpl implements OpenStaffService { ...@@ -221,19 +224,19 @@ public class OpenStaffServiceImpl implements OpenStaffService {
} }
@Override @Override
public String autoLogin(Long openStaffId, Long qwUserId) { public String autoLogin(Long openStaffId, Long qwUserId , String wxEnterpriseId) {
ServiceResponse<QwOpenResultInitBO> initResp = OpenUtils.init(qwUserId, false); ServiceResponse<QwOpenResultInitBO> initResp = OpenUtils.init(qwUserId, false ,this.getDeverType(wxEnterpriseId));
log.info("自动登录-初始化={},{}", qwUserId, JSONObject.toJSONString(initResp)); log.info("自动登录-初始化={},{}", qwUserId, JSONObject.toJSONString(initResp));
if (initResp.isSuccess() && StringUtils.isNotBlank(initResp.getResult().getUuid())) { if (initResp.isSuccess() && StringUtils.isNotBlank(initResp.getResult().getUuid())) {
QwOpenResultInitBO bo = initResp.getResult(); QwOpenResultInitBO bo = initResp.getResult();
String newUuid = bo.getUuid(); String newUuid = bo.getUuid();
if (bo.isIs_login()) { if (bo.isIs_login()) {
this.openStaffMapper.updateByAutoLogin(qwUserId, newUuid); this.openStaffMapper.updateByAutoLogin(openStaffId, newUuid);
return newUuid; return newUuid;
} }
boolean autLogin = OpenUtils.autoLogin(newUuid); boolean autLogin = OpenUtils.autoLogin(newUuid);
if (autLogin) { if (autLogin) {
this.openStaffMapper.updateByAutoLogin(qwUserId, newUuid); this.openStaffMapper.updateByAutoLogin(openStaffId, newUuid);
return newUuid; return newUuid;
} }
} }
...@@ -266,7 +269,7 @@ public class OpenStaffServiceImpl implements OpenStaffService { ...@@ -266,7 +269,7 @@ public class OpenStaffServiceImpl implements OpenStaffService {
boolean isLogin = OpenUtils.isLogin(uuid); boolean isLogin = OpenUtils.isLogin(uuid);
// 未登录 // 未登录
if (!isLogin) { if (!isLogin) {
String autLogin = this.autoLogin(item.getOpenStaffId(), item.getQwUserId()); String autLogin = this.autoLogin(item.getOpenStaffId(), item.getQwUserId(), item.getWxEnterpriseId());
if (null == autLogin) { if (null == autLogin) {
this.logout(uuid, "定时检查异", 0, OpenStaffOfflineEnum.OFFLINE2.getDesc()); this.logout(uuid, "定时检查异", 0, OpenStaffOfflineEnum.OFFLINE2.getDesc());
} }
...@@ -318,4 +321,13 @@ public class OpenStaffServiceImpl implements OpenStaffService { ...@@ -318,4 +321,13 @@ public class OpenStaffServiceImpl implements OpenStaffService {
} }
return true ; return true ;
} }
@Override
public String getDeverType(String wxEnterpriseId) {
if(StringUtils.isBlank(wxEnterpriseId)) {
return null ;
}
return CustomSwitcher.qywx_open_type.get(wxEnterpriseId) ;
}
} }
...@@ -227,7 +227,7 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -227,7 +227,7 @@ public class QywxSendServiceImpl implements QywxSendService {
miniprogramMaterialDTO.setPicMediaId(maerialId); miniprogramMaterialDTO.setPicMediaId(maerialId);
miniprogramMaterialDTO.setAppid(material.getAppId()); miniprogramMaterialDTO.setAppid(material.getAppId());
miniprogramMaterialDTO.setPage(material.getLink()); miniprogramMaterialDTO.setPage(material.getLink());
/* if(null != planType && StringUtils.isNotBlank(planId)) { if(null != planType && StringUtils.isNotBlank(planId)) {
String url = "qtActivityType="+planType+"&qtActivityId="+planId ; String url = "qtActivityType="+planType+"&qtActivityId="+planId ;
if(material.getLink().contains("?")) { if(material.getLink().contains("?")) {
url = "&" + url ; url = "&" + url ;
...@@ -235,7 +235,7 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -235,7 +235,7 @@ public class QywxSendServiceImpl implements QywxSendService {
url = "?" +url ; url = "?" +url ;
} }
miniprogramMaterialDTO.setPage(material.getLink()+url); miniprogramMaterialDTO.setPage(material.getLink()+url);
}*/ }
log.info("群发链接={}",material.getLink(),miniprogramMaterialDTO.getPage()); log.info("群发链接={}",material.getLink(),miniprogramMaterialDTO.getPage());
dto.setMsgType(QywxMediaTypeEnum.MINIPROGRAM.getName()); dto.setMsgType(QywxMediaTypeEnum.MINIPROGRAM.getName());
dto.setMiniprogram(miniprogramMaterialDTO); dto.setMiniprogram(miniprogramMaterialDTO);
...@@ -244,8 +244,8 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -244,8 +244,8 @@ public class QywxSendServiceImpl implements QywxSendService {
} }
@Override @Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList) { public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList,int planType ,String planId) {
return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group,null,null); return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group,planId,planType);
} }
@Override @Override
......
...@@ -5,8 +5,10 @@ import java.util.Date; ...@@ -5,8 +5,10 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import com.alibaba.fastjson.JSONArray;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMediaMapper; import com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMediaMapper;
import com.gic.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.pojo.WelcomeUserInfoBO;
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.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
...@@ -112,10 +114,6 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -112,10 +114,6 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
/** /**
* 发送欢迎语 * 发送欢迎语
* *
* @param dto
* @param wxEnterpriseDTO
* @param enterpriseId
* @param staffId
* {"data":{"welcomeCode":"J0GjdrsF-nZNac3Xc6V2K2p8OokQZcY4g0jxljdHc7A","wxUserId":"016903","suiteid":"selfSuiteId","corpid":"wxbde984c3488b837e","externalUserid":"wmSe9FEAAAy39F1NI6Z-THUUd9mkqOIw","changeType":"add_external_contact"},"type":1,"mqTraceId":"278473818-1-1679557069.126"} * {"data":{"welcomeCode":"J0GjdrsF-nZNac3Xc6V2K2p8OokQZcY4g0jxljdHc7A","wxUserId":"016903","suiteid":"selfSuiteId","corpid":"wxbde984c3488b837e","externalUserid":"wmSe9FEAAAy39F1NI6Z-THUUd9mkqOIw","changeType":"add_external_contact"},"type":1,"mqTraceId":"278473818-1-1679557069.126"}
*/ */
@Override @Override
...@@ -144,16 +142,23 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -144,16 +142,23 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
log.info("发送欢迎语,state={}", state); log.info("发送欢迎语,state={}", state);
String relationKey = SecureUtil.md5(staffId + externalUserId); String relationKey = SecureUtil.md5(staffId + externalUserId);
WelcomeDetailBO welcomeBO = null; WelcomeDetailBO welcomeBO = null;
WelcomeUserInfoBO userBO = this.getExternalUserName(qwDTO, externalUserId , wxUserId);
int addWay = userBO.getAddWay() ;
int welcomeScene = 0 ;
if(addWay==202) {
// 离职继承、在职继承
welcomeScene = 202 ;
}
if (StringUtils.isNotBlank(state) if (StringUtils.isNotBlank(state)
&& (state.startsWith(Manage3Constants.HM) || state.startsWith(Manage3Constants.DT))) { && (state.startsWith(Manage3Constants.HM) || state.startsWith(Manage3Constants.DT))) {
WelcomeReferBO welcomeReferBo = getWelcomeReferBo(state); WelcomeReferBO welcomeReferBo = getWelcomeReferBo(state);
welcomeBO = welcomeService.getMatchWelcomeWithReferId(staffId, wxEnterpriseId, welcomeReferBo); welcomeBO = welcomeService.getMatchWelcomeWithReferId(staffId, wxEnterpriseId, welcomeReferBo);
//单人活码欢迎语未配置时,取欢迎语的配置进行发送 //单人活码欢迎语未配置时,取欢迎语的配置进行发送
if(state.startsWith(Manage3Constants.HM) && welcomeBO == null){ if(state.startsWith(Manage3Constants.HM) && welcomeBO == null){
welcomeBO = welcomeService.getMatchWelcome(staffId, wxEnterpriseId); welcomeBO = welcomeService.getMatchWelcome(staffId, wxEnterpriseId,welcomeScene);
} }
} else { } else {
welcomeBO = welcomeService.getMatchWelcome(staffId, wxEnterpriseId); welcomeBO = welcomeService.getMatchWelcome(staffId, wxEnterpriseId,welcomeScene);
} }
if (Objects.isNull(welcomeBO)) { if (Objects.isNull(welcomeBO)) {
log.info("欢迎语未配置wxEnterpriseId:{}", wxEnterpriseId); log.info("欢迎语未配置wxEnterpriseId:{}", wxEnterpriseId);
...@@ -163,7 +168,7 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -163,7 +168,7 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
log.info("欢迎语发送{}={}", welcomeBO.getWelcomeId(), JSON.toJSONString(welcomeBO)); log.info("欢迎语发送{}={}", welcomeBO.getWelcomeId(), JSON.toJSONString(welcomeBO));
String content = welcomeBO.getWelcomeContent(); String content = welcomeBO.getWelcomeContent();
if (content.contains("<微信昵称>")) { if (content.contains("<微信昵称>")) {
String nickName = this.getExternalUserName(qwDTO, externalUserId); String nickName = userBO.getName() ;
//这里对“$”符号和”\\“符号进行转义处理 //这里对“$”符号和”\\“符号进行转义处理
nickName = java.util.regex.Matcher.quoteReplacement(nickName); nickName = java.util.regex.Matcher.quoteReplacement(nickName);
content = content.replaceAll("<微信昵称>", nickName); content = content.replaceAll("<微信昵称>", nickName);
...@@ -403,7 +408,7 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -403,7 +408,7 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
} }
} }
private String getExternalUserName(WxEnterpriseQwDTO qwDTO, String externalUserId) { private WelcomeUserInfoBO getExternalUserName(WxEnterpriseQwDTO qwDTO, String externalUserId , String addUserId) {
log.info("查询好友详情,externalUserId={},{}", externalUserId,qwDTO.getWxSecurityType()); log.info("查询好友详情,externalUserId={},{}", externalUserId,qwDTO.getWxSecurityType());
String userInfo = null ; String userInfo = null ;
if(qwDTO.isSelf()) { if(qwDTO.isSelf()) {
...@@ -412,13 +417,14 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -412,13 +417,14 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
userInfo =qywxUserApiService.getExternalUseridInfo(qwDTO.getThirdCorpid(), config.getWxSuiteid(), externalUserId); userInfo =qywxUserApiService.getExternalUseridInfo(qwDTO.getThirdCorpid(), config.getWxSuiteid(), externalUserId);
} }
String name = ""; String name = "";
Integer addWay = 0 ;
if (StringUtils.isBlank(userInfo)) { if (StringUtils.isBlank(userInfo)) {
log.info("好友不存在"); log.info("好友不存在");
return name; return new WelcomeUserInfoBO(name,0);
} }
if ("1".equals(userInfo)) { if ("1".equals(userInfo)) {
log.info("限制次数"); log.info("限制次数");
return name; return new WelcomeUserInfoBO(name,0);
} }
if (StringUtils.isNotBlank(userInfo)) { if (StringUtils.isNotBlank(userInfo)) {
JSONObject userJson = JSON.parseObject(userInfo); JSONObject userJson = JSON.parseObject(userInfo);
...@@ -428,8 +434,22 @@ public class WelcomeSendServiceImpl implements WelcomeSendService { ...@@ -428,8 +434,22 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
jt = JSON.parseObject(external_contact); jt = JSON.parseObject(external_contact);
name = EmojiFilterUtil.filterEmojiLast(jt.getString("name"), true); name = EmojiFilterUtil.filterEmojiLast(jt.getString("name"), true);
} }
String follow_user = "";
follow_user = userJson.getString("follow_user");
if (StringUtils.isNotBlank(follow_user)) {
JSONArray j = JSON.parseArray(follow_user);
for (Object object : j) {
String followJson = JSON.toJSONString(object);
JSONObject follow = JSON.parseObject(followJson);
String userId = follow.getString("userid");
if (userId.equals(addUserId)) {
addWay = follow.getIntValue("add_way") ;
}
}
}
} }
return name; log.info("addWay={}",addWay);
return new WelcomeUserInfoBO(name,addWay);
} }
private String getClerkId(String wxEnterpriseId, String staffId, String state) { private String getClerkId(String wxEnterpriseId, String staffId, String state) {
......
...@@ -205,6 +205,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -205,6 +205,7 @@ public class WelcomeServiceImpl implements WelcomeService {
welcome.setModifierName(bo.getModifierName()); welcome.setModifierName(bo.getModifierName());
welcome.setDefaultWelcomeFlag(bo.getDefaultWelcomeFlag()); welcome.setDefaultWelcomeFlag(bo.getDefaultWelcomeFlag());
welcome.setType(bo.getType()); welcome.setType(bo.getType());
welcome.setScene(bo.getScene());
welcomeMapper.insert(welcome); welcomeMapper.insert(welcome);
return welcome; return welcome;
} }
...@@ -226,6 +227,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -226,6 +227,7 @@ public class WelcomeServiceImpl implements WelcomeService {
welcome.setDefaultWelcomeFlag(bo.getDefaultWelcomeFlag()); welcome.setDefaultWelcomeFlag(bo.getDefaultWelcomeFlag());
welcome.setModifierId(bo.getModifierId()); welcome.setModifierId(bo.getModifierId());
welcome.setModifierName(bo.getModifierName()); welcome.setModifierName(bo.getModifierName());
welcome.setScene(bo.getScene());
welcomeMapper.updateByPrimaryKeySelective(welcome); welcomeMapper.updateByPrimaryKeySelective(welcome);
return welcome; return welcome;
} }
...@@ -302,6 +304,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -302,6 +304,7 @@ public class WelcomeServiceImpl implements WelcomeService {
bo.setOperatorName(one.getOperatorName()); bo.setOperatorName(one.getOperatorName());
bo.setDefaultWelcomeFlag(one.getDefaultWelcomeFlag()); bo.setDefaultWelcomeFlag(one.getDefaultWelcomeFlag());
bo.setType(one.getType()); bo.setType(one.getType());
bo.setScene(one.getScene());
// 媒体列表 // 媒体列表
bo.setWelcomeMediaList( bo.setWelcomeMediaList(
convertWelcomeMedia(welcomeMediaMapper.listByWelcomeId(one.getWelcomeId())) convertWelcomeMedia(welcomeMediaMapper.listByWelcomeId(one.getWelcomeId()))
...@@ -345,6 +348,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -345,6 +348,7 @@ public class WelcomeServiceImpl implements WelcomeService {
welcomeDetail.setOpenFlag(welcome.getOpenFlag()); welcomeDetail.setOpenFlag(welcome.getOpenFlag());
welcomeDetail.setDefaultWelcomeFlag(welcome.getDefaultWelcomeFlag()); welcomeDetail.setDefaultWelcomeFlag(welcome.getDefaultWelcomeFlag());
welcomeDetail.setType(welcome.getType()); welcomeDetail.setType(welcome.getType());
welcomeDetail.setScene(welcome.getScene());
// 媒体列表 // 媒体列表
welcomeDetail.setWelcomeMediaList( welcomeDetail.setWelcomeMediaList(
convertWelcomeMedia(welcomeMediaMapper.listByWelcomeId(welcome.getWelcomeId())) convertWelcomeMedia(welcomeMediaMapper.listByWelcomeId(welcome.getWelcomeId()))
...@@ -460,24 +464,32 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -460,24 +464,32 @@ public class WelcomeServiceImpl implements WelcomeService {
} }
@Override @Override
public WelcomeDetailBO getMatchWelcome(String staffId, String wxEnterpriseId) { public WelcomeDetailBO getMatchWelcome(String staffId, String wxEnterpriseId,int welcomeScene) {
if (StringUtils.isEmpty(staffId) || StringUtils.isEmpty(wxEnterpriseId)) { if (StringUtils.isEmpty(staffId) || StringUtils.isEmpty(wxEnterpriseId)) {
return null; return null;
} }
return queryMatchWelcome(staffId, wxEnterpriseId, HmWelcomeType.NORMAL.getCode()); return queryMatchWelcome(staffId, wxEnterpriseId, HmWelcomeType.NORMAL.getCode() ,welcomeScene);
} }
private WelcomeDetailBO queryMatchWelcome(String staffId, String wxEnterpriseId, Integer type) { private WelcomeDetailBO queryMatchWelcome(String staffId, String wxEnterpriseId, Integer type , int welcomeScene) {
WelcomeInfoQO welcomeInfoQO = new WelcomeInfoQO(); WelcomeInfoQO welcomeInfoQO = new WelcomeInfoQO();
welcomeInfoQO.setWxEnterpriseId(wxEnterpriseId); welcomeInfoQO.setWxEnterpriseId(wxEnterpriseId);
welcomeInfoQO.setType(type); welcomeInfoQO.setType(type);
// 查询非默认欢迎语 // 查询非默认欢迎语
welcomeInfoQO.setDefaultWelcomeFlag(0); welcomeInfoQO.setDefaultWelcomeFlag(0);
logger.info("发送场景={}",welcomeScene);
if(welcomeScene==202) {
welcomeInfoQO.setSceneType(2);
}else {
welcomeInfoQO.setSceneType(1);
}
List<TabWelcome> nonDefaultWelcomList = welcomeMapper.queryWelcomeList(welcomeInfoQO); List<TabWelcome> nonDefaultWelcomList = welcomeMapper.queryWelcomeList(welcomeInfoQO);
// 查询默认欢迎语 // 查询默认欢迎语
welcomeInfoQO.setSceneType(0);
welcomeInfoQO.setDefaultWelcomeFlag(1); welcomeInfoQO.setDefaultWelcomeFlag(1);
List<TabWelcome> defaultWelcomeList = welcomeMapper.queryWelcomeList(welcomeInfoQO); List<TabWelcome> defaultWelcomeList = welcomeMapper.queryWelcomeList(welcomeInfoQO);
if (CollectionUtils.isEmpty(nonDefaultWelcomList)) { if (CollectionUtils.isEmpty(nonDefaultWelcomList)) {
logger.info("只有默认欢迎语");
return checkAndGetDefaultWelcome(defaultWelcomeList); return checkAndGetDefaultWelcome(defaultWelcomeList);
} }
// 匹配部门组织架构 // 匹配部门组织架构
...@@ -514,7 +526,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -514,7 +526,7 @@ public class WelcomeServiceImpl implements WelcomeService {
if (Objects.isNull(matchWelcome)) { if (Objects.isNull(matchWelcome)) {
return checkAndGetDefaultWelcome(defaultWelcomeList); return checkAndGetDefaultWelcome(defaultWelcomeList);
} }
logger.info("欢迎语已匹配"); logger.info("欢迎语已匹配={}",matchWelcome.getWelcomeId());
return matchWelcome; return matchWelcome;
} }
...@@ -532,6 +544,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -532,6 +544,7 @@ public class WelcomeServiceImpl implements WelcomeService {
logger.info("未配置默认欢迎语"); logger.info("未配置默认欢迎语");
return null; return null;
} }
logger.info("使用默认欢迎语发送");
return convertWelcomeToBo(defaultWelcomeList.get(0)); return convertWelcomeToBo(defaultWelcomeList.get(0));
} }
...@@ -692,6 +705,7 @@ public class WelcomeServiceImpl implements WelcomeService { ...@@ -692,6 +705,7 @@ public class WelcomeServiceImpl implements WelcomeService {
welcomeInfoQo.setWxEnterpriseId(queryWelcomeQDTO.getWxEnterpriseId()); welcomeInfoQo.setWxEnterpriseId(queryWelcomeQDTO.getWxEnterpriseId());
welcomeInfoQo.setTitle(queryWelcomeQDTO.getTitle()); welcomeInfoQo.setTitle(queryWelcomeQDTO.getTitle());
welcomeInfoQo.setType(queryWelcomeQDTO.getType()); welcomeInfoQo.setType(queryWelcomeQDTO.getType());
welcomeInfoQo.setScene(queryWelcomeQDTO.getScene());
PageHelper.startPage(queryWelcomeQDTO.getPageNum(), queryWelcomeQDTO.getPageSize()); PageHelper.startPage(queryWelcomeQDTO.getPageNum(), queryWelcomeQDTO.getPageSize());
com.github.pagehelper.Page<TabWelcome> tabWelcomes = com.github.pagehelper.Page<TabWelcome> tabWelcomes =
(com.github.pagehelper.Page<TabWelcome>) welcomeMapper.queryWelcomeList(welcomeInfoQo); (com.github.pagehelper.Page<TabWelcome>) welcomeMapper.queryWelcomeList(welcomeInfoQo);
......
...@@ -591,7 +591,7 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService { ...@@ -591,7 +591,7 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService {
public void sendMessageForOpenStaff(String enterpriseId, String accountName, String reason) { public void sendMessageForOpenStaff(String enterpriseId, String accountName, String reason) {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("accountName", accountName); map.put("accountName", accountName);
map.put("errorTime", DateUtil.dateToStr(new Date(), "yyyy年MM月dd日 hh:mm")); map.put("errorTime", DateUtil.dateToStr(new Date(), "yyyy年MM月dd日 HH:mm"));
map.put("reason", reason); map.put("reason", reason);
String mqName = "haobanNotice"; String mqName = "haobanNotice";
NoticeMessageForm noticeMessageForm = new NoticeMessageForm(); NoticeMessageForm noticeMessageForm = new NoticeMessageForm();
......
...@@ -76,6 +76,12 @@ public class AuditApiServiceImpl implements AuditApiService { ...@@ -76,6 +76,12 @@ public class AuditApiServiceImpl implements AuditApiService {
} }
if (storeIdList.contains("-1")) { if (storeIdList.contains("-1")) {
storeIdList = null; storeIdList = null;
}else {
List<String> superList = this.staffApiService.isGicSuper(clerkId,wxEnterpriseId) ;
if(CollectionUtils.isNotEmpty(superList) && superList.contains("-1")) {
logger.info("gic超管");
storeIdList = null ;
}
} }
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize()); PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
com.github.pagehelper.Page<TabHaobanAudit> page = auditMapper.page(wxEnterpriseId, auditType, storeIdList, search, enterpriseId, auditStatus, auditFlag); com.github.pagehelper.Page<TabHaobanAudit> page = auditMapper.page(wxEnterpriseId, auditType, storeIdList, search, enterpriseId, auditStatus, auditFlag);
......
...@@ -21,6 +21,7 @@ import com.gic.haoban.manage.service.entity.*; ...@@ -21,6 +21,7 @@ import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.impl.PreDealServiceImpl; import com.gic.haoban.manage.service.service.impl.PreDealServiceImpl;
import com.gic.haoban.manage.service.task.BaseSyncOperation; import com.gic.haoban.manage.service.task.BaseSyncOperation;
import com.gic.haoban.manage.service.util.CustomSwitcher;
import com.gic.mq.sdk.GicMQClient; import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService; import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
...@@ -544,7 +545,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -544,7 +545,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
unlockTask(wxEnterpriseId); unlockTask(wxEnterpriseId);
return "没有配置secret"; return "没有配置secret";
} }
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = qywxDepartmentApiService.listSelfDepartment(qwDTO.getDkCorpid(), secretSetting.getSecretVal(), 1,qwDTO.getUrlHost()); Map<String,Integer> map = CustomSwitcher.haoban_department_id ;
int id = 1 ;
if(null != map && null != map.get(wxEnterpriseId)) {
id = map.get(wxEnterpriseId) ;
}
logger.info("id={}",id);
List<com.gic.wechat.api.dto.qywx.DepartmentDTO> list = qywxDepartmentApiService.listSelfDepartment(qwDTO.getDkCorpid(), secretSetting.getSecretVal(), id,qwDTO.getUrlHost());
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
logger.info("企微部门数量0,退出同步"); logger.info("企微部门数量0,退出同步");
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.exception_close.getVal()); syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.exception_close.getVal());
...@@ -552,11 +559,17 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -552,11 +559,17 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
return "没有数据同步或权限没设置全部"; return "没有数据同步或权限没设置全部";
} }
logger.info("企微部门数={}",list.size()); logger.info("企微部门数={}",list.size());
final int _id = id ;
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.group_sync.getVal()); syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.group_sync.getVal());
List<TabHaobanPreDealLog> dealLogList = list.stream().map(dto -> { List<TabHaobanPreDealLog> dealLogList = list.stream().map(dto -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog(); TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(dto.getId().toString()); dealLog.setDataId(dto.getId().toString());
dealLog.setpDataId(dto.getParentid().toString()); if(dto.getId().toString().equals(_id+"")) {
dealLog.setpDataId("0");
dto.setParentid(0);
}else {
dealLog.setpDataId(dto.getParentid().toString());
}
dealLog.setDataType(0); dealLog.setDataType(0);
dealLog.setStatusFlag(0); dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId); dealLog.setTaskId(taskId);
...@@ -567,7 +580,7 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -567,7 +580,7 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
// 保存部门数据 // 保存部门数据
preDealService.insert(dealLogList); preDealService.insert(dealLogList);
HashSet<String> hashSet = new HashSet<>(); HashSet<String> hashSet = new HashSet<>();
hashSet.add("1"); hashSet.add(""+id);
sendToMq(taskId, hashSet, SyncTaskStatusEnum.group_sync,"departmentSyncDealMq2"); sendToMq(taskId, hashSet, SyncTaskStatusEnum.group_sync,"departmentSyncDealMq2");
return null; return null;
} }
......
...@@ -866,5 +866,24 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -866,5 +866,24 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
return retPage; return retPage;
} }
@Override
public com.gic.api.base.commons.ServiceResponse<MemberGroupFriendDTO> memberIsAddClerk(String enterpriseId, String memberId) {
List<TabHaobanExternalClerkRelated> list = this.externalClerkRelatedService.getAddTimeByMemberId(memberId,enterpriseId,"1") ;
if(CollectionUtils.isNotEmpty(list)) {
TabHaobanExternalClerkRelated item = list.get(0) ;
MemberGroupFriendDTO dto = new MemberGroupFriendDTO() ;
dto.setType(0);
String storeId = item.getStoreId() ;
String clerkId = item.getClerkId() ;
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
StoreDTO storeDTO = storeService.getStore(storeId);
if(clerkDTO != null && null != storeDTO) {
dto.setStoreId(storeId);
dto.setClerkId(clerkId);
dto.setRemark(clerkDTO.getClerkName()+"("+clerkDTO.getClerkCode()+") , " + storeDTO.getStoreName()+"("+storeDTO.getStoreCode()+")");
return com.gic.api.base.commons.ServiceResponse.success(dto) ;
}
}
return com.gic.api.base.commons.ServiceResponse.success(null) ;
}
} }
...@@ -9,6 +9,7 @@ import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil; ...@@ -9,6 +9,7 @@ import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.util.EventUtils; import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.haoban.manage.service.util.HBQwMonitorUtils; import com.gic.haoban.manage.service.util.HBQwMonitorUtils;
import com.gic.member.ext.api.enums.growth.GrowthRuleEnum;
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.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -748,13 +749,18 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -748,13 +749,18 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
if (StringUtils.isNotBlank(mobile)) { if (StringUtils.isNotBlank(mobile)) {
memberId = memberService.getMemberIdByPhoneNumber(mobile, enterpriseId); memberId = memberService.getMemberIdByPhoneNumber(mobile, enterpriseId);
} }
boolean flag = false ;
if (null == memberId) { if (null == memberId) {
memberId = this.getMeberId(enterpriseId,unionId, name, avatar, qrcodeParam, externalUserid, wxEnterpriseRelated.getWxEnterpriseType(), 2 , dto.getAddCreateTime()) ; memberId = this.getMeberId(enterpriseId,unionId, name, avatar, qrcodeParam, externalUserid, wxEnterpriseRelated.getWxEnterpriseType(), 2 , dto.getAddCreateTime(),clerkId) ;
flag = true ;
} }
if (memberId == null) { if (memberId == null) {
log.info("新增外部联系人,创建member失败,unionid={},外部联系人id={},", unionId,externalUserid); log.info("新增外部联系人,创建member失败,unionid={},外部联系人id={},", unionId,externalUserid);
return ""; return "";
} }
if(!flag) {
this.updateMemberGrowth(enterpriseId,memberId,clerkId);
}
String storeId = staffClerkRelationDTO.getStoreId(); String storeId = staffClerkRelationDTO.getStoreId();
this.saveExternalClerk(memberId, staffId, dto, staffClerkRelationDTO , 1); this.saveExternalClerk(memberId, staffId, dto, staffClerkRelationDTO , 1);
// this.sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId,memberId); // this.sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId,memberId);
...@@ -991,6 +997,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -991,6 +997,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
if(StringUtils.isNoneBlank(externalUserDTO.getUnionId())) { if(StringUtils.isNoneBlank(externalUserDTO.getUnionId())) {
dto.setUnionid(externalUserDTO.getUnionId()); dto.setUnionid(externalUserDTO.getUnionId());
} }
dto.setAddWay(externalUserDTO.getAddWay());
dto.setSelfExternalUserid(dto.getExternalUserid()); dto.setSelfExternalUserid(dto.getExternalUserid());
return dto; return dto;
} }
...@@ -1068,6 +1075,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1068,6 +1075,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String externalUserId = ""; String externalUserId = "";
String state = ""; String state = "";
int friendType = 1; int friendType = 1;
Integer addWay = 0 ;
if (StringUtils.isNotBlank(unionIdJson)) { if (StringUtils.isNotBlank(unionIdJson)) {
JSONObject jo = JSON.parseObject(unionIdJson); JSONObject jo = JSON.parseObject(unionIdJson);
String external_contact = jo.getString("external_contact"); String external_contact = jo.getString("external_contact");
...@@ -1093,6 +1101,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1093,6 +1101,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
state = follow.getString("state"); state = follow.getString("state");
if (userId.equals(userId1)) { if (userId.equals(userId1)) {
createTime = follow.getString("createtime"); createTime = follow.getString("createtime");
addWay = follow.getIntValue("add_way") ;
} }
} }
} }
...@@ -1105,6 +1114,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1105,6 +1114,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
pojo.setWxEnterpriseId(wxEnterpriseId); pojo.setWxEnterpriseId(wxEnterpriseId);
pojo.setState(state); pojo.setState(state);
pojo.setFriendType(friendType); pojo.setFriendType(friendType);
pojo.setAddWay(addWay);
return pojo; return pojo;
} }
...@@ -1957,7 +1967,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1957,7 +1967,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
log.info("导购码不存在:" + clerkId); log.info("导购码不存在:" + clerkId);
qrcodeParam = "clerk_clerk_"+clerk.getClerkId() ; qrcodeParam = "clerk_clerk_"+clerk.getClerkId() ;
} }
String memberId = this.getMeberId(enterpriseId, externalUserDTO.getUnionId(), externalUserDTO.getName(), externalUserDTO.getAvatar(), qrcodeParam, externalUserDTO.getExternalUserId(), wxEnterpriseRelated.getWxEnterpriseType(), 1 , externalUserDTO.getAddCreateTime()) ; String memberId = this.getMeberId(enterpriseId, externalUserDTO.getUnionId(), externalUserDTO.getName(), externalUserDTO.getAvatar(), qrcodeParam, externalUserDTO.getExternalUserId(), wxEnterpriseRelated.getWxEnterpriseType(), 1 , externalUserDTO.getAddCreateTime(),clerk.getClerkId()) ;
if (memberId == null) { if (memberId == null) {
return "会员不存在:unionid:" + externalUserDTO.getUnionId(); return "会员不存在:unionid:" + externalUserDTO.getUnionId();
} }
...@@ -1965,7 +1975,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1965,7 +1975,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return this.saveExternalUser(externalUserDTO); return this.saveExternalUser(externalUserDTO);
} }
private String getMeberId(String enterpriseId , String unionid , String name , String image ,String qrcodeParam , String externalUserId , int wxEnterpriseType , int sence , String qwTime) { private String getMeberId(String enterpriseId , String unionid , String name , String image ,String qrcodeParam , String externalUserId , int wxEnterpriseType , int sence , String qwTime,String clerkId) {
QywxMemberQDTO qdto = new QywxMemberQDTO() ; QywxMemberQDTO qdto = new QywxMemberQDTO() ;
qdto.setEnterpriseId(enterpriseId); qdto.setEnterpriseId(enterpriseId);
qdto.setNick(name); qdto.setNick(name);
...@@ -1986,10 +1996,22 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1986,10 +1996,22 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
if(resp.isSuccess()) { if(resp.isSuccess()) {
MemberSimpleDetailDTO member = resp.getResult() ; MemberSimpleDetailDTO member = resp.getResult() ;
memberId = member.getMemberId() ; memberId = member.getMemberId() ;
this.updateMemberGrowth(enterpriseId,memberId,clerkId);
} }
return memberId ; return memberId ;
} }
private void updateMemberGrowth(String enterpriseId,String memberId , String clerkId) {
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if(clerkDTO != null && null != clerkDTO.getStoreId()) {
String storeId = clerkDTO.getStoreId() ;
StoreDTO storeDTO = storeService.getStore(storeId);
if(null != storeDTO) {
this.externalMemberService.updateMemberGrowth(enterpriseId, memberId, GrowthRuleEnum.ADD_HAOBAN_FRIEND.getRuleCode(), "导购信息", clerkDTO.getClerkName() + "(" + clerkDTO.getClerkCode() + ") , " + storeDTO.getStoreName() + "(" + storeDTO.getStoreCode() + ")");
}
}
}
private void updateExternalStatus(String externalUserId , String staffId) { private void updateExternalStatus(String externalUserId , String staffId) {
List<TabHaobanExternalClerkRelated> tabHaobanExternalClerkRelatedList = externalClerkRelatedService.listByExternalUseridAndWxUserId(externalUserId, staffId); List<TabHaobanExternalClerkRelated> tabHaobanExternalClerkRelatedList = externalClerkRelatedService.listByExternalUseridAndWxUserId(externalUserId, staffId);
if (CollectionUtils.isEmpty(tabHaobanExternalClerkRelatedList)) { if (CollectionUtils.isEmpty(tabHaobanExternalClerkRelatedList)) {
...@@ -2000,4 +2022,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -2000,4 +2022,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedList.get(0); TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedList.get(0);
this.externalClerkRelatedMapper.updateExternalStatusById(related.getExternalClerkRelatedId(),1) ; this.externalClerkRelatedMapper.updateExternalStatusById(related.getExternalClerkRelatedId(),1) ;
} }
} }
...@@ -5,6 +5,9 @@ import com.gic.api.base.commons.BasePageInfo; ...@@ -5,6 +5,9 @@ import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.EnterpriseUsingPermissionDto;
import com.gic.enterprise.api.dto.WechatWorkServiceSetting;
import com.gic.enterprise.api.service.EnterpriseUseForbidService;
import com.gic.haoban.manage.api.dto.OpenStaffDTO; import com.gic.haoban.manage.api.dto.OpenStaffDTO;
import com.gic.haoban.manage.api.dto.OpenStaffLicenseDTO; import com.gic.haoban.manage.api.dto.OpenStaffLicenseDTO;
import com.gic.haoban.manage.api.dto.OpenStaffListDTO; import com.gic.haoban.manage.api.dto.OpenStaffListDTO;
...@@ -46,6 +49,8 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -46,6 +49,8 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
private OpenStaffService openStaffService; private OpenStaffService openStaffService;
@Autowired @Autowired
private WxEnterpriseService wxEnterpriseService; private WxEnterpriseService wxEnterpriseService;
@Autowired
private EnterpriseUseForbidService enterpriseUseForbidService ;
@Override @Override
public ServiceResponse<Void> delete(Long id) { public ServiceResponse<Void> delete(Long id) {
...@@ -159,6 +164,10 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -159,6 +164,10 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
if (null == tab) { if (null == tab) {
return ServiceResponse.failure("9999", "记录不存在"); return ServiceResponse.failure("9999", "记录不存在");
} }
if(StringUtils.isBlank(tab.getKey1())) {
this.openStaffMapper.updateLoginStep(tab.getOpenStaffId(),0);
return ServiceResponse.failure("9999", "用户退出后,需重新获取登录码");
}
return OpenUtils.checkCode(tab.getUuid(), tab.getKey1(), validCode); return OpenUtils.checkCode(tab.getUuid(), tab.getKey1(), validCode);
} }
...@@ -193,6 +202,9 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -193,6 +202,9 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
try { try {
RedisUtil.lock(lockKey, 3L); RedisUtil.lock(lockKey, 3L);
TabOpenStaff openStaff = this.openStaffMapper.getByStaffId(staffId); TabOpenStaff openStaff = this.openStaffMapper.getByStaffId(staffId);
if(qdto.getImportFlag()==1 && null != openStaff) {
return ServiceResponse.failure("9999","导购账号已授权") ;
}
Long qwUserId = null; Long qwUserId = null;
if (null != openStaff) { if (null != openStaff) {
if (openStaff.getStatusFlag() == 1 && qdto.getLoginAgainFlag() == 0) { if (openStaff.getStatusFlag() == 1 && qdto.getLoginAgainFlag() == 0) {
...@@ -202,7 +214,7 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -202,7 +214,7 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
log.info("重新初始化"); log.info("重新初始化");
this.openStaffService.logout(openStaff.getUuid(), "重新初始化", 0, null); this.openStaffService.logout(openStaff.getUuid(), "重新初始化", 0, null);
// 自动登录 // 自动登录
String newUuid = this.openStaffService.autoLogin(openStaff.getOpenStaffId(),openStaff.getQwUserId()) ; String newUuid = this.openStaffService.autoLogin(openStaff.getOpenStaffId(),openStaff.getQwUserId(),openStaff.getWxEnterpriseId()) ;
if(null != newUuid) { if(null != newUuid) {
log.info("自动登录成功"); log.info("自动登录成功");
openStaff.setAuthTime(new Date()); openStaff.setAuthTime(new Date());
...@@ -220,18 +232,27 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -220,18 +232,27 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
openStaff.setWxEnterpriseId(qdto.getWxEnterpriseId()); openStaff.setWxEnterpriseId(qdto.getWxEnterpriseId());
openStaff.setEnterpriseId(qdto.getEnterpriseId()); openStaff.setEnterpriseId(qdto.getEnterpriseId());
} }
ServiceResponse<QwOpenResultInitBO> resp = OpenUtils.init(qwUserId,true);
log.info("resp={}", JSONObject.toJSONString(resp));
QwOpenResultInitBO init = resp.getResult();
openStaff.setUuid(init.getUuid());
openStaff.setQrCode1(init.getQrcode());
openStaff.setKey1(init.getKey());
openStaff.setStatusFlag(2); openStaff.setStatusFlag(2);
openStaff.setStep(0); openStaff.setStep(0);
openStaff.setValidFlag(0); openStaff.setValidFlag(0);
openStaff.setValidQrcodeFlag(0); openStaff.setValidQrcodeFlag(0);
openStaff.setQrCode2(null); openStaff.setQrCode2(null);
openStaff.setKey2(null); openStaff.setKey2(null);
if(qdto.getImportFlag()==1) {
boolean flag = this.getCheckInfo(qdto.getWxEnterpriseId(), qdto.getEnterpriseId()) ;
if(!flag) {
return ServiceResponse.failure("9999","托管账号数量已达上线") ;
}
openStaff = this.openStaffService.save(openStaff);
return ServiceResponse.success(null);
}
ServiceResponse<QwOpenResultInitBO> resp = OpenUtils.init(qwUserId,true , this.openStaffService.getDeverType(qdto.getWxEnterpriseId()));
log.info("resp={}", JSONObject.toJSONString(resp));
QwOpenResultInitBO init = resp.getResult();
openStaff.setUuid(init.getUuid());
openStaff.setQrCode1(init.getQrcode());
openStaff.setKey1(init.getKey());
openStaff = this.openStaffService.save(openStaff); openStaff = this.openStaffService.save(openStaff);
OpenStaffDTO dto = EntityUtil.changeEntityByJSON(OpenStaffDTO.class, openStaff); OpenStaffDTO dto = EntityUtil.changeEntityByJSON(OpenStaffDTO.class, openStaff);
dto.setQrcodeData(init.getQrcode_data()); dto.setQrcodeData(init.getQrcode_data());
...@@ -308,4 +329,26 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService { ...@@ -308,4 +329,26 @@ public class OpenStaffApiServiceImpl implements OpenStaffApiService {
public void updateStopTime(Long openStaffId, int type, int time) { public void updateStopTime(Long openStaffId, int type, int time) {
this.openStaffMapper.updateStopTime(openStaffId, type, time); this.openStaffMapper.updateStopTime(openStaffId, type, time);
} }
private boolean getCheckInfo(String wxEnterpriseId, String enterpriseId) {
ServiceResponse<EnterpriseUsingPermissionDto> resp = this.enterpriseUseForbidService.getWxEnterpriseService(enterpriseId, wxEnterpriseId);
log.info("托管许可={}", JSONObject.toJSONString(resp));
if (resp.isSuccess()) {
EnterpriseUsingPermissionDto dto = resp.getResult();
if (null == dto) {
return false ;
} else {
if (dto.getServiceEndDate().before(new Date())) {
return false ;
}
String json = dto.getModuleSetting();
WechatWorkServiceSetting bo = JSONObject.parseObject(json, WechatWorkServiceSetting.class);
int total = bo.getAccountNumber() ;
int useNum = this.openStaffMapper.getNum(wxEnterpriseId, enterpriseId, 0);
log.info("总数={},使用{},{},{}",total,useNum,wxEnterpriseId,enterpriseId);
return total>useNum ;
}
}
return false;
}
} }
package com.gic.haoban.manage.service.service.out.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.ToolUtil;
import com.gic.haoban.manage.api.dto.OpenStaffDTO;
import com.gic.haoban.manage.api.dto.OpenStaffImportDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.qdto.OpenStaffInitQDTO;
import com.gic.haoban.manage.api.service.OpenStaffApiService;
import com.gic.haoban.manage.api.service.OpenStaffImportTaskApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.service.dao.mapper.OpenStaffMapper;
import com.gic.haoban.manage.service.entity.TabOpenStaff;
import com.google.common.collect.Lists;
import com.task.allocation.dto.AuthDTO;
import com.task.allocation.exception.TaskAllocationException;
import com.task.allocation.operation.AbstractTaskCenterManageOperation;
import com.task.allocation.qo.TaskAllocationComputed;
import com.task.allocation.qo.TaskCenterInitTaskQo;
import com.task.allocation.qo.TaskFailInfoQo;
import com.task.allocation.util.TaskAllocationSdkClient;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service("openStaffImportTaskApiService")
public class OpenStaffImportTaskApiServiceImpl extends AbstractTaskCenterManageOperation<OpenStaffImportDTO> implements OpenStaffImportTaskApiService {
private static final Logger log = LogManager.getLogger(OpenStaffImportTaskApiService.class);
@Autowired
private StaffClerkRelationApiService staffClerkRelationApiService;
@Autowired
private OpenStaffApiService openStaffApiService;
@Autowired
private OpenStaffMapper openStaffMapper;
@Autowired
private ClerkService clerkService ;
// openStaffImportTaskMQ
@Override
public ServiceResponse<Void> callBack(String params) {
log.info("批量导入托管账号callback", params);
super.run(params);
return ServiceResponse.success();
}
@Override
public List<OpenStaffImportDTO> getListTasks(String params) {
OpenStaffImportDTO dto = JSON.parseObject(params, OpenStaffImportDTO.class);
List<OpenStaffImportDTO> tasks = Lists.partition(dto.getClerkCodeList(), 1)
.stream()
.map(item -> {
OpenStaffImportDTO sub = new OpenStaffImportDTO();
sub.setWxEnterpriseId(dto.getWxEnterpriseId());
sub.setEnterpriseId(dto.getEnterpriseId());
sub.setLoginClerkId(dto.getLoginClerkId());
sub.setClerkCode(item.get(0));
return sub;
}).collect(Collectors.toList());
log.info("导入托管总任务数 {}", tasks.size());
return tasks;
}
@Override
public TaskFailInfoQo dealSingle(OpenStaffImportDTO obj) throws TaskAllocationException {
log.info("导入托管dealSingle={}",JSONObject.toJSONString(obj));
String wxEnterpriseId = obj.getWxEnterpriseId();
String enterpriseId = obj.getEnterpriseId() ;
String clerkCode = obj.getClerkCode() ;
ClerkDTO clerk = this.clerkService.getClerkByClerkCode(enterpriseId,clerkCode) ;
if(null == clerk) {
return fail().setColumns("导购code","失败说明")
.addValues(clerkCode,"该账号在当前企业下不存在");
}
String clerkId = clerk.getClerkId() ;
StaffClerkRelationDTO staffClerkRelationDTO = this.staffClerkRelationApiService.getByClerkId(clerkId) ;
if(null == staffClerkRelationDTO) {
return fail().setColumns("导购code","失败原因")
.addValues(clerkCode,"该账号未绑定好办小程序");
}
String staffId = staffClerkRelationDTO.getStaffId() ;
TabOpenStaff openStaff = this.openStaffMapper.getByStaffId(staffId) ;
if(null != openStaff) {
return fail().setColumns("导购code","失败说明")
.addValues(clerkCode,"导购账号已授权");
}
OpenStaffInitQDTO init = new OpenStaffInitQDTO() ;
init.setWxEnterpriseId(wxEnterpriseId);
init.setEnterpriseId(enterpriseId);
init.setStaffId(staffId);
init.setImportFlag(1);
ServiceResponse<OpenStaffDTO> resp = this.openStaffApiService.init(init) ;
if(!resp.isSuccess()) {
return fail().setColumns("导购code","失败说明")
.addValues(clerkCode,resp.getMessage());
}
return success();
}
@Override
public void computed(TaskAllocationComputed computed) {
log.info("导入托管完成={}", JSONObject.toJSONString(computed));
}
@Override
public OpenStaffImportDTO singleClass() {
return new OpenStaffImportDTO();
}
@Override
public ServiceResponse<String> createTask(OpenStaffImportDTO dto) {
TaskCenterInitTaskQo initTaskQo = new TaskCenterInitTaskQo();
String uuid = ToolUtil.randomUUID();
initTaskQo.setParams(JSONObject.toJSONString(dto));
initTaskQo.setBusinessParams(uuid);
initTaskQo.setTaskCategoryCode("openStaffImportTask");
initTaskQo.setTaskType(1);
AuthDTO user = new AuthDTO();
user.setUserId(dto.getLoginClerkId()) ;
user.setEnterpriseId(dto.getEnterpriseId()) ;
user.setLoginName(dto.getLoginName());
user.setRealName(dto.getRealName()) ;
initTaskQo.setLoginUser(user);
initTaskQo.setTaskModelName("好办企微托管");
initTaskQo.setTaskName("导入托管账号");
initTaskQo.setTaskContent("批量导入托管账号" + dto.getClerkCodeList().size() + "个");
try {
TaskAllocationSdkClient instance = TaskAllocationSdkClient.getInstance();
String taskId = instance.initTask(initTaskQo);
return ServiceResponse.success(taskId);
} catch (Exception e) {
log.info("批量导入托管账号dto任务异常", e);
}
return ServiceResponse.failure("9999", "创建任务异常");
}
}
...@@ -479,7 +479,12 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -479,7 +479,12 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
@Override @Override
public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds) { public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds) {
logger.info("同步好友标签到企业微信:externalUserId={},{}", externalUserId, JSONObject.toJSONString(tagItemIds)); return this.syncFriendTagToQywxByExternalUserId(wxEnterpriseId,enterpriseId,externalUserId,tagItemIds,null);
}
@Override
public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds, String externalUserInfo) {
logger.info("同步gic标签到企业微信:externalUserId={},{},{}", externalUserId, JSONObject.toJSONString(tagItemIds),externalUserInfo);
ServiceResponse resp = new ServiceResponse(); ServiceResponse resp = new ServiceResponse();
//获取需要同步的标签 //获取需要同步的标签
QywxSyncTagFormatPojo syncTagFormat = listSyncTagItems(wxEnterpriseId); QywxSyncTagFormatPojo syncTagFormat = listSyncTagItems(wxEnterpriseId);
...@@ -496,11 +501,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -496,11 +501,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ; WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
//查询外部联系人 //查询外部联系人
String wxSuiteid = config.getWxSuiteid(); String wxSuiteid = config.getWxSuiteid();
String externalUseridInfo = null ; String externalUseridInfo = externalUserInfo ;
if(qwDTO.isSelf()) { if(null == externalUseridInfo) {
externalUseridInfo = this.qywxUserApiService.getCorpSelfExternalUseridInfo(qwDTO.getDkCorpid(), qwDTO.getSelfSecret(), externalUserId,qwDTO.getUrlHost()) ; if(qwDTO.isSelf()) {
}else { externalUseridInfo = this.qywxUserApiService.getCorpSelfExternalUseridInfo(qwDTO.getDkCorpid(), qwDTO.getSelfSecret(), externalUserId,qwDTO.getUrlHost()) ;
externalUseridInfo = this.qywxUserApiService.getExternalUseridInfo(qwDTO.getThirdCorpid(), wxSuiteid, externalUserId); }else {
externalUseridInfo = this.qywxUserApiService.getExternalUseridInfo(qwDTO.getThirdCorpid(), wxSuiteid, externalUserId);
}
} }
if (StringUtils.isBlank(externalUseridInfo)) { if (StringUtils.isBlank(externalUseridInfo)) {
logger.info("好友不存在"); logger.info("好友不存在");
...@@ -690,7 +697,8 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -690,7 +697,8 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
continue; continue;
} }
//该会员打的标签 //该会员打的标签
List<MemberTagDTO> gicItems = memberTagService.listMemberTag(clerkRelated.getEnterpriseId(), memberId); /*List<MemberTagDTO> gicItems = memberTagService.listMemberTag(clerkRelated.getEnterpriseId(), memberId);*/
List<MemberTagDTO> gicItems = memberTagService.listMemberClerkManualTag(clerkRelated.getEnterpriseId(), memberId);
Set<String> noSyncTagItemIds = new HashSet<>(); Set<String> noSyncTagItemIds = new HashSet<>();
if (!CollectionUtils.isEmpty(gicItems)) { if (!CollectionUtils.isEmpty(gicItems)) {
noSyncTagItemIds = gicItems.stream().filter(item -> !entQywxSyncTagItemIds.contains(item.getTagsId())).map(dto -> dto.getTagsId()).collect(Collectors.toSet()); noSyncTagItemIds = gicItems.stream().filter(item -> !entQywxSyncTagItemIds.contains(item.getTagsId())).map(dto -> dto.getTagsId()).collect(Collectors.toSet());
......
...@@ -890,6 +890,17 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -890,6 +890,17 @@ public class StaffApiServiceImpl implements StaffApiService {
} }
@Override @Override
public List<String> isGicSuper(String clerkId, String wxEnterpriseId) {
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO == null) {
logger.info("导购不存在:clerkId:{},无门店", clerkId);
return Collections.emptyList();
}
List<String> gicStoreIds = getStoreIdList(clerkDTO);
return gicStoreIds;
}
@Override
public List<String> getHaoBanStoreIdsRolesByClerkId(String clerkId, String wxEnterpriseId) { public List<String> getHaoBanStoreIdsRolesByClerkId(String clerkId, String wxEnterpriseId) {
logger.info("查询导购权限,clerkId={},wxEnterpriseId={}", clerkId, wxEnterpriseId); logger.info("查询导购权限,clerkId={},wxEnterpriseId={}", clerkId, wxEnterpriseId);
if (StringUtils.isAnyBlank(clerkId, wxEnterpriseId)) { if (StringUtils.isAnyBlank(clerkId, wxEnterpriseId)) {
...@@ -997,7 +1008,7 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -997,7 +1008,7 @@ public class StaffApiServiceImpl implements StaffApiService {
pageParam.setCurrentPage(1); pageParam.setCurrentPage(1);
pageParam.setPageSize(1); pageParam.setPageSize(1);
if(clerkType == 2) { if(clerkType == 2) {
String storeWidgetId = this.powerService.getStoreWidgetId(new Date(), clerkId); String storeWidgetId = this.powerService.getStoreWidgetId(null, clerkId);
if(null != storeWidgetId) { if(null != storeWidgetId) {
Page<StoreDTO> page = storeWidgetService.getStoreWidgetStore(storeWidgetId, null, clerkDTO.getEnterpriseId(), pageParam, null,null); Page<StoreDTO> page = storeWidgetService.getStoreWidgetStore(storeWidgetId, null, clerkDTO.getEnterpriseId(), pageParam, null,null);
storeId = page.getResult().get(0).getStoreId(); storeId = page.getResult().get(0).getStoreId();
...@@ -1035,7 +1046,7 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -1035,7 +1046,7 @@ public class StaffApiServiceImpl implements StaffApiService {
String enterpriseId = clerkDTO.getEnterpriseId(); String enterpriseId = clerkDTO.getEnterpriseId();
EnterpriseSettingDTO enterpriseSetting = enterpriseService.getEnterpriseSettingByEnterpriseId(enterpriseId); EnterpriseSettingDTO enterpriseSetting = enterpriseService.getEnterpriseSettingByEnterpriseId(enterpriseId);
if (enterpriseSetting.getEnableAccessControl() != null && enterpriseSetting.getEnableAccessControl() == 1) { if (enterpriseSetting.getEnableAccessControl() != null && enterpriseSetting.getEnableAccessControl() == 1) {
String storeWidgetId = this.powerService.getStoreWidgetId(new Date(), clerkId); String storeWidgetId = this.powerService.getStoreWidgetId(null, clerkId);
if (StringUtils.isBlank(storeWidgetId)) { if (StringUtils.isBlank(storeWidgetId)) {
logger.info("导购无门店权限,门店组件id is null"); logger.info("导购无门店权限,门店组件id is null");
return Collections.emptyList(); return Collections.emptyList();
......
...@@ -62,6 +62,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService { ...@@ -62,6 +62,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService {
saveWelcomeBO.setModifierId(qdto.getModifierId()); saveWelcomeBO.setModifierId(qdto.getModifierId());
saveWelcomeBO.setModifierName(qdto.getModifierName()); saveWelcomeBO.setModifierName(qdto.getModifierName());
saveWelcomeBO.setType(qdto.getType()); saveWelcomeBO.setType(qdto.getType());
saveWelcomeBO.setScene(qdto.getScene());
// 媒体列表 // 媒体列表
saveWelcomeBO.setWelcomeMediaList(EntityUtil.changeEntityListNew(SaveWelcomeMediaBO.class, qdto.getWelcomeMediaList())); saveWelcomeBO.setWelcomeMediaList(EntityUtil.changeEntityListNew(SaveWelcomeMediaBO.class, qdto.getWelcomeMediaList()));
// 适用部门新增列表 // 适用部门新增列表
...@@ -110,6 +111,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService { ...@@ -110,6 +111,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService {
dto.setOperatorName(one.getOperatorName()); dto.setOperatorName(one.getOperatorName());
dto.setDefaultWelcomeFlag(one.getDefaultWelcomeFlag()); dto.setDefaultWelcomeFlag(one.getDefaultWelcomeFlag());
dto.setType(one.getType()); dto.setType(one.getType());
dto.setScene(one.getScene());
// 媒体列表 // 媒体列表
dto.setWelcomeMediaList( dto.setWelcomeMediaList(
CollectionUtils.isEmpty(one.getWelcomeMediaList()) ? Collections.emptyList() CollectionUtils.isEmpty(one.getWelcomeMediaList()) ? Collections.emptyList()
...@@ -138,6 +140,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService { ...@@ -138,6 +140,7 @@ public class WelcomeApiServiceImpl implements WelcomeApiService {
dto.setOpenFlag(welcome.getOpenFlag()); dto.setOpenFlag(welcome.getOpenFlag());
dto.setDefaultWelcomeFlag(welcome.getDefaultWelcomeFlag()); dto.setDefaultWelcomeFlag(welcome.getDefaultWelcomeFlag());
dto.setType(welcome.getType()); dto.setType(welcome.getType());
dto.setScene(welcome.getScene());
// 媒体列表 // 媒体列表
dto.setWelcomeMediaList( dto.setWelcomeMediaList(
CollectionUtils.isEmpty(welcome.getWelcomeMediaList()) ? Collections.emptyList() CollectionUtils.isEmpty(welcome.getWelcomeMediaList()) ? Collections.emptyList()
......
...@@ -29,6 +29,7 @@ import com.gic.haoban.manage.service.service.DepartmentService; ...@@ -29,6 +29,7 @@ import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.MiniprogramSettingService; import com.gic.haoban.manage.service.service.MiniprogramSettingService;
import com.gic.haoban.manage.service.service.StoreRangeService; import com.gic.haoban.manage.service.service.StoreRangeService;
import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService; import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService;
import com.gic.haoban.manage.service.util.CustomSwitcher;
import com.gic.mq.sdk.GicMQClient; import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
...@@ -195,6 +196,10 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi ...@@ -195,6 +196,10 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
} }
private String isBindMany(String enterpriseId , String wxEnterpriseId) { private String isBindMany(String enterpriseId , String wxEnterpriseId) {
String eids = CustomSwitcher.haoban_one_bind_many ;
if(eids.contains(enterpriseId)) {
return null ;
}
List<TabHaobanWxEnterpriseRelated> list = this.wxEnterpriseRelatedMapper.listByEnterpriseId(enterpriseId) ; List<TabHaobanWxEnterpriseRelated> list = this.wxEnterpriseRelatedMapper.listByEnterpriseId(enterpriseId) ;
List<String> bindNameList = new ArrayList<>() ; List<String> bindNameList = new ArrayList<>() ;
if(CollectionUtils.isNotEmpty(list)) { if(CollectionUtils.isNotEmpty(list)) {
......
...@@ -10,10 +10,11 @@ import java.util.stream.Collectors; ...@@ -10,10 +10,11 @@ import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.StoreDTO; import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.api.dto.MemberGroupFriendDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanClerkMainStoreRelatedMapper; import com.gic.haoban.manage.service.dao.mapper.TabHaobanClerkMainStoreRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper; import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper; import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated; import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat; import com.gic.haoban.manage.service.entity.chat.TabGroupChat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser; import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -41,9 +42,6 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO; ...@@ -41,9 +42,6 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService; import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatBO; import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatBO;
import com.gic.haoban.manage.service.service.StaffClerkRelationService; import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.StaffService; import com.gic.haoban.manage.service.service.StaffService;
...@@ -320,4 +318,23 @@ public class GroupChatApiServiceImpl implements GroupChatApiService { ...@@ -320,4 +318,23 @@ public class GroupChatApiServiceImpl implements GroupChatApiService {
public List<String> listOpenGroupChatDK(String enterpriseId, String staffId) { public List<String> listOpenGroupChatDK(String enterpriseId, String staffId) {
return this.groupChatMapper.listOpenGroupChatDK(enterpriseId,staffId); return this.groupChatMapper.listOpenGroupChatDK(enterpriseId,staffId);
} }
@Override
public ServiceResponse<MemberGroupFriendDTO> memberIsAddGroup(String enterpriseId, String memberId) {
List<TabGroupChatUser> list = this.groupChatUserService.getByMember(enterpriseId,memberId) ;
if(CollectionUtils.isNotEmpty(list)) {
logger.info("会员入群数={}",memberId,list.size());
TabGroupChatUser item = list.get(0) ;
MemberGroupFriendDTO dto = new MemberGroupFriendDTO() ;
dto.setType(1);
Long groupChatId = item.getGroupChatId() ;
TabGroupChat group = this.groupChatMapper.selectById(groupChatId) ;
if(null != group) {
dto.setGroupChatId(groupChatId);
dto.setRemark(group.getName()+"("+groupChatId+")");
return ServiceResponse.success(dto);
}
}
return ServiceResponse.success(null);
}
} }
package com.gic.haoban.manage.service.task; package com.gic.haoban.manage.service.task;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService; import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.service.util.CustomSwitcher;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService; import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -175,7 +177,13 @@ public class QywxDeptSyncOperation implements BaseSyncOperation { ...@@ -175,7 +177,13 @@ public class QywxDeptSyncOperation implements BaseSyncOperation {
private String getStaff(String taskId, String dataId, String enterpriseId, String wxEnterpriseId,SecretSettingDTO secretSetting,WxEnterpriseQwDTO qwDTO) { private String getStaff(String taskId, String dataId, String enterpriseId, String wxEnterpriseId,SecretSettingDTO secretSetting,WxEnterpriseQwDTO qwDTO) {
if("1".equals(dataId)) { logger.info("getstaff={}",dataId);
String id = "1" ;
Map<String,Integer> map = CustomSwitcher.haoban_department_id ;
if(null != map && null != map.get(wxEnterpriseId)) {
id = map.get(wxEnterpriseId) +"" ;
}
if(id.equals(dataId)) {
List<UserDTO> list = null ; List<UserDTO> list = null ;
if(qwDTO.getWxSecurityType()==4) { if(qwDTO.getWxSecurityType()==4) {
list = this.qywxUserApiService.listDepartmentUser(qwDTO.getThirdCorpid(), config.getWxSuiteid(), dataId, 1) ; list = this.qywxUserApiService.listDepartmentUser(qwDTO.getThirdCorpid(), config.getWxSuiteid(), dataId, 1) ;
......
...@@ -3,13 +3,24 @@ package com.gic.haoban.manage.service.util; ...@@ -3,13 +3,24 @@ package com.gic.haoban.manage.service.util;
import com.gic.commons.switcher.Switcher; import com.gic.commons.switcher.Switcher;
import com.gic.commons.switcher.SwitcherNamespace; import com.gic.commons.switcher.SwitcherNamespace;
import java.util.Map;
@SwitcherNamespace("BUZ.qywx.open") @SwitcherNamespace("BUZ.qywx.open")
public class CustomSwitcher { public class CustomSwitcher {
@Switcher
public static Map<String,String> qywx_open_type ;
/** /**
* 积分触不通知会员名单 * 积分触不通知会员名单
*/ */
@Switcher @Switcher
public static String qywx_open_host ; public static String qywx_open_host ;
@Switcher
public static String haoban_one_bind_many ;
@Switcher
public static Map<String,Integer> haoban_department_id ;
} }
\ No newline at end of file
...@@ -23,11 +23,14 @@ public class OpenUtils { ...@@ -23,11 +23,14 @@ public class OpenUtils {
return CustomSwitcher.qywx_open_host ; return CustomSwitcher.qywx_open_host ;
} }
public static ServiceResponse<QwOpenResultInitBO> init(Long qwUserId, boolean qrcodeFlag) { public static ServiceResponse<QwOpenResultInitBO> init(Long qwUserId, boolean qrcodeFlag , String deverType) {
JSONObject initJson = new JSONObject(); JSONObject initJson = new JSONObject();
if (null != qwUserId) { if (null != qwUserId) {
initJson.put("vid", qwUserId); initJson.put("vid", qwUserId);
} }
if(null != deverType) {
initJson.put("deverType",deverType) ;
}
String initStr = HttpClient.sendPostJSON(String.format(getHost(), "init"), initJson.toJSONString(), "utf-8"); String initStr = HttpClient.sendPostJSON(String.format(getHost(), "init"), initJson.toJSONString(), "utf-8");
logger.info("企微初始化,req={},{}", initJson.toJSONString(), initStr); logger.info("企微初始化,req={},{}", initJson.toJSONString(), initStr);
QwOpenResultBO initResult = result(initStr); QwOpenResultBO initResult = result(initStr);
...@@ -141,7 +144,7 @@ public class OpenUtils { ...@@ -141,7 +144,7 @@ public class OpenUtils {
logger.info("获取当前账号详情={},uuid={}", backJson, uuid); logger.info("获取当前账号详情={},uuid={}", backJson, uuid);
JSONObject resultJson = JSONObject.parseObject(backJson); JSONObject resultJson = JSONObject.parseObject(backJson);
int errcode = resultJson.getIntValue("errcode"); int errcode = resultJson.getIntValue("errcode");
if (errcode == 500 && resultJson.getString("errmsg").contains("实例不存在")) { if (errcode == 500) {
return false; return false;
} }
return true; return true;
......
...@@ -11,4 +11,5 @@ ...@@ -11,4 +11,5 @@
<import resource="classpath:jdbc-haoban-manage-service.xml" /> <import resource="classpath:jdbc-haoban-manage-service.xml" />
<import resource="classpath*:log-record-init.xml" /> <import resource="classpath*:log-record-init.xml" />
<import resource="classpath*:kafka-setting-data.xml" /> <import resource="classpath*:kafka-setting-data.xml" />
<import resource="classpath*:task-center-config.xml"/>
</beans> </beans>
\ No newline at end of file
...@@ -21,7 +21,8 @@ ...@@ -21,7 +21,8 @@
<bean class="com.gic.haoban.common.ext.LoggerLevelListen" id="loggerLevelListen"> <bean class="com.gic.haoban.common.ext.LoggerLevelListen" id="loggerLevelListen">
<constructor-arg index="0" value="haoban-manage-service"/> <constructor-arg index="0" value="haoban-manage-service"/>
</bean> </bean>
<dubbo:service interface="com.gic.haoban.manage.api.service.OpenStaffImportTaskApiService" ref="openStaffImportTaskApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.WxEnterpriseActiveDataApiService" ref="wxEnterpriseActiveDataApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.WxEnterpriseActiveDataApiService" ref="wxEnterpriseActiveDataApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatDataApiService" ref="groupChatDataApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatDataApiService" ref="groupChatDataApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" ref="groupChatPlanApiService" timeout="10000"/> <dubbo:service interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" ref="groupChatPlanApiService" timeout="10000"/>
...@@ -238,6 +239,6 @@ ...@@ -238,6 +239,6 @@
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" />
</beans> </beans>
\ No newline at end of file
...@@ -896,6 +896,7 @@ ...@@ -896,6 +896,7 @@
<if test="null != flag"> <if test="null != flag">
and status_flag in (1) and status_flag in (1)
</if> </if>
order by create_time desc
</select> </select>
<select id="getMemberIdByExternalId" resultType="java.lang.String"> <select id="getMemberIdByExternalId" resultType="java.lang.String">
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
welcome_id welcome_id
, wx_enterprise_id, title, welcome_content,welcome_img,open_flag, status_flag, , wx_enterprise_id, title, welcome_content,welcome_img,open_flag, status_flag,
create_time, update_time, operator_id, operator_name, default_welcome_flag , creator_id , creator_name , modifier_id , modifier_name, `type` create_time, update_time, operator_id, operator_name, default_welcome_flag , creator_id , creator_name , modifier_id , modifier_name, `type` , scene
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabWelcome"> <insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabWelcome">
insert into tab_haoban_welcome (welcome_id, wx_enterprise_id, title, insert into tab_haoban_welcome (welcome_id, wx_enterprise_id, title,
welcome_content, welcome_img, open_flag, status_flag, create_time, welcome_content, welcome_img, open_flag, status_flag, create_time,
update_time, operator_id, operator_name, default_welcome_flag , creator_id , creator_name,modifier_id,modifier_name, `type`) update_time, operator_id, operator_name, default_welcome_flag , creator_id , creator_name,modifier_id,modifier_name, `type` , scene)
values (#{welcomeId,jdbcType=VARCHAR}, values (#{welcomeId,jdbcType=VARCHAR},
#{wxEnterpriseId,jdbcType=VARCHAR}, #{wxEnterpriseId,jdbcType=VARCHAR},
#{title,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#{operatorId,jdbcType=VARCHAR}, #{operatorId,jdbcType=VARCHAR},
#{operatorName,jdbcType=VARCHAR}, #{operatorName,jdbcType=VARCHAR},
#{defaultWelcomeFlag,jdbcType=INTEGER} , #{creatorId} , #{creatorName} , #{modifierId} , #{modifierName}, #{defaultWelcomeFlag,jdbcType=INTEGER} , #{creatorId} , #{creatorName} , #{modifierId} , #{modifierName},
#{type} #{type} , #{scene}
) )
</insert> </insert>
...@@ -100,7 +100,10 @@ ...@@ -100,7 +100,10 @@
modifier_name = #{modifierName}, modifier_name = #{modifierName},
</if> </if>
<if test="type != null"> <if test="type != null">
`type` = #{type} `type` = #{type} ,
</if>
<if test="scene !=0 ">
scene = #{scene} ,
</if> </if>
</set> </set>
where welcome_id = #{welcomeId,jdbcType=VARCHAR} where welcome_id = #{welcomeId,jdbcType=VARCHAR}
...@@ -162,6 +165,15 @@ ...@@ -162,6 +165,15 @@
<if test="type != null"> <if test="type != null">
and type = #{type} and type = #{type}
</if> </if>
<if test="scene>0">
and scene = #{scene}
</if>
<if test="sceneType==1">
and scene in (1,2)
</if>
<if test="sceneType==2">
and scene in (1,3)
</if>
</where> </where>
order by update_time desc order by update_time desc
</select> </select>
......
...@@ -211,7 +211,7 @@ ...@@ -211,7 +211,7 @@
<select id="listByExternalUseridForMatch" resultMap="result-map-tabHaobanGroupChatUser"> <select id="listByExternalUseridForMatch" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where user_id = #{externalUserid} select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where user_id = #{externalUserid}
and wx_enterprise_id = #{wxEnterpriseId} and enterprise_id = #{enterpriseId} and wx_enterprise_id = #{wxEnterpriseId} and enterprise_id = #{enterpriseId}
and user_type != 3 and user_type != 3
and status_flag = 1 and delete_flag = 0 and status_flag = 1 and delete_flag = 0
</select> </select>
...@@ -315,4 +315,10 @@ ...@@ -315,4 +315,10 @@
and delete_flag = 0 and status_flag = 1 limit 1 and delete_flag = 0 and status_flag = 1 limit 1
</select> </select>
<select id="getByMember" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List"/> from tab_haoban_group_chat_user where enterprise_id = #{enterpriseId}
and member_id = #{memberId} and status_flag = 1 and delete_flag = 0 order by create_time desc
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
create_time, create_time,
update_time, update_time,
add_time, add_time,
all_del_flag , qw_add_time , friend_clerk_id , friend_store_id , del_type ) all_del_flag , qw_add_time , friend_clerk_id , friend_store_id , del_type , del_is_single)
VALUES (#{logId,jdbcType=BIGINT}, VALUES (#{logId,jdbcType=BIGINT},
#{wxEnterpriseId,jdbcType=VARCHAR}, #{wxEnterpriseId,jdbcType=VARCHAR},
#{enterpriseId,jdbcType=CHAR}, #{enterpriseId,jdbcType=CHAR},
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
now(), now(),
now(), now(),
now(), now(),
#{allDelFlag,jdbcType=INTEGER} , #{qwAddTime} , #{friendClerkId} , #{friendStoreId} , #{delType}) #{allDelFlag,jdbcType=INTEGER} , #{qwAddTime} , #{friendClerkId} , #{friendStoreId} , #{delType} , #{delIsSingle})
]]> ]]>
</insert> </insert>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -126,6 +126,9 @@ public class WechatWorkController extends NewBaseController { ...@@ -126,6 +126,9 @@ public class WechatWorkController extends NewBaseController {
if (tempJson.containsKey("4")) { if (tempJson.containsKey("4")) {
vo.setSalesDeleteNum(tempJson.getInteger("4")); vo.setSalesDeleteNum(tempJson.getInteger("4"));
} }
if(tempJson.containsKey("5")) {
vo.setDelIsSingleNum(tempJson.getInteger("5"));
}
} }
} }
voList.add(vo); voList.add(vo);
...@@ -195,6 +198,8 @@ public class WechatWorkController extends NewBaseController { ...@@ -195,6 +198,8 @@ public class WechatWorkController extends NewBaseController {
fieldList.add("deleteSalesNum"); fieldList.add("deleteSalesNum");
indexList.add("导购删除人数"); indexList.add("导购删除人数");
fieldList.add("salesDeleteNum"); fieldList.add("salesDeleteNum");
indexList.add("非单向好友被删除人数");
fieldList.add("delIsSingleNum");
indexList.add("单向好友人数"); indexList.add("单向好友人数");
fieldList.add("onewayFriendNum"); fieldList.add("onewayFriendNum");
...@@ -284,6 +289,8 @@ public class WechatWorkController extends NewBaseController { ...@@ -284,6 +289,8 @@ public class WechatWorkController extends NewBaseController {
fieldList.add("deleteSalesNum"); fieldList.add("deleteSalesNum");
indexList.add("导购删除人数"); indexList.add("导购删除人数");
fieldList.add("salesDeleteNum"); fieldList.add("salesDeleteNum");
indexList.add("非单向好友被删除人数");
fieldList.add("delIsSingleNum");
indexList.add("单向好友人数"); indexList.add("单向好友人数");
fieldList.add("onewayFriendNum"); fieldList.add("onewayFriendNum");
...@@ -361,6 +368,8 @@ public class WechatWorkController extends NewBaseController { ...@@ -361,6 +368,8 @@ public class WechatWorkController extends NewBaseController {
fieldList.add("storeCode"); fieldList.add("storeCode");
indexList.add("删除类型"); indexList.add("删除类型");
fieldList.add("deleteType"); fieldList.add("deleteType");
indexList.add("单向好友被删除");
fieldList.add("delIsSingle");
indexList.add("留存天数"); indexList.add("留存天数");
fieldList.add("remainDays"); fieldList.add("remainDays");
indexList.add("添加好友时间"); indexList.add("添加好友时间");
......
...@@ -105,6 +105,7 @@ public class WelcomeController extends WebBaseController { ...@@ -105,6 +105,7 @@ public class WelcomeController extends WebBaseController {
qdto.setModifierId(login.getClerkId()); qdto.setModifierId(login.getClerkId());
qdto.setModifierName(login.getClerkFullName()); qdto.setModifierName(login.getClerkFullName());
qdto.setType(qo.getType()); qdto.setType(qo.getType());
qdto.setScene(qo.getScene());
if (qo.getType() == null) { if (qo.getType() == null) {
qdto.setType(HmWelcomeType.NORMAL.getCode()); qdto.setType(HmWelcomeType.NORMAL.getCode());
} }
...@@ -266,6 +267,7 @@ public class WelcomeController extends WebBaseController { ...@@ -266,6 +267,7 @@ public class WelcomeController extends WebBaseController {
queryWelcomeQDTO.setPageNum(qo.getPageNum()); queryWelcomeQDTO.setPageNum(qo.getPageNum());
queryWelcomeQDTO.setPageSize(qo.getPageSize()); queryWelcomeQDTO.setPageSize(qo.getPageSize());
queryWelcomeQDTO.setType(qo.getType()); queryWelcomeQDTO.setType(qo.getType());
queryWelcomeQDTO.setScene(qo.getScene());
if (qo.getType() == null) { if (qo.getType() == null) {
queryWelcomeQDTO.setType(HmWelcomeType.NORMAL.getCode()); queryWelcomeQDTO.setType(HmWelcomeType.NORMAL.getCode());
} }
......
package com.gic.haoban.manage.web.controller.wechatwork;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.util.DateUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.web.handle.WechatWorkOverviewStoreGroupHandle;
import com.gic.haoban.manage.web.qo.wechatwork.StoreGroupCommonQO;
import com.gic.haoban.manage.web.qo.wechatwork.WechatWorkOverviewQO;
import com.gic.haoban.manage.web.qo.wechatwork.WechatWorkOverviewStoreGroupQO;
import com.gic.haoban.manage.web.qo.wechatwork.WechatWorkOverviewTrendQO;
import com.gic.haoban.manage.web.utils.AuthorizedUserUtils;
import com.gic.haoban.manage.web.utils.data.DataApiQO;
import com.gic.haoban.manage.web.utils.data.StoreAuthUtils;
import com.gic.haoban.manage.web.vo.wechatwork.DataPageVO;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkOverviewStoreGroupVO;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkOverviewTrendVO;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkOverviewVO;
import com.gic.qcloud.BucketNameEnum;
import com.gic.web.common.controller.NewBaseController;
import com.gic.web.common.download.DownloadTask;
import com.gic.web.common.download.DownloadTaskUtil;
import com.gic.web.common.download.constants.TaskTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
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.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 企微概览
* @Author guojx
* @Date 2024/7/23 10:45
*/
@RestController
@Slf4j
@RequestMapping("wechat-work-overview")
public class WechatWorkOverviewController extends NewBaseController {
@Autowired
private StoreAuthUtils storeAuthUtils;
@Autowired
private WechatWorkOverviewStoreGroupHandle wechatWorkOverviewStoreGroupHandle;
/**
* 概览
* @param qo
* @return
*/
@RequestMapping(value = "overview")
public RestResponse<WechatWorkOverviewVO> overview(@RequestBody WechatWorkOverviewQO qo) {
List<WechatWorkOverviewVO> voList = storeAuthUtils.getOverview(
"data_mbr_scale_haoban_background_overview",
new JSONObject(),
new StoreGroupCommonQO().setStoreGroupId(qo.getStoreGroupId()),
WechatWorkOverviewVO.class);
return RestResponse.successResult(CollectionUtils.isEmpty(voList) ? null : voList.get(0));
}
/**
* 趋势图
* @param qo
* @return
* @throws ParseException
*/
@RequestMapping(value = "trend")
public RestResponse<List<WechatWorkOverviewTrendVO>> trend(@RequestBody WechatWorkOverviewTrendQO qo) throws ParseException {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
//1:总数 2:日期趋势
jsonObject.put("groupType", 2);
List<WechatWorkOverviewTrendVO> list = storeAuthUtils.getOverview(
"data_mbr_scale_haoban_background_overview_date",
jsonObject,
new StoreGroupCommonQO().setStoreGroupId(qo.getStoreGroupId()),
WechatWorkOverviewTrendVO.class);
Map<String, WechatWorkOverviewTrendVO> map = new HashMap<>();
if (CollectionUtils.isNotEmpty(list)) {
map = list.stream().collect(Collectors.toMap(e -> e.getBizDate(), e -> e));
}
List<WechatWorkOverviewTrendVO> voList = new ArrayList<>();
List<String> dateList = DateUtil.getBetweenDates(qo.getStartDate(), qo.getEndDate());
for (String date : dateList) {
WechatWorkOverviewTrendVO vo = map.get(date);
if (vo == null) {
vo = new WechatWorkOverviewTrendVO();
vo.setBizDate(date);
}
voList.add(vo);
}
return RestResponse.successResult(voList);
}
/**
* 新增概览数据
* @param qo
* @return
*/
@RequestMapping(value = "new-overview")
public RestResponse<WechatWorkOverviewTrendVO> newOverview(@RequestBody WechatWorkOverviewTrendQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
//1:总数 2:日期趋势
jsonObject.put("groupType", 1);
List<WechatWorkOverviewTrendVO> voList = storeAuthUtils.getOverview(
"data_mbr_scale_haoban_background_overview_date",
jsonObject,
new StoreGroupCommonQO().setStoreGroupId(qo.getStoreGroupId()),
WechatWorkOverviewTrendVO.class);
return RestResponse.successResult(CollectionUtils.isEmpty(voList) ? null : voList.get(0));
}
/**
* 门店分组
* @param qo
* @return
*/
@RequestMapping(value = "store-group")
public RestResponse<DataPageVO<WechatWorkOverviewStoreGroupVO>> storeGroup(@RequestBody WechatWorkOverviewStoreGroupQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
return RestResponse.successResult(storeAuthUtils.getData(new DataApiQO()
.setPageSize(qo.getPageSize())
.setCurrentPage(qo.getPageNum())
.setNoTotal(false)
.setHasCountPerPage(true)
.setClazz(WechatWorkOverviewStoreGroupVO.class)
.setJsonObject(jsonObject)
.setStoreGroupCommonQO(qo)
.setApolloKey(qo.getQueryDataType() == 1 ? "data_mbr_scale_haoban_background_count" : "data_mbr_scale_haoban_background_count_new")
));
}
/**
* 门店分组导出
* @param qo
* @return
*/
@RequestMapping(value = "export-store-group")
public RestResponse exportStoreGroup(@RequestBody WechatWorkOverviewStoreGroupQO qo) {
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.NO_NEW_EXCEPTION_STORE);
task.setDataType(qo.getDataType());
task.setUser(getUserInfo());
task.setTotalCount(storeGroup(qo).getResult().getTotalNum());
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
storeAuthUtils.setStoreGroupJsonParam(jsonObject, qo);
boolean isTotalQuery = qo.getQueryDataType() == 1;
jsonObject.put("apolloKey", isTotalQuery ? "data_mbr_scale_haoban_background_count" : "data_mbr_scale_haoban_background_count_new");
//Excel的标题是字段进行计算
List<String> indexList = new ArrayList<>();
List<String> fieldList = new ArrayList<>();
Integer storeGroup = jsonObject.getInteger("storeGroup");
boolean isStore = storeGroup != null && storeGroup == 7;
if (isStore) {
indexList.add("门店名称");
fieldList.add("storeName");
indexList.add("门店code");
fieldList.add("storeCode");
} else {
indexList.add("分组名称");
fieldList.add("storeGroupName");
}
indexList.add("上级分组");
fieldList.add("parentStoreGroupName");
if (isTotalQuery) {
indexList.add("企微好友总数");
fieldList.add("entwchFdNumTotal");
indexList.add("已注册会员好友数");
fieldList.add("entwchFdNumMbr");
indexList.add("未注册会员好友数");
fieldList.add("entwchFdNumNonmbr");
} else {
indexList.add("新增企微好友数");
fieldList.add("newEntwchFdNumTotal");
indexList.add("新增已注册会员好友数");
fieldList.add("newEntwchFdNumMbr");
indexList.add("新增未注册会员好友数");
fieldList.add("newEntwchFdNumNonmbr");
}
if (isTotalQuery) {
task.setFileName("企微概览-门店维度总数数据");
} else {
task.setFileName("企微概览-门店维度新增数据-" + qo.getStartDate() + "_" + qo.getEndDate());
}
task.setChannelName("数据-企微数据-企微概览");
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
jsonObject.put("indexList", indexList);
jsonObject.put("fieldList", fieldList);
task.setSearchDataParams(jsonObject.toJSONString());
task.setHandler(wechatWorkOverviewStoreGroupHandle);
JSONResponse downloadTask = DownloadTaskUtil.createDownloadTask(task);
return RestResponse.successResult(downloadTask.getResult());
}
private AuthorizedUser getUserInfo() {
return AuthorizedUserUtils.getUserInfo();
}
}
package com.gic.haoban.manage.web.handle;
import com.alibaba.fastjson.JSONObject;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.utils.data.DataApiQO;
import com.gic.haoban.manage.web.utils.data.StoreAuthUtils;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkOverviewStoreGroupVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
/**
* 数据-企微数据-流失好友
*/
@Component
public class WechatWorkOverviewStoreGroupHandle extends DownloadHandlerAbstract<WechatWorkOverviewStoreGroupVO> {
private static final Logger LOGGER = LogManager.getLogger(WechatWorkOverviewStoreGroupHandle.class);
@Autowired
private StoreAuthUtils storeAuthUtils;
@Override
public List<WechatWorkOverviewStoreGroupVO> getData(Context context, String searchDataParams, Integer currentPage) {
return storeAuthUtils.getData(new DataApiQO()
.setClazz(WechatWorkOverviewStoreGroupVO.class)
.setPageSize(getPageSize())
.setCurrentPage(currentPage)
.setLogStr("数据-企微数据-企微概览导出日志进来")
.setSearchDataParams(searchDataParams)
.setNoTotal(false)
.setHasCountPerPage(false)
).getRows();
}
@Override
public List<String> getColumnNames() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames(Context context){
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
}
package com.gic.haoban.manage.web.qo.wechatwork; package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
...@@ -12,40 +14,48 @@ import java.util.List; ...@@ -12,40 +14,48 @@ import java.util.List;
*/ */
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class StoreGroupCommonQO implements Serializable { public class StoreGroupCommonQO implements Serializable {
/** /**
* 门店code/名称 * 门店code/名称
*/ */
@JSONField(serialize = false)
private String storeSearchParam; private String storeSearchParam;
/** /**
* 可以多选,英文逗号隔开。优先级高于storeId * 可以多选,英文逗号隔开。优先级高于storeId
*/ */
@JSONField(serialize = false)
private String storeGroupId; private String storeGroupId;
/** /**
* 可以多选,英文逗号隔开 * 可以多选,英文逗号隔开
*/ */
@JSONField(serialize = false)
private String storeId; private String storeId;
/** /**
* 分组下钻的时候,当前点击的分组id参数.如果是无归属,则值是-1 * 分组下钻的时候,当前点击的分组id参数.如果是无归属,则值是-1
* @return * @return
*/ */
@JSONField(serialize = false)
private String nextStoreGroupId; private String nextStoreGroupId;
/** /**
* 因为存在nextStoreGroupId = -1的无归属分组。当下钻无归属,值为无归属上一层级的分组id。如果为空,说明上一层级是所有哦门店,否则必有值 * 因为存在nextStoreGroupId = -1的无归属分组。当下钻无归属,值为无归属上一层级的分组id。如果为空,说明上一层级是所有哦门店,否则必有值
*/ */
@JSONField(serialize = false)
private String preStoreGroupId; private String preStoreGroupId;
/** /**
* 分组维度查询,勾选展示门店 1:是 * 分组维度查询,勾选展示门店 1:是
*/ */
@JSONField(serialize = false)
private Integer showStore; private Integer showStore;
/** /**
* 门店状态 * 门店状态
*/ */
@JSONField(serialize = false)
private List<String> statusList; private List<String> statusList;
public boolean isRecycle() { public boolean isRecycle() {
......
...@@ -68,6 +68,7 @@ public class WechatWorkLostClerkQO implements Serializable { ...@@ -68,6 +68,7 @@ public class WechatWorkLostClerkQO implements Serializable {
map.put("totalLostNum", 2); map.put("totalLostNum", 2);
map.put("deleteSalesNum", 3); map.put("deleteSalesNum", 3);
map.put("salesDeleteNum", 4); map.put("salesDeleteNum", 4);
map.put("delIsSingleNum",5) ;
return map.get(orderByFields) == null ? 1 : map.get(orderByFields); return map.get(orderByFields) == null ? 1 : map.get(orderByFields);
} }
......
...@@ -54,6 +54,8 @@ public class WechatWorkLostDetailQO implements Serializable { ...@@ -54,6 +54,8 @@ public class WechatWorkLostDetailQO implements Serializable {
*/ */
private Integer delType; private Integer delType;
private Integer delIsSingle ;
/** /**
* 排序类型 1 正序 2 倒序 * 排序类型 1 正序 2 倒序
...@@ -119,5 +121,8 @@ public class WechatWorkLostDetailQO implements Serializable { ...@@ -119,5 +121,8 @@ public class WechatWorkLostDetailQO implements Serializable {
if (Objects.nonNull(delType)) { if (Objects.nonNull(delType)) {
jsonObject.put("delType", delType); jsonObject.put("delType", delType);
} }
if(Objects.nonNull(delIsSingle) && -1 != delIsSingle) {
jsonObject.put("delIsSingle",delIsSingle) ;
}
} }
} }
...@@ -57,6 +57,7 @@ public class WechatWorkLostStoreGroupQO extends StoreGroupCommonQO implements Se ...@@ -57,6 +57,7 @@ public class WechatWorkLostStoreGroupQO extends StoreGroupCommonQO implements Se
map.put("totalLostNum", 2); map.put("totalLostNum", 2);
map.put("deleteSalesNum", 3); map.put("deleteSalesNum", 3);
map.put("salesDeleteNum", 4); map.put("salesDeleteNum", 4);
map.put("delIsSingleNum",5) ;
return map.get(orderByFields) == null ? 1 : map.get(orderByFields); return map.get(orderByFields) == null ? 1 : map.get(orderByFields);
} }
......
package com.gic.haoban.manage.web.qo.wechatwork;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/7/23 10:29
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkOverviewQO implements Serializable {
private String storeGroupId;
}
package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/22 9:27
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkOverviewStoreGroupQO extends StoreGroupCommonQO implements Serializable {
/**
* 1:总数 2:新增
*/
@JSONField(serialize = false)
private Integer queryDataType;
/**
* 新增类型需要传,开始日期
*/
private String startDate;
/**
* 新增类型需要传:结束日期
*/
private String endDate;
/**
* 排序类型 1 正序 2 倒序
*/
private Integer orderByType;
/**
* 排序字段名称 1:企微好友 2:已注册会员好友 3:未注册会员好友
*/
private String orderByFields;
private Integer pageNum;
private Integer pageSize;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType = 1;
/**
* 下载导出参数:为了兼容前端传参
*/
private String requestProject;
public Integer getQueryDataType() {
return queryDataType == null ? 1 : queryDataType;
}
}
package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/7/23 10:29
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkOverviewTrendQO implements Serializable {
@JSONField(serialize = false)
private String storeGroupId;
/**
* yyyy-MM-dd
*/
private String startDate;
/**
* yyyy-MM-dd
*/
private String endDate;
}
...@@ -30,6 +30,16 @@ public class ListWelcomeQO extends BasePageInfo { ...@@ -30,6 +30,16 @@ public class ListWelcomeQO extends BasePageInfo {
*/ */
private Integer type; private Integer type;
private int scene ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getWxEnterpriseId() { public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
...@@ -64,6 +64,16 @@ public class SaveWelcomeQO implements Serializable { ...@@ -64,6 +64,16 @@ public class SaveWelcomeQO implements Serializable {
*/ */
private Integer type; private Integer type;
private int scene = 1 ;
public int getScene() {
return scene;
}
public void setScene(int scene) {
this.scene = scene;
}
public String getWelcomeId() { public String getWelcomeId() {
return welcomeId; return welcomeId;
} }
......
package com.gic.haoban.manage.web.utils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ObjectUtils;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Excel操作
*
* @author 徐波 2019-4-18
*/
public class ImportExcelUtil {
private static final Logger log = LoggerFactory.getLogger(ImportExcelUtil.class);
private final static String excel2003L = ".xls"; //2003- 版本的excel
private final static String excel2007U = ".xlsx"; //2007+ 版本的excel
/**
* 描述:获取IO流中的数据,组装成List<List<Object>>对象
*
* @return 获取第一个sheet 中数据
*/
public static void getBankListByExcelSheet1(InputStream in, String fileName, List<List<Object>> sheet1List) throws Exception {
//创建Excel工作薄
Workbook work = getWorkbook(in, fileName);
if (null == work) {
throw new Exception("创建Excel工作薄为空!");
}
Sheet sheet1 = null;
Row row1 = null;
Cell cell1 = null;
//遍历Excel中所有的sheet
sheet1 = work.getSheetAt(0);
if (sheet1 != null) {
//遍历当前sheet中的所有行
for (int j = sheet1.getFirstRowNum(); j <= sheet1.getLastRowNum(); j++) {
row1 = sheet1.getRow(j);
if (row1 == null) {
continue;
}
//遍历所有的列
List<Object> li = new ArrayList<Object>();
log.info("单元格数={}", row1.getFirstCellNum());
if(row1.getFirstCellNum() != 0) {
for(int i=0;i<(row1.getFirstCellNum()) ; i++) {
li.add("") ;
}
}
for (int y = row1.getFirstCellNum(); y < row1.getLastCellNum(); y++) {
cell1 = row1.getCell(y);
//1、代表单元格里面类型为String类型
if (cell1 != null) {
li.add(getCellValue(cell1));
} else {
li.add("");
}
}
if (CollectionUtils.isNotEmpty(li)) {
sheet1List.add(li);
}
}
}
}
/**
* 描述:根据文件后缀,自适应上传文件的版本
*
* @param inStr,fileName
* @return
* @throws Exception
*/
public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
Workbook wb = null;
String fileType = fileName.substring(fileName.lastIndexOf("."));
if (excel2003L.equals(fileType)) {
wb = new HSSFWorkbook(inStr); //2003-
} else if (excel2007U.equals(fileType)) {
wb = new XSSFWorkbook(inStr); //2007+
} else {
throw new Exception("解析的文件格式有误!");
}
return wb;
}
/**
* 描述:对表格中数值进行格式化
*
* @param cell
* @return
*/
public static Object getCellValue(Cell cell) {
Object value = null;
DecimalFormat df = new DecimalFormat("0"); //格式化number String字符
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); //日期格式化
SimpleDateFormat dateFormat = new SimpleDateFormat("yyy-MM-dd HH:mm"); //日期格式化
DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
value = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if ("General".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) {
value = sdf.format(cell.getDateCellValue());
} else if (StringUtils.equals("m/d/yy h:mm", cell.getCellStyle().getDataFormatString())) {
value = dateFormat.format(cell.getDateCellValue());
} else {
value = df2.format(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_BLANK:
value = "";
break;
default:
break;
}
return value;
}
}
\ No newline at end of file
package com.gic.haoban.manage.web.utils.data;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.web.qo.wechatwork.StoreGroupCommonQO;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/7/23 9:36
*/
@Data
@Accessors(chain = true)
public class DataApiQO implements Serializable {
/**
* 调用传的参数
* 和jsonObject和StoreGroupCommonQO参数二选一
*/
private String searchDataParams;
/**
* 数据接口名称
*/
private String apolloKey;
private Integer currentPage;
/**
* 是否打印日志
*/
private String logStr;
private Integer pageSize;
/**
* 是否需要强制合计数据
* 默认是第一页需要合计数据
*/
private boolean hasCountPerPage;
/**
* 是否强制去除合计数据
*/
private boolean noTotal;
/**
* 返回rows对象转化
*/
private Class clazz;
/**
* 数据接口调用的参数
*/
private JSONObject jsonObject;
private StoreGroupCommonQO storeGroupCommonQO;
}
package com.gic.haoban.manage.web.utils.data; package com.gic.haoban.manage.web.utils.data;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.commons.util.DataApiUtils; import com.gic.commons.util.DataApiUtils;
...@@ -19,7 +21,10 @@ import org.apache.commons.lang3.StringUtils; ...@@ -19,7 +21,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -48,6 +53,14 @@ public class StoreAuthUtils { ...@@ -48,6 +53,14 @@ public class StoreAuthUtils {
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId()); jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
} }
public <T> List<T> getOverview(String apolloKey, JSONObject jsonObject, StoreGroupCommonQO storeGroupCommonQO, Class clazz) {
setCommonParam(jsonObject, storeGroupCommonQO);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), apolloKey);
List<JSONObject> list = DataApiUtils.getDataList(res);
List<T> voList = JSONArray.parseArray(JSON.toJSONString(list), clazz);
return voList;
}
public List<String> getAuthStoreId(StoreGroupCommonQO storeCommonQO) { public List<String> getAuthStoreId(StoreGroupCommonQO storeCommonQO) {
String storeGroupId = storeCommonQO.getStoreGroupId(); String storeGroupId = storeCommonQO.getStoreGroupId();
String storeSearchParam = storeCommonQO.getStoreSearchParam(); String storeSearchParam = storeCommonQO.getStoreSearchParam();
...@@ -110,6 +123,7 @@ public class StoreAuthUtils { ...@@ -110,6 +123,7 @@ public class StoreAuthUtils {
public void setStoreGroupJsonParam(JSONObject jsonObject, StoreGroupCommonQO qo) { public void setStoreGroupJsonParam(JSONObject jsonObject, StoreGroupCommonQO qo) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser(); WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
jsonObject.put("enterpriseId", login.getEnterpriseId()); jsonObject.put("enterpriseId", login.getEnterpriseId());
jsonObject.put("wxEnterpriseId", login.getWxEnterpriseId());
Integer storeGroup = getStoreGroupLevel(qo); Integer storeGroup = getStoreGroupLevel(qo);
jsonObject.put("storeGroup", storeGroup); jsonObject.put("storeGroup", storeGroup);
List<String> storeIds = getAuthStoreId(qo); List<String> storeIds = getAuthStoreId(qo);
...@@ -160,27 +174,47 @@ public class StoreAuthUtils { ...@@ -160,27 +174,47 @@ public class StoreAuthUtils {
return 1; return 1;
} }
@Deprecated
public DataPageVO getDataCommon(String searchDataParams, Integer currentPage, String logStr, Integer pageSize, boolean hasCountPerPage) { public DataPageVO getDataCommon(String searchDataParams, Integer currentPage, String logStr, Integer pageSize, boolean hasCountPerPage) {
return getDataCommonParent(searchDataParams, currentPage, logStr, pageSize, hasCountPerPage, false); return getDataCommonParent(searchDataParams, currentPage, logStr, pageSize, hasCountPerPage, false);
} }
public DataPageVO getDataCommonParent(String searchDataParams, Integer currentPage, String logStr, Integer pageSize, boolean hasCountPerPage, boolean noTotal) { public DataPageVO getData(DataApiQO qo) {
Integer currentPage = qo.getCurrentPage();
String logStr = qo.getLogStr();
Integer pageSize = qo.getPageSize();
String searchDataParams = qo.getSearchDataParams();
boolean hasCountPerPage = qo.isHasCountPerPage();
boolean noTotal = qo.isNoTotal();
Class clazz = qo.getClazz();
boolean isFirst = currentPage != null && currentPage == 1; boolean isFirst = currentPage != null && currentPage == 1;
if (isFirst) { if (isFirst && StringUtils.isNotBlank(logStr)) {
log.info(logStr); log.info(logStr);
} }
DataPageVO vo = new DataPageVO(); DataPageVO vo = new DataPageVO();
vo.setPageNum(currentPage); vo.setPageNum(currentPage);
vo.setPageSize(pageSize); vo.setPageSize(pageSize);
JSONObject jsonObject = JSONObject.parseObject(searchDataParams); JSONObject jsonObject = qo.getJsonObject();
if (jsonObject == null) {
//兼容老接口传参
jsonObject= JSONObject.parseObject(searchDataParams);
} else {
//填充所需参数
StoreGroupCommonQO storeGroupCommonQO = qo.getStoreGroupCommonQO();
setStoreGroupJsonParam(jsonObject, storeGroupCommonQO);
}
Integer storeGroup = jsonObject.getInteger("storeGroup"); Integer storeGroup = jsonObject.getInteger("storeGroup");
boolean isStore = storeGroup != null && storeGroup == 7; boolean isStore = storeGroup != null && storeGroup == 7;
jsonObject.put("pageNum", currentPage); jsonObject.put("pageNum", currentPage);
jsonObject.put("pageSize", pageSize); jsonObject.put("pageSize", pageSize);
String apolloKey = jsonObject.getString("apolloKey");
String allApolloKey = jsonObject.getString("allApolloKey"); String apolloKey = qo.getApolloKey();
if (StringUtils.isBlank(apolloKey)) {
apolloKey = jsonObject.getString("apolloKey");
}
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), apolloKey); Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), apolloKey);
...@@ -198,11 +232,7 @@ public class StoreAuthUtils { ...@@ -198,11 +232,7 @@ public class StoreAuthUtils {
jsonObject.put("pageNum", 1); jsonObject.put("pageNum", 1);
jsonObject.put("storeGroup", 8); jsonObject.put("storeGroup", 8);
String totalApolloKey = apolloKey; JSONObject total = getTotalJson(jsonObject, apolloKey);
if (StringUtils.isNotBlank(allApolloKey)) {
totalApolloKey = allApolloKey;
}
JSONObject total = getTotalJson(jsonObject, totalApolloKey);
if (total == null) { if (total == null) {
total = new JSONObject(); total = new JSONObject();
} }
...@@ -217,9 +247,23 @@ public class StoreAuthUtils { ...@@ -217,9 +247,23 @@ public class StoreAuthUtils {
} }
} }
vo.setRows(list); vo.setRows(list);
if (clazz != null && CollectionUtils.isNotEmpty(vo.getRows())) {
vo.setRows(JSONArray.parseArray(JSON.toJSONString(vo.getRows()), clazz));
}
return vo; return vo;
} }
@Deprecated
public DataPageVO getDataCommonParent(String searchDataParams, Integer currentPage, String logStr, Integer pageSize, boolean hasCountPerPage, boolean noTotal) {
return getData(new DataApiQO().setSearchDataParams(searchDataParams)
.setCurrentPage(currentPage)
.setLogStr(logStr)
.setPageSize(pageSize)
.setHasCountPerPage(hasCountPerPage)
.setNoTotal(noTotal));
}
private List<String> getStore(String enterpriseId, String userId, String search, List<String> storeGroupIdList, List<String> status, List<String> storeIdList) { private List<String> getStore(String enterpriseId, String userId, String search, List<String> storeGroupIdList, List<String> status, List<String> storeIdList) {
StoreSearchDTO storeSearchDTO = new StoreSearchDTO(); StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setEnterpriseId(enterpriseId); storeSearchDTO.setEnterpriseId(enterpriseId);
......
package com.gic.haoban.manage.web.vo.open;
import java.io.Serializable;
public class OpenClerkVO implements Serializable {
/**
* 成员id
*/
private String staffId;
private String clerkId ;
private String storeId ;
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;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
}
...@@ -36,4 +36,6 @@ public class WechatWorkLostClerkVO extends StoreGroupCommonVO implements Seriali ...@@ -36,4 +36,6 @@ public class WechatWorkLostClerkVO extends StoreGroupCommonVO implements Seriali
private String clerkName; private String clerkName;
private String clerkId; private String clerkId;
private Integer delIsSingleNum ;
} }
...@@ -80,4 +80,7 @@ public class WechatWorkLostDetailVO extends StoreGroupCommonVO implements Serial ...@@ -80,4 +80,7 @@ public class WechatWorkLostDetailVO extends StoreGroupCommonVO implements Serial
private String staffCode; private String staffCode;
private String staffName; private String staffName;
// 删除时是否单向好友0否 1是
private String delIsSingle ;
} }
...@@ -30,4 +30,6 @@ public class WechatWorkLostStoreGroupVO extends StoreGroupCommonVO implements Se ...@@ -30,4 +30,6 @@ public class WechatWorkLostStoreGroupVO extends StoreGroupCommonVO implements Se
* 导购删除好友人数 * 导购删除好友人数
*/ */
private Integer salesDeleteNum; private Integer salesDeleteNum;
private Integer delIsSingleNum ;
} }
...@@ -32,6 +32,11 @@ public class WechatWorkLostVO implements Serializable { ...@@ -32,6 +32,11 @@ public class WechatWorkLostVO implements Serializable {
private Integer salesDeleteNum = 0; private Integer salesDeleteNum = 0;
/** /**
* 删除时菲单向的数量
*/
private Integer delIsSingleNum = 0;
/**
* *
*/ */
private String bizDate; private String bizDate;
......
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/21 15:56
*/
@Data
public class WechatWorkOverviewStoreGroupVO extends StoreGroupCommonVO implements Serializable {
/**
* 新增微信好友总数
*/
private Integer newEntwchFdNumTotal;
/**
* 新增已注册微信好友数
*/
private Integer newEntwchFdNumMbr;
/**
* 新增未注册微信好友数
*/
private Integer newEntwchFdNumNonmbr;
/**
* 微信好友总数
*/
private Integer entwchFdNumTotal;
/**
* 已注册微信好友数
*/
private Integer entwchFdNumMbr;
/**
* 未注册微信好友数
*/
private Integer entwchFdNumNonmbr;
}
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/21 15:56
*/
@Data
public class WechatWorkOverviewTrendVO implements Serializable {
/**
* 微信好友总数
*/
private Integer newEntwchFdNumTotal;
/**
* 已注册微信好友数
*/
private Integer newEntwchFdNumMbr;
/**
* 未注册微信好友数
*/
private Integer newEntwchFdNumNonmbr;
private String bizDate;
}
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;
/**
* @Author guojx
* @Date 2024/5/21 15:56
*/
@Data
public class WechatWorkOverviewVO implements Serializable {
/**
* 微信好友总数
*/
private Integer entwchFdNumTotal;
/**
* 已注册微信好友数
*/
private Integer entwchFdNumMbr;
/**
* 未注册微信好友数
*/
private Integer entwchFdNumNonmbr;
/**
* 已注册微信好友数占比
*/
private Double entwchFdNumMbrRate;
/**
* 未注册微信好友数占比
*/
private Double entwchFdNumNonmbrRate;
public Double getEntwchFdNumMbrRate() {
return rate(getEntwchFdNumMbr(), getEntwchFdNumTotal(), 2);
}
public Double getEntwchFdNumNonmbrRate() {
return rate(getEntwchFdNumNonmbr(), getEntwchFdNumTotal(), 2);
}
/**
* 百分比计算,保留两位小数
* @param divisor
* @param dividend
* @param degree
* @return
*/
public static Double rate(Integer divisor,Integer dividend,int degree){
if( Objects.isNull( divisor ) || Objects.isNull( dividend ) || dividend == 0 ){
return 0.00;
}
//数字会丢失精度,先转字符串,再转bigDecimal
BigDecimal divisor1 = new BigDecimal(divisor+"");
BigDecimal dividend1 = new BigDecimal(dividend+"");
return divisor1.multiply(new BigDecimal("100")).divide(dividend1,degree,BigDecimal.ROUND_HALF_UP ).doubleValue();
}
}
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<dubbo:application name="haoban-manage3-web"/> <dubbo:application name="haoban-manage3-web"/>
<dubbo:protocol name="dubbo" port="30009"/> <dubbo:protocol name="dubbo" port="30009"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.OpenStaffImportTaskApiService" id="penStaffImportTaskApiService"/>
<dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/> <dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService"/> <dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService"/>
<dubbo:reference interface="com.gic.haoban.task.manage.api.service.OpenQwApiService" id="openQwApiService"/> <dubbo:reference interface="com.gic.haoban.task.manage.api.service.OpenQwApiService" id="openQwApiService"/>
......
...@@ -257,6 +257,11 @@ ...@@ -257,6 +257,11 @@
<artifactId>gic-cloud-image-api</artifactId> <artifactId>gic-cloud-image-api</artifactId>
<version>${gic-cloud-image-api}</version> <version>${gic-cloud-image-api}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-webapp-common</artifactId>
<version>${gic-webapp-common}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -310,8 +310,11 @@ public class AuditController extends WebBaseController { ...@@ -310,8 +310,11 @@ public class AuditController extends WebBaseController {
} }
if (audit.getAuditType() == AuditType.CLERK_ADD.getCode()) { if (audit.getAuditType() == AuditType.CLERK_ADD.getCode()) {
//导购新增 //导购新增
boolean flag = syncHaobanToGicApiService.syncClerkToGicClerkAdd(storeId, clerkCode, sex, clerkName, phoneNumber, nationCode, null); String msg = syncHaobanToGicApiService.syncClerkToGicClerkAddNew(storeId, clerkCode, sex, clerkName, phoneNumber, nationCode, null);
if (!flag) { if (!"1".equals(msg)) {
audit.setAuditStatus(5);
audit.setAuditReason(msg);
auditApiService.update(audit);
return resultResponse(HaoBanErrCode.ERR_10010); return resultResponse(HaoBanErrCode.ERR_10010);
} }
audit.setAuditStatus(1); audit.setAuditStatus(1);
......
...@@ -15,6 +15,9 @@ import java.util.stream.Collectors; ...@@ -15,6 +15,9 @@ import java.util.stream.Collectors;
import javax.validation.Valid; import javax.validation.Valid;
import com.gic.enterprise.api.dto.custompage.CustomPageRenderDTO;
import com.gic.enterprise.api.enums.CustomPageTypeEnum;
import com.gic.enterprise.api.service.*;
import com.gic.haoban.manage.web.qo.StaffAddVO; import com.gic.haoban.manage.web.qo.StaffAddVO;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -47,10 +50,6 @@ import com.gic.enterprise.api.dto.EnterpriseDTO; ...@@ -47,10 +50,6 @@ import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.dto.StoreDTO; import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreSearchDTO; import com.gic.enterprise.api.dto.StoreSearchDTO;
import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO; import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.enterprise.api.service.EnterpriseUseForbidService;
import com.gic.enterprise.api.service.StoreService;
import com.gic.enterprise.api.service.StoreWidgetService;
import com.gic.haoban.app.customer.service.api.service.CustomerApiService; import com.gic.haoban.app.customer.service.api.service.CustomerApiService;
import com.gic.haoban.app.customer.service.api.service.DistributeApiService; import com.gic.haoban.app.customer.service.api.service.DistributeApiService;
import com.gic.haoban.base.api.common.BasePageInfo; import com.gic.haoban.base.api.common.BasePageInfo;
...@@ -163,6 +162,8 @@ public class WxStaffController extends WebBaseController { ...@@ -163,6 +162,8 @@ public class WxStaffController extends WebBaseController {
private PowerService powerService; private PowerService powerService;
@Autowired @Autowired
private EnterpriseUseForbidService enterpriseUseForbidService; private EnterpriseUseForbidService enterpriseUseForbidService;
@Autowired
private CustomPageNewService customPageNewService ;
// 选择成员列表 // 选择成员列表
@RequestMapping("/staff-list") @RequestMapping("/staff-list")
...@@ -351,9 +352,43 @@ public class WxStaffController extends WebBaseController { ...@@ -351,9 +352,43 @@ public class WxStaffController extends WebBaseController {
} }
auditSettingVO.setWxEnterpriseType(enterpriseBindInfo.getWxEnterpriseType()); auditSettingVO.setWxEnterpriseType(enterpriseBindInfo.getWxEnterpriseType());
auditSettingVO.setFreshFriendFlag(mainStore.getFreshFriendFlag()); auditSettingVO.setFreshFriendFlag(mainStore.getFreshFriendFlag());
JSONObject json = this.getMemberSignPage(storeDTO.getEnterpriseId()) ;
auditSettingVO.setShowMemberSign(null==json?0:1);
auditSettingVO.setShareMemberSignInfo(json);
return resultResponse(HaoBanErrCode.ERR_1, auditSettingVO); return resultResponse(HaoBanErrCode.ERR_1, auditSettingVO);
} }
/**
* 获取会员签到页分析配置
* @param enterpriseId
* @return
*/
@IgnoreLogin
@RequestMapping("/get-member-sign-share")
public RestResponse<Object> getMemberSingInfo(String enterpriseId) {
JSONObject json = this.getMemberSignPage(enterpriseId) ;
if(null != json) {
return RestResponse.successResult(json) ;
}
return RestResponse.failure("9999","请联系管理员先配置签到页") ;
}
private int showMemberSign(String enterpriseId) {
JSONObject dto = this.getMemberSignPage(enterpriseId) ;
if(null != dto) {
return 1 ;
}
return 0 ;
}
private JSONObject getMemberSignPage(String enterpriseId) {
CustomPageRenderDTO dto = this.customPageNewService.getPageRenderByPageType(CustomPageTypeEnum.PAGE_MEMBER_SIGN,enterpriseId) ;
if(null != dto && dto.getStatus()==1) {
JSONObject json = dto.getSetting().getJSONObject("pageConfig") ;
return json ;
}
return null ;
}
@IgnoreLogin @IgnoreLogin
@RequestMapping("/get-operation-setting") @RequestMapping("/get-operation-setting")
public HaobanResponse getOperatorSetting(String wxEnterpriseId, String enterpriseId) { public HaobanResponse getOperatorSetting(String wxEnterpriseId, String enterpriseId) {
...@@ -502,33 +537,29 @@ public class WxStaffController extends WebBaseController { ...@@ -502,33 +537,29 @@ public class WxStaffController extends WebBaseController {
if (StringUtils.isAnyBlank(clerkIds)) { if (StringUtils.isAnyBlank(clerkIds)) {
return resultResponse(HaoBanErrCode.ERR_2); return resultResponse(HaoBanErrCode.ERR_2);
} }
com.gic.enterprise.api.dto.StoreDTO store = storeService.getStoreByIdNoStatus(storeId);
// 校验手机是否唯一
if (store == null) {
return resultResponse(HaoBanErrCode.ERR_400001);
}
AuditSettingDTO dto = auditSettingApiService.findSettingByWxEnterpriseId(wxEnterpriseId); AuditSettingDTO dto = auditSettingApiService.findSettingByWxEnterpriseId(wxEnterpriseId);
if (dto.getClerkChangeFlag() == 1) { if (dto.getClerkChangeFlag() == 1) {
// 需要审核 // 需要审核
String[] clerkIdArr = clerkIds.split(","); String[] clerkIdArr = clerkIds.split(",");
for (String clerkId : clerkIdArr) { for (String clerkId : clerkIdArr) {
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO == null) {
logger.info("导购不存在", clerkId);
continue;
}
com.gic.enterprise.api.dto.StoreDTO store = storeService.getStoreByIdNoStatus(clerkDTO.getStoreId());
AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId, AuditDTO auditDTO = auditApiService.findByBindRelatedIdAndAuditType(clerkId,
AuditType.CLERK_DEL.getCode(), wxEnterpriseId, store.getEnterpriseId()); AuditType.CLERK_DEL.getCode(), wxEnterpriseId, store.getEnterpriseId());
if (auditDTO != null) { if (auditDTO != null) {
logger.info("已经存在了审核记录,待审核{}", clerkId); logger.info("已经存在了审核记录,待审核{}", clerkId);
continue; continue;
} }
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO == null) {
logger.info("导购不存在", clerkId);
continue;
}
StaffDTO staff = staffApiService.selectById(staffId); StaffDTO staff = staffApiService.selectById(staffId);
AuditDTO audit = new AuditDTO(); AuditDTO audit = new AuditDTO();
audit.setCommitStaffName(staff.getStaffName()); audit.setCommitStaffName(staff.getStaffName());
audit.setCommitStaffId(staffId); audit.setCommitStaffId(staffId);
audit.setCommitStaffImg(staff.getHeadImg()); audit.setCommitStaffImg(staff.getHeadImg());
audit.setCommitStoreId(storeId); audit.setCommitStoreId(clerkDTO.getStoreId());
audit.setCommitStoreName(store.getStoreName()); audit.setCommitStoreName(store.getStoreName());
audit.setAuditStatus(AuditStatus.NO_AUDIT.getCode()); audit.setAuditStatus(AuditStatus.NO_AUDIT.getCode());
audit.setWxEnterpriseId(wxEnterpriseId); audit.setWxEnterpriseId(wxEnterpriseId);
...@@ -556,18 +587,19 @@ public class WxStaffController extends WebBaseController { ...@@ -556,18 +587,19 @@ public class WxStaffController extends WebBaseController {
logger.info("导购不存在:{}", clerkId); logger.info("导购不存在:{}", clerkId);
continue; continue;
} }
if (distributeApiService.getClerkMemberCount(clerkDTO.getEnterpriseId(), clerkId, storeId) == 0) { if (distributeApiService.getClerkMemberCount(clerkDTO.getEnterpriseId(), clerkId, clerkDTO.getStoreId()) == 0) {
if (clerkDTO.getClerkType() == 1) { if (clerkDTO.getClerkType() == 1) {
logger.info("店长不能删除:{}", clerkId); logger.info("店长不能删除:{}", clerkId);
continue; continue;
} }
} }
com.gic.enterprise.api.dto.StoreDTO store = storeService.getStoreByIdNoStatus(clerkDTO.getStoreId());
StaffDTO staff = staffApiService.selectById(staffId); StaffDTO staff = staffApiService.selectById(staffId);
AuditDTO audit = new AuditDTO(); AuditDTO audit = new AuditDTO();
audit.setCommitStaffName(staff.getStaffName()); audit.setCommitStaffName(staff.getStaffName());
audit.setCommitStaffId(staffId); audit.setCommitStaffId(staffId);
audit.setCommitStaffImg(staff.getHeadImg()); audit.setCommitStaffImg(staff.getHeadImg());
audit.setCommitStoreId(storeId); audit.setCommitStoreId(clerkDTO.getStoreId());
audit.setCommitStoreName(store.getStoreName()); audit.setCommitStoreName(store.getStoreName());
audit.setAuditStatus(AuditStatus.NOT_NEED_AUDIT.getCode()); audit.setAuditStatus(AuditStatus.NOT_NEED_AUDIT.getCode());
audit.setWxEnterpriseId(wxEnterpriseId); audit.setWxEnterpriseId(wxEnterpriseId);
...@@ -1589,6 +1621,7 @@ public class WxStaffController extends WebBaseController { ...@@ -1589,6 +1621,7 @@ public class WxStaffController extends WebBaseController {
vo.setEnterpriseImg(enterpriseDTO.getQcloudImageUrl()); vo.setEnterpriseImg(enterpriseDTO.getQcloudImageUrl());
list.add(vo); list.add(vo);
} }
this.integralAlias(list) ;
return RestResponse.successResult(list); return RestResponse.successResult(list);
} }
// 门店列表 // 门店列表
...@@ -1687,9 +1720,30 @@ public class WxStaffController extends WebBaseController { ...@@ -1687,9 +1720,30 @@ public class WxStaffController extends WebBaseController {
}); });
} }
} }
this.integralAlias(list) ;
return RestResponse.successResult(list); return RestResponse.successResult(list);
} }
private void integralAlias(List<StaffStoreVO> list) {
if(CollectionUtils.isNotEmpty(list)) {
for(StaffStoreVO vo : list) {
String enterpriseId = vo.getEnterpriseId() ;
Map<String, String> map = this.enterpriseService.getResultAlias(enterpriseId) ;
String integralText = map.get("积分");
if(org.apache.commons.lang.StringUtils.isBlank(integralText)) {
integralText = "积分";
}
vo.setIntegralTextAlias(integralText);
String growthTextAlias = map.get("成长值");
if(org.apache.commons.lang.StringUtils.isBlank(growthTextAlias)) {
growthTextAlias = "成长值";
}
vo.setGrowthTextAlias(growthTextAlias);
}
}
}
/** /**
* 会员关联数量 * 会员关联数量
*/ */
...@@ -1718,7 +1772,7 @@ public class WxStaffController extends WebBaseController { ...@@ -1718,7 +1772,7 @@ public class WxStaffController extends WebBaseController {
int totalCount = 0; int totalCount = 0;
List<StoreDTO> storeDTOList = new ArrayList<>(); List<StoreDTO> storeDTOList = new ArrayList<>();
if (storeIdList.get(0).contains("-1")) { if (storeIdList.get(0).contains("-1")) {
String storeWidgetId = this.powerService.getStoreWidgetId(new Date(), clerkId); String storeWidgetId = this.powerService.getStoreWidgetId(null, clerkId);
logger.info("权限-所有门店storeWidgetId={}", storeWidgetId); logger.info("权限-所有门店storeWidgetId={}", storeWidgetId);
Page<Object> pageParam = new Page<Object>(); Page<Object> pageParam = new Page<Object>();
pageParam.setCurrentPage(currentPage); pageParam.setCurrentPage(currentPage);
......
...@@ -9,6 +9,7 @@ import com.gic.content.api.dto.account.AccountAuthorizeDTO; ...@@ -9,6 +9,7 @@ import com.gic.content.api.dto.account.AccountAuthorizeDTO;
import com.gic.content.api.dto.account.AccountAuthorizeResultDTO; import com.gic.content.api.dto.account.AccountAuthorizeResultDTO;
import com.gic.content.api.dto.account.ContentAccountInfoDTO; import com.gic.content.api.dto.account.ContentAccountInfoDTO;
import com.gic.content.api.enums.ContentAccountQrCodeSourceType; import com.gic.content.api.enums.ContentAccountQrCodeSourceType;
import com.gic.content.api.enums.ContentAccountStatusEnum;
import com.gic.content.api.qdto.account.AccountGenerateQrCodeQDTO; import com.gic.content.api.qdto.account.AccountGenerateQrCodeQDTO;
import com.gic.content.api.qdto.account.AccountScanQrCodeResultQDTO; import com.gic.content.api.qdto.account.AccountScanQrCodeResultQDTO;
import com.gic.content.api.qdto.account.ContentAccountQDTO; import com.gic.content.api.qdto.account.ContentAccountQDTO;
...@@ -31,6 +32,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -31,6 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -86,6 +88,7 @@ public class ContentAccountController { ...@@ -86,6 +88,7 @@ public class ContentAccountController {
contentAccountQDTO.setQueryForClerk(Boolean.TRUE); contentAccountQDTO.setQueryForClerk(Boolean.TRUE);
contentAccountQDTO.setUserCodes(clerkCodes); contentAccountQDTO.setUserCodes(clerkCodes);
contentAccountQDTO.setStoreIds(storeIds); contentAccountQDTO.setStoreIds(storeIds);
contentAccountQDTO.setBizType(null);
ServiceResponse<Page<ContentAccountInfoDTO>> serviceResponse = ServiceResponse<Page<ContentAccountInfoDTO>> serviceResponse =
contentAccountApiService.queryAccountList(contentAccountQDTO); contentAccountApiService.queryAccountList(contentAccountQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) { if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
...@@ -94,6 +97,7 @@ public class ContentAccountController { ...@@ -94,6 +97,7 @@ public class ContentAccountController {
List<ContentAccountInfoVo> contentAccountInfoVos = serviceResponse.getResult() List<ContentAccountInfoVo> contentAccountInfoVos = serviceResponse.getResult()
.getResult() .getResult()
.stream() .stream()
.filter(item -> !Objects.equals(item.getStatus(), ContentAccountStatusEnum.UNBOUND.getCode()))
.map(item -> EntityUtil.changeEntityByJSON(ContentAccountInfoVo.class, item)) .map(item -> EntityUtil.changeEntityByJSON(ContentAccountInfoVo.class, item))
.collect(Collectors.toList()); .collect(Collectors.toList());
return RestResponse.successResult(contentAccountInfoVos); return RestResponse.successResult(contentAccountInfoVos);
...@@ -114,6 +118,7 @@ public class ContentAccountController { ...@@ -114,6 +118,7 @@ public class ContentAccountController {
accountGenerateQrCodeQDTO.setSourceType(ContentAccountQrCodeSourceType.HAOBAN.getCode()); accountGenerateQrCodeQDTO.setSourceType(ContentAccountQrCodeSourceType.HAOBAN.getCode());
accountGenerateQrCodeQDTO.setKey(accountGenerateQrCodeQo.getKey()); accountGenerateQrCodeQDTO.setKey(accountGenerateQrCodeQo.getKey());
accountGenerateQrCodeQDTO.setAccountId(accountGenerateQrCodeQo.getAccountId()); accountGenerateQrCodeQDTO.setAccountId(accountGenerateQrCodeQo.getAccountId());
accountGenerateQrCodeQDTO.setBizType(accountGenerateQrCodeQo.getBizType());
ServiceResponse<AccountAuthorizeDTO> serviceResponse = contentAccountApiService.generateQrCode(accountGenerateQrCodeQDTO); ServiceResponse<AccountAuthorizeDTO> serviceResponse = contentAccountApiService.generateQrCode(accountGenerateQrCodeQDTO);
if (!serviceResponse.isSuccess()) { if (!serviceResponse.isSuccess()) {
return RestResponse.failure("500", "生成二维码异常"); return RestResponse.failure("500", "生成二维码异常");
......
...@@ -37,7 +37,7 @@ public class QywxOpenController { ...@@ -37,7 +37,7 @@ public class QywxOpenController {
public RestResponse<OpenStaffVO> getOpenStaff(String staffId , @RequestParam(defaultValue = "0") int authFlag) { public RestResponse<OpenStaffVO> getOpenStaff(String staffId , @RequestParam(defaultValue = "0") int authFlag) {
ServiceResponse<OpenStaffDTO> resp = this.openStaffApiService.getByStaffId(staffId) ; ServiceResponse<OpenStaffDTO> resp = this.openStaffApiService.getByStaffId(staffId) ;
if(!resp.isSuccess()) { if(!resp.isSuccess()) {
return RestResponse.failure("9999","数据查询失败"); return RestResponse.successResult();
} }
OpenStaffVO vo = new OpenStaffVO() ; OpenStaffVO vo = new OpenStaffVO() ;
OpenStaffDTO dto = resp.getResult(); OpenStaffDTO dto = resp.getResult();
......
package com.gic.haoban.manage.web.init; package com.gic.haoban.manage.web.init;
import com.gic.commons.springsacn.SpringContextToolUtil;
import com.gic.dict.api.dto.GlobalDictMap; import com.gic.dict.api.dto.GlobalDictMap;
import com.gic.dict.api.service.ManagerDictService; import com.gic.dict.api.service.ManagerDictService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -8,9 +9,11 @@ import org.springframework.beans.BeansException; ...@@ -8,9 +9,11 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@Import(SpringContextToolUtil.class)
public class MyApplicationContextAware implements ApplicationContextAware { public class MyApplicationContextAware implements ApplicationContextAware {
private final Logger log = LogManager.getLogger(MyApplicationContextAware.class); private final Logger log = LogManager.getLogger(MyApplicationContextAware.class);
......
...@@ -52,6 +52,11 @@ public class ContentMaterialShareQO implements Serializable { ...@@ -52,6 +52,11 @@ public class ContentMaterialShareQO implements Serializable {
*/ */
private String goodsDetailSource; private String goodsDetailSource;
/**
* 是否预览 1是 0否
*/
private Integer isPreview;
public String getEnterpriseId() { public String getEnterpriseId() {
return enterpriseId; return enterpriseId;
} }
...@@ -115,4 +120,12 @@ public class ContentMaterialShareQO implements Serializable { ...@@ -115,4 +120,12 @@ public class ContentMaterialShareQO implements Serializable {
public void setGoodsDetailSource(String goodsDetailSource) { public void setGoodsDetailSource(String goodsDetailSource) {
this.goodsDetailSource = goodsDetailSource; this.goodsDetailSource = goodsDetailSource;
} }
public Integer getIsPreview() {
return isPreview;
}
public void setIsPreview(Integer isPreview) {
this.isPreview = isPreview;
}
} }
package com.gic.haoban.manage.web.qo.content.account; package com.gic.haoban.manage.web.qo.content.account;
import com.gic.content.api.enums.ContentAccountBizTypeEnum;
import java.io.Serializable; import java.io.Serializable;
/** /**
...@@ -30,6 +32,11 @@ public class AccountGenerateQrCodeQo implements Serializable { ...@@ -30,6 +32,11 @@ public class AccountGenerateQrCodeQo implements Serializable {
*/ */
private String key; private String key;
/**
* 渠道类型 1 视频号 2 小红书
*/
private Integer bizType = ContentAccountBizTypeEnum.WX_VIDEO.getCode();
public String getEnterpriseId() { public String getEnterpriseId() {
return enterpriseId; return enterpriseId;
} }
...@@ -61,4 +68,12 @@ public class AccountGenerateQrCodeQo implements Serializable { ...@@ -61,4 +68,12 @@ public class AccountGenerateQrCodeQo implements Serializable {
public void setKey(String key) { public void setKey(String key) {
this.key = key; this.key = key;
} }
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
} }
package com.gic.haoban.manage.web.qo.content.account; package com.gic.haoban.manage.web.qo.content.account;
import com.gic.content.api.enums.ContentAccountBizTypeEnum;
import java.io.Serializable; import java.io.Serializable;
/** /**
...@@ -27,6 +29,11 @@ public class AccountScanResultQo implements Serializable { ...@@ -27,6 +29,11 @@ public class AccountScanResultQo implements Serializable {
*/ */
private String enterpriseId; private String enterpriseId;
/**
* 渠道类型 1 视频号 2 小红书
*/
private Integer bizType = ContentAccountBizTypeEnum.WX_VIDEO.getCode();
public String getKey() { public String getKey() {
return key; return key;
} }
...@@ -50,4 +57,12 @@ public class AccountScanResultQo implements Serializable { ...@@ -50,4 +57,12 @@ public class AccountScanResultQo implements Serializable {
public void setEnterpriseId(String enterpriseId) { public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId; this.enterpriseId = enterpriseId;
} }
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
} }
package com.gic.haoban.manage.web.vo; package com.gic.haoban.manage.web.vo;
import com.alibaba.fastjson.JSONObject;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
...@@ -21,9 +23,29 @@ public class AuditSettingVO implements Serializable { ...@@ -21,9 +23,29 @@ public class AuditSettingVO implements Serializable {
private int wxEnterpriseType; private int wxEnterpriseType;
private int memberOpenCardFlag; private int memberOpenCardFlag;
private int freshFriendFlag; private int freshFriendFlag;
// 是否显示会员签到
private int showMemberSign ;
private JSONObject shareMemberSignInfo ;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public JSONObject getShareMemberSignInfo() {
return shareMemberSignInfo;
}
public void setShareMemberSignInfo(JSONObject shareMemberSignInfo) {
this.shareMemberSignInfo = shareMemberSignInfo;
}
public int getShowMemberSign() {
return showMemberSign;
}
public void setShowMemberSign(int showMemberSign) {
this.showMemberSign = showMemberSign;
}
public int getFreshFriendFlag() { public int getFreshFriendFlag() {
return freshFriendFlag; return freshFriendFlag;
} }
......
...@@ -31,6 +31,26 @@ public class StaffStoreVO implements Serializable { ...@@ -31,6 +31,26 @@ public class StaffStoreVO implements Serializable {
private Boolean enableHaoban; private Boolean enableHaoban;
private String storeCode; private String storeCode;
// 积分别名
private String integralTextAlias ;
// 成长值别名
private String growthTextAlias ;
public String getGrowthTextAlias() {
return growthTextAlias;
}
public void setGrowthTextAlias(String growthTextAlias) {
this.growthTextAlias = growthTextAlias;
}
public String getIntegralTextAlias() {
return integralTextAlias;
}
public void setIntegralTextAlias(String integralTextAlias) {
this.integralTextAlias = integralTextAlias;
}
public Integer getMemberOpenCardFlag() { public Integer getMemberOpenCardFlag() {
return memberOpenCardFlag; return memberOpenCardFlag;
......
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