Parcourir la source

feat : 推广账号指派

bilingfeng il y a 2 ans
Parent
commit
06924e5fdd
14 fichiers modifiés avec 319 ajouts et 4 suppressions
  1. 9 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/controller/PromoAccountController.java
  2. 4 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoAccountAddUpdateParam.java
  3. 65 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoAccountAssignParam.java
  4. 3 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/CpServiceImpl.java
  5. 3 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameTagServiceImpl.java
  6. 1 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/IpBanServiceImpl.java
  7. 67 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoAccountLogServiceImpl.java
  8. 47 2
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoAccountServiceImpl.java
  9. 3 2
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoMediaServiceImpl.java
  10. 3 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoSiteServiceImpl.java
  11. 30 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/PromoAccountLogService.java
  12. 9 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/PromoAccountService.java
  13. 63 0
      game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/PromoAccountLog.java
  14. 12 0
      game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/mapper/PromoAccountLogMapper.java

+ 9 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/PromoAccountController.java

@@ -4,6 +4,7 @@ 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.PromoAccountAddUpdateParam;
+import com.zanxiang.manage.domain.params.PromoAccountAssignParam;
 import com.zanxiang.manage.domain.params.PromoAccountListParam;
 import com.zanxiang.manage.domain.vo.PromoAccountListVO;
 import com.zanxiang.manage.service.PromoAccountService;
@@ -51,4 +52,12 @@ public class PromoAccountController {
     public ResultVO<Boolean> statusUpdate(@RequestParam Long id, @RequestParam Integer status) {
         return new ResultVO<>(promoAccountService.statusUpdate(id, status));
     }
+
+    @ApiOperation(value = "推广账号指派")
+    @PostMapping(value = "/assign")
+    @PreAuthorize(permissionKey = "manage:accountAssign:addOrUpdate")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> accountAssign(@Validated @RequestBody PromoAccountAssignParam param) {
+        return ResultVO.ok(promoAccountService.accountAssign(param));
+    }
 }

+ 4 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoAccountAddUpdateParam.java

