瀏覽代碼

游戏vip档位

Letianhua 1 年之前
父節點
當前提交
9e861bdfa7

+ 55 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameVipController.java

@@ -0,0 +1,55 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.GameVipAddParam;
+import com.zanxiang.game.module.manage.pojo.params.GameVipListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameVipListVO;
+import com.zanxiang.game.module.manage.service.IGameVipService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/20 14:27
+ */
+@Api(tags = {"游戏vip档位"})
+@RestController
+@RequestMapping("/game/vip")
+@Slf4j
+public class GameVipController {
+
+    @Autowired
+    private IGameVipService gameVipService;
+
+    @ApiOperation(value = "档位修改或新增")
+    @PostMapping("/add/or/update")
+    @PreAuthorize(permissionKey = "manage:gameVip:addOrUpdate")
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameVipAddParam param) {
+        return ResultVO.ok(gameVipService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "删除vip档位")
+    @DeleteMapping("/delete/{id}")
+    @PreAuthorize(permissionKey = "manage:gameVip:delete")
+    public ResultVO<Boolean> deleteById(@PathVariable("id") Long id) {
+        return ResultVO.ok(gameVipService.deleteById(id));
+    }
+
+    @ApiOperation(value = "游戏VIP档位列表")
+    @PostMapping("/list")
+    @PreAuthorize(permissionKey = "manage:gameVip:list")
+    public ResultVO<IPage<GameVipListVO>> gameVipList(@RequestBody GameVipListParam param) {
+        return ResultVO.ok(gameVipService.gameVipList(param));
+    }
+
+}

+ 60 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipAddParam.java

@@ -0,0 +1,60 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/20 14:23
+ */
+@Data
+public class GameVipAddParam {
+
+    /**
+     * 传id为修改, 不传id为新增
+     */
+    @ApiModelProperty("传id为修改, 不传id为新增")
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "超父游戏id不能为空")
+    @ApiModelProperty("超父游戏id")
+    private Long superGameId;
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "父游戏id不能为空")
+    @ApiModelProperty("父游戏id")
+    private Long parentGameId;
+
+    /**
+     * 充值金额最小
+     */
+    @NotNull(message = "充值金额最小不能为空")
+    @ApiModelProperty("充值金额最小")
+    private BigDecimal rechargeMoneyMin;
+
+    /**
+     * 充值金额最大
+     */
+    @NotNull(message = "充值金额最大不能为空")
+    @ApiModelProperty("充值金额最大")
+    private BigDecimal rechargeMoneyMax;
+
+    /**
+     * vip档位
+     */
+    @NotNull(message = "vip档位不能为空")
+    @ApiModelProperty("vip档位")
+    private Integer vipLevel;
+
+}

+ 38 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipListParam.java

@@ -0,0 +1,38 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.GameVip;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: 查询游戏vip档位参数
+ * @date 2023/11/20 14:23
+ */
+@Data
+public class GameVipListParam extends BaseListDTO<GameVip> {
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty("超父游戏id")
+    private Long superGameId;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty("父游戏id")
+    private Long parentGameId;
+
+    /**
+     * vip档位
+     */
+    @ApiModelProperty("vip档位")
+    private Integer vipLevel;
+
+}

+ 104 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameVipListVO.java

@@ -0,0 +1,104 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: TODO
+ * @date 2023/11/20 14:17
+ */
+@Data
+@Builder
+public class GameVipListVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 超父游戏id
+     */
+    @ApiModelProperty("超父游戏id")
+    private Long superGameId;
+
+    /**
+     * 超父游戏名称
+     */
+    @ApiModelProperty("超父游戏名称")
+    private String superGameName;
+
+    /**
+     * 父游戏id
+     */
+    @ApiModelProperty("父游戏id")
+    private Long parentGameId;
+
+    /**
+     * 父游戏名称
+     */
+    @ApiModelProperty("父游戏名称")
+    private String parentGameName;
+
+    /**
+     * 充值金额最小
+     */
+    @ApiModelProperty("充值金额最小")
+    private BigDecimal rechargeMoneyMin;
+
+    /**
+     * 充值金额最大
+     */
+    @ApiModelProperty("充值金额最大")
+    private BigDecimal rechargeMoneyMax;
+
+    /**
+     * vip档位
+     */
+    @ApiModelProperty("vip档位")
+    private Integer vipLevel;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 创建者
+     */
+    @ApiModelProperty("创建者")
+    private Long createBy;
+
+    /**
+     * 创建者名称
+     */
+    @ApiModelProperty("创建者名称")
+    private String createName;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新者
+     */
+    @ApiModelProperty("更新者")
+    private Long updateBy;
+
+    /**
+     * 更新者名称
+     */
+    @ApiModelProperty("更新者名称")
+    private String updateName;
+
+}

