Bladeren bron

完成广告管理与广告投放模块

云殇忆 1 jaar geleden
bovenliggende
commit
915c1ed1b4

+ 28 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/PlanController.java

@@ -3,10 +3,15 @@ package com.ruoyi.demo.controller;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
+import com.ruoyi.demo.entity.vo.PlanDetailVo;
+import com.ruoyi.demo.entity.vo.PlanListVo;
+import com.ruoyi.demo.entity.vo.StateVo;
 import com.ruoyi.demo.service.PlanService;
+import com.ruoyi.demo.utils.StateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -39,23 +44,42 @@ public class PlanController {
 
     @PutMapping()
     public R checkPlan(PlanBo bo){
+        // 获取用户id和用户名
+        String userId = "1";
         String planId = bo.getPlanId();
         Integer state = bo.getState();
-        return null;
+        String auditComment = bo.getAuditComment();
+        int i = planService.checkPlan(planId, state, auditComment,userId);
+        if (i == 1)
+            return R.ok("审核操作成功");
+        if (i == -1)
+            return R.fail("该计划不存在");
+        return R.fail("审核操作失败");
     }
 
     @GetMapping("/list")
     public R planList(PlanBo bo){
-        return null;
+        List<PlanListVo> vos = planService.getPlanList(bo);
+        return R.ok(vos);
     }
 
     @GetMapping("/{planId}")
     public R planDetail(@PathVariable String planId){
-        return null;
+        PlanDetailVo vo = planService.getPlanDetail(planId);
+        return R.ok(vo);
     }
 
     @GetMapping("/push")
     public R planPush(){
-        return null;
+        return R.ok(planService.getPlanPush());
+    }
+
+    @GetMapping("/getState")
+    public R getState(){
+        List<StateVo> vos = new ArrayList<>();
+        vos.add(new StateVo(StateUtil.NOT_AUDITED,StateUtil.NOT_AUDITED_CHAR));
+        vos.add(new StateVo(StateUtil.APPROVED,StateUtil.APPROVED_CHAR));
+        vos.add(new StateVo(StateUtil.NOT_APPROVED,StateUtil.NOT_APPROVED_CHAR));
+        return R.ok(vos);
     }
 }

+ 33 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/PlanAudit.java

