소스 검색

完成用户管理、审核回调、投放广告计划、生成用户记录

云殇忆 1 년 전
부모
커밋
c762a2a287

+ 22 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DlUserController.java

@@ -0,0 +1,22 @@
+package com.ruoyi.demo.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.demo.entity.bo.PlanBo;
+import com.ruoyi.demo.service.DlUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/dluser")
+public class DlUserController {
+    @Autowired
+    DlUserService dlUserService;
+
+    @GetMapping("/list")
+    public R list(@RequestBody PlanBo bo){
+        return R.ok(dlUserService.getList(bo));
+    }
+}

+ 8 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/PlanController.java

@@ -1,7 +1,9 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.demo.entity.bo.CallBackBean;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.vo.*;
@@ -43,10 +45,9 @@ public class PlanController {
         return R.ok(vo);
     }
     // 投放广告计划
-    // 已废弃
-    @GetMapping("/push")
-    public R planPush(){
-        return R.ok(planService.getPlanPush());
+    @GetMapping("/push/{equipmentId}")
+    public R planPush(@PathVariable String equipmentId){
+        return R.ok(planService.getPlanPush(equipmentId));
     }
 
     // 广告计划管理
@@ -54,7 +55,9 @@ public class PlanController {
     @PutMapping("/audit")
     public R checkPlan(@RequestBody PlanBo bo){
         // 获取用户id和用户名
-        String userId = "1";
+        String loginId = String.valueOf(StpUtil.getLoginId());
+        String numericPart = loginId.split(":")[1];
+        Long userId = Long.valueOf(numericPart);
         int i = planService.checkPlan(bo,userId);
         if (i == 1)
             return R.ok("审核操作成功");

+ 61 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/DlUser.java

@@ -0,0 +1,61 @@
+package com.ruoyi.demo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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_user")
+public class DlUser {
+    @TableField("user_id")
+    private String userId;
+    @TableField("user_name")
+    private String userName;
+    @TableField("user_telephone")
+    private String userTelephone;
+    @TableField("start_equipment_id")
+    private String startEquipmentId;
+    @TableField("start_equipment_name")
+    private String startEquipmentName;
+    @TableField("start_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime startTime;
+    @TableField("end_equipment_id")
+    private String endEquipmentId;
+    @TableField("end_equipment_name")
+    private String endEquipmentName;
+    @TableField("end_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime endTime;
+    @TableField("total_price")
+    private Float totalPrice;
+
+    @TableField("deleted")
+    private int deleted;
+
+    public DlUser(){}
+    public DlUser(Statistics s){
+        this.userId = s.getUserId();
+        this.userName = s.getUserName();
+        this.userTelephone = s.getUserTelephone();
+        this.startEquipmentId = s.getEquipmentId();
+        this.startEquipmentName = s.getEquipmentName();
+        this.startTime = s.getTime();
+        this.endEquipmentId = s.getEquipmentId();
+        this.endEquipmentName = s.getEquipmentName();
+        this.endTime = s.getTime();
+        this.totalPrice = s.getDealToolPrice();
+    }
+}

+ 3 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/PlanAudit.java

@@ -20,7 +20,7 @@ public class PlanAudit {
     private String planId;
     @TableField("user_id")
     private String userId;
-    @TableField(value = "user_name",fill = FieldFill.INSERT)
+    @TableField("user_name")
     private String userName;
     @TableField("state")
     private Integer state;
@@ -36,9 +36,10 @@ public class PlanAudit {
     private int deleted;
 
     public PlanAudit (){}
-    public PlanAudit(PlanBo bo,String userId){
+    public PlanAudit(PlanBo bo,String userId,String userName){
         this.setPlanId(bo.getPlanId());
         this.setUserId(userId);
+        this.userName = userName;
         this.setState(bo.getState());
         this.setAuditComment(bo.getAuditComment());
         this.setAuditTime(LocalDateTime.now());

+ 45 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/DlUserListVo.java

@@ -0,0 +1,45 @@
+package com.ruoyi.demo.entity.vo;
+
+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 com.ruoyi.demo.entity.DlUser;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class DlUserListVo {
+    private String userId;
+    private String userName;
+    private String userTelephone;
+    private String startEquipmentId;
+    private String startEquipmentName;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime startTime;
+    private String endEquipmentId;
+    private String endEquipmentName;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    private LocalDateTime endTime;
+    private Float totalPrice;
+
+    public DlUserListVo(){}
+    public DlUserListVo(DlUser user){
+        this.userId = user.getUserId();
+        this.userName = user.getUserName();
+        this.userTelephone = user.getUserTelephone();
+        this.startEquipmentId = user.getStartEquipmentId();
+        this.startEquipmentName = user.getStartEquipmentName();
+        this.startTime = user.getStartTime();
+        this.endEquipmentId = user.getEndEquipmentId();
+        this.endEquipmentName = user.getEndEquipmentName();
+        this.endTime = user.getEndTime();
+        this.totalPrice = user.getTotalPrice();
+    }
+}

+ 7 - 11
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/vo/PlanPushVo.java

@@ -7,8 +7,9 @@ import lombok.Data;
 
 @Data
 public class PlanPushVo {
-    private String equipmentId;
-    private String equipmentName;
+    private String itemId;
+    private String planId;
+    private String planName;
     private String qrCode;
     private String goodsId;
     private String goodsName;
@@ -16,14 +17,12 @@ public class PlanPushVo {
     private String goodsIntroduce;
     private Float goodsPrice;
     private String goodsClassify;
-    private Integer intervalCarousel;
-    private Integer intervalRequest;
-    private Integer intervalSubmit;
 
     public PlanPushVo(){}
-    public PlanPushVo(PlanItem item, Plan plan, SystemSetter setter){
-        this.equipmentId = item.getEquipmentId();
-        this.equipmentName = item.getEquipmentName();
+    public PlanPushVo(PlanItem item, Plan plan){
+        this.itemId = item.getItemId();
+        this.planId = item.getPlanId();
+        this.planName = plan.getPlanName();
         this.qrCode = item.getQrCode();
         this.goodsId = plan.getGoodsId();
         this.goodsName = plan.getGoodsName();
@@ -31,8 +30,5 @@ public class PlanPushVo {
         this.goodsPrice = plan.getGoodsPrice();
         this.goodsIntroduce = plan.getGoodsIntroduce();
         this.goodsClassify = plan.getGoodsClassify();
-        this.intervalCarousel = setter.getIntervalCarousel();
-        this.intervalRequest = setter.getIntervalRequest();
-        this.intervalSubmit = setter.getIntervalSubmit();
     }
 }

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

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

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

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

+ 11 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/DlUserService.java

@@ -0,0 +1,11 @@
+package com.ruoyi.demo.service;
+
+import com.github.pagehelper.PageInfo;
+import com.ruoyi.demo.entity.bo.PlanBo;
+import com.ruoyi.demo.entity.vo.DlUserListVo;
+
+import java.util.List;
+
+public interface DlUserService {
+    PageInfo<List<DlUserListVo>> getList(PlanBo bo);
+}

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

@@ -14,10 +14,10 @@ public interface PlanService {
     int addPlan(PlanAddBo bo);
     int deletePlan(String id);
     int deletePlans(List<String> ids);
-    int checkPlan(PlanBo bo,String userId);
+    int checkPlan(PlanBo bo,Long userId);
     PageInfo<List<PlanListVo>> getPlanList(PlanBo bo);
     PlanDetailVo getPlanDetail(String planId);
-    List<PlanPushVo> getPlanPush();
+    List<PlanPushVo> getPlanPush(String equipmentId);
 
     int planUpDown(String planId);
     PageInfo<List<PlanManageListVo>> getPlanManageList(PlanBo bo);

+ 49 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/DlUserServiceImpl.java

@@ -0,0 +1,49 @@
+package com.ruoyi.demo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ruoyi.demo.entity.DlUser;
+import com.ruoyi.demo.entity.bo.PlanBo;
+import com.ruoyi.demo.entity.vo.DlUserListVo;
+import com.ruoyi.demo.mapper.DlUserMapper;
+import com.ruoyi.demo.service.DlUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@Transactional
+public class DlUserServiceImpl implements DlUserService {
+    @Autowired
+    DlUserMapper dlUserMapper;
+
+    @Override
+    public PageInfo<List<DlUserListVo>> getList(PlanBo bo) {
+        PageHelper.startPage(bo.getPageNum(),bo.getPageSize(),true);
+        QueryWrapper<DlUser> queryWrapper = new QueryWrapper<>();
+        if (bo.getText() != null)
+            queryWrapper.like("user_id",bo.getText())
+                .or()
+                .like("user_name",bo.getText())
+                .or()
+                .like("user_telephone",bo.getText());
+        if (bo.getStartTime() != null)
+            queryWrapper.apply("DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime())
+                .or()
+                .apply("DATE_FORMAT(end_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getStartTime());
+        if (bo.getEndTime() != null)
+            queryWrapper.apply("DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime())
+                .or()
+                .apply("DATE_FORMAT(end_time,'%Y-%m-%d %H:%i:%s') <= DATE_FORMAT({0},'%Y-%m-%d %H:%i:%s')",bo.getEndTime());
+        List<DlUser> dlUsers = dlUserMapper.selectList(queryWrapper);
+        List<DlUserListVo> vos = new ArrayList<>();
+        for (DlUser user : dlUsers){
+            vos.add(new DlUserListVo(user));
+        }
+        return new PageInfo(vos);
+    }
+}

+ 36 - 21
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java

@@ -4,13 +4,16 @@ import cn.hutool.core.lang.Dict;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.demo.entity.*;
+import com.ruoyi.demo.entity.bo.CallBackBean;
 import com.ruoyi.demo.entity.bo.PlanAddBo;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.bo.PlanItemAddBo;
 import com.ruoyi.demo.entity.vo.*;
 import com.ruoyi.demo.mapper.*;
 import com.ruoyi.demo.service.PlanService;
+import com.ruoyi.demo.utils.SendCallBackUtil;
 import com.ruoyi.demo.utils.SignUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -46,6 +49,8 @@ public class PlanServiceImpl implements PlanService {
     EquipmentMapper equipmentMapper;
     @Autowired
     GoodsMapper goodsMapper;
+    @Autowired
+    SysUserMapper sysUserMapper;
 
     @Override
     public int addPlan(PlanAddBo bo) {
@@ -112,20 +117,31 @@ public class PlanServiceImpl implements PlanService {
     }
 
     @Override
-    public int checkPlan(PlanBo bo,String userId) {
+    public int checkPlan(PlanBo bo,Long userId) {
         QueryWrapper<Plan> planQueryWrapper = new QueryWrapper<>();
         planQueryWrapper.eq("plan_id",bo.getPlanId());
         planQueryWrapper.eq("deleted","0");
         Plan plan = planMapper.selectOne(planQueryWrapper);
         if (plan == null)
             return -1;
+        QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
+        appQueryWrapper.eq("appkey",plan.getAppkey());
+        App app = appMapper.selectOne(appQueryWrapper);
         plan.setState(bo.getState());
         int i = planMapper.updateById(plan);
         if (i == 0)
             return 0;
-        PlanAudit audit = new PlanAudit(bo,userId);
-        planAuditMapper.insert(audit);
-        return 1;
+        SysUser sysUser = sysUserMapper.selectById(userId);
+        PlanAudit audit = new PlanAudit(bo,userId.toString(),sysUser.getNickName());
+        int insert = planAuditMapper.insert(audit);
+        if (insert == 1){
+            CallBackBean callBackBean = new CallBackBean();
+            callBackBean.setAuditPerson(sysUser.getNickName());
+            callBackBean.setAuditComment(bo.getAuditComment());
+            callBackBean.setAuditTime(LocalDateTime.now());
+            SendCallBackUtil.sendCallBack(app.getCallBack(),callBackBean);
+        }
+        return insert;
     }
 
     @Override
@@ -167,24 +183,23 @@ public class PlanServiceImpl implements PlanService {
     }
 
     @Override
-    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);
-        planQueryWrapper.eq("deleted","0");
+    public List<PlanPushVo> getPlanPush(String equipmentId) {
+//        根据设备id查询可投放的广告计划
+//        再根据每个广告计划id,查询其商品信息
         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));
-            }
+        QueryWrapper<PlanItem> itemQueryWrapper = new QueryWrapper<>();
+        itemQueryWrapper.eq("equipment_id",equipmentId);
+        itemQueryWrapper.eq("deleted","0");
+        List<PlanItem> items = planItemMapper.selectList(itemQueryWrapper);
+        for (PlanItem item : items){
+            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("plan_id",item.getPlanId());
+            planQueryWrapper.eq("state",1);
+            planQueryWrapper.eq("deleted","0");
+            Plan plan = planMapper.selectOne(planQueryWrapper);
+            pushVos.add(new PlanPushVo(item,plan));
         }
         return pushVos;
     }

+ 16 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/StatisticsServiceImpl.java

@@ -3,10 +3,12 @@ package com.ruoyi.demo.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ruoyi.demo.entity.DlUser;
 import com.ruoyi.demo.entity.Statistics;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.entity.vo.PlanHomeVo;
 import com.ruoyi.demo.entity.vo.ScanListVo;
+import com.ruoyi.demo.mapper.DlUserMapper;
 import com.ruoyi.demo.mapper.StatisticsMapper;
 import com.ruoyi.demo.service.StatisticsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +24,8 @@ import java.util.List;
 public class StatisticsServiceImpl implements StatisticsService {
     @Autowired
     StatisticsMapper statisticsMapper;
+    @Autowired
+    DlUserMapper dlUserMapper;
 
     @Override
     public PageInfo<List<ScanListVo>> getScanList(PlanBo bo) {
@@ -49,6 +53,18 @@ public class StatisticsServiceImpl implements StatisticsService {
 
     @Override
     public int add(Statistics bo) {
+        QueryWrapper<DlUser> userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.eq("user_id",bo.getUserId());
+        DlUser user = dlUserMapper.selectOne(userQueryWrapper);
+        if (user == null)
+            dlUserMapper.insert(new DlUser(bo));
+        else{
+            user.setEndEquipmentId(bo.getEquipmentId());
+            user.setEndEquipmentName(bo.getEquipmentName());
+            user.setEndTime(bo.getTime());
+            user.setTotalPrice(user.getTotalPrice() + bo.getDealToolPrice());
+            dlUserMapper.update(user,userQueryWrapper);
+        }
         return statisticsMapper.insert(bo);
     }
 }