@@ -52,24 +52,28 @@ public class PromoAccountAddUpdateParam {
      * 投手项目组
      */
     @ApiModelProperty(notes = "投手项目组")
+    @NotBlank(message = "投手项目组不可为空")
     private String pitcherGroupId;
 
     /**
      * 投手项目组名称
      */
     @ApiModelProperty(notes = "投手项目组名称")
+    @NotBlank(message = "投手项目组名称不可为空")
     private String pitcherGroupName;
 
     /**
      * 投手id
      */
     @ApiModelProperty(notes = "投手id")
+    @NotBlank(message = "投手id不可为空")
     private String pitcherId;
 
     /**
      * 投手名称
      */
     @ApiModelProperty(notes = "投手名称")
+    @NotBlank(message = "投手名称不可为空")
     private String pitcherName;
 
     /**

+ 65 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/PromoAccountAssignParam.java

@@ -0,0 +1,65 @@
+package com.zanxiang.manage.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-22
+ * @description : 账号指派
+ */
+@Data
+public class PromoAccountAssignParam {
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(notes = "主键")
+    @NotNull(message = "主键id不可为空")
+    private Long id;
+
+    /**
+     * 投手项目组
+     */
+    @ApiModelProperty(notes = "投手项目组")
+    @NotBlank(message = "投手项目组不可为空")
+    private String pitcherGroupId;
+
+    /**
+     * 投手项目组名称
+     */
+    @ApiModelProperty(notes = "投手项目组名称")
+    @NotBlank(message = "投手项目组名称不可为空")
+    private String pitcherGroupName;
+
+    /**
+     * 投手id
+     */
+    @ApiModelProperty(notes = "投手id")
+    @NotBlank(message = "投手id不可为空")
+    private String pitcherId;
+
+    /**
+     * 投手名称
+     */
+    @ApiModelProperty(notes = "投手名称")
+    @NotBlank(message = "投手名称不可为空")
+    private String pitcherName;
+
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty(notes = "开始时间")
+    @NotNull(message = "开始时间不可为空")
+    private LocalDate startTime;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty(notes = "备注")
+    private String remark;
+}

+ 3 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/CpServiceImpl.java

@@ -18,6 +18,7 @@ import com.zanxiang.mybatis.entity.Cp;
 import com.zanxiang.mybatis.mapper.CpMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.Collections;
@@ -43,6 +44,7 @@ public class CpServiceImpl extends ServiceImpl<CpMapper, Cp> implements CpServic
      * @return : 返回新增修改结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean addOrUpdate(CpAddUpdateParam param) {
         Long id = param.getId();
         //更新
@@ -148,6 +150,7 @@ public class CpServiceImpl extends ServiceImpl<CpMapper, Cp> implements CpServic
      * @return : 返回删除结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean deleteById(Long id) {
         return super.removeById(id);
     }

+ 3 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameTagServiceImpl.java

@@ -21,6 +21,7 @@ import com.zanxiang.mybatis.mapper.GameTagMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
@@ -139,6 +140,7 @@ public class GameTagServiceImpl extends ServiceImpl<GameTagMapper, GameTag> impl
      * @return : 返回结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addOrUpdate(GameTagAddUpdateParam param) {
         Long id = param.getId();
         //更新
@@ -189,6 +191,7 @@ public class GameTagServiceImpl extends ServiceImpl<GameTagMapper, GameTag> impl
      * @return : 删除结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean deleteById(Long id) {
         return super.removeById(id);
     }

+ 1 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/IpBanServiceImpl.java

@@ -109,6 +109,7 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
      * @return : 返回更新结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean ipBanOrRemove(IpBanUpdateParam param) {
         return super.update(new LambdaUpdateWrapper<IpBan>()
                 .set(IpBan::getStatus, param.getStatus())

+ 67 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoAccountLogServiceImpl.java

@@ -0,0 +1,67 @@
+package com.zanxiang.manage.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.manage.domain.params.PromoAccountAssignParam;
+import com.zanxiang.manage.service.PromoAccountLogService;
+import com.zanxiang.module.util.DateUtil;
+import com.zanxiang.mybatis.entity.PromoAccount;
+import com.zanxiang.mybatis.entity.PromoAccountLog;
+import com.zanxiang.mybatis.mapper.PromoAccountLogMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-22
+ * @description : 推广账号指派日志
+ */
+@Slf4j
+@Service
+public class PromoAccountLogServiceImpl extends ServiceImpl<PromoAccountLogMapper, PromoAccountLog> implements PromoAccountLogService {
+
+    /**
+     * 创建推广账号日志
+     *
+     * @param promoAccount : 推广账号
+     * @return : 返回创建结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean create(PromoAccount promoAccount) {
+        LocalDateTime dateTime = LocalDateTime.now();
+        return super.save(PromoAccountLog.builder()
+                .accountId(promoAccount.getId())
+                .pitcherId(promoAccount.getPitcherId())
+                .pitcherGroupId(promoAccount.getPitcherGroupId())
+                .startTime(dateTime)
+                .createTime(dateTime)
+                .updateTime(dateTime)
+                .build());
+    }
+
+    /**
+     * 账号指派更新
+     *
+     * @param param : 推广账号指派参数
+     * @return : 返回更新结果
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean assignUpdate(PromoAccountAssignParam param) {
+        super.update(new LambdaUpdateWrapper<PromoAccountLog>()
+                .set(PromoAccountLog::getEndTime, LocalDateTime.now())
+                .eq(PromoAccountLog::getAccountId, param.getId()));
+        return super.save(PromoAccountLog.builder()
+                .accountId(param.getId())
+                .pitcherId(param.getPitcherId())
+                .pitcherGroupId(param.getPitcherGroupId())
+                .startTime(DateUtil.localDateToLocalDateTime(param.getStartTime()))
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build());
+    }
+}

+ 47 - 2
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoAccountServiceImpl.java

@@ -14,18 +14,22 @@ import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.manage.domain.dto.PromoAccountDTO;
 import com.zanxiang.manage.domain.dto.PromoMediaDTO;
 import com.zanxiang.manage.domain.params.PromoAccountAddUpdateParam;
+import com.zanxiang.manage.domain.params.PromoAccountAssignParam;
 import com.zanxiang.manage.domain.params.PromoAccountListParam;
 import com.zanxiang.manage.domain.vo.PromoAccountChoiceVO;
 import com.zanxiang.manage.domain.vo.PromoAccountListVO;
 import com.zanxiang.manage.domain.vo.PromoPitcherChoiceVO;
+import com.zanxiang.manage.service.PromoAccountLogService;
 import com.zanxiang.manage.service.PromoAccountService;
 import com.zanxiang.manage.service.PromoMediaService;
 import com.zanxiang.mybatis.entity.PromoAccount;
+import com.zanxiang.mybatis.entity.PromoAccountLog;
 import com.zanxiang.mybatis.mapper.PromoAccountMapper;
 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 org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.Collections;
@@ -47,6 +51,9 @@ public class PromoAccountServiceImpl extends ServiceImpl<PromoAccountMapper, Pro
     @Autowired
     private PromoMediaService promoMediaService;
 
+    @Autowired
+    private PromoAccountLogService promoAccountLogService;
+
     /**
      * 查询推广媒体列表
      *
@@ -94,6 +101,7 @@ public class PromoAccountServiceImpl extends ServiceImpl<PromoAccountMapper, Pro
      * @return : 返回结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addOrUpdate(PromoAccountAddUpdateParam param) {
         Long id = param.getId();
         //更新
@@ -130,7 +138,7 @@ public class PromoAccountServiceImpl extends ServiceImpl<PromoAccountMapper, Pro
             throw new BaseException("推广账号id已经存在");
         }
         //创建
-        return super.save(PromoAccount.builder()
+        PromoAccount promoAccount = PromoAccount.builder()
                 .account(param.getAccount())
                 .name(param.getName())
                 .pitcherGroupId(param.getPitcherGroupId())
@@ -144,7 +152,43 @@ public class PromoAccountServiceImpl extends ServiceImpl<PromoAccountMapper, Pro
                 .isDelete(DeleteEnum.NO.getCode())
                 .createTime(LocalDateTime.now())
                 .updateTime(LocalDateTime.now())
-                .build());
+                .build();
+        super.save(promoAccount);
+        return promoAccountLogService.create(promoAccount);
+    }
+
+    /**
+     * 帐户分配
+     *
+     * @param param 参数
+     * @return {@link Boolean}
+     */
+    @Override
+    public Boolean accountAssign(PromoAccountAssignParam param) {
+        PromoAccount promoAccount = super.getById(param.getId());
+        if (promoAccount == null) {
+            throw new BaseException("参数错误, 推广账号信息不存在");
+        }
+        //生成指派记录
+        if (!Objects.equals(promoAccount.getPitcherId(), param.getPitcherId())) {
+            promoAccountLogService.assignUpdate(param);
+        } else {
+            //投手没变, 开始时间更新
+            promoAccountLogService.update(new LambdaUpdateWrapper<PromoAccountLog>()
+                    .set(PromoAccountLog::getStartTime, param.getStartTime())
+                    .set(PromoAccountLog::getPitcherGroupId, param.getPitcherGroupId())
+                    .set(PromoAccountLog::getUpdateTime, LocalDateTime.now())
+                    .eq(PromoAccountLog::getAccountId, param.getId())
+                    .isNull(PromoAccountLog::getEndTime));
+        }
+        //账号更新
+        promoAccount.setPitcherId(param.getPitcherId());
+        promoAccount.setPitcherName(param.getPitcherName());
+        promoAccount.setPitcherGroupId(param.getPitcherGroupId());
+        promoAccount.setPitcherGroupName(param.getPitcherGroupName());
+        promoAccount.setRemark(param.getRemark());
+        promoAccount.setUpdateTime(LocalDateTime.now());
+        return super.updateById(promoAccount);
     }
 
     /**
@@ -155,6 +199,7 @@ public class PromoAccountServiceImpl extends ServiceImpl<PromoAccountMapper, Pro
      * @return : 返回更新结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean statusUpdate(Long id, Integer status) {
         return super.update(new LambdaUpdateWrapper<PromoAccount>()
                 .set(PromoAccount::getStatus, status)

+ 3 - 2
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/PromoMediaServiceImpl.java

@@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.*;
@@ -108,6 +109,7 @@ public class PromoMediaServiceImpl extends ServiceImpl<PromoMediaMapper, PromoMe
      * @return : 返回结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addOrUpdate(PromoMediaAddUpdateParam param) {
         Long id = param.getId();
         //更新
@@ -161,12 +163,11 @@ public class PromoMediaServiceImpl extends ServiceImpl<PromoMediaMapper, PromoMe
      * @return : 返回更新结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean statusUpdate(Long id, Integer status) {
         return super.update(new LambdaUpdateWrapper<PromoMedia>()
                 .set(PromoMedia::getStatus, status)
                 .set(PromoMedia::getUpdateTime, LocalDateTime.now())
                 .eq(PromoMedia::getId, id));
     }
-
-
 }

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

@@ -21,6 +21,7 @@ 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 org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.Objects;
@@ -79,6 +80,7 @@ public class PromoSiteServiceImpl extends ServiceImpl<PromoSiteMapper, PromoSite
      * @return : 返回结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean addOrUpdate(PromoSiteAddOrUpdateParam param) {
         Long id = param.getId();
         //更新
@@ -134,6 +136,7 @@ public class PromoSiteServiceImpl extends ServiceImpl<PromoSiteMapper, PromoSite
      * @return : 返回更新结果
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean statusUpdate(Long id, Integer status) {
         return super.update(new LambdaUpdateWrapper<PromoSite>()
                 .set(PromoSite::getStatus, status)

+ 30 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/PromoAccountLogService.java

@@ -0,0 +1,30 @@
+package com.zanxiang.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.manage.domain.params.PromoAccountAssignParam;
+import com.zanxiang.mybatis.entity.PromoAccount;
+import com.zanxiang.mybatis.entity.PromoAccountLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-22
+ * @description : 推广账号指派日志
+ */
+public interface PromoAccountLogService extends IService<PromoAccountLog> {
+
+    /**
+     * 创建推广账号日志
+     *
+     * @param promoAccount : 推广账号
+     * @return : 返回创建结果
+     */
+    Boolean create(PromoAccount promoAccount);
+
+    /**
+     * 账号指派更新
+     *
+     * @param param : 推广账号指派参数
+     * @return : 返回更新结果
+     */
+    Boolean assignUpdate(PromoAccountAssignParam param);
+}

+ 9 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/PromoAccountService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.manage.domain.dto.PromoAccountDTO;
 import com.zanxiang.manage.domain.params.PromoAccountAddUpdateParam;
+import com.zanxiang.manage.domain.params.PromoAccountAssignParam;
 import com.zanxiang.manage.domain.params.PromoAccountListParam;
 import com.zanxiang.manage.domain.vo.PromoAccountChoiceVO;
 import com.zanxiang.manage.domain.vo.PromoAccountListVO;
@@ -36,6 +37,14 @@ public interface PromoAccountService extends IService<PromoAccount> {
      */
     Boolean addOrUpdate(PromoAccountAddUpdateParam param);
 
+    /**
+     * 帐户分配
+     *
+     * @param param 参数
+     * @return {@link Boolean}
+     */
+    Boolean accountAssign(PromoAccountAssignParam param);
+
     /**
      * 根据主键更新状态
      *

+ 63 - 0
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/PromoAccountLog.java

@@ -0,0 +1,63 @@
+package com.zanxiang.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-22
+ * @description : 推广账号变更记录
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_promo_account_log")
+public class PromoAccountLog {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 推广账号主键id
+     */
+    private Long accountId;
+
+    /**
+     * 投手id
+     */
+    private String pitcherId;
+
+    /**
+     * 投手项目组
+     */
+    private String pitcherGroupId;
+
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 12 - 0
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/mapper/PromoAccountLogMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.mybatis.entity.PromoAccountLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-22
+ * @description : ${description}
+ */
+public interface PromoAccountLogMapper extends BaseMapper<PromoAccountLog> {
+}