Procházet zdrojové kódy

add(backend) [被关注回复]

wangxiao před 4 roky
rodič
revize
1088324dbc

+ 122 - 0
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/FollowReplyController.java

@@ -0,0 +1,122 @@
+package com.idiot.operationbackend.controller.interactive;
+
+import com.idiot.operationbackend.controller.AuthController;
+import com.idiot.operationbackend.entity.*;
+import com.idiot.operationbackend.service.facade.AccountService;
+import com.idiot.operationbackend.service.facade.ArticlesService;
+import com.idiot.operationbackend.service.facade.FollowReplyService;
+import com.idiot.operationbackend.service.facade.MaterialService;
+import com.idiot.operationbackend.support.JsonResult;
+import com.idiot.operationbackend.util.JwtTokenUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author wang xiao
+ * @date Created in 17:30 2020/9/21
+ */
+@RestController
+@RequestMapping("/followReply")
+@Api(value = "FollowReplyController", tags ="被关注回复")
+public class FollowReplyController {
+
+    private final Logger logger = LoggerFactory.getLogger(AuthController.class);
+
+    @Autowired
+    private AccountService accountService;
+
+    @Autowired
+    private FollowReplyService followReplyService;
+
+    @Autowired
+    private MaterialService materialService;
+
+    @Autowired
+    private ArticlesService articlesService;
+
+
+
+    @GetMapping
+    @ApiOperation(value = "查询智能回复列表")
+    public ResponseEntity<JsonResult<List<FollowReply>>> getAccountPushList(@RequestHeader String token) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}查询推送消息列表",userId);
+        List<Account> accounts = accountService.queryAccountByUserId(userId);
+        List<String> accIds = accounts.stream().map(Account::getId).collect(Collectors.toList());
+        List<FollowReply> pushList = followReplyService.queryFollowReply(accIds);
+        List<FollowReply> result = new ArrayList<>(accIds.size());
+        for (Account account : accounts) {
+            FollowReply var = pushList.stream()
+                    .filter(e->account.getId().equals(e.getAccountId()))
+                    .findAny()
+                    .orElseGet(()->nonReply(account));
+            result.add(var);
+        }
+        return ResponseEntity.ok(JsonResult.success(result));
+    }
+
+
+    @GetMapping("/{id}")
+    @ApiOperation(value = "查看被关注回复详情")
+    public ResponseEntity<JsonResult<FollowReply>> getFollowReply(@RequestHeader String token,
+                                                                  @PathVariable String id,
+                                                                  @RequestParam String accountId) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}查看被关注回复详情",userId);
+
+        FollowReply followReply = followReplyService.getById(id);
+        if (Objects.isNull(followReply)){
+            Account account = accountService.getById(accountId);
+            followReply = nonReply(account);
+        }
+        queryContents(followReply);
+        return ResponseEntity.ok(JsonResult.success(followReply));
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改被关注回复")
+    public ResponseEntity<JsonResult<Boolean>> upFollowReply(@RequestHeader String token,
+                                                             @RequestBody FollowReply reply) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}修改被关注回复",userId);
+        boolean addResult = followReplyService.saveOrUpdate(reply);
+        return ResponseEntity.ok(JsonResult.success(addResult));
+    }
+
+
+
+    private FollowReply nonReply (Account account){
+        FollowReply reply = new FollowReply();
+        reply.setNikeName(account.getNickName());
+        reply.setHeadImage(account.getHeadImg());
+        reply.setEnable(false);
+        reply.setSetUp(false);
+        return reply;
+    }
+
+    private void queryContents(FollowReply reply) {
+        String artIds = reply.getArticlesIds();
+        List<Object> content = new ArrayList<>();
+        List<Articles> articles = articlesService.queryArticlesByIds(artIds);
+        if (Objects.nonNull(articles)) {
+            content.addAll(articles);
+        }
+        String matIds = reply.getMaterialIds();
+        List<Material> materials = materialService.queryByIds(matIds);
+        if (Objects.nonNull(materials)) {
+            content.addAll(materials);
+        }
+        reply.setContents(content);
+    }
+
+}

+ 1 - 0
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/PushMsgController.java

@@ -103,6 +103,7 @@ public class PushMsgController {
         push.setNikeName(account.getNickName());
         push.setHeadImage(account.getHeadImg());
         push.setEnable(false);
+        push.setSetUp(false);
         return push;
     }
 

+ 11 - 0
operation-backend/src/main/java/com/idiot/operationbackend/entity/AccountPush.java

