Commit 8b51a7f2 by 徐高华

社群

parent 7fa96a8c
......@@ -41,7 +41,26 @@ public class HmLinkDTO implements Serializable {
/**0删除 1正常*/
private Integer statusFlag;
private String shortCode ;
private Long otherChatHmId ;
private List<HmLinkStoreDTO> storeList;
// 群活码配置
private List<HmLinkChatDTO> linkChatList ;
public List<HmLinkChatDTO> getLinkChatList() {
return linkChatList;
}
public void setLinkChatList(List<HmLinkChatDTO> linkChatList) {
this.linkChatList = linkChatList;
}
public Long getOtherChatHmId() {
return otherChatHmId;
}
public void setOtherChatHmId(Long otherChatHmId) {
this.otherChatHmId = otherChatHmId;
}
public String getShortCode() {
return shortCode;
......
......@@ -87,7 +87,15 @@ public class HmPageDTO implements Serializable {
private Date createTime;
private Date updateTime;
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public Long getPageId() {
return pageId;
}
......
......@@ -34,6 +34,16 @@ public class HmPageQDTO extends BasePageInfo {
* 微信企业id
*/
private String wxEnterpriseId;
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public String getPageSearchText() {
return pageSearchText;
......
......@@ -6,18 +6,13 @@ import com.gic.haoban.manage.service.pojo.qo.HmPageTemplateQO;
import java.util.List;
public interface TabHaobanHmPageMapper {
int deleteByPrimaryKey(Long templateId);
int insert(TabHaobanHmPage record);
int insertSelective(TabHaobanHmPage record);
TabHaobanHmPage selectByPrimaryKey(Long templateId);
int updateByPrimaryKeySelective(TabHaobanHmPage record);
int updateByPrimaryKey(TabHaobanHmPage record);
/**
* 条件查询 活码落地页模板
*
......
......@@ -78,6 +78,17 @@ public class TabHaobanHmPage {
private Date createTime;
private Date updateTime;
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public Long getPageId() {
return pageId;
......
......@@ -40,6 +40,16 @@ public class TabHmLink implements Serializable {
private String memberLabelId;
/**0删除 1正常*/
private Integer statusFlag;
private Long otherChatHmId ;
public Long getOtherChatHmId() {
return otherChatHmId;
}
public void setOtherChatHmId(Long otherChatHmId) {
this.otherChatHmId = otherChatHmId;
}
public String getShortCode() {
return shortCode;
......
......@@ -40,6 +40,15 @@ public class HmLinkBO implements Serializable {
private String memberLabelId;
/**0删除 1正常*/
private Integer statusFlag;
private Long otherChatHmId ;
public Long getOtherChatHmId() {
return otherChatHmId;
}
public void setOtherChatHmId(Long otherChatHmId) {
this.otherChatHmId = otherChatHmId;
}
public String getShortCode() {
return shortCode;
......
......@@ -41,6 +41,17 @@ public class HmPageTemplateQO extends BasePageInfo {
* @see HmPageStatus
*/
private Integer status;
// 0:引流加人 1入群
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public String getPageSearchText() {
return pageSearchText;
......
......@@ -18,11 +18,13 @@ import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.hm.HmLinkDTO;
import com.gic.haoban.manage.api.dto.hm.HmLinkStoreDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmLinkSearchQDTO;
import com.gic.haoban.manage.api.enums.hm.HmLinkTypeEnum;
import com.gic.haoban.manage.api.enums.hm.HmWelcomeReferType;
import com.gic.haoban.manage.service.dao.mapper.hm.HmLinkMapper;
import com.gic.haoban.manage.service.entity.hm.TabHmLink;
import com.gic.haoban.manage.service.pojo.bo.hm.HmLinkBO;
import com.gic.haoban.manage.service.pojo.bo.hm.HmWelcomeRelationBO;
import com.gic.haoban.manage.service.service.hm.HmLinkChatService;
import com.gic.haoban.manage.service.service.hm.HmLinkService;
import com.gic.haoban.manage.service.service.hm.HmLinkStoreService;
import com.gic.haoban.manage.service.service.hm.WelcomeRelationService;
......@@ -45,6 +47,8 @@ public class HmLinkServiceImpl implements HmLinkService {
private HmLinkStoreService hmLinkStoreService;
@Autowired
private WelcomeRelationService welcomeRelationService;
@Autowired
private HmLinkChatService hmLinkChatService ;
@Override
public HmLinkBO getByLinkId(String wxEnterpriseId, String enterprieId, Long linkId) {
......@@ -113,10 +117,14 @@ public class HmLinkServiceImpl implements HmLinkService {
String oldWelcomeId = null;
if (null == linkId) {
linkId = UniqueIdUtils.uniqueLong();
StringBuilder sb = new StringBuilder("LJ").append("0").append(dto.getLinkType()).append(linkId);
StringBuilder sb = new StringBuilder("LJ") ;
if(dto.getLinkType()<HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
sb.append("0");
}
sb.append(dto.getLinkType()).append(linkId);
dto.setLinkId(linkId);
dto.setLinkCode(sb.toString());
String shortCode = shortCode(dto.getEnterpriseId());
String shortCode = this.shortCode(dto.getEnterpriseId());
dto.setShortCode(shortCode);
dto.setStatusFlag(1);
TabHmLink entity = EntityUtil.changeEntityByJSON(TabHmLink.class, dto);
......@@ -128,15 +136,22 @@ public class HmLinkServiceImpl implements HmLinkService {
TabHmLink entity = EntityUtil.changeEntityByJSON(TabHmLink.class, dto);
this.linkMapper.update(entity);
}
if (CollectionUtils.isNotEmpty(storeList)) {
storeList.forEach(item -> {
item.setWxEnterpriseId(dto.getWxEnterpriseId());
item.setEnterpriseId(dto.getEnterpriseId());
});
// 单人活码
if(dto.getLinkType()==HmLinkTypeEnum.HM_LINK_TYPE_1.getLinkType() || dto.getLinkType()==HmLinkTypeEnum.HM_LINK_TYPE_2.getLinkType()) {
if (CollectionUtils.isNotEmpty(storeList)) {
storeList.forEach(item -> {
item.setWxEnterpriseId(dto.getWxEnterpriseId());
item.setEnterpriseId(dto.getEnterpriseId());
});
}
String newWelcomeId = dto.getWelcomeId();
this.saveWelcomeRelation(oldWelcomeId, newWelcomeId, dto);
this.hmLinkStoreService.saveStore(linkId, storeList);
}
// 群活码
if(dto.getLinkType()==HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
this.hmLinkChatService.save(linkId, dto.getLinkChatList()) ;
}
String newWelcomeId = dto.getWelcomeId();
this.saveWelcomeRelation(oldWelcomeId, newWelcomeId, dto);
this.hmLinkStoreService.saveStore(linkId, storeList);
return dto.getLinkCode();
}
......
......@@ -124,7 +124,7 @@ public class HmPageServiceImpl implements HmPageService {
haobanHmPage.setModifierName(pageDTO.getCreateorName());
haobanHmPage.setUpdateTime(now);
haobanHmPage.setStatus(HmPageStatus.ENABLE.getCode());
haobanHmPageMapper.insertSelective(haobanHmPage);
haobanHmPageMapper.insert(haobanHmPage);
return haobanHmPage.getPageId();
} else {
// update
......
......@@ -22,6 +22,7 @@
<result column="member_label_id" property="memberLabelId"/>
<result column="status_flag" property="statusFlag"/>
<result column="short_code" property="shortCode" />
<result column="other_chat_hm_id" property="otherChatHmId"/>
</resultMap>
<sql id="Base_Column_List">
link_id,
......@@ -42,7 +43,7 @@
store_rule_json,
custom_rule_json,
member_label_id,
status_flag,short_code
status_flag,short_code , other_chat_hm_id
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.hm.TabHmLink">
......@@ -66,7 +67,7 @@
store_rule_json,
custom_rule_json,
member_label_id,
status_flag , short_code
status_flag , short_code , other_chat_hm_id
)VALUES(
#{linkId,jdbcType=BIGINT},
#{linkCode,jdbcType=VARCHAR},
......@@ -86,7 +87,7 @@
#{storeRuleJson,jdbcType=VARCHAR},
#{customRuleJson,jdbcType=VARCHAR},
#{memberLabelId,jdbcType=VARCHAR},
#{statusFlag,jdbcType=INTEGER} , #{shortCode}
#{statusFlag,jdbcType=INTEGER} , #{shortCode} , #{otherChatHmId}
)
]]>
</insert>
......@@ -104,7 +105,7 @@
update_time=now(),
store_rule_json=#{storeRuleJson,jdbcType=VARCHAR},
custom_rule_json=#{customRuleJson,jdbcType=VARCHAR},
member_label_id=#{memberLabelId,jdbcType=VARCHAR}
member_label_id=#{memberLabelId,jdbcType=VARCHAR} , other_chat_hm_id = #{otherChatHmId}
WHERE link_id = #{linkId}
]]>
</update>
......@@ -141,6 +142,9 @@
<if test="null != searchParams">
and ( link_code like '%${searchParams}%' or creator_name like '%${searchParams}%' or name like '%${searchParams}%' )
</if>
<if test="null == linkType">
and link_type in (1,2)
</if>
<if test="null != linkType">
and link_type = #{linkType}
</if>
......
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.redisson.api.RRateLimiter;
import org.redisson.api.RateIntervalUnit;
import org.redisson.api.RateType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.haoban.common.utils.DingUtils;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.hm.HmLinkDTO;
import com.gic.haoban.manage.api.dto.hm.HmLinkStoreDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmLinkSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeListQDTO;
import com.gic.haoban.manage.api.service.KeyDataApiService;
import com.gic.haoban.manage.api.service.hm.HmLinkApiService;
import com.gic.haoban.manage.api.service.hm.HmLinkVisitLogApiService;
import com.gic.haoban.manage.api.service.hm.HmQrcodeApiService;
import com.gic.haoban.manage.service.service.QywxSendService;
import com.gic.haoban.manage.service.service.hm.HmLinkStoreService;
import com.gic.haoban.manage.service.util.QwFriendLimitCountUtil;
import com.gic.redis.data.util.RedisUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-conf.xml" })
......@@ -43,47 +37,21 @@ public class HmLinkTest {
@Autowired
private HmLinkStoreService hmLinkStoreService;
@Autowired
private HmQrcodeApiService hmQrcodeApiService ;
private QywxSendService qywxSendService ;
volatile int x = 0 ;
@Test
public void test() throws IOException, InterruptedException {
List<ContentMaterialDTO> imageList = new ArrayList<>();
ContentMaterialDTO d = new ContentMaterialDTO() ;
d.setImgUrl("https://p.qlogo.cn/bizmail/hxlMR3pdsfnslruRxMXebKiabKrgOOpdmJ7shD0jUFbcUMoOh9I7AXw/0");
d.setMaterialType(2);
imageList.add(d) ;
this.qywxSendService.share("ca66a01b79474c40b3e7c7f93daf1a3b", Arrays.asList("c6420c17febe426a9fb197dbd90bdc7b","4f2ae2fbfe594ad2a8ccdf9ab7b28713","fce45ed485e94d619b0124f2daf4b083"), "test", imageList);
for(int i=0;i<100;i++) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true) {
String ipKey = "hmadd:limit:ip";
int ipLimitCount = 300;
RRateLimiter rateLimiter = RedisUtil.getRedisClient().getRateLimiter(ipKey);
rateLimiter.trySetRate(RateType.OVERALL, ipLimitCount, 1, RateIntervalUnit.SECONDS);
if (rateLimiter.tryAcquire()) {
System.err.println(x++);
}else {
System.err.println("**************");
String msg = "活码调用次数告警【ip】";
DingUtils.send(msg, false);
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
......
......@@ -3,7 +3,6 @@ package com.gic.haoban.manage.web.controller.hm;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -39,6 +38,7 @@ import com.gic.haoban.manage.api.dto.qdto.hm.HmLinkSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogSearchQDTO;
import com.gic.haoban.manage.api.dto.statistics.StatisticsDTO;
import com.gic.haoban.manage.api.dto.welcome.dto.WelcomeDetailDTO;
import com.gic.haoban.manage.api.enums.hm.HmLinkTypeEnum;
import com.gic.haoban.manage.api.service.hm.HmLinkApiService;
import com.gic.haoban.manage.api.service.hm.HmPageApiService;
import com.gic.haoban.manage.api.service.hm.HmQrcodeApiService;
......@@ -87,7 +87,7 @@ public class HmLinkController {
private WxUserAddLogApiService wxUserAddLogApiService;
@Autowired
private HmQrcodeApiService hmQrcodeApiService ;
@RequestMapping("add")
@GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HUOMA, optType = GicLogRecordOptTypeEnum.HM_LINK_ADD, userFunc = LogRecordUserServiceImpl.class, optPage = "引流链接-新建链接")
public RestResponse<Object> save(@RequestBody HmLinkDTO dto) {
......@@ -105,11 +105,15 @@ public class HmLinkController {
dto.setEnterpriseId(loginUser.getEnterpriseId());
ServiceResponse<String> saveResp = this.hmLinkApiService.save(dto);
if (saveResp.isSuccess()) {
String logContent = "新增引流链接【" + saveResp.getResult() + "-" + dto.getName() + "】";
logger.info(logContent);
GicLogRecordEvaluationContext.putAttribute("logValue", logContent);
GicLogRecordEvaluationContext.putOptTargetId(AuthWebRequestUtil.getLoginUser().getClerkId());
return RestResponse.successResult();
if(dto.getLinkType()==HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
}else {
String logContent = "新增引流链接【" + saveResp.getResult() + "-" + dto.getName() + "】";
logger.info(logContent);
GicLogRecordEvaluationContext.putAttribute("logValue", logContent);
GicLogRecordEvaluationContext.putOptTargetId(AuthWebRequestUtil.getLoginUser().getClerkId());
return RestResponse.successResult();
}
}
return RestResponse.failure(saveResp.getCode(), saveResp.getResult());
}
......@@ -135,14 +139,18 @@ public class HmLinkController {
dto.setModifierName(loginUser.getClerkName());
ServiceResponse<String> saveResp = this.hmLinkApiService.save(dto);
if (saveResp.isSuccess()) {
String logContent = this.getUpdateLog(oldDTO, dto);
if (StringUtils.isBlank(logContent)) {
GicLogRecordEvaluationContext.noWriteLog();
if(dto.getLinkType()==HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
}else {
String logContent = this.getUpdateLog(oldDTO, dto);
if (StringUtils.isBlank(logContent)) {
GicLogRecordEvaluationContext.noWriteLog();
}
logger.info(logContent);
GicLogRecordEvaluationContext.putAttribute("logValue", logContent);
GicLogRecordEvaluationContext.putOptTargetId(AuthWebRequestUtil.getLoginUser().getClerkId());
return RestResponse.successResult();
}
logger.info(logContent);
GicLogRecordEvaluationContext.putAttribute("logValue", logContent);
GicLogRecordEvaluationContext.putOptTargetId(AuthWebRequestUtil.getLoginUser().getClerkId());
return RestResponse.successResult();
}
return RestResponse.failure(saveResp.getCode(), saveResp.getResult());
}
......
......@@ -58,6 +58,7 @@ public class HmPageController {
pageDTO.setCreateorName(loginUser.getClerkName());
pageDTO.setEnterpriseId(loginUser.getEnterpriseId());
pageDTO.setWxEnterpriseId(loginUser.getWxEnterpriseId());
pageDTO.setPageType(pageSettingReq.getPageType());
ServiceResponse<Long> serviceResponse = pageApiService.saveOrUpdateHmPage(pageDTO);
if (serviceResponse.isSuccess()){
String logContent = "新增落地页模板【MB01" + serviceResponse.getResult()+"-" + pageSettingReq.getPageName() +"】";
......@@ -157,6 +158,7 @@ public class HmPageController {
hmPageQDTO.setPageSearchText(pageListVO.getPageSearchText());
hmPageQDTO.setStartTime(pageListVO.getStartTime());
hmPageQDTO.setEndTime(pageListVO.getEndTime());
hmPageQDTO.setPageType(pageListVO.getPageType());
ServiceResponse<Page<HmPageDTO>> serviceResponse = pageApiService.queryPageList(hmPageQDTO);
return RestResponse.successResult(serviceResponse.getResult());
}
......
......@@ -22,6 +22,16 @@ public class HmPageListQO extends BasePageInfo {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public String getPageSearchText() {
return pageSearchText;
}
......
......@@ -52,6 +52,16 @@ public class HmPageSettingReq implements Serializable {
* 引导语
*/
private String guideComment;
private int pageType ;
public int getPageType() {
return pageType;
}
public void setPageType(int pageType) {
this.pageType = pageType;
}
public Long getPageId() {
return pageId;
......
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