diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SiteInfoController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SiteInfoController.java index 5f76e8a..d044c93 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SiteInfoController.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/SiteInfoController.java @@ -2,6 +2,10 @@ package com.flossom.miniProgram.controller; import com.flossom.common.core.domain.R; import com.flossom.common.core.web.controller.BaseController; +import com.flossom.common.core.web.domain.AjaxResult; +import com.flossom.common.log.annotation.Log; +import com.flossom.common.log.enums.BusinessType; +import com.flossom.common.security.annotation.RequiresPermissions; import com.flossom.miniProgram.service.ISiteInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -33,4 +37,16 @@ public class SiteInfoController extends BaseController { return R.ok(siteInfoService.carousel()); } + /** + * 点击轮播图时保存用户标签 + * + * @param siteInfoId + * @return + */ + @GetMapping("/addTag/{siteInfoId}") + public AjaxResult addTag(@PathVariable Long siteInfoId) { + siteInfoService.addTag(siteInfoId); + return AjaxResult.success(); + } + } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISiteInfoService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISiteInfoService.java index a0f1556..c19cc01 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISiteInfoService.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/ISiteInfoService.java @@ -8,4 +8,6 @@ public interface ISiteInfoService { List popupList(Integer openType); List carousel(); + + void addTag(Long siteInfoId); } diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SiteInfoServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SiteInfoServiceImpl.java index 8a1ba88..1cef391 100644 --- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SiteInfoServiceImpl.java +++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/SiteInfoServiceImpl.java @@ -6,10 +6,7 @@ import com.flossom.common.core.enums.SitePushTypeEnum; import com.flossom.common.core.enums.SiteTypeEnum; import com.flossom.common.core.enums.TagTypeStatus; import com.flossom.common.core.exception.ServiceException; -import com.flossom.common.core.mapper.SiteInfoMapper; -import com.flossom.common.core.mapper.SiteInfoTagMapper; -import com.flossom.common.core.mapper.SiteLogMapper; -import com.flossom.common.core.mapper.WxUserTagMapper; +import com.flossom.common.core.mapper.*; import com.flossom.common.core.utils.DateUtils; import com.flossom.common.core.utils.StringUtils; import com.flossom.common.security.utils.SecurityUtils; @@ -42,6 +39,9 @@ public class SiteInfoServiceImpl implements ISiteInfoService { @Autowired private SiteInfoTagMapper siteInfoTagMapper; + @Autowired + private SysTagMapper sysTagMapper; + @Override public List popupList(Integer openType) { @@ -79,6 +79,70 @@ public class SiteInfoServiceImpl implements ISiteInfoService { return null; } + @Override + public void addTag(Long siteInfoId) { + SiteInfoTag siteInfoTag = new SiteInfoTag(); + siteInfoTag.setSiteId(siteInfoId); + // 小程序标签 + siteInfoTag.setTagType(TagTypeStatus.MINI_PROGRAM.getCode()); + siteInfoTag.setStatus(2L); + List addMiniTagList = siteInfoTagMapper.selectSiteInfoTagList(siteInfoTag); + if (addMiniTagList != null && addMiniTagList.size() > 0) { + List tagIdList = addMiniTagList.stream().map(SiteInfoTag::getTagId).map(Long::intValue).collect(Collectors.toList()); + List userIdList = Arrays.asList(SecurityUtils.getLoginUser().getWxUserMember().getId()).stream().map(Long::intValue).collect(Collectors.toList()); + batchAddTag(tagIdList, userIdList, TagTypeStatus.MINI_PROGRAM.getCode()); + } + // 企微标签 + siteInfoTag.setTagType(TagTypeStatus.ENTERPRISE_WECHAT.getCode()); + siteInfoTag.setStatus(2L); + List addWecomTagList = siteInfoTagMapper.selectSiteInfoTagList(siteInfoTag); + if (addWecomTagList != null && addWecomTagList.size() > 0) { + List tagIdList = addWecomTagList.stream().map(SiteInfoTag::getTagId).map(Long::intValue).collect(Collectors.toList()); + List userIdList = Arrays.asList(SecurityUtils.getLoginUser().getWxUserMember().getId()).stream().map(Long::intValue).collect(Collectors.toList()); + batchAddTag(tagIdList, userIdList, TagTypeStatus.ENTERPRISE_WECHAT.getCode()); + } + + } + + /** + * 批量添加标签 + * code 标签类型 {@link com.flossom.common.core.enums.TagTypeStatus} + * + * @param tagIdList + * @param userIdList + */ + public void batchAddTag(List tagIdList, List userIdList, Integer code) { + // 对单个标签操作 + for (Integer tagId : tagIdList) { + SysTag sysTag = sysTagMapper.selectDeptById(tagId.longValue()); + if (sysTag != null) { + List needAddIdList = new ArrayList<>(); + // 1、查询该标签下,有那些用户关联 + List existedUserList = wxUserTagMapper.selectWxUserTagByTagId(tagId, code); + Iterator iterator = userIdList.iterator(); + while (iterator.hasNext()) { + Integer element = iterator.next(); + if (!existedUserList.contains(element)) { + needAddIdList.add(element); + } + } + + // 2、添加用户与标签的关联 + List list = new ArrayList<>(); + WxUserTag wxUserTag; + if (needAddIdList != null && needAddIdList.size() > 0) { + for (Integer userId : needAddIdList) { + wxUserTag = new WxUserTag(null, userId.longValue(), sysTag.getTagName(), tagId.longValue(), code, null); + wxUserTag.setCreateTime(DateUtils.getNowDate()); + list.add(wxUserTag); + } + wxUserTagMapper.insertBatch(list); + } + } + } + // TODO: 对接数赢:批量添加小程序标签 + } + /** * 根据 条件做过滤 * @@ -174,7 +238,7 @@ public class SiteInfoServiceImpl implements ISiteInfoService { // 4.4、可见小程序标签 siteInfoTag.setSiteId(info.getId()); - siteInfoTag.setTagType(1); + siteInfoTag.setTagType(TagTypeStatus.MINI_PROGRAM.getCode()); siteInfoTag.setStatus(0L); List showWechatSiteInfoTags = siteInfoTagMapper.selectSiteInfoTagList(siteInfoTag); if (showWechatSiteInfoTags != null && showWechatSiteInfoTags.size() > 0) { @@ -185,7 +249,7 @@ public class SiteInfoServiceImpl implements ISiteInfoService { } // 4.5、可见企微标签 siteInfoTag.setSiteId(info.getId()); - siteInfoTag.setTagType(2); + siteInfoTag.setTagType(TagTypeStatus.ENTERPRISE_WECHAT.getCode()); siteInfoTag.setStatus(0L); List showCompanySiteInfoTags = siteInfoTagMapper.selectSiteInfoTagList(siteInfoTag); if (showCompanySiteInfoTags != null && showCompanySiteInfoTags.size() > 0) {