From a29feffe324da9bdfd823174b754452d1821b90f Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Tue, 18 Apr 2023 17:10:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/SecurityConstants.java | 7 +- .../kicc/common/data/entity/KiccUser.java | 15 +- .../service/KiccUserDetailsService.java | 1 + .../kicc-platform-api/kicc-common-api/pom.xml | 5 + .../kicc/commonbiz/api/entity/PushType.java | 7 +- .../feign/RemotePushConcernFanService.java | 11 +- .../controller/PushApplicationController.java | 16 +- .../controller/PushChatMessageController.java | 3 +- .../controller/PushConcernFanController.java | 170 ++++++++++-------- .../PushConcernFanTypeController.java | 2 +- .../controller/PushEnterpriseController.java | 9 +- .../controller/PushTypeController.java | 52 ++++-- .../mapper/PushConcernFanMapper.java | 2 +- .../service/IPushConcernFanService.java | 5 +- .../impl/PushApplicationServiceImpl.java | 17 +- .../impl/PushConcernFanServiceImpl.java | 4 +- .../resources/mapper/PushBlacklistMapper.xml | 12 +- .../resources/mapper/PushConcernFanMapper.xml | 26 +-- .../system/controller/UserController.java | 17 +- 19 files changed, 236 insertions(+), 145 deletions(-) diff --git a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/SecurityConstants.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/SecurityConstants.java index 70379d25..6e8ca07f 100644 --- a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/SecurityConstants.java +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/constant/SecurityConstants.java @@ -30,6 +30,11 @@ public interface SecurityConstants { */ String FROM = "from"; + /** + * 请求header + */ + String HEADER_FROM_IN = FROM + "=" + FROM_IN; + /** * 默认登录URL */ @@ -106,5 +111,5 @@ public interface SecurityConstants { * 客户端ID */ String CLIENT_ID = "clientId"; - + } diff --git a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java index 476d1dae..58071915 100644 --- a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java +++ b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/KiccUser.java @@ -39,6 +39,18 @@ public class KiccUser extends User { @Getter private String phone; + /** + * 用户类型 + * { label: '系统管理员', value: '0' }, + * { label: '普通用户', value: '1' }, + * { label: '企业用户', value: '2' }, + * { label: '收样员', value: '3' }, + * { label: '客服', value: '4' }, + * { label: '企业内部用户', value: '5' }, + */ + @Getter + private String userType; + /** * 多租户ID */ @@ -46,13 +58,14 @@ public class KiccUser extends User { @Setter private String tenantId; - public KiccUser(String id, String deptId, String username, String password, String phone, String tenantId, boolean enabled, + public KiccUser(String id, String deptId, String username, String password, String phone, String userType, String tenantId, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); this.id = id; this.deptId = deptId; this.phone = phone; + this.userType = userType; this.tenantId = tenantId; } diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java index c06404db..aac0b34a 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/KiccUserDetailsService.java @@ -76,6 +76,7 @@ public interface KiccUserDetailsService extends UserDetailsService, Ordered { user.getUserName(), SecurityConstants.BCRYPT + user.getPassword(), user.getPhone(), + user.getUserType(), user.getTenantId(), true, true, diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/pom.xml b/kicc-platform/kicc-platform-api/kicc-common-api/pom.xml index a34f8304..d2db57ba 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/pom.xml +++ b/kicc-platform/kicc-platform-api/kicc-common-api/pom.xml @@ -14,6 +14,11 @@ kicc 通用业务模块公共api模块 + + + com.cloud + kicc-system-api + com.cloud diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushType.java b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushType.java index 6f0fbc01..e78f2220 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushType.java +++ b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushType.java @@ -43,10 +43,13 @@ public class PushType extends CommonEntity { @ApiModelProperty("是否播报文字") private String playToText; - @ApiModelProperty("自定义播放文件名称") + @ApiModelProperty("默认类型") + private String defaultType; + + @ApiModelProperty("在线铃声") private String onlineRingtone; - @ApiModelProperty("自定义播放文件名称") + @ApiModelProperty("离线铃声") private String offlineRingtone; } diff --git a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java index 31a7bb0d..40044aa3 100644 --- a/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java +++ b/kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java @@ -4,9 +4,15 @@ import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.constant.ServiceNameConstants; +import com.cloud.kicc.system.api.entity.User; +import feign.Param; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; /** *

@@ -19,8 +25,7 @@ import org.springframework.web.bind.annotation.RequestHeader; @FeignClient(contextId = "remotePushConcernFanService", value = ServiceNameConstants.COMMON_SERVICE) public interface RemotePushConcernFanService { - - @PostMapping(AppConstants.APP_COMMON + "/pushConcernFan/enterpriseUserSave") - R pushConcernFanSave(String enterpriseUserId, @RequestHeader(SecurityConstants.FROM) String from); + @PostMapping(value = AppConstants.APP_COMMON + "/pushConcernFan/enterpriseUserFanSave", headers = SecurityConstants.HEADER_FROM_IN) + R enterpriseUserFanSave(@RequestParam("innerEnterpriseUserId") String innerEnterpriseUserId, @RequestBody List userList); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java index 260e2022..9503419e 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushApplicationController.java @@ -17,8 +17,6 @@ import com.cloud.kicc.commonbiz.api.entity.PushChatMessage; import com.cloud.kicc.commonbiz.api.entity.PushEnterprise; import com.cloud.kicc.commonbiz.service.IPushApplicationService; import com.cloud.kicc.commonbiz.service.IPushEnterpriseService; -import com.cloud.kicc.system.api.entity.OauthClientDetails; -import io.lettuce.core.api.push.PushMessage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -46,6 +44,7 @@ public class PushApplicationController { private LambdaQueryWrapper getQueryWrapper(PushApplication pushApplication) { return new LambdaQueryWrapper() + .eq(PushApplication::getCreateById, SecurityUtils.getUser().getId()) .eq(StrUtil.isNotBlank(pushApplication.getName()), PushApplication::getName, pushApplication.getName()) .eq(StrUtil.isNotBlank(pushApplication.getStatus()), PushApplication::getStatus, pushApplication.getStatus()); } @@ -66,9 +65,10 @@ public class PushApplicationController { @ApiOperation("保存") @PostMapping("/save") public R save(@Valid @RequestBody PushApplication pushApplication) { - // 验证企业是否已经认证 - if (iPushEnterpriseService.count(Wrappers.lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ - throw new CheckedException("当前企业未认证,请认证后在操作!"); + // 企业用户需要验证是否进行企业认证 + if (StrUtil.equals(SecurityUtils.getUser().getUserType(), "2") && + iPushEnterpriseService.count(Wrappers.lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ + throw new CheckedException("当前企业用户未进行企业认证,请认证后在试!"); } pushApplication.setMessageSecret(UUID.randomUUID().toString().replace("-","")); iPushApplicationService.save(pushApplication); @@ -78,9 +78,6 @@ public class PushApplicationController { @ApiOperation("修改") @PutMapping("/update") public R update(@Valid @RequestBody PushApplication pushApplication) { - if (iPushEnterpriseService.count(Wrappers.lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ - throw new CheckedException("当前企业未认证,请认证后在操作!"); - } iPushApplicationService.updateById(pushApplication); return R.ok(); } @@ -88,9 +85,6 @@ public class PushApplicationController { @ApiOperation("删除") @DeleteMapping("/remove/{ids:[\\w,]+}") public R removeById(@PathVariable String[] ids) { - if (iPushEnterpriseService.count(Wrappers.lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ - throw new CheckedException("当前企业未认证,请认证后在操作!"); - } iPushApplicationService.removeByIds(Arrays.asList(ids)); return R.ok(); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java index aa51e4bd..08a0a0c3 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushChatMessageController.java @@ -36,16 +36,15 @@ public class PushChatMessageController { private LambdaQueryWrapper getQueryWrapper(PushChatMessage pushChatMessage) { return new LambdaQueryWrapper() + .eq(PushChatMessage::getUserId, SecurityUtils.getUser().getId()) .eq(StrUtil.isNotBlank(pushChatMessage.getStatus()), PushChatMessage::getStatus, pushChatMessage.getStatus()) .like(StrUtil.isNotBlank(pushChatMessage.getTitle()), PushChatMessage::getTitle, pushChatMessage.getTitle()) - .eq(PushChatMessage::getUserId, pushChatMessage.getUserId()) .eq(StrUtil.isNotBlank(pushChatMessage.getAlias()), PushChatMessage::getAlias, pushChatMessage.getAlias()); } @GetMapping("/list") @ApiOperation(value = "分页查询") public R list(Page page, PushChatMessage pushChatMessage) { - pushChatMessage.setUserId(SecurityUtils.getUser().getId()); IPage result = iPushChatMessageService.page(page, getQueryWrapper(pushChatMessage)); return R.ok(result.getRecords(), result.getTotal()); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java index b54ea473..d7dc4bba 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java @@ -2,28 +2,28 @@ package com.cloud.kicc.commonbiz.controller; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.security.annotation.Inner; import com.cloud.kicc.common.security.util.SecurityUtils; -import com.cloud.kicc.commonbiz.api.entity.PushConcernFan; -import com.cloud.kicc.commonbiz.api.entity.PushConcernFanType; -import com.cloud.kicc.commonbiz.api.entity.PushType; -import com.cloud.kicc.commonbiz.service.IPushConcernFanService; -import com.cloud.kicc.commonbiz.service.IPushConcernFanTypeService; -import com.cloud.kicc.commonbiz.service.IPushTypeService; +import com.cloud.kicc.commonbiz.api.entity.*; +import com.cloud.kicc.commonbiz.service.*; +import com.cloud.kicc.system.api.entity.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; +import org.springframework.data.repository.query.Param; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -43,6 +43,10 @@ public class PushConcernFanController { private final IPushConcernFanService iPushConcernFanService; private final IPushConcernFanTypeService iPushConcernFanTypeService; private final IPushTypeService iPushTypeService; + private final IPushApplicationService iPushApplicationService; + private final IPushChatMessageService iPushChatMessageService; + private final IPushEnterpriseService iPushEnterpriseService; + private final IPushRingtoneService iPushRingtoneService; @ApiOperation("分页查询") @GetMapping("/list") @@ -60,56 +64,34 @@ public class PushConcernFanController { } @ApiOperation("根据ID查询") - @GetMapping("/{id:\\w+}") - public R getById(@PathVariable("id") String id) { - return R.ok(iPushConcernFanService.getByPushConcernFanId(id)); + @GetMapping("/getById") + public R getById(String id, String onType) { + return R.ok(iPushConcernFanService.getByPushConcernFanId(id, onType)); } @ApiOperation("保存") @PostMapping("/save") public R save(@Valid @RequestBody PushConcernFan pushConcernFan) { iPushConcernFanService.save(pushConcernFan); - return R.ok(); - } - - @ApiOperation("企业用户关联保存") - @PostMapping("/enterpriseUserSave") - public R enterpriseUserSave(String enterpriseUserId) { - // 企业内部用户保存默认强制关注系统内部所有用户 - IPage> list = iPushConcernFanService.selectPushFriendList(new Page(1, 999), - MapUtil.builder().put("createById", enterpriseUserId).build()); - - List pushTypes = iPushTypeService.list(Wrappers.lambdaQuery().eq(PushType::getCreateById, enterpriseUserId)); - - list.getRecords().forEach(item -> { - PushConcernFan pushConcernFan = new PushConcernFan(); - pushConcernFan.setFanUserId(enterpriseUserId); - pushConcernFan.setConcernUserId(item.get("id").toString()); - pushConcernFan.setType("1"); - pushConcernFan.setStatus("1"); - iPushConcernFanService.save(pushConcernFan); - - // 保存用户自定义推送类型 - List pushConcernFanTypes = pushTypes.stream() - .map(pushType -> new PushConcernFanType() + // 同步推送类型 + if (StrUtil.equals(pushConcernFan.getStatus(), "1")) { + List pushTypes = iPushTypeService.list(Wrappers.lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId())); + List pushConcernFanTypes = pushTypes.stream().map(item -> new PushConcernFanType() + .setName(item.getName()) .setConcernFanId(pushConcernFan.getId()) - .setName(pushType.getName()) .setConcernUserId(pushConcernFan.getConcernUserId()) .setFanUserId(pushConcernFan.getFanUserId()) - .setTypeId(pushType.getId()) - .setPlaySound(pushType.getPlaySound()) - .setPlayVibrate(pushType.getPlayVibrate()) - .setPlayLights(pushType.getPlayLights()) - .setPlayToText(pushType.getPlayToText()) - .setOnlineRingtone(pushType.getOnlineRingtone()) - .setOfflineRingtone(pushType.getOfflineRingtone()) + .setTypeId(item.getId()) + .setDefaultType(item.getDefaultType()) + .setPlaySound(item.getPlaySound()) + .setPlayVibrate(item.getPlayVibrate()) + .setPlayLights(item.getPlayLights()) + .setPlayToText(item.getPlayToText()) + .setOnlineRingtone(item.getOnlineRingtone()) + .setOfflineRingtone(item.getOfflineRingtone()) ).collect(Collectors.toList()); - - if (!pushConcernFanTypes.isEmpty()) { - pushConcernFanTypes.get(0).setDefaultType("1"); - iPushConcernFanTypeService.saveBatch(pushConcernFanTypes); - } - }); + iPushConcernFanTypeService.saveBatch(pushConcernFanTypes); + } return R.ok(); } @@ -120,48 +102,82 @@ public class PushConcernFanController { return R.ok(); } + @Inner + @ApiOperation("内部企业用户粉丝保存") + @PostMapping("/enterpriseUserFanSave") + public R enterpriseUserFanSave(String innerEnterpriseUserId, @Valid @RequestBody List userList) { + // 企业内部用户保存默认强制关注系统内除自己以外的所有用户 + userList.forEach(item -> { + // 添加系统内部用户为粉丝 + PushConcernFan pushConcernFan = new PushConcernFan(); + pushConcernFan.setFanUserId(item.getId()); + pushConcernFan.setConcernUserId(innerEnterpriseUserId); + pushConcernFan.setType("1"); + pushConcernFan.setStatus("1"); + iPushConcernFanService.save(pushConcernFan); + }); + return R.ok(); + } + @ApiOperation("审核") @GetMapping("/audit") public R audit(String id) { iPushConcernFanService.update(Wrappers.lambdaUpdate().set(PushConcernFan::getStatus, "1").in(PushConcernFan::getId, id)); PushConcernFan pushConcernFan = iPushConcernFanService.getById(id); - if (ObjectUtil.isNotEmpty(pushConcernFan)) { - List pushTypes = iPushTypeService.list(Wrappers.lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId())); - List pushConcernFanTypes = pushTypes.stream() - .map(item -> new PushConcernFanType() - .setConcernFanId(pushConcernFan.getId()) - .setName(item.getName()) - .setConcernUserId(pushConcernFan.getConcernUserId()) - .setFanUserId(pushConcernFan.getFanUserId()) - .setTypeId(item.getId()) - .setPlaySound(item.getPlaySound()) - .setPlayVibrate(item.getPlayVibrate()) - .setPlayLights(item.getPlayLights()) - .setPlayToText(item.getPlayToText()) - .setOnlineRingtone(item.getOnlineRingtone()) - .setOfflineRingtone(item.getOfflineRingtone()) - ) - .collect(Collectors.toList()); - if (!pushConcernFanTypes.isEmpty()) { - pushConcernFanTypes.get(0).setDefaultType("1"); - iPushConcernFanTypeService.saveBatch(pushConcernFanTypes); - } - } + // 同步推送类型 + List pushTypes = iPushTypeService.list(Wrappers.lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId())); + List pushConcernFanTypes = pushTypes.stream().map(item -> new PushConcernFanType() + .setName(item.getName()) + .setConcernFanId(pushConcernFan.getId()) + .setConcernUserId(pushConcernFan.getConcernUserId()) + .setFanUserId(pushConcernFan.getFanUserId()) + .setTypeId(item.getId()) + .setDefaultType(item.getDefaultType()) + .setPlaySound(item.getPlaySound()) + .setPlayVibrate(item.getPlayVibrate()) + .setPlayLights(item.getPlayLights()) + .setPlayToText(item.getPlayToText()) + .setOnlineRingtone(item.getOnlineRingtone()) + .setOfflineRingtone(item.getOfflineRingtone()) + ).collect(Collectors.toList()); + iPushConcernFanTypeService.saveBatch(pushConcernFanTypes); return R.ok(); } @ApiOperation("删除") @DeleteMapping("/remove/{ids:[\\w,]+}") public R removeById(@PathVariable String[] ids) { - List list = Arrays.asList(ids); - // 删除用户自定义推送类型 - list.forEach(id -> { - PushConcernFan pushConcernFan = iPushConcernFanService.getById(id); - iPushConcernFanTypeService.remove(Wrappers.lambdaQuery() - .eq(PushConcernFanType::getConcernUserId, pushConcernFan.getConcernUserId()) - .eq(PushConcernFanType::getFanUserId, pushConcernFan.getFanUserId())); - }); iPushConcernFanService.removeByIds(Arrays.asList(ids)); + iPushConcernFanTypeService.remove(Wrappers.lambdaQuery().in(PushConcernFanType::getConcernFanId, ids)); + return R.ok(); + } + + @Inner + @ApiOperation("移除用户推送相关数据") + @DeleteMapping("/removeUserPushData") + public R removeUserPushData(@RequestParam Set userIds) { + // 移除推送关注粉丝 + iPushConcernFanService.remove(Wrappers.lambdaQuery() + .in(PushConcernFan::getConcernUserId, userIds) + .or().in(PushConcernFan::getFanUserId, userIds)); + // 移除推送关注粉丝子表推送类型 + iPushConcernFanTypeService.remove(Wrappers.lambdaQuery() + .in(PushConcernFanType::getConcernUserId, userIds) + .or().in(PushConcernFanType::getFanUserId, userIds)); + iPushTypeService.remove(Wrappers. lambdaQuery() + .in(PushType::getCreateById, userIds)); + // 移除推送应用 + iPushApplicationService.remove(Wrappers.lambdaQuery() + .in(PushApplication::getCreateById, userIds)); + // 移除推送聊天消息 + iPushChatMessageService.remove(Wrappers.lambdaQuery() + .in(PushChatMessage::getUserId, userIds)); + // 移除企业用户认证信息 + iPushEnterpriseService.remove(Wrappers.lambdaQuery() + .in(PushEnterprise::getUserId, userIds)); + // 移除用户在线铃声 + iPushRingtoneService.remove(Wrappers.lambdaQuery() + .in(PushRingtone::getCreateById, userIds)); return R.ok(); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java index 68f432b2..f8908748 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java @@ -36,7 +36,7 @@ public class PushConcernFanTypeController { private LambdaQueryWrapper getQueryWrapper(PushConcernFanType pushConcernFanType) { return new LambdaQueryWrapper() - .eq(PushConcernFanType::getConcernUserId, pushConcernFanType.getConcernUserId()) + .eq(PushConcernFanType::getFanUserId, pushConcernFanType.getFanUserId()) .eq(StrUtil.isNotBlank(pushConcernFanType.getName()), PushConcernFanType::getName, pushConcernFanType.getName()); } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushEnterpriseController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushEnterpriseController.java index 86b5f082..5660c8ef 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushEnterpriseController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushEnterpriseController.java @@ -64,9 +64,12 @@ public class PushEnterpriseController { @ApiOperation("保存") @PostMapping("/save") public R save(@Valid @RequestBody PushEnterprise pushEnterprise) { - if(iPushEnterpriseService.count(Wrappers.lambdaQuery() - .eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) > 0) { - throw new CheckedException("当前用户已经存在企业信息不能重复认证!"); + // 限制只能有企业用户进行认证 + if (!StrUtil.equals(SecurityUtils.getUser().getUserType(), "2")) { + throw new CheckedException("当前用户不是企业用户请用企业用户登录后重试!"); + } + if(iPushEnterpriseService.count(Wrappers.lambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) > 0) { + throw new CheckedException("当前企业用户已经绑定了认证信息不能重复认证!"); } if (StrUtil.isBlank(pushEnterprise.getUserId())) pushEnterprise.setUserId(SecurityUtils.getUser().getId()); iPushEnterpriseService.save(pushEnterprise); diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushTypeController.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushTypeController.java index 67655e06..fcc5e5a7 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushTypeController.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushTypeController.java @@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; +import com.cloud.kicc.common.core.exception.CheckedException; import com.cloud.kicc.common.security.util.SecurityUtils; +import com.cloud.kicc.commonbiz.api.entity.PushConcernFan; import com.cloud.kicc.commonbiz.api.entity.PushConcernFanType; import com.cloud.kicc.commonbiz.api.entity.PushType; import com.cloud.kicc.commonbiz.service.IPushConcernFanService; @@ -22,7 +24,9 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -66,25 +70,21 @@ public class PushTypeController { @PostMapping("/save") public R save(@Valid @RequestBody PushType pushType) { iPushTypeService.save(pushType); - IPage> list = iPushConcernFanService.selectPushConcernFanList(new Page(1, 999), - MapUtil.builder() - .put("status", "1") - .put("concernUserId", SecurityUtils.getUser().getId()) - .build()); - list.getRecords().forEach(item -> - iPushConcernFanTypeService.save(new PushConcernFanType() - .setConcernFanId(item.get("id").toString()) - .setName(pushType.getName()) - .setConcernUserId(item.get("concernUserId").toString()) - .setFanUserId(item.get("fanUserId").toString()) - .setTypeId(pushType.getId()) - .setPlaySound(pushType.getPlaySound()) - .setPlayVibrate(pushType.getPlayVibrate()) - .setPlayLights(pushType.getPlayLights()) - .setPlayToText(pushType.getPlayToText()) - .setOnlineRingtone(pushType.getOnlineRingtone()) - .setOfflineRingtone(pushType.getOfflineRingtone())) - ); + List pushConcernFanList = iPushConcernFanService + .list(Wrappers.lambdaQuery().eq(PushConcernFan::getFanUserId, SecurityUtils.getUser().getId())); + List pushConcernFanTypeList = pushConcernFanList.stream().map(item -> new PushConcernFanType() + .setConcernFanId(item.getId()) + .setName(pushType.getName()) + .setConcernUserId(item.getConcernUserId()) + .setFanUserId(item.getFanUserId()) + .setTypeId(pushType.getId()) + .setPlaySound(pushType.getPlaySound()) + .setPlayVibrate(pushType.getPlayVibrate()) + .setPlayLights(pushType.getPlayLights()) + .setPlayToText(pushType.getPlayToText()) + .setOnlineRingtone(pushType.getOnlineRingtone()) + .setOfflineRingtone(pushType.getOfflineRingtone())).collect(Collectors.toList()); + iPushConcernFanTypeService.saveBatch(pushConcernFanTypeList); return R.ok(); } @@ -103,5 +103,19 @@ public class PushTypeController { return R.ok(); } + @ApiOperation("设置默认推送类型") + @PutMapping("/setDefaultType") + public R setDefaultType(@RequestBody PushType pushType) { + if (StrUtil.isBlank(pushType.getId())) { + throw new CheckedException("当前推送类型ID必填!"); + } + // 全部设置为不默认 + iPushTypeService.update(Wrappers.lambdaUpdate() + .set(PushType::getDefaultType, "0") + .eq(PushType::getCreateById, SecurityUtils.getUser().getId())); + iPushTypeService.updateById(pushType); + return R.ok(); + } + } diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java index 03751b6d..fdfb6e92 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java @@ -22,7 +22,7 @@ public interface PushConcernFanMapper extends BaseMapper { IPage> selectPushConcernFanList(@Param("page") IPage> page, @Param("map") Map map); - Map getByPushConcernFanId(String id); + Map getByPushConcernFanId(@Param("id") String id, @Param("onType") String onType); IPage> selectPushFriendList(@Param("page") IPage> page, @Param("map") Map map); diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java index 1250bf97..e8b6880c 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java @@ -25,10 +25,11 @@ public interface IPushConcernFanService extends IService { /** * 根据ID查询 - * @param + * @param id 关注粉丝表Id + * @param onType 关注粉丝类型 0关联粉丝表 1关联关注表 * @return */ - Map getByPushConcernFanId(String id); + Map getByPushConcernFanId(String id, String onType); /** * 查询好友列表 diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java index 12b36aad..f0a14f02 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushApplicationServiceImpl.java @@ -12,6 +12,7 @@ import com.cloud.kicc.common.core.constant.CommonConstants; import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.exception.CheckedException; import com.cloud.kicc.common.data.entity.KiccUser; +import com.cloud.kicc.common.security.util.SecurityUtils; import com.cloud.kicc.commonbiz.api.entity.*; import com.cloud.kicc.commonbiz.mapper.PushApplicationMapper; import com.cloud.kicc.commonbiz.service.*; @@ -55,6 +56,7 @@ public class PushApplicationServiceImpl extends ServiceImpllambdaQuery().eq(PushEnterprise::getUserId, SecurityUtils.getUser().getId())) == 0){ + throw new CheckedException("当前企业用户未进行企业认证,请认证后在试!"); + } + PushApplication pushApplication = baseMapper.selectOne(Wrappers.lambdaQuery() .eq(PushApplication::getMessageSecret, pushChatMessage.getMessageSecret()) - .eq(PushApplication::getCreateById, pushChatMessage.getUserId()) + .eq(PushApplication::getCreateById, pushChatMessage.getUserId()) .eq(PushApplication::getStatus, "0")); pushApplication = Optional.of(pushApplication).orElseThrow(() -> new CheckedException("你当前没有权限发送消息,请联系管理员!")); diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java index 503aacce..76438dfb 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java @@ -26,8 +26,8 @@ public class PushConcernFanServiceImpl extends ServiceImpl getByPushConcernFanId(String id) { - return baseMapper.getByPushConcernFanId(id); + public Map getByPushConcernFanId(String id, String onType) { + return baseMapper.getByPushConcernFanId(id, onType); } @Override diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml index a7c0c651..ead6f9c5 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushBlacklistMapper.xml @@ -29,9 +29,9 @@ FROM common_push_blacklist bl JOIN sys_user u ON - bl.fan_user_id = u.id + bl.concern_user_id = u.id - u.del_flag = 0 AND u.status = 0 AND bl.concern_user_id = #{user.createById} + u.del_flag = 0 AND u.status = 0 AND bl.fan_user_id = #{user.createById} AND u.nick_name LIKE CONCAT('%', #{user.nickName}, '%') @@ -65,10 +65,12 @@ FROM common_push_blacklist bl JOIN sys_user u ON - bl.fan_user_id = u.id + bl.concern_user_id = u.id - u.del_flag = 0 AND u.status = 0 AND - bl.concern_user_id = #{concernUserId} AND bl.fan_user_id = #{fanUserId} + u.del_flag = 0 AND + u.status = 0 AND + bl.concern_user_id = #{concernUserId} AND + bl.fan_user_id = #{fanUserId} diff --git a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml index 18e18170..ea1d25b4 100644 --- a/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml +++ b/kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml @@ -41,15 +41,15 @@ - cf.del_flag = 0 and u.status = 0 + cf.del_flag = 0 AND u.status = 0 - AND cf.status = #{map.status} + AND cf.status = #{map.status} - AND cf.concern_user_id = #{map.concernUserId} + AND cf.concern_user_id = #{map.concernUserId} - AND cf.fan_user_id = #{map.fanUserId} + AND cf.fan_user_id = #{map.fanUserId} AND u.nick_name = #{map.nickName} @@ -87,9 +87,16 @@ FROM common_push_concern_fan cf JOIN sys_user u ON - cf.fan_user_id = u.id + + + cf.concern_user_id = u.id + + + cf.fan_user_id = u.id + + - cf.del_flag = 0 and u.status = 0 + cf.del_flag = 0 AND u.status = 0 AND cf.id = #{id} @@ -105,12 +112,9 @@ LEFT JOIN (select * FROM common_push_concern_fan WHERE del_flag = 0 and fan_user_id = #{map.createById}) cf ON u.id = cf.concern_user_id LEFT JOIN common_push_blacklist b ON u.id = b.concern_user_id - u.del_flag = 0 AND u.status = 0 + u.del_flag = 0 AND u.status = 0 AND u.user_type not in(2,5) - AND u.id != #{map.createById} - - - AND u.user_type != '2' + AND u.id != #{map.createById} AND u.nick_name = #{map.nickName} diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java index 4f8bea4f..4184430e 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java @@ -116,30 +116,42 @@ public class UserController { return R.ok(userService.getUserAuthority(user)); } + + @GetMapping("/test") + public R test(String id) { + List userList = userService.list(Wrappers.lambdaQuery() + .ne(User::getId, SecurityUtils.getUser().getId()) + .notIn(User::getUserType, "2", "5")); + remotePushConcernFanService.enterpriseUserFanSave(id, userList); + return R.ok(userList); + } + @SysLog("用户新增") @PostMapping("/save") @PreAuthorize("@pms.hasPermission('user_add')") public R save(@RequestBody User user) { user.setPassword(ENCODER.encode(user.getPassword())); userService.saveUser(user); + // 企业用户推送类型数据同步 if (StrUtil.equals(user.getUserType(), "2")) { - remotePushConcernFanService.pushConcernFanSave(user.getId(), SecurityConstants.FROM_IN); + //remotePushConcernFanService.pushConcernFanSave(user.getId(), SecurityConstants.FROM_IN); } return R.ok(); } - @Inner(false) @SysLog("新增外部系统用户") @PostMapping("/saveExternalUser") public R saveExternalUser(@RequestBody User externalUser) { User user = userService.getById("1510539584287346688"); + userService.getUserAuthority(user); KiccUser kiccUser = new KiccUser( user.getId(), user.getDeptId(), user.getUserName(), SecurityConstants.BCRYPT + user.getPassword(), user.getPhone(), + user.getUserType(), user.getTenantId(), true, true, @@ -154,7 +166,6 @@ public class UserController { return R.ok(externalUser); } - @Inner @GetMapping("/selectByUserName/{userName}") public R selectByUserName(@PathVariable String userName) {