@@ -0,0 +1,33 @@
+package com.ruoyi.demo.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("dl_plan_audit")
+public class PlanAudit {
+    @TableId(value = "audit_id",type = IdType.ASSIGN_ID)
+    private String auditId;
+    @TableField("plan_id")
+    private String planId;
+    @TableField("user_id")
+    private String userId;
+    @TableField(value = "user_name",fill = FieldFill.INSERT)
+    private String userName;
+    @TableField("state")
+    private Integer state;
+    @TableField("audit_comment")
+    private String auditComment;
+    @TableField("audit_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime auditTime;
+}

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/PlanBo.java

@@ -12,4 +12,5 @@ public class PlanBo {
     private String goods;
     private String planId;
     private List<String> planIds;
+    private String auditComment;
 }

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/PlanDetailVo.java

@@ -14,6 +14,7 @@ public class PlanDetailVo {
     private String goodsClassify;
     private List<PlanItemVo> planItems;
 
+    public PlanDetailVo(){}
     public PlanDetailVo(Plan plan, List<PlanItemVo> itemVos){
         this.goodsName = plan.getGoodsName();
         this.goodsImg = plan.getGoodsImg();

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/PlanItemVo.java

@@ -12,6 +12,7 @@ public class PlanItemVo {
     private String addrCodeInfo;
     private String qrCode;
 
+    public PlanItemVo(){}
     public PlanItemVo(PlanItem item){
         this.equipmentId = item.getEquipmentId();
         this.equipmentName = item.getEquipmentName();

+ 3 - 6
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/PlanListVo.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
 import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.ruoyi.demo.entity.Plan;
+import com.ruoyi.demo.utils.StateUtil;
 import lombok.Data;
 
 import java.time.LocalDateTime;
@@ -35,6 +36,7 @@ public class PlanListVo {
     private LocalDateTime planEndTime;
     private String state;
 
+    public PlanListVo(){}
     public PlanListVo(Plan plan){
         this.planId = plan.getPlanId();
         this.commercialId = plan.getCommercialId();
@@ -48,11 +50,6 @@ public class PlanListVo {
         this.planCreateTime = plan.getPlanCreateTime();
         this.planStartTime = plan.getPlanStartTime();
         this.planEndTime = plan.getPlanEndTime();
-        if (plan.getState() == 0)
-            this.state = "未审核";
-        else if (plan.getState() == 1)
-            this.state = "审核通过";
-        else
-            this.state = "审核未通过";
+        this.state = StateUtil.getStateName(plan.getState());
     }
 }

+ 1 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/PlanPushVo.java

@@ -20,6 +20,7 @@ public class PlanPushVo {
     private Integer intervalRequest;
     private Integer intervalSubmit;
 
+    public PlanPushVo(){}
     public PlanPushVo(PlanItem item, Plan plan, SystemSetter setter){
         this.equipmentId = item.getEquipmentId();
         this.equipmentName = item.getEquipmentName();

+ 14 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/StateVo.java

@@ -0,0 +1,14 @@
+package com.ruoyi.demo.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class StateVo {
+    private int state;
+    private String stateName;
+
+    public StateVo(int state,String stateName){
+        this.state = state;
+        this.stateName = stateName;
+    }
+}

+ 9 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/PlanAuditMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.demo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.demo.entity.PlanAudit;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PlanAuditMapper extends BaseMapper<PlanAudit> {
+}

+ 9 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/SystemSetterMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.demo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.demo.entity.SystemSetter;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SystemSetterMapper extends BaseMapper<SystemSetter> {
+}

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/PlanService.java

@@ -11,8 +11,8 @@ import java.util.List;
 public interface PlanService {
     int addPlan(PlanAddBo bo);
     int deletePlan(List<String> ids);
-    int checkPlan(String planId,Integer state);
+    int checkPlan(String planId,Integer state,String auditComment,String userId);
     List<PlanListVo> getPlanList(PlanBo bo);
     PlanDetailVo getPlanDetail(String planId);
-    PlanPushVo getPlanPush();
+    List<PlanPushVo> getPlanPush();
 }

+ 85 - 12
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java

@@ -6,37 +6,43 @@ import com.ruoyi.demo.entity.*;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.vo.PlanDetailVo;
+import com.ruoyi.demo.entity.vo.PlanItemVo;
 import com.ruoyi.demo.entity.vo.PlanListVo;
 import com.ruoyi.demo.entity.vo.PlanPushVo;
-import com.ruoyi.demo.mapper.AppMapper;
-import com.ruoyi.demo.mapper.CommercialMapper;
-import com.ruoyi.demo.mapper.PlanItemMapper;
-import com.ruoyi.demo.mapper.PlanMapper;
+import com.ruoyi.demo.mapper.*;
 import com.ruoyi.demo.service.PlanService;
 import com.ruoyi.demo.utils.SignUtil;
+import com.ruoyi.demo.utils.StateUtil;
 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.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @Service
+@Transactional
 public class PlanServiceImpl implements PlanService {
     @Autowired
     PlanMapper planMapper;
     @Autowired
     PlanItemMapper planItemMapper;
     @Autowired
+    PlanAuditMapper planAuditMapper;
+    @Autowired
     AppMapper appMapper;
     @Autowired
     CommercialMapper commercialMapper;
+    @Autowired
+    SystemSetterMapper systemSetterMapper;
 
     @Override
     public int addPlan(PlanAddBo bo) {
         QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
         appQueryWrapper.eq("appkey",bo.getAppkey());
+        appQueryWrapper.eq("show_delete",0);
         App app = appMapper.selectOne(appQueryWrapper);
         if (app == null)
             return -1;
@@ -77,7 +83,7 @@ public class PlanServiceImpl implements PlanService {
         plan.setPlanCreateTime(bo.getPlanCreateTime());
         plan.setPlanStartTime(bo.getPlanStartTime());
         plan.setPlanEndTime(bo.getPlanEndTime());
-        plan.setState(0);
+        plan.setState(StateUtil.NOT_AUDITED);
         planMapper.insert(plan);
         // 插入广告计划明细
         for (PlanItem item : bo.getItems()) {
@@ -99,22 +105,89 @@ public class PlanServiceImpl implements PlanService {
     }
 
     @Override
-    public int checkPlan(String planId, Integer state) {
-        return 0;
+    public int checkPlan(String planId, Integer state, String auditComment,String userId) {
+        QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
+        planQueryWrapper.eq("plan_id",planId);
+        planQueryWrapper.eq("show_delete",0);
+        Plan plan = planMapper.selectOne(planQueryWrapper);
+        if (plan == null)
+            return -1;
+        plan.setState(state);
+        int i = planMapper.updateById(plan);
+        if (i == 0)
+            return 0;
+        PlanAudit audit = new PlanAudit();
+        audit.setPlanId(planId);
+        audit.setUserId(userId);
+        audit.setState(state);
+        audit.setAuditComment(auditComment);
+        audit.setAuditTime(LocalDateTime.now());
+        planAuditMapper.insert(audit);
+        return 1;
     }
 
     @Override
     public List<PlanListVo> getPlanList(PlanBo bo) {
-        return null;
+        QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
+        if (bo.getState() != null)
+            planQueryWrapper.eq("state",bo.getState());
+        if (bo.getAppkey() != null)
+            planQueryWrapper.like("appkey",bo.getAppkey());
+        if (bo.getAppName() != null)
+            planQueryWrapper.like("app_name",bo.getAppName());
+        if (bo.getGoods() != null){
+            planQueryWrapper.like("goods_name",bo.getGoods())
+                .or()
+                .like("goods_introduce",bo.getGoods());
+        }
+        planQueryWrapper.eq("show_delete",0);
+        List<Plan> plans = planMapper.selectList(planQueryWrapper);
+        List<PlanListVo> vos = new ArrayList<>();
+        for (Plan plan : plans){
+            vos.add(new PlanListVo(plan));
+        }
+        return vos;
     }
 
     @Override
     public PlanDetailVo getPlanDetail(String planId) {
-        return null;
+        QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
+        planQueryWrapper.eq("plan_id",planId);
+        planQueryWrapper.eq("show_delete",0);
+        Plan plan = planMapper.selectOne(planQueryWrapper);
+        if (plan == null)
+            return null;
+        QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
+        itemQueryWrapper.eq("plan_id",planId);
+        List<PlanItem> items = planItemMapper.selectList(itemQueryWrapper);
+        List<PlanItemVo> itemVos = new ArrayList<>();
+        if (items != null)
+            for (PlanItem item : items){
+                itemVos.add(new PlanItemVo(item));
+            }
+        PlanDetailVo vo = new PlanDetailVo(plan, itemVos);
+        return vo;
     }
 
     @Override
-    public PlanPushVo getPlanPush() {
-        return null;
+    public List<PlanPushVo> getPlanPush() {
+//        查询可投放的广告计划
+//        再根据每个广告计划,查询其明细
+//        返回结果
+        QueryWrapper<SystemSetter> systemSetterQueryWrapper = new QueryWrapper<>();
+        SystemSetter setter = systemSetterMapper.selectOne(systemSetterQueryWrapper);
+        QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
+        planQueryWrapper.apply("DATE_FORMAT(plan_start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",LocalDateTime.now());
+        planQueryWrapper.apply("DATE_FORMAT(plan_end_time,'%Y-%m-%d %H:%i:%s') > DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",LocalDateTime.now());
+        planQueryWrapper.eq("state",1);
+        List<PlanPushVo> pushVos = new ArrayList<>();
+        for (Plan plan : planMapper.selectList(planQueryWrapper)) {
+            QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
+            itemQueryWrapper.eq("plan_id",plan.getPlanId());
+            for (PlanItem item : planItemMapper.selectList(itemQueryWrapper)) {
+                pushVos.add(new PlanPushVo(item,plan,setter));
+            }
+        }
+        return pushVos;
     }
 }

+ 23 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/utils/StateUtil.java

@@ -0,0 +1,23 @@
+package com.ruoyi.demo.utils;
+
+public class StateUtil {
+    // 未审核
+    public static int NOT_AUDITED = 0;
+    public static String NOT_AUDITED_CHAR = "未审核";
+    // 审核通过
+    public static int APPROVED = 1;
+    public static String APPROVED_CHAR = "审核通过";
+    // 审核未通过
+    public static int NOT_APPROVED = 2;
+    public static String NOT_APPROVED_CHAR = "审核未通过";
+
+    public static String getStateName(int state){
+        if (state == NOT_AUDITED)
+            return NOT_AUDITED_CHAR;
+        if (state == APPROVED)
+            return APPROVED_CHAR;
+        if (state == NOT_APPROVED)
+            return NOT_APPROVED_CHAR;
+        return "无效状态";
+    }
+}