wangqifan 3 lat temu
rodzic
commit
ce20076b99

+ 1 - 0
src/main/java/com/izouma/nineth/domain/netease/Team.java

@@ -40,6 +40,7 @@ public class Team extends BaseEntityNoID {
     private String       icon;
 
     private Long   collectionId;
+    private String collection;
     private String password;
 
     @Transient

+ 3 - 0
src/main/java/com/izouma/nineth/repo/AssetRepo.java

@@ -139,4 +139,7 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
 
     @Query(value = "select * from asset where name like ?1 and status in ?2 and id not in ?3 and del = false", nativeQuery = true)
     List<Asset> findAllBoats(String name, List<AssetStatus> status, List<Long> boatIds);
+
+    @Query("select count(id) from Asset where name like ?1 and status = 'NORMAL' and ownerId = ?2")
+    Long countNameLikeNotDestroyedAndOwner(String name,Long ownerId);
 }

+ 24 - 2
src/main/java/com/izouma/nineth/service/netease/TeamService.java

@@ -8,6 +8,7 @@ import com.izouma.nineth.domain.netease.Team;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.netease.TeamType;
 import com.izouma.nineth.exception.BusinessException;
+import com.izouma.nineth.repo.AssetRepo;
 import com.izouma.nineth.repo.netease.NeteaseMessageRepo;
 import com.izouma.nineth.repo.netease.TeamRepo;
 import com.izouma.nineth.utils.DateTimeUtils;
