Explorar el Código

feat : 推广媒体版位接口提交

bilingfeng hace 2 años
padre
commit
e4f26bdb00

+ 62 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/PromoSiteController.java

@@ -0,0 +1,62 @@
+package com.zanxiang.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.common.domain.ResultVO;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.manage.domain.params.PromoSiteAddOrUpdateParam;
+import com.zanxiang.manage.domain.params.PromoSiteListParam;
+import com.zanxiang.manage.domain.vo.PromoSiteListVO;
+import com.zanxiang.manage.service.PromoSiteService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-18
+ * @description : 推广版位
+ */
+@Api(tags = "推广版位接口")
+@RestController
+@RequestMapping("/promo/site")
+public class PromoSiteController {
+
+    @Autowired
+    private PromoSiteService promoSiteService;
+
+    @ApiOperation(value = "查询推广媒体列表")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:promoSite:list")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = PromoSiteListVO.class)})
+    public ResultVO<IPage<PromoSiteListVO>> list(@Validated @RequestBody PromoSiteListParam param) {
+        return ResultVO.ok(promoSiteService.list(param));
+    }
+
+    @ApiOperation(value = "推广媒体添加或修改")
+    @PostMapping(value = "/add/or/update")
+    @PreAuthorize(permissionKey = "manage:promoSite:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody PromoSiteAddOrUpdateParam param) {
+        return ResultVO.ok(promoSiteService.addOrUpdate(param));
+    }
+
+    @ApiOperation(value = "推广媒体删除")
+    @DeleteMapping(value = "/delete/by/id")
+    @PreAuthorize(permissionKey = "manage:promoSite:deleteById")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> deleteById(@RequestParam Long id) {
+        return ResultVO.ok(promoSiteService.deleteById(id));
+    }
+
+    @ApiOperation(value = "推广媒体状态变更")
+    @PatchMapping(value = "/status/update")
+    @PreAuthorize(permissionKey = "manage:promoSite:statusUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
+        return new ResultVO<>(promoSiteService.statusUpdate(id, status));
+    }
+}

+ 46 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoSiteAddOrUpdateParam.java

@@ -0,0 +1,46 @@
+package com.zanxiang.manage.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-18
+ * @description : 版位更新新增参数
+ */
+@Data
+public class PromoSiteAddOrUpdateParam {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(notes = "主键, 不传是新建, 传是更新")
+    private Long id;
+
+    /**
+     * 推广媒体id
+     */
+    @ApiModelProperty(notes = "推广媒体id")
+    @NotNull(message = "推广媒体id不可为空")
+    private Long mediaId;
+
+    /**
+     * 媒体版位
+     */
+    @ApiModelProperty(notes = "媒体版位")
+    private String plateSite;
+
+    /**
+     * 媒体位置
+     */
+    @ApiModelProperty(notes = "媒体位置")
+    private String mediaSite;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(notes = "备注")
+    private String remark;
+}

+ 41 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoSiteListParam.java

@@ -0,0 +1,41 @@
+package com.zanxiang.manage.domain.params;
+
+import com.zanxiang.common.base.BasePage;
+import com.zanxiang.mybatis.entity.PromoSite;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-18
+ * @description : 推广媒体版位列表参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PromoSiteListParam extends BasePage<PromoSite> {
+
+    /**
+     * 推广媒体id
+     */
+    @ApiModelProperty(notes = "推广媒体id")
+    private Long mediaId;
+
+    /**
+     * 媒体版位
+     */
+    @ApiModelProperty(notes = "媒体版位")
+    private String plateSite;
+
+    /**
+     * 媒体位置
+     */
+    @ApiModelProperty(notes = "媒体位置")
+    private String mediaSite;
+
+    /**
+     * 状态, 0 : 可用, 1: 禁用
+     */
+    @ApiModelProperty(notes = "状态, 0 : 可用, 1: 禁用")
+    private Integer status;
+}

+ 55 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/PromoSiteListVO.java

