Bladeren bron

修改了昵称和姓名同步;修改获取近况列表时 只能查看自己好友或族友的点赞和评论;退出接口 创建者解散家族

Alex 4 jaren geleden
bovenliggende
commit
0d63779be0

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ApiTemplateController.java

@@ -23,6 +23,7 @@ import com.ruoyi.system.service.ITPersonalImgService;
 import com.ruoyi.system.service.ITPersonalMessageService;
 import com.ruoyi.system.service.ITPersonalModelService;
 import com.ruoyi.system.service.ITPersonalPageService;
+import com.ruoyi.web.core.words.SensitiveWords;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -121,6 +122,9 @@ public class ApiTemplateController extends BaseController {
         if (StringUtils.isBlank(tPersonalMessage.getContents())){
             return AjaxResult.error("留言不能为空");
         }
+        //TODO 敏感词处理
+//        String name = SensitiveWords.replace(tPersonalMessage.getName());
+//        tPersonalMessage.setName(name);
         tPersonalMessage.setCreateTime(new Date());
         return toAjax(messageService.save(tPersonalMessage) ? 1 : 0);
     }

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbAppUserController.java

@@ -151,6 +151,10 @@ public class TbAppUserController extends BaseController {
         }
         member = new AppMemberVo();
         BeanUtils.copyBeanProp(member,memberVo);
+        // 昵称和姓名同步
+        if (StringUtils.isNotBlank(member.getNickName())) {
+            member.setName(member.getNickName());
+        }
         return toAjax(iTbAppUserService.saveOrUpdate(member) ? 1 : 0);
     }
 
@@ -167,6 +171,10 @@ public class TbAppUserController extends BaseController {
         }
         AppMemberVo member = iTbAppUserService.getMember("user",null,memberVo.getMobile());
         BeanUtils.copyBeanProp(member,memberVo);
+        // 昵称和姓名同步
+        if (StringUtils.isNotBlank(member.getNickName())) {
+            member.setName(member.getNickName());
+        }
         return toAjax(iTbAppUserService.saveOrUpdate(member) ? 1 : 0);
     }
 

+ 31 - 27
ruoyi-admin/src/main/java/com/ruoyi/web/core/words/SensitiveWords.java

