Commit e662032b by zzd

Merge remote-tracking branch 'origin/developer' into developer

parents def63164 5924b76c
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
/**
*
* @ClassName: TabHaobanGroupChatPlanOwnerLog
* @Description: TODO
* @Author 徐高华
* @Date 2022年11月25日 15:29:51
* @Modify
* @CopyRight
*/
public class ChatOwnerTotalDTO implements Serializable {
private static final long serialVersionUID = 21697825515700L;
private Long planId;
private String planName;
private java.util.Date startTime;
private java.util.Date endTime;
private int sendCount;
private int notSendCount;
public Long getPlanId() {
return planId;
}
public String getPlanName() {
return planName;
}
public java.util.Date getStartTime() {
return startTime;
}
public java.util.Date getEndTime() {
return endTime;
}
public int getSendCount() {
return sendCount;
}
public int getNotSendCount() {
return notSendCount;
}
public void setPlanId(Long planId) {
this.planId = planId;
}
public void setPlanName(String planName) {
this.planName = planName;
}
public void setStartTime(java.util.Date startTime) {
this.startTime = startTime;
}
public void setEndTime(java.util.Date endTime) {
this.endTime = endTime;
}
public void setSendCount(int sendCount) {
this.sendCount = sendCount;
}
public void setNotSendCount(int notSendCount) {
this.notSendCount = notSendCount;
}
}
\ No newline at end of file
...@@ -18,6 +18,7 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{ ...@@ -18,6 +18,7 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{
private Long ownerLogId; private Long ownerLogId;
private Long planId; private Long planId;
private String planName ;
private String wxEnterpriseId; private String wxEnterpriseId;
private String enterpriseId; private String enterpriseId;
private String staffId; private String staffId;
...@@ -39,7 +40,15 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{ ...@@ -39,7 +40,15 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{
private Date expireDate ; private Date expireDate ;
private Date sendTime ; private Date sendTime ;
public Date getSendTime() { public String getPlanName() {
return planName;
}
public void setPlanName(String planName) {
this.planName = planName;
}
public Date getSendTime() {
return sendTime; return sendTime;
} }
......
...@@ -22,7 +22,16 @@ public class GroupChatPlanSearchQDTO implements Serializable { ...@@ -22,7 +22,16 @@ public class GroupChatPlanSearchQDTO implements Serializable {
private Date startDate; private Date startDate;
private Date endDate; private Date endDate;
private String clerkId ; private String clerkId ;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getChatName() { public String getChatName() {
return chatName; return chatName;
} }
......
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service.chat; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service.chat;
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.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
...@@ -40,16 +41,17 @@ public interface GroupChatPlanApiService { ...@@ -40,16 +41,17 @@ public interface GroupChatPlanApiService {
public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPage(Long planId, GroupChatPlanSearchQDTO qdto, public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPage(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo); BasePageInfo basePageInfo);
public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPageForWxa(GroupChatPlanSearchQDTO qdto,
public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPageForWxa(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo); BasePageInfo basePageInfo);
public ServiceResponse<Page<ChatOwnerTotalDTO>> listOwnerLogPageForWxaTotal(GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo);
public ServiceResponse<Page<GroupChatPlanLogDTO>> listLogPage(Long planId, GroupChatPlanSearchQDTO qdto, public ServiceResponse<Page<GroupChatPlanLogDTO>> listLogPage(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo); BasePageInfo basePageInfo);
public ServiceResponse<Void> del(String clerkId, String clerkName, Long planId); public ServiceResponse<Void> del(String clerkId, String clerkName, Long planId);
public ServiceResponse<Void> stop(String clerkId, String clerkName, Long planId) ; public ServiceResponse<Void> stop(String clerkId, String clerkName, Long planId);
} }
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
...@@ -30,4 +31,8 @@ public interface GroupChatPlanOwnerLogMapper { ...@@ -30,4 +31,8 @@ public interface GroupChatPlanOwnerLogMapper {
public List<GroupChatPlanOwnerLogDTO> listPage(GroupChatPlanSearchQDTO qdto); public List<GroupChatPlanOwnerLogDTO> listPage(GroupChatPlanSearchQDTO qdto);
public List<TabGroupChatPlanOwnerLog> listForTimer(); public List<TabGroupChatPlanOwnerLog> listForTimer();
public List<ChatOwnerTotalDTO> listOwnerLogPageForWxaTotal(GroupChatPlanSearchQDTO qdto);
public List<GroupChatPlanOwnerLogDTO> listOwnerLogPageForWxa(GroupChatPlanSearchQDTO qdto);
} }
\ No newline at end of file
...@@ -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.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
...@@ -19,7 +20,12 @@ public interface GroupChatPlanOwnerLogService { ...@@ -19,7 +20,12 @@ public interface GroupChatPlanOwnerLogService {
public Page<GroupChatPlanOwnerLogDTO> listPage(Long planId, GroupChatPlanSearchQDTO qdto, public Page<GroupChatPlanOwnerLogDTO> listPage(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo); BasePageInfo basePageInfo);
List<TabGroupChatPlanOwnerLog> listForTimer() ; List<TabGroupChatPlanOwnerLog> listForTimer();
public Page<ChatOwnerTotalDTO> listOwnerLogPageForWxaTotal(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo);
public Page<GroupChatPlanOwnerLogDTO> listOwnerLogPageForWxa(GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo);
} }
\ No newline at end of file
...@@ -23,6 +23,7 @@ import com.gic.commons.util.UniqueIdUtils; ...@@ -23,6 +23,7 @@ import com.gic.commons.util.UniqueIdUtils;
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.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanOwnerLogMapper; import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanOwnerLogMapper;
...@@ -85,9 +86,9 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe ...@@ -85,9 +86,9 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
List<String> storeIdList = list.stream().filter(dto -> StringUtils.isNotBlank(dto.getStoreId())) List<String> storeIdList = list.stream().filter(dto -> StringUtils.isNotBlank(dto.getStoreId()))
.map(dto -> dto.getStoreId()).collect(Collectors.toList()); .map(dto -> dto.getStoreId()).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(storeIdList)) { if (CollectionUtils.isNotEmpty(storeIdList)) {
String[] arr = new String[storeIdList.size()] ; String[] arr = new String[storeIdList.size()];
for(int i=0;i<storeIdList.size();i++) { for (int i = 0; i < storeIdList.size(); i++) {
arr[i] = storeIdList.get(i) ; arr[i] = storeIdList.get(i);
} }
List<StoreDTO> storeList = this.storeService.getStores(arr); List<StoreDTO> storeList = this.storeService.getStores(arr);
Map<String, StoreDTO> map = storeList.stream() Map<String, StoreDTO> map = storeList.stream()
...@@ -133,11 +134,66 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe ...@@ -133,11 +134,66 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
} }
this.groupChatPlanOwnerLogMapper.insert(log); this.groupChatPlanOwnerLogMapper.insert(log);
} }
@Override @Override
public List<TabGroupChatPlanOwnerLog> listForTimer() { public List<TabGroupChatPlanOwnerLog> listForTimer() {
List<TabGroupChatPlanOwnerLog> list = this.groupChatPlanOwnerLogMapper.listForTimer() ; List<TabGroupChatPlanOwnerLog> list = this.groupChatPlanOwnerLogMapper.listForTimer();
return list; return list;
} }
@Override
public Page<ChatOwnerTotalDTO> listOwnerLogPageForWxaTotal(GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo) {
PageHelper.startPage(basePageInfo);
String clerkId = qdto.getClerkId();
ClerkDTO clerk = this.clerkService.getclerkById(clerkId);
int clerkType = clerk.getClerkType();
String storeId = null;
if (clerkType == 1) {
storeId = clerk.getStoreId();
clerkId = null;
}
qdto.setStoreId(storeId);
List<ChatOwnerTotalDTO> list = this.groupChatPlanOwnerLogMapper.listOwnerLogPageForWxaTotal(qdto);
Page<ChatOwnerTotalDTO> retPage = PageHelperUtils.changePageHelperToCurrentPage(list, ChatOwnerTotalDTO.class);
return retPage;
}
@Override
public Page<GroupChatPlanOwnerLogDTO> listOwnerLogPageForWxa(GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo) {
PageHelper.startPage(basePageInfo);
String clerkId = qdto.getClerkId();
ClerkDTO clerk = this.clerkService.getclerkById(clerkId);
int clerkType = clerk.getClerkType();
String storeId = null;
if (clerkType == 1) {
storeId = clerk.getStoreId();
clerkId = null;
}
qdto.setStoreId(storeId);
List<GroupChatPlanOwnerLogDTO> list = this.groupChatPlanOwnerLogMapper.listOwnerLogPageForWxa(qdto);
Page<GroupChatPlanOwnerLogDTO> retPage = PageHelperUtils.changePageHelperToCurrentPage(list,
GroupChatPlanOwnerLogDTO.class);
if (CollectionUtils.isNotEmpty(list)) {
Set<String> clerkIdList = list.stream().filter(dto -> StringUtils.isNotBlank(dto.getClerkId()))
.map(dto -> dto.getClerkId()).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(clerkIdList)) {
List<ClerkDTO> clerkList = this.clerkService.getClerkByClerkIds(clerkIdList);
if (CollectionUtils.isNotEmpty(clerkList)) {
Map<String, ClerkDTO> map = clerkList.stream()
.collect(Collectors.toMap(ClerkDTO::getClerkId, dto -> dto, (k1, k2) -> k1));
list.forEach(dto -> {
String clerkIdTemp = dto.getClerkId();
if (StringUtils.isNotBlank(clerkIdTemp) && null != map.get(clerkIdTemp)) {
dto.setClerkCode(map.get(clerkIdTemp).getClerkCode());
dto.setClerkName(map.get(clerkIdTemp).getClerkName());
}
});
}
}
}
return retPage;
}
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ import com.gic.api.base.commons.Page; ...@@ -8,6 +8,7 @@ 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.commons.util.PageHelperUtils; import com.gic.commons.util.PageHelperUtils;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
...@@ -80,17 +81,27 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService { ...@@ -80,17 +81,27 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
this.groupChatPlanService.del(clerkId, clerkName, planId); this.groupChatPlanService.del(clerkId, clerkName, planId);
return ServiceResponse.success(); return ServiceResponse.success();
} }
@Override @Override
public ServiceResponse<Void> stop(String clerkId, String clerkName, Long planId) { public ServiceResponse<Void> stop(String clerkId, String clerkName, Long planId) {
this.groupChatPlanService.stop(clerkId, clerkName, planId); this.groupChatPlanService.stop(clerkId, clerkName, planId);
return ServiceResponse.success(); return ServiceResponse.success();
} }
@Override @Override
public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPageForWxa(Long planId, public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPageForWxa(GroupChatPlanSearchQDTO qdto,
GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) { BasePageInfo basePageInfo) {
return null; Page<GroupChatPlanOwnerLogDTO> page = this.groupChatPlanOwnerLogService.listOwnerLogPageForWxa(qdto,
basePageInfo);
return ServiceResponse.success(page);
}
@Override
public ServiceResponse<Page<ChatOwnerTotalDTO>> listOwnerLogPageForWxaTotal(GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo) {
Page<ChatOwnerTotalDTO> page = this.groupChatPlanOwnerLogService.listOwnerLogPageForWxaTotal(qdto,
basePageInfo);
return ServiceResponse.success(page);
} }
} }
...@@ -104,4 +104,50 @@ ...@@ -104,4 +104,50 @@
where where
a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId}
</select> </select>
<select id="listOwnerLogPageForWxaTotal" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO">
select
b.name planName ,
b.start_time startTime ,
b.end_time end_time ,
<!-- 已发送 -->
SUM(CASE a.send_status WHEN 2 THEN 1 ELSE 0 END ) sendCount,
<!-- 待发送 -->
SUM(CASE a.send_status WHEN 1 THEN 1 ELSE 0 END ) notSendCount
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where
a.wx_enterprise_id = #{wxEnterpriseId}
<if test="null != storeId">
and a.store_id = #{storeId}
</if>
<if test="null != clerkId">
and a.clerk_id = #{clerkId}
</if>
group by b.plan_id
</select>
<select id="listOwnerLogPageForWxa" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
select
b.name planName ,
a.staff_id staffId ,
a.clerk_id clerkId ,
a.store_id storeId ,
a.send_status sendStatus ,
a.send_count sendCount ,
a.send_time sendTime ,
a.create_time createTime ,
a.expire_date expireDate ,
a.done_flag doneFlag ,
a.msgid msgid
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId}
<if test="null != storeId">
and a.store_id = #{storeId}
</if>
<if test="null != clerkId">
and a.clerk_id = #{clerkId}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
package com.gic.haoban.manage.web.controller.haoban;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService;
/**
*
* @ClassName: GroupChatPlanController
* @Description: 群群发计划
* @author xugh
* @date 2022年11月26日 上午9:32:56
*
*/
@RestController
@RequestMapping("/chat/plan")
public class GroupChatPlanController {
private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(GroupChatPlanController.class);
@Autowired
private GroupChatPlanApiService groupChatPlanApiService;
@RequestMapping("total-list")
public RestResponse<Object> totalList(Long planId, String clerkId, String wxEnterpriseId, String enterpriseId,
BasePageInfo basePageInfo) {
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId);
qdto.setPlanId(planId);
ServiceResponse<Page<ChatOwnerTotalDTO>> page = this.groupChatPlanApiService.listOwnerLogPageForWxaTotal(qdto,
basePageInfo);
return RestResponse.successResult(page.getResult());
}
@RequestMapping("owner-list")
public RestResponse<Object> ownerList(Long planId, String clerkId, String wxEnterpriseId, String enterpriseId,
BasePageInfo basePageInfo) {
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId);
qdto.setPlanId(planId);
ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> page = this.groupChatPlanApiService.listOwnerLogPageForWxa(qdto,
basePageInfo);
return RestResponse.successResult(page.getResult());
}
@RequestMapping("owner-do-list")
public RestResponse<Object> ownerDoList(Long planId, String clerkId, String wxEnterpriseId, String enterpriseId,
BasePageInfo basePageInfo) {
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId);
qdto.setPlanId(planId);
ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> page = this.groupChatPlanApiService.listOwnerLogPage(planId,
qdto, basePageInfo);
return RestResponse.successResult(page.getResult());
}
}
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
<!-- 应用名称 --> <!-- 应用名称 -->
<dubbo:application name="haoban-manage3-wx"/> <dubbo:application name="haoban-manage3-wx"/>
<dubbo:protocol name="dubbo" port="30010"/> <dubbo:protocol name="dubbo" port="30010"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" id="groupChatPlanApiService" />
<dubbo:reference interface="com.gic.member.api.service.GradeService" id="gradeService" /> <dubbo:reference interface="com.gic.member.api.service.GradeService" id="gradeService" />
<dubbo:reference interface="com.gic.ecm.api.service.EcmPlanService" id="ecmPlanService" /> <dubbo:reference interface="com.gic.ecm.api.service.EcmPlanService" id="ecmPlanService" />
<dubbo:reference interface="com.gic.marketing.api.service.CardExportService" id="cardExportService" /> <dubbo:reference interface="com.gic.marketing.api.service.CardExportService" id="cardExportService" />
......
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