@@ -0,0 +1,55 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-18
+ * @description : 推广媒体版位列表
+ */
+@Data
+public class PromoSiteListVO {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(notes = "主键")
+    private Long id;
+
+    /**
+     * 推广媒体id
+     */
+    @ApiModelProperty(notes = "推广媒体id")
+    private Long mediaId;
+
+    /**
+     * 推广媒体名称
+     */
+    @ApiModelProperty(notes = "推广媒体名称")
+    private String mediaName;
+
+    /**
+     * 媒体版位
+     */
+    @ApiModelProperty(notes = "媒体版位")
+    private String plateSite;
+
+    /**
+     * 媒体位置
+     */
+    @ApiModelProperty(notes = "媒体位置")
+    private String mediaSite;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(notes = "备注")
+    private String remark;
+
+    /**
+     * 状态, 0 : 可用, 1: 禁用
+     */
+    @ApiModelProperty(notes = "状态, 0 : 可用, 1: 禁用")
+    private Integer status;
+}

+ 136 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoSiteServiceImpl.java

@@ -1,12 +1,30 @@
 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.DeleteEnum;
+import com.zanxiang.common.enums.StatusEnum;
+import com.zanxiang.common.exception.BaseException;
+import com.zanxiang.common.utils.bean.BeanUtils;
+import com.zanxiang.manage.domain.params.PromoSiteAddOrUpdateParam;
+import com.zanxiang.manage.domain.params.PromoSiteListParam;
+import com.zanxiang.manage.domain.vo.PromoSiteListVO;
+import com.zanxiang.manage.service.PromoMediaService;
 import com.zanxiang.manage.service.PromoSiteService;
+import com.zanxiang.mybatis.entity.PromoMedia;
 import com.zanxiang.mybatis.entity.PromoSite;
 import com.zanxiang.mybatis.mapper.PromoSiteMapper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.Objects;
+
 /**
  * @author : lingfeng
  * @time : 2022-11-18
@@ -15,4 +33,122 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class PromoSiteServiceImpl extends ServiceImpl<PromoSiteMapper, PromoSite> implements PromoSiteService {
+
+    @Autowired
+    private PromoMediaService promoMediaService;
+
+    /**
+     * 查询游戏标签列表
+     *
+     * @param param : 游戏标签列表查询呢参数
+     * @return : 返回分页信息
+     */
+    @Override
+    public IPage<PromoSiteListVO> list(PromoSiteListParam param) {
+        return page(param.toPage(), new QueryWrapper<PromoSite>().lambda()
+                .eq(param.getMediaId() != null, PromoSite::getMediaId, param.getMediaId())
+                .like(Strings.isNotBlank(param.getMediaSite()), PromoSite::getMediaSite, param.getMediaSite())
+                .like(Strings.isNotBlank(param.getPlateSite()), PromoSite::getPlateSite, param.getPlateSite())
+                .eq(param.getStatus() != null, PromoSite::getStatus, param.getStatus())
+                .orderByDesc(PromoSite::getCreateTime))
+                .convert(this::toVo);
+    }
+
+    /**
+     * 对象转换
+     *
+     * @param promoSite 媒体版位
+     * @return {@link PromoSiteListVO}
+     */
+    private PromoSiteListVO toVo(PromoSite promoSite) {
+        if (Objects.isNull(promoSite)) {
+            return null;
+        }
+        PromoSiteListVO promoSiteListVO = BeanUtils.copy(promoSite, PromoSiteListVO.class);
+        PromoMedia promoMedia = promoMediaService.getById(promoSiteListVO.getMediaId());
+        if (promoMedia != null) {
+            promoSiteListVO.setMediaName(promoMedia.getName());
+        }
+        return promoSiteListVO;
+    }
+
+    /**
+     * 推广媒体新增或者更新
+     *
+     * @param param : 更新参数
+     * @return : 返回结果
+     */
+    @Override
+    public Boolean addOrUpdate(PromoSiteAddOrUpdateParam param) {
+        Long id = param.getId();
+        //更新
+        if (id != null) {
+            PromoSite promoSite = super.getById(id);
+            if (promoSite == null) {
+                throw new BaseException("参数错误, 推广媒体版位信息不存在");
+            }
+            //更新, 不可重复
+            if (!Objects.equals(promoSite.getMediaSite(), param.getMediaSite())
+                    || !Objects.equals(promoSite.getPlateSite(), param.getPlateSite())) {
+                //判断名称是否已经存在
+                int count = super.count(new LambdaQueryWrapper<PromoSite>()
+                        .eq(PromoSite::getMediaId, param.getMediaId())
+                        .eq(PromoSite::getMediaSite, param.getMediaSite())
+                        .eq(PromoSite::getPlateSite, param.getPlateSite()));
+                if (count > 0) {
+                    throw new BaseException("推广媒体位置和版位已经存在");
+                }
+            }
+            promoSite.setMediaSite(param.getMediaSite());
+            promoSite.setPlateSite(param.getPlateSite());
+            promoSite.setRemark(param.getRemark());
+            promoSite.setUpdateTime(LocalDateTime.now());
+            return super.updateById(promoSite);
+        }
+        //判断名称是否已经存在
+        int count = super.count(new LambdaQueryWrapper<PromoSite>()
+                .eq(PromoSite::getMediaId, param.getMediaId())
+                .eq(PromoSite::getMediaSite, param.getMediaSite())
+                .eq(PromoSite::getPlateSite, param.getPlateSite()));
+        if (count > 0) {
+            throw new BaseException("推广媒体位置和版位已经存在");
+        }
+        //创建
+        return super.save(PromoSite.builder()
+                .mediaId(param.getMediaId())
+                .mediaSite(param.getMediaSite())
+                .plateSite(param.getPlateSite())
+                .remark(param.getRemark())
+                .status(StatusEnum.YES.getCode())
+                .isDelete(DeleteEnum.NO.getCode())
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build());
+    }
+
+    /**
+     * 删除推广媒体版位信息
+     *
+     * @param id : 删除推广媒体版位信息id
+     * @return : 返回删除结果
+     */
+    @Override
+    public boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+
+    /**
+     * 根据主键更新状态
+     *
+     * @param id     : 主键id
+     * @param status : 状态
+     * @return : 返回更新结果
+     */
+    @Override
+    public Boolean statusUpdate(Long id, Integer status) {
+        return super.update(new LambdaUpdateWrapper<PromoSite>()
+                .set(PromoSite::getStatus, status)
+                .set(PromoSite::getUpdateTime, LocalDateTime.now())
+                .eq(PromoSite::getId, id));
+    }
 }