@@ -2,40 +2,44 @@ package com.ruoyi.web.core.words;
 
 import org.springframework.core.io.ClassPathResource;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
 
 public class SensitiveWords {
 
-
-    private static void test_IllegalWordsSearch_saveToBinaryFile() throws IOException {
-        List<String> list = new ArrayList<>();
-        try (BufferedReader bufferedReader = new BufferedReader(
-                new InputStreamReader(new ClassPathResource("sensi_words.txt").getInputStream()))) {
-            for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
-                list.add(line);
-            }
-        }
-        IllegalWordsSearch search = new IllegalWordsSearch();
-        search.SetKeywords(list);
-        search.Save("IllegalWordsSearch.dat");
+    /**
+     * 替换
+     * @param test
+     * @return
+     */
+    public static String replace(String test){
+        // 讲txt文件放在项目根目录
+        List<String> list =loadKeywords(new File("sensi_words.txt"));
+        IllegalWordsSearch iwords = new IllegalWordsSearch();
+        iwords.SetKeywords(list);
+        return iwords.Replace(test);
     }
 
-
-    private static String test_IllegalWordsSearch_loadWordsFormBinaryFile(String test) throws IOException {
-
-        IllegalWordsSearch search = new IllegalWordsSearch();
-        search.Load(new ClassPathResource("IllegalWordsSearch.dat").getFile().getAbsolutePath());
-
-        boolean b = search.ContainsAny(test);
-        if (!b) {
-            System.out.println("ContainsAny is Error.");
+    /**
+     * 加载敏感词txt文件
+     * @param file
+     * @return
+     */
+    public static List<String> loadKeywords(File file){
+        List<String> keyArray = new ArrayList<>();
+        try{
+            //构造一个BufferedReader类来读取文件
+            BufferedReader br = new BufferedReader(new FileReader(file));
+            String s = null;
+            //使用readLine方法,一次读一行
+            while((s = br.readLine())!=null){
+                keyArray.add(s);
+            }
+            br.close();
+        }catch(Exception e){
+            e.printStackTrace();
         }
-
-        String str = search.Replace(test, '*');
-        return str;
+        return keyArray;
     }
 }

+ 13 - 1
ruoyi-app/src/main/java/com/ruoyi/app/controller/FamilyController.java

@@ -229,6 +229,7 @@ public class FamilyController extends AppBaseController {
     @ApiOperation("退出家族")
     @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
     @GetMapping("/quit")
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult quit(Long familyId) {
         if (familyId == null) {
             return AjaxResult.error("家族id为空");
@@ -243,7 +244,18 @@ public class FamilyController extends AppBaseController {
             return AjaxResult.error("未加入家族");
         }
         if ("Y".equals(middle.getPatriarch())) {
-            return AjaxResult.error("族长不能退出家族");
+            // 创建者退出家族,则家族解散
+            // 删除家族成员
+            boolean ck = middleService.remove(new LambdaQueryWrapper<TbMemberMiddle>()
+                    .eq(TbMemberMiddle::getFamilyId,familyId)
+            );
+
+            if (ck) {
+                // 删除家族
+                familyService.removeById(familyId);
+                return AjaxResult.success("解散成功");
+            }
+            return AjaxResult.error("解散失败");
         }
         if ("4".equals(middle.getStatus())) {
             return AjaxResult.error("已退出");

+ 4 - 0
ruoyi-app/src/main/resources/application.yml

@@ -42,6 +42,10 @@ logging:
 
 # Spring配置
 spring:
+  mvc:
+    async:
+      # 访问超时8s
+      request-timeout: 8000
   # 资源信息
   messages:
     # 国际化资源文件路径

+ 9 - 6
ruoyi-system/src/main/java/com/ruoyi/app/service/impl/TbFamilyMemberServiceImpl.java

@@ -78,9 +78,8 @@ public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper,
         if (StringUtils.isNotBlank(memberVo.getMemberRemark())) {
             member.setMemberRemark(memberVo.getMemberRemark());
         }
-        if (StringUtils.isBlank(member.getNickName())) {
-            member.setNickName(member.getName());
-        }
+        // 昵称和姓名同步
+        member.setNickName(member.getName());
         if(!userService.saveOrUpdate(member)){
             return false;
         }
@@ -159,9 +158,9 @@ public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper,
         if(ckTree.intValue() > 0) {
             return AjaxResult.error("删除失败,成员已加入家族树");
         }
-        // 是否有创建者
-        if(ckPatriarch.intValue() > 0) {
-            return AjaxResult.error("删除失败,不能删除创建者");
+        // 成员数大于1人,并且存在创建者
+        if(idList.size() > 1 && ckPatriarch.intValue() > 0) {
+            return AjaxResult.error("还有其他成员,不能删除创建者");
         }
         if(!memberMiddleService.remove(new LambdaQueryWrapper<TbMemberMiddle>()
                 .eq(TbMemberMiddle::getFamilyId,familyId)
@@ -379,6 +378,8 @@ public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper,
                 member.getParentId().equals(member.getSpouseUserId())) {
             return AjaxResult.error("父辈与配偶不能为同一人");
         }
+        // 昵称和姓名同步
+        member.setNickName(member.getName());
         // 根据memberID获取
         AppMemberVo memberVo1 = userService.getMember("member",member.getMemberId().toString(),null);
         // 根据手机号获取
@@ -432,6 +433,8 @@ public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper,
         }
         member.setUserId(null);
         member.setMemberId(null);
+        // 昵称和姓名同步
+        member.setNickName(member.getName());
         // 根据手机号获取
         AppMemberVo memberVo = userService.getAppMember(null,member.getMobile());
         if (memberVo != null){

+ 63 - 0
ruoyi-system/src/main/java/com/ruoyi/app/service/impl/TbMyPublishServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.app.domain.*;
+import com.ruoyi.app.domain.vo.AppMemberVo;
 import com.ruoyi.app.service.*;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.page.PageDomain;
@@ -40,6 +41,8 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
     private ITbPublishCommentService commentService;
     @Autowired
     private ITbAppUserService userService;
+    @Autowired
+    private ITbMyFriendsService friendsService;
 
     protected void startPage() {
         PageDomain pageDomain = TableSupport.buildPageRequest();
@@ -110,6 +113,9 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
         return list;
     }
 
+    @Autowired
+    private ITbFamilyService familyService;
+
     /**
      * 我的近况详情
      * @param id
@@ -119,6 +125,20 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
     public TbMyPublish getPublish(Long id) {
         TbMyPublish publish = this.getById(id);
         if (publish != null) {
+            Long familyId = null;
+            TbFamilyMember member = memberService.getOne(new LambdaQueryWrapper<TbFamilyMember>()
+                    .eq(TbFamilyMember::getAppUserId,publish.getAppUserId())
+                    .last("limit 1")
+            );
+            if (member != null) {
+                TbFamily family = familyService.myFamily(member.getId());
+                if (family != null) {
+                    familyId = family.getId();
+                }
+            }
+            // 只能看好友和族友的点赞、评论
+            List<Long> fids = getMyFrientIds(publish.getAppUserId(), familyId);
+
             // 图片列表
             List<TbPublishImg> publishImgs = imgService.list(new LambdaQueryWrapper<TbPublishImg>()
                     .in(TbPublishImg::getPublishId, id)
@@ -126,10 +146,12 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
             // 点赞列表
             List<TbPublishThumbs> thumbsList = thumbsService.selectList(new LambdaQueryWrapper<TbPublishThumbs>()
                     .in(TbPublishThumbs::getPublishId, id)
+                    .in(fids.size() > 0,TbPublishThumbs::getAppUserId, fids)
             );
             // 评论列表
             List<TbPublishComment> commentList = commentService.selectList(new LambdaQueryWrapper<TbPublishComment>()
                     .in(TbPublishComment::getPublishId, id)
+                    .in(fids.size() > 0,TbPublishComment::getAppUserId, fids)
             );
             //点赞数
             int thumbs = this.getThumbs(id);
@@ -235,6 +257,8 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
         return commentService.removeById(id);
     }
 
+    @Autowired
+    private ITbFamilyMemberService memberService;
 
     /**
      * 族友圈列表
@@ -250,15 +274,20 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
         list.forEach(item -> {
             ids.add(item.getId());
         });
+        // 只能看好友和族友的点赞、评论
+        List<Long> fids = getMyFrientIds(appUserId, familyId);
+
         // 族友圈中放入图片列表 点赞列表 评论列表
         List<TbPublishImg> imgList = imgService.list(new LambdaQueryWrapper<TbPublishImg>()
             .in(TbPublishImg::getPublishId, ids)
         );
         List<TbPublishThumbs> thumbsList = thumbsService.selectList(new LambdaQueryWrapper<TbPublishThumbs>()
                 .in(TbPublishThumbs::getPublishId, ids)
+                .in(fids.size() > 0,TbPublishThumbs::getAppUserId, fids)
         );
         List<TbPublishComment> commentList = commentService.selectList(new LambdaQueryWrapper<TbPublishComment>()
                 .in(TbPublishComment::getPublishId, ids)
+                .in(fids.size() > 0,TbPublishComment::getAppUserId, fids)
         );
         list.forEach(item -> {
             // 加入图片列表
@@ -288,4 +317,38 @@ public class TbMyPublishServiceImpl extends ServiceImpl<TbMyPublishMapper, TbMyP
         });
         return list;
     }
+
+    /**
+     * 获取好友、族友的id
+     * @param appUserId
+     * @param familyId
+     * @return
+     */
+    private List<Long> getMyFrientIds(Long appUserId, Long familyId){
+        List<Long> fids = new ArrayList<>();
+        if (appUserId != null) {
+            // 好友列表
+            TbMyFriends tbMyFriends = new TbMyFriends();
+            tbMyFriends.setAppUserId(appUserId);
+            tbMyFriends.setStatus("2");
+            List<TbMyFriends> friendsList = friendsService.pageList(tbMyFriends);
+            if (friendsList.size() > 0) {
+                friendsList.forEach(item -> {
+                    fids.add(item.getAppUserId());
+                });
+            }
+        }
+        if (familyId != null) {
+            // 族友列表
+            AppMemberVo memberVo = new AppMemberVo();
+            memberVo.setFamilyId(familyId);
+            List<AppMemberVo> memberList = memberService.selectFamilyMember(memberVo);
+            if (memberList.size() > 0) {
+                memberList.forEach(item -> {
+                    fids.add(item.getUserId());
+                });
+            }
+        }
+        return fids;
+    }
 }

+ 0 - 0
ruoyi-admin/src/main/resources/sensi_words.txt → sensi_words.txt