|
@@ -0,0 +1,118 @@
|
|
|
+package com.zanxiang.manage.service.Impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zanxiang.common.enums.BanStatusEnum;
|
|
|
+import com.zanxiang.common.exception.BaseException;
|
|
|
+import com.zanxiang.common.utils.StringUtils;
|
|
|
+import com.zanxiang.common.utils.bean.BeanUtils;
|
|
|
+import com.zanxiang.manage.domain.dto.UserDTO;
|
|
|
+import com.zanxiang.manage.domain.params.UserBanListParam;
|
|
|
+import com.zanxiang.manage.domain.params.UserBanUpdateParam;
|
|
|
+import com.zanxiang.manage.domain.vo.UserBanVO;
|
|
|
+import com.zanxiang.manage.service.UserBanService;
|
|
|
+import com.zanxiang.manage.service.UserService;
|
|
|
+import com.zanxiang.mybatis.entity.UserBan;
|
|
|
+import com.zanxiang.mybatis.mapper.UserBanMapper;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author : lingfeng
|
|
|
+ * @time : 2022-06-28
|
|
|
+ * @description : 玩家封禁管理
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class UserBanServiceImpl extends ServiceImpl<UserBanMapper, UserBan> implements UserBanService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询ip封禁列表
|
|
|
+ *
|
|
|
+ * @param param : 查询参数
|
|
|
+ * @return : 返回单页数据
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public IPage<UserBanVO> list(UserBanListParam param) {
|
|
|
+ return page(param.toPage(), new QueryWrapper<UserBan>().lambda()
|
|
|
+ .eq(param.getUserId() != null, UserBan::getUserId, param.getUserId())
|
|
|
+ .eq(StringUtils.isNotBlank(param.getUserName()), UserBan::getUserName, param.getUserName())
|
|
|
+ .eq(StringUtils.isNotBlank(param.getUserNickName()), UserBan::getUserNickName, param.getUserNickName())
|
|
|
+ .ge(param.getRegBeginTime() != null, UserBan::getRegTime, param.getRegBeginTime() == null ? null : LocalDateTime.of(param.getRegBeginTime(), LocalTime.MIN))
|
|
|
+ .le(param.getRegEndTime() != null, UserBan::getRegTime, param.getRegEndTime() == null ? null : LocalDateTime.of(param.getRegEndTime(), LocalTime.MAX))
|
|
|
+ .ge(param.getBeginDate() != null, UserBan::getBanTime, param.getBeginDate() == null ? null : LocalDateTime.of(param.getBeginDate(), LocalTime.MIN))
|
|
|
+ .le(param.getEndDate() != null, UserBan::getBanTime, param.getEndDate() == null ? null : LocalDateTime.of(param.getEndDate(), LocalTime.MAX))
|
|
|
+ .orderByDesc(UserBan::getCreateTime))
|
|
|
+ .convert(this::toVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 游戏标签对象转换
|
|
|
+ *
|
|
|
+ * @param userBan : 玩家封禁信息
|
|
|
+ * @return : 返回玩家封禁详情
|
|
|
+ */
|
|
|
+ private UserBanVO toVo(UserBan userBan) {
|
|
|
+ if (Objects.isNull(userBan)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return BeanUtils.copy(userBan, UserBanVO.class);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 玩家封禁添加或者更新
|
|
|
+ *
|
|
|
+ * @param param : 玩家封禁更新参数
|
|
|
+ * @return : 返回更新结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean addOrUpdate(UserBanUpdateParam param) {
|
|
|
+ //查询玩家
|
|
|
+ UserBan userBan = super.getOne(new LambdaQueryWrapper<UserBan>().eq(UserBan::getUserId, param.getUserId()));
|
|
|
+ //已存在的玩家直接更新
|
|
|
+ if (userBan != null) {
|
|
|
+ return super.update(new LambdaUpdateWrapper<UserBan>()
|
|
|
+ .set(UserBan::getStatus, param.getStatus())
|
|
|
+ .set(UserBan::getBanTime, Objects.equals(param.getStatus(), BanStatusEnum.BAN_STATUS.getStatus()) ? LocalDateTime.now() : null)
|
|
|
+ .set(UserBan::getOperateId, 1L)
|
|
|
+ .set(UserBan::getOperateName, "赞象 admin")
|
|
|
+ .set(UserBan::getUpdateTime, LocalDateTime.now())
|
|
|
+ .eq(UserBan::getUserId, param.getUserId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ //玩家信息不存在, 并且是解封状态, 直接过
|
|
|
+ if (Objects.equals(param.getStatus(), BanStatusEnum.NORMAL_STATUS.getStatus())) {
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
+ //查询玩家用户信息
|
|
|
+ UserDTO userDTO = userService.getById(param.getUserId());
|
|
|
+ if (userDTO == null) {
|
|
|
+ throw new BaseException("参数错误, 玩家信息不存在");
|
|
|
+ }
|
|
|
+ return super.save(UserBan.builder()
|
|
|
+ .userId(userDTO.getId())
|
|
|
+ .userName(userDTO.getUsername())
|
|
|
+ .userNickName(userDTO.getNickname())
|
|
|
+ .regTime(userDTO.getCreateTime())
|
|
|
+ .banTime(LocalDateTime.now())
|
|
|
+ .status(BanStatusEnum.BAN_STATUS.getStatus())
|
|
|
+ .operateId(1L)
|
|
|
+ .operateName("赞象 admin")
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+}
|