@@ -38,6 +39,7 @@ public class TeamService {
     private NeteaseUserService            neteaseUserService;
     private RedisTemplate<String, Object> redisTemplate;
     private NeteaseMessageRepo            neteaseMessageRepo;
+    private AssetRepo                     assetRepo;
 
     public Page<Team> all(PageQuery pageQuery) {
         Long userId = SecurityUtils.getAuthenticatedUser().getId();
@@ -110,7 +112,7 @@ public class TeamService {
         Team team = teamRepo.findById(tid).orElseThrow(new BusinessException("暂无"));
         params.put("tid", tid);
         params.put("owner", team.getOwnerid());
-        params.put("muteType", 1);
+        params.put("mute", true);
         String result = neteaseUserService
                 .httpPost("team/muteTlistAll.action", "application/x-www-form-urlencoded;charset=utf-8", params);
         JSONObject jsonObject = JSON.parseObject(result);
@@ -127,7 +129,7 @@ public class TeamService {
         Team team = teamRepo.findById(tid).orElseThrow(new BusinessException("暂无"));
         params.put("tid", tid);
         params.put("owner", team.getOwnerid());
-        params.put("muteType", 0);
+        params.put("mute", false);
         String result = neteaseUserService
                 .httpPost("team/muteTlistAll.action", "application/x-www-form-urlencoded;charset=utf-8", params);
         JSONObject jsonObject = JSON.parseObject(result);
@@ -202,4 +204,24 @@ public class TeamService {
     public NeteaseMessage getTeamLastMessage(Long tid) {
         return neteaseMessageRepo.findFirstByToIdAndOpeOrderByCreatedAtDesc(tid.toString(), 1);
     }
+
+    public void getTeamInfo(Long tid) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("tid", tid);
+        String result = neteaseUserService
+                .httpPost("team/queryDetail.action", "application/x-www-form-urlencoded;charset=utf-8", params);
+        JSONObject jsonObject = JSON.parseObject(result);
+        System.out.println(jsonObject);
+    }
+
+    public boolean checkTeamIn(Long tid, String accid) {
+        Team team = teamRepo.findById(tid).orElseThrow(new BusinessException("暂无群信息"));
+        Long ownerId = Long.valueOf(accid);
+        String collectionString = team.getCollection();
+        if (StringUtils.isNotBlank(collectionString)) {
+            Long count = assetRepo.countNameLikeNotDestroyedAndOwner("%" + collectionString + "%", ownerId);
+            return count > 0;
+        }
+        return true;
+    }
 }

+ 6 - 0
src/main/java/com/izouma/nineth/web/netease/TeamController.java

@@ -11,6 +11,7 @@ import com.izouma.nineth.utils.excel.ExcelUtils;
 
 import freemarker.template.utility.RichObjectWrapper;
 import lombok.AllArgsConstructor;
+import org.bytedeco.tesseract.StringGenericVector;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -90,5 +91,10 @@ public class TeamController extends BaseController {
     public void checkout(String userId, String tid) {
         teamService.checkout(userId, tid);
     }
+
+    @PostMapping("/checkCanjoin")
+    public boolean checkJoin(Long tid, String accid) {
+        return teamService.checkTeamIn(tid, accid);
+    }
 }
 

+ 103 - 102
src/main/vue/src/views/TeamEdit.vue

@@ -12,42 +12,45 @@
                 <el-form :model="formData" :rules="rules" ref="form" label-width="94px" label-position="right"
                          size="small"
                          style="max-width: 500px;">
-                        <el-form-item prop="tid" label="tid">
-                                    <el-input-number type="number" v-model="formData.tid" disabled></el-input-number>
-                        </el-form-item>
-                        <el-form-item prop="name" label="群名">
-                                    <el-input v-model="formData.name"></el-input>
-                        </el-form-item>
-                        <el-form-item prop="ownerid" label="群主id">
-                                    <el-input v-model="formData.ownerid" :disabled="!canEdit"></el-input>
-                        </el-form-item>
-<!--                        <el-form-item prop="members" label="群成员列表">-->
-<!--                                    <el-input v-model="formData.members"></el-input>-->
-<!--                        </el-form-item>-->
-<!--                        <el-form-item prop="admins" label="管理员列表">-->
-<!--                                    <el-input v-model="formData.admins"></el-input>-->
-<!--                        </el-form-item>-->
-                        <el-form-item prop="announcement" label="公告">
-                                    <el-input type="textarea" v-model="formData.announcement"></el-input>
-                        </el-form-item>
-                        <el-form-item prop="intro" label="介绍">
-                                    <el-input type="textarea" v-model="formData.intro"></el-input>
-                        </el-form-item>
-                        <el-form-item prop="msg" label="邀请信息">
-                                    <el-input type="textarea" v-model="formData.msg" :disabled="!canEdit"></el-input>
-                        </el-form-item>
-<!--                        <el-form-item prop="custom" label="群组分类">-->
-<!--                                    <el-input v-model="formData.custom"></el-input>-->
-<!--                        </el-form-item>-->
-                        <el-form-item prop="icon" label="图标">
-                                    <single-upload v-model="formData.icon"></single-upload>
-                        </el-form-item>
-<!--                        <el-form-item prop="collectionId" label="藏品id">-->
-<!--                                    <el-input-number type="number" v-model="formData.collectionId"></el-input-number>-->
-<!--                        </el-form-item>-->
-<!--                        <el-form-item prop="password" label="密码">-->
-<!--                                    <el-input v-model="formData.password"></el-input>-->
-<!--                        </el-form-item>-->
+                    <el-form-item prop="tid" label="tid">
+                        <el-input-number type="number" v-model="formData.tid" disabled></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="name" label="群名">
+                        <el-input v-model="formData.name"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="ownerid" label="群主id">
+                        <el-input v-model="formData.ownerid" :disabled="!canEdit"></el-input>
+                    </el-form-item>
+                    <!--                        <el-form-item prop="members" label="群成员列表">-->
+                    <!--                                    <el-input v-model="formData.members"></el-input>-->
+                    <!--                        </el-form-item>-->
+                    <!--                        <el-form-item prop="admins" label="管理员列表">-->
+                    <!--                                    <el-input v-model="formData.admins"></el-input>-->
+                    <!--                        </el-form-item>-->
+                    <el-form-item prop="announcement" label="公告">
+                        <el-input type="textarea" v-model="formData.announcement"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="intro" label="介绍">
+                        <el-input type="textarea" v-model="formData.intro"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="msg" label="邀请信息">
+                        <el-input type="textarea" v-model="formData.msg" :disabled="!canEdit"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="collection" label="指定持仓">
+                        <el-input v-model="formData.collection"></el-input>
+                    </el-form-item>
+                    <!--                        <el-form-item prop="custom" label="群组分类">-->
+                    <!--                                    <el-input v-model="formData.custom"></el-input>-->
+                    <!--                        </el-form-item>-->
+                    <el-form-item prop="icon" label="图标">
+                        <single-upload v-model="formData.icon"></single-upload>
+                    </el-form-item>
+                    <!--                        <el-form-item prop="collectionId" label="藏品id">-->
+                    <!--                                    <el-input-number type="number" v-model="formData.collectionId"></el-input-number>-->
+                    <!--                        </el-form-item>-->
+                    <!--                        <el-form-item prop="password" label="密码">-->
+                    <!--                                    <el-input v-model="formData.password"></el-input>-->
+                    <!--                        </el-form-item>-->
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" type="primary">
                             保存
@@ -63,76 +66,74 @@
     </div>
 </template>
 <script>
-    export default {
-        name: 'TeamEdit',
-        created() {
-            if (this.$route.query.id) {
-                this.$http
-                    .get('team/get/' + this.$route.query.id)
-                    .then(res => {
-                        this.formData = res;
-                    })
-                    .catch(e => {
-                        console.log(e);
-                        this.$message.error(e.error);
-                    });
-            }
-        },
-        computed: {
-            canEdit() {
-                return !!!this.$route.query.id;
-            }
-        },
-        data() {
-            return {
-                saving: false,
-                formData: {
-                },
-                rules: {
-                },
-            }
-        },
-        methods: {
-            onSave() {
-                this.$refs.form.validate((valid) => {
-                    if (valid) {
-                        this.submit();
-                    } else {
-                        return false;
-                    }
+export default {
+    name: 'TeamEdit',
+    created() {
+        if (this.$route.query.id) {
+            this.$http
+                .get('team/get/' + this.$route.query.id)
+                .then(res => {
+                    this.formData = res;
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
                 });
-            },
-            submit() {
-                let data = {...this.formData};
+        }
+    },
+    computed: {
+        canEdit() {
+            return !!!this.$route.query.id;
+        }
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {},
+            rules: {},
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            let data = {...this.formData};
 
-                this.saving = true;
-                this.$http
-                    .post('/team/save', data, {body: 'json'})
-                    .then(res => {
-                        this.saving = false;
-                        this.$message.success('成功');
-                        this.$router.go(-1);
-                    })
-                    .catch(e => {
-                        console.log(e);
-                        this.saving = false;
-                        this.$message.error(e.error);
-                    });
-            },
-            onDelete() {
-                this.$confirm('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
-                    return this.$http.post(`/team/del/${this.formData.id}`)
-                }).then(() => {
-                    this.$message.success('删除成功');
+            this.saving = true;
+            this.$http
+                .post('/team/save', data, {body: 'json'})
+                .then(res => {
+                    this.saving = false;
+                    this.$message.success('成功');
                     this.$router.go(-1);
-                }).catch(e => {
-                    if (e !== 'cancel') {
-                        console.log(e);
-                        this.$message.error((e || {}).error || '删除失败');
-                    }
                 })
-            },
-        }
+                .catch(e => {
+                    console.log(e);
+                    this.saving = false;
+                    this.$message.error(e.error);
+                });
+        },
+        onDelete() {
+            this.$confirm('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                return this.$http.post(`/team/del/${this.formData.id}`)
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(e => {
+                if (e !== 'cancel') {
+                    console.log(e);
+                    this.$message.error((e || {}).error || '删除失败');
+                }
+            })
+        },
     }
+}
 </script>
 <style lang="less" scoped></style>