@@ -45,6 +45,9 @@ public class AccountPush {
     @TableField(exist = false)
     private List<Object> contents;
 
+    @TableField(exist = false)
+    private boolean setUp;
+
     public String getId() {
         return id;
     }
@@ -156,4 +159,12 @@ public class AccountPush {
     public void setContents(List<Object> contents) {
         this.contents = contents;
     }
+
+    public boolean isSetUp() {
+        return setUp;
+    }
+
+    public void setSetUp(boolean setUp) {
+        this.setUp = setUp;
+    }
 }

+ 129 - 0
operation-backend/src/main/java/com/idiot/operationbackend/entity/FollowReply.java

@@ -0,0 +1,129 @@
+package com.idiot.operationbackend.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.util.List;
+
+/**
+ * 关注回复
+ * @author wang xiao
+ * @date Created in 17:12 2020/9/21
+ */
+@TableName("t_account_follow_reply")
+public class FollowReply {
+
+    @TableId
+    private String id;
+
+    private String accountId;
+
+    private String nikeName;
+
+    private String headImage;
+
+    private Integer pushType;
+
+    private Boolean enable;
+
+    private String materialIds;
+
+    private String articlesIds;
+
+    private String createTime;
+
+    @TableField(exist = false)
+    private List<Object> contents;
+
+    @TableField(exist = false)
+    private Boolean setUp;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getNikeName() {
+        return nikeName;
+    }
+
+    public void setNikeName(String nikeName) {
+        this.nikeName = nikeName;
+    }
+
+    public String getHeadImage() {
+        return headImage;
+    }
+
+    public void setHeadImage(String headImage) {
+        this.headImage = headImage;
+    }
+
+    public Integer getPushType() {
+        return pushType;
+    }
+
+    public void setPushType(Integer pushType) {
+        this.pushType = pushType;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getMaterialIds() {
+        return materialIds;
+    }
+
+    public void setMaterialIds(String materialIds) {
+        this.materialIds = materialIds;
+    }
+
+    public String getArticlesIds() {
+        return articlesIds;
+    }
+
+    public void setArticlesIds(String articlesIds) {
+        this.articlesIds = articlesIds;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public List<Object> getContents() {
+        return contents;
+    }
+
+    public void setContents(List<Object> contents) {
+        this.contents = contents;
+    }
+
+    public Boolean getSetUp() {
+        return setUp;
+    }
+
+    public void setSetUp(Boolean setUp) {
+        this.setUp = setUp;
+    }
+}

+ 11 - 0
operation-backend/src/main/java/com/idiot/operationbackend/mappers/FollowReplyMapper.java

@@ -0,0 +1,11 @@
+package com.idiot.operationbackend.mappers;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.idiot.operationbackend.entity.FollowReply;
+
+/**
+ * @author wang xiao
+ * @date Created in 17:35 2020/9/21
+ */
+public interface FollowReplyMapper extends BaseMapper<FollowReply> {
+}

+ 22 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/facade/FollowReplyService.java

@@ -0,0 +1,22 @@
+package com.idiot.operationbackend.service.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.idiot.operationbackend.entity.FollowReply;
+
+import java.util.List;
+
+/**
+ * @author wang xiao
+ * @date Created in 17:35 2020/9/21
+ */
+public interface FollowReplyService extends IService<FollowReply> {
+
+    /**
+     *  查询公告号被关注回复
+     * @author wangxiao
+     * @date 17:31 2020/9/18
+     * @param ids ids
+     * @return java.util.List<com.idiot.operationbackend.entity.FollowReply>
+     */
+    List<FollowReply> queryFollowReply(List<String> ids);
+}

+ 24 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/impl/FollowReplyServiceImpl.java

@@ -0,0 +1,24 @@
+package com.idiot.operationbackend.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.idiot.operationbackend.entity.FollowReply;
+import com.idiot.operationbackend.mappers.FollowReplyMapper;
+import com.idiot.operationbackend.service.facade.FollowReplyService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author wang xiao
+ * @date Created in 17:36 2020/9/21
+ */
+@Service
+public class FollowReplyServiceImpl extends ServiceImpl<FollowReplyMapper, FollowReply>
+        implements FollowReplyService {
+
+    @Override
+    public List<FollowReply> queryFollowReply(List<String> ids) {
+        return list(Wrappers.<FollowReply>lambdaQuery().in(FollowReply::getAccountId,ids));
+    }
+}

+ 18 - 0
sql/dataBase.sql

@@ -250,3 +250,21 @@ CREATE TABLE `t_account_articles`  (
   `media_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '微信media id',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '公众号图文' ROW_FORMAT = Dynamic;
+
+
+-- ----------------------------
+-- Table structure for t_account_follow_reply 被关注回复
+-- ----------------------------
+DROP TABLE IF EXISTS `t_account_follow_reply`;
+CREATE TABLE `t_account_follow_reply`  (
+  `id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'id',
+  `account_id` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '公众号id',
+  `nike_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '公众号名称',
+  `head_image` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '头像',
+  `push_type` int(0) NULL DEFAULT NULL COMMENT '推送方式:0-全部推送,1-按顺序推送,2-随机推送一条',
+  `enable` tinyint(1) NULL DEFAULT NULL COMMENT '开关',
+  `material_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '素材id',
+  `articles_ids` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '图文id',
+  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+  PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '被关注回复' ROW_FORMAT = Dynamic;