+ 37 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/PromoSiteService.java

@@ -1,6 +1,10 @@
 package com.zanxiang.manage.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.manage.domain.params.PromoSiteAddOrUpdateParam;
+import com.zanxiang.manage.domain.params.PromoSiteListParam;
+import com.zanxiang.manage.domain.vo.PromoSiteListVO;
 import com.zanxiang.mybatis.entity.PromoSite;
 
 /**
@@ -9,4 +13,37 @@ import com.zanxiang.mybatis.entity.PromoSite;
  * @description : 推广版位
  */
 public interface PromoSiteService extends IService<PromoSite> {
+
+    /**
+     * 查询游戏标签列表
+     *
+     * @param param : 游戏标签列表查询呢参数
+     * @return : 返回分页信息
+     */
+    IPage<PromoSiteListVO> list(PromoSiteListParam param);
+
+    /**
+     * 删除推广媒体版位信息
+     *
+     * @param id : 删除推广媒体版位信息id
+     * @return : 返回删除结果
+     */
+    boolean deleteById(Long id);
+
+    /**
+     * 根据主键更新状态
+     *
+     * @param id     : 主键id
+     * @param status : 状态
+     * @return : 返回更新结果
+     */
+    Boolean statusUpdate(Long id, Integer status);
+
+    /**
+     * 推广媒体新增或者更新
+     *
+     * @param param : 更新参数
+     * @return : 返回结果
+     */
+    Boolean addOrUpdate(PromoSiteAddOrUpdateParam param);
 }

+ 3 - 8
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/PromoSite.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 
 /**
  * @author : lingfeng
@@ -32,11 +32,6 @@ public class PromoSite {
      */
     private Long mediaId;
 
-    /**
-     * 推广媒体名称
-     */
-    private String mediaName;
-
     /**
      * 媒体版位
      */
@@ -66,10 +61,10 @@ public class PromoSite {
     /**
      * 创建时间
      */
-    private Date createTime;
+    private LocalDateTime createTime;
 
     /**
      * 更新时间
      */
-    private Date updateTime;
+    private LocalDateTime updateTime;
 }