+ 24 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameVipService.java

@@ -0,0 +1,24 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.GameVipAddParam;
+import com.zanxiang.game.module.manage.pojo.params.GameVipListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameVipListVO;
+import com.zanxiang.game.module.mybatis.entity.GameVip;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: 游戏vip档位
+ * @date 2023/11/20 14:28
+ */
+public interface IGameVipService extends IService<GameVip> {
+
+    boolean addOrUpdate(GameVipAddParam param);
+
+    boolean deleteById(Long id);
+
+    IPage<GameVipListVO> gameVipList(GameVipListParam param);
+
+}

+ 158 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameVipServiceImpl.java

@@ -0,0 +1,158 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.erp.base.ErpServer;
+import com.zanxiang.erp.base.rpc.ISysUserRpc;
+import com.zanxiang.erp.security.util.SecurityUtil;
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
+import com.zanxiang.game.module.manage.pojo.params.GameVipAddParam;
+import com.zanxiang.game.module.manage.pojo.params.GameVipListParam;
+import com.zanxiang.game.module.manage.pojo.vo.GameVipListVO;
+import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IGameSupperService;
+import com.zanxiang.game.module.manage.service.IGameVipService;
+import com.zanxiang.game.module.mybatis.entity.GameSupper;
+import com.zanxiang.game.module.mybatis.entity.GameVip;
+import com.zanxiang.game.module.mybatis.mapper.GameVipMapper;
+import com.zanxiang.module.util.exception.BaseException;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author tianhua
+ * @version 1.0
+ * @description: 游戏档位服务实现层
+ * @date 2023/11/20 14:31
+ */
+@Service
+public class GameVipServiceImpl extends ServiceImpl<GameVipMapper, GameVip> implements IGameVipService {
+
+    @Autowired
+    private IGameService gameService;
+    @Autowired
+    private IGameSupperService gameSupperService;
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private ISysUserRpc sysUserRpc;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean addOrUpdate(GameVipAddParam param) {
+        //获取当前操作者id
+        Long sysUserId = SecurityUtil.getUserId();
+
+        if (param.getRechargeMoneyMax().compareTo(param.getRechargeMoneyMin()) <= 0) {
+            throw new BaseException("档位参数设置有误,请重新输入。");
+        }
+
+        //当前操作时间
+        LocalDateTime now = LocalDateTime.now();
+        if (null == param.getId()) {
+            //不传入id,说明是新增档位
+            int count = count(new LambdaQueryWrapper<GameVip>()
+                    .eq(GameVip::getSuperGameId, param.getSuperGameId())
+                    .eq(GameVip::getParentGameId, param.getParentGameId())
+                    .and(qw -> qw.eq(GameVip::getRechargeMoneyMin, param.getRechargeMoneyMin())
+                            .eq(GameVip::getRechargeMoneyMax, param.getRechargeMoneyMax())
+                            .or().eq(GameVip::getVipLevel, param.getVipLevel()))
+                    .eq(GameVip::getIsDelete, 0)
+            );
+            if (count > 0) {
+                throw new BaseException("该游戏的该档位区间或vip等级已经设置过,请勿重复设置");
+            }
+
+            //GameVip实体
+            GameVip gameVip = GameVip.builder()
+                    .parentGameId(param.getParentGameId())
+                    .superGameId(param.getSuperGameId())
+                    .rechargeMoneyMin(param.getRechargeMoneyMin())
+                    .rechargeMoneyMax(param.getRechargeMoneyMax())
+                    .vipLevel(param.getVipLevel())
+                    .createTime(now)
+                    .createBy(sysUserId)
+                    .updateTime(now)
+                    .updateBy(sysUserId)
+                    .build();
+            return save(gameVip);
+        } else {
+            //传入id,说明需要修改
+            int count = count(new LambdaQueryWrapper<GameVip>()
+                    .ne(GameVip::getId, param.getId())
+                    .eq(GameVip::getSuperGameId, param.getSuperGameId())
+                    .eq(GameVip::getParentGameId, param.getParentGameId())
+                    .and(qw -> qw.eq(GameVip::getRechargeMoneyMin, param.getRechargeMoneyMin())
+                            .eq(GameVip::getRechargeMoneyMax, param.getRechargeMoneyMax())
+                            .or().eq(GameVip::getVipLevel, param.getVipLevel()))
+                    .eq(GameVip::getIsDelete, 0)
+            );
+            if (count > 0) {
+                throw new BaseException("该游戏的该档位区间或vip等级已经设置过,请勿重复设置");
+            }
+
+            //GameVip实体
+            GameVip gameVip = GameVip.builder()
+                    .id(param.getId())
+                    .parentGameId(param.getParentGameId())
+                    .superGameId(param.getSuperGameId())
+                    .rechargeMoneyMin(param.getRechargeMoneyMin())
+                    .rechargeMoneyMax(param.getRechargeMoneyMax())
+                    .vipLevel(param.getVipLevel())
+                    .updateBy(sysUserId)
+                    .updateTime(now)
+                    .build();
+
+            return updateById(gameVip);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean deleteById(Long id) {
+        Long sysUserId = SecurityUtil.getUserId();
+        return update(new LambdaUpdateWrapper<GameVip>()
+                        .set(GameVip::getIsDelete, 1)
+                        .set(GameVip::getUpdateBy, sysUserId)
+                        .set(GameVip::getUpdateTime, LocalDateTime.now())
+                        .in(GameVip::getId, id)
+        );
+    }
+
+    @Override
+    public IPage<GameVipListVO> gameVipList(GameVipListParam param) {
+        return page(param.toPage(), new LambdaQueryWrapper<GameVip>()
+                .eq(null != param.getSuperGameId() , GameVip::getSuperGameId, param.getSuperGameId())
+                .eq(null != param.getParentGameId(), GameVip::getParentGameId, param.getParentGameId())
+                .eq(null != param.getVipLevel(), GameVip::getVipLevel, param.getVipLevel())
+                .eq(GameVip::getIsDelete, 0))
+                .convert(vo ->{
+                    GameDTO game = gameService.getById(vo.getParentGameId());
+                    GameSupper gameSupper = gameSupperService.getById(vo.getSuperGameId());
+                    return GameVipListVO.builder()
+                            .id(vo.getId())
+                            .superGameId(vo.getSuperGameId())
+                            .superGameName(null == gameSupper ? null : gameSupper.getName())
+                            .parentGameId(vo.getParentGameId())
+                            .parentGameName(null == game ? null : game.getName())
+                            .rechargeMoneyMin(vo.getRechargeMoneyMin())
+                            .rechargeMoneyMax(vo.getRechargeMoneyMax())
+                            .vipLevel(vo.getVipLevel())
+                            .createTime(vo.getCreateTime())
+                            .createBy(vo.getCreateBy())
+                            .createName(sysUserRpc.getById(vo.getCreateBy()).getData().getNickname())
+                            .updateTime(vo.getUpdateTime())
+                            .updateBy(vo.getUpdateBy())
+                            .updateName(sysUserRpc.getById(vo.getUpdateBy()).getData().getNickname())
+                            .build();
+                });
+    }
+
+
+}

+ 86 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameVip.java

@@ -0,0 +1,86 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * 游戏vip档位表(TGameVip)实体类
+ *
+ * @author makejava
+ * @since 2023-11-20 14:12:05
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_vip")
+public class GameVip implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 超父游戏ID
+     */
+    private Long superGameId;
+
+    /**
+     * 父游戏ID
+     */
+    private Long parentGameId;
+
+    /**
+     * 充值金额最小
+     */
+    private BigDecimal rechargeMoneyMin;
+
+    /**
+     * 充值金额最大
+     */
+    private BigDecimal rechargeMoneyMax;
+
+    /**
+     * vip档位
+     */
+    private Integer vipLevel;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建者
+     */
+    private Long createBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 更新者
+     */
+    private Long updateBy;
+
+    /**
+     * 1 删除  0正常
+     */
+    private Integer isDelete;
+
+}
+

+ 7 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameVipMapper.java

@@ -0,0 +1,7 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameVip;
+
+public interface GameVipMapper extends BaseMapper<GameVip> {
+}