Browse Source

fix: 测试第一版推送消息流程

master
wangxiang 2 years ago
parent
commit
8f43701109
  1. 3
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushConcernFan.java
  2. 3
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushConcernFanType.java
  3. 26
      kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java
  4. 22
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java
  5. 90
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java
  6. 1
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java
  7. 17
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml
  8. 5
      kicc-platform/kicc-platform-biz/kicc-system-biz/pom.xml
  9. 39
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

3
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushConcernFan.java

@ -34,6 +34,9 @@ public class PushConcernFan extends CommonEntity { @@ -34,6 +34,9 @@ public class PushConcernFan extends CommonEntity {
@ApiModelProperty("粉丝用户")
private String fanUserId;
@ApiModelProperty("关注类型")
private String type;
@ApiModelProperty("0-需要审核 1-审核通过")
private String status;

3
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/entity/PushConcernFanType.java

@ -30,6 +30,9 @@ public class PushConcernFanType extends CommonEntity { @@ -30,6 +30,9 @@ public class PushConcernFanType extends CommonEntity {
@ApiModelProperty("类型名称")
private String name;
@ApiModelProperty("关注粉丝父表ID")
private String concernFanId;
@ApiModelProperty("关注用户")
private String concernUserId;

26
kicc-platform/kicc-platform-api/kicc-common-api/src/main/java/com/cloud/kicc/commonbiz/api/feign/RemotePushConcernFanService.java

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
package com.cloud.kicc.commonbiz.api.feign;
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 org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
/**
*<p>
* 远程推送关注粉丝api
*</p>
*
* @Author: wangxiang4
* @since: 2023/4/6
*/
@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);
}

22
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/User.java

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField; @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cloud.kicc.common.data.entity.CommonEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@ -23,6 +25,7 @@ import java.time.LocalDateTime; @@ -23,6 +25,7 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_user")
@ApiModel(description = "用户表")
public class User extends CommonEntity {
private static final long serialVersionUID = 1L;
@ -31,98 +34,115 @@ public class User extends CommonEntity { @@ -31,98 +34,115 @@ public class User extends CommonEntity {
* 用户ID
*/
@TableId
@ApiModelProperty("用户ID")
private String id;
/**
* 用户名
*/
@ExcelProperty("用户名")
@ApiModelProperty("用户名")
private String userName;
/**
* 昵称
*/
@ExcelProperty("昵称")
@ApiModelProperty("用户昵称")
private String nickName;
/**
* 密码
*/
@ApiModelProperty("用户密码")
private String password;
/**
* 用户类型
*/
@ApiModelProperty("用户类型")
private String userType;
/**
* 机构ID
*/
@ApiModelProperty("机构ID")
private String deptId;
/**
* 机构名称
*/
@ExcelProperty("机构名称")
@ApiModelProperty("机构名称")
private String deptName;
/**
* 用户邮箱
*/
@ExcelProperty("邮箱")
@ApiModelProperty("邮箱")
private String email;
/**
* 手机号码
*/
@ExcelProperty("手机号码")
@ApiModelProperty("手机号码")
private String phone;
/**
* 用户性别0男 1女 2未知
*/
@ExcelProperty("性别")
@ApiModelProperty("用户性别(0男 1女 2未知")
private String sex;
/**
* 头像路径
*/
@ApiModelProperty("头像路径")
private String avatar;
/**
* 最后登陆IP
*/
@ApiModelProperty("最后登陆IP")
private String loginIp;
/**
* 最后登陆时间
*/
@ApiModelProperty("最后登陆时间")
private LocalDateTime loginTime;
/**
* 地图标记点位置图片旋转值
*/
@ApiModelProperty("地图标记点位置图片旋转值")
private Double mapOrientation;
/**
* 地图设计器默认中心点位置
*/
@ApiModelProperty("地图设计器默认中心点位置")
private String mapCenter;
/**
* 帐号状态0正常 1停用
*/
@ApiModelProperty("帐号状态(0正常 1停用)")
private String status;
/**
* 内部系统账户
*/
@ApiModelProperty("内部系统账户ID")
private Integer klabUserAccount;
/**
* 角色ID集合
*/
@TableField(exist = false)
@ApiModelProperty("角色ID集合")
private String[] roleIds;
/**

90
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java

@ -1,6 +1,8 @@ @@ -1,6 +1,8 @@
package com.cloud.kicc.commonbiz.controller;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -8,16 +10,21 @@ import com.cloud.kicc.common.core.api.R; @@ -8,16 +10,21 @@ import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.ibatis.annotations.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.stream.Collectors;
/**
* <p>
@ -34,6 +41,8 @@ import java.util.Map; @@ -34,6 +41,8 @@ import java.util.Map;
public class PushConcernFanController {
private final IPushConcernFanService iPushConcernFanService;
private final IPushConcernFanTypeService iPushConcernFanTypeService;
private final IPushTypeService iPushTypeService;
@ApiOperation("分页查询")
@GetMapping("/list")
@ -63,6 +72,47 @@ public class PushConcernFanController { @@ -63,6 +72,47 @@ public class PushConcernFanController {
return R.ok();
}
@ApiOperation("企业用户关联保存")
@PostMapping("/enterpriseUserSave")
public R enterpriseUserSave(String enterpriseUserId) {
// 企业内部用户保存默认强制关注系统内部所有用户
IPage<Map<String, Object>> list = iPushConcernFanService.selectPushFriendList(new Page(1, 999),
MapUtil.<String, Object>builder().put("createById", enterpriseUserId).build());
List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>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<PushConcernFanType> pushConcernFanTypes = pushTypes.stream()
.map(pushType -> new PushConcernFanType()
.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())
).collect(Collectors.toList());
if (!pushConcernFanTypes.isEmpty()) {
pushConcernFanTypes.get(0).setDefaultType("1");
iPushConcernFanTypeService.saveBatch(pushConcernFanTypes);
}
});
return R.ok();
}
@ApiOperation("修改")
@PutMapping("/update")
public R update(@Valid @RequestBody PushConcernFan pushConcernFan) {
@ -70,9 +120,47 @@ public class PushConcernFanController { @@ -70,9 +120,47 @@ public class PushConcernFanController {
return R.ok();
}
@ApiOperation("审核")
@GetMapping("/audit")
public R audit(String id) {
iPushConcernFanService.update(Wrappers.<PushConcernFan>lambdaUpdate().set(PushConcernFan::getStatus, "1").in(PushConcernFan::getId, id));
PushConcernFan pushConcernFan = iPushConcernFanService.getById(id);
if (ObjectUtil.isNotEmpty(pushConcernFan)) {
List<PushType> pushTypes = iPushTypeService.list(Wrappers.<PushType>lambdaQuery().eq(PushType::getCreateById, pushConcernFan.getConcernUserId()));
List<PushConcernFanType> 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);
}
}
return R.ok();
}
@ApiOperation("删除")
@DeleteMapping("/remove/{ids:[\\w,]+}")
public R<Boolean> removeById(@PathVariable String[] ids) {
List<String> list = Arrays.asList(ids);
// 删除用户自定义推送类型
list.forEach(id -> {
PushConcernFan pushConcernFan = iPushConcernFanService.getById(id);
iPushConcernFanTypeService.remove(Wrappers.<PushConcernFanType>lambdaQuery()
.eq(PushConcernFanType::getConcernUserId, pushConcernFan.getConcernUserId())
.eq(PushConcernFanType::getFanUserId, pushConcernFan.getFanUserId()));
});
iPushConcernFanService.removeByIds(Arrays.asList(ids));
return R.ok();
}

1
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanTypeController.java

@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -8,7 +8,6 @@ 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.commonbiz.api.entity.PushConcernFanType;
import com.cloud.kicc.commonbiz.api.entity.PushType;
import com.cloud.kicc.commonbiz.service.IPushConcernFanTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

17
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
cf.`status`,
cf.create_time fan_create_time,
cf.remarks fan_remarks,
cf.type cf_type,
u.user_name,
u.nick_name,
u.user_type,
@ -31,7 +32,14 @@ @@ -31,7 +32,14 @@
FROM
common_push_concern_fan cf JOIN sys_user u
ON
cf.fan_user_id = u.id
<choose>
<when test="map.onType == 1">
cf.concern_user_id = u.id
</when>
<otherwise>
cf.fan_user_id = u.id
</otherwise>
</choose>
<where>
cf.del_flag = 0 and u.status = 0
<if test="map.status != null and map.status != ''">
@ -57,6 +65,7 @@ @@ -57,6 +65,7 @@
cf.`status`,
cf.create_time fan_create_time,
cf.remarks fan_remarks,
cf.type cf_type,
u.user_name,
u.nick_name,
u.user_type,
@ -89,16 +98,20 @@ @@ -89,16 +98,20 @@
SELECT
cf.`status` cf_status,
b.id b_id,
cf.type cf_type,
u.*
FROM
sys_user u
LEFT JOIN common_push_concern_fan cf ON u.id = cf.concern_user_id
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
<where>
u.del_flag = 0 AND u.status = 0
<if test="map.createById != null and map.createById != ''">
AND u.id != #{map.createById}
</if>
<if test="map.userType != null and map.userType != ''">
AND u.user_type != '2'
</if>
<if test="map.nickName != null and map.nickName != ''">
AND u.nick_name = #{map.nickName}
</if>

5
kicc-platform/kicc-platform-biz/kicc-system-biz/pom.xml

@ -20,6 +20,11 @@ @@ -20,6 +20,11 @@
<artifactId>oss-spring-boot-starter</artifactId>
</dependency>
<!--system api模块-->
<dependency>
<groupId>com.cloud</groupId>
<artifactId>kicc-common-api</artifactId>
</dependency>
<!--system api模块-->
<dependency>
<groupId>com.cloud</groupId>
<artifactId>kicc-system-api</artifactId>

39
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -8,10 +8,14 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -8,10 +8,14 @@ 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.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.log.annotation.SysLog;
import com.cloud.kicc.common.security.annotation.Inner;
import com.cloud.kicc.common.security.util.SecurityUtils;
import com.cloud.kicc.commonbiz.api.feign.RemotePushConcernFanService;
import com.cloud.kicc.system.api.entity.Menu;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.User;
@ -27,6 +31,10 @@ import io.swagger.annotations.ApiOperation; @@ -27,6 +31,10 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;
@ -52,6 +60,7 @@ public class UserController { @@ -52,6 +60,7 @@ public class UserController {
private final RoleService roleService;
private final MenuService menuService;
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
private final RemotePushConcernFanService remotePushConcernFanService;
private LambdaQueryWrapper<User> getQueryWrapper(User user) {
return new LambdaQueryWrapper<User>()
@ -113,9 +122,39 @@ public class UserController { @@ -113,9 +122,39 @@ public class UserController {
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);
}
return R.ok();
}
@Inner(false)
@SysLog("新增外部系统用户")
@PostMapping("/saveExternalUser")
public R saveExternalUser(@RequestBody User externalUser) {
User user = userService.getById("1510539584287346688");
KiccUser kiccUser = new KiccUser(
user.getId(),
user.getDeptId(),
user.getUserName(),
SecurityConstants.BCRYPT + user.getPassword(),
user.getPhone(),
user.getTenantId(),
true,
true,
true,
StrUtil.equals(user.getStatus(), CommonConstants.STATUS_NORMAL),
AuthorityUtils.createAuthorityList(user.getPermissions())
);
Authentication authentication = new UsernamePasswordAuthenticationToken(kiccUser, "N/A", kiccUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
externalUser.setPassword(ENCODER.encode(externalUser.getPassword()));
userService.saveUser(externalUser);
return R.ok();
}
@Inner
@GetMapping("/selectByUserName/{userName}")
public R selectByUserName(@PathVariable String userName) {

Loading…
Cancel
Save