xiongzhu 3 лет назад
Родитель
Сommit
050ac82002

+ 1 - 1
src/main/java/com/izouma/yags/camp/api/CampApiService.java

@@ -34,7 +34,7 @@ public class CampApiService {
     private CampToken getCampToken() {
         CampToken campToken = new CampToken();
         campToken.setUserId("436174868");
-        campToken.setToken("EA8fkgWs");
+        campToken.setToken("YWUU7xKq");
         return campToken;
     }
 

+ 0 - 12
src/main/java/com/izouma/yags/camp/api/H5TeamAnaParam.java

@@ -1,12 +0,0 @@
-package com.izouma.yags.camp.api;
-
-import lombok.Data;
-
-@Data
-public class H5TeamAnaParam {
-    private String gameSvrEntity;
-    private String openid;
-    private String relaySvrEntity;
-    private String gameSeq;
-    private String playerID;
-}

+ 0 - 1
src/main/java/com/izouma/yags/camp/api/QueryBattleDetail.java

@@ -12,7 +12,6 @@ public class QueryBattleDetail {
     private List<AcntcampItem> acntcampBlue;
     private String             pvpTypename;
     private Integer            sNum;
-    private H5TeamAnaParam     h5TeamAnaParam;
     private String             equiDetailUrl;
     private TarRoleSimpleInfo  tarRoleSimpleInfo;
     private String             eventtime;

+ 4 - 3
src/main/java/com/izouma/yags/domain/BindGame.java

@@ -10,9 +10,6 @@ import lombok.NoArgsConstructor;
 import javax.persistence.*;
 
 @Data
-@Table(uniqueConstraints = {
-        @UniqueConstraint(columnNames = {"userId", "gameId"})
-})
 @Entity
 @AllArgsConstructor
 @NoArgsConstructor
@@ -23,6 +20,10 @@ public class BindGame extends BaseEntity {
 
     private Long gameId;
 
+    private String zone;
+
+    private boolean active;
+
     @Column(columnDefinition = "TEXT")
     @Convert(converter = RongYaoRoleConverter.class)
     private RongYaoRole rongYaoRole;

+ 5 - 1
src/main/java/com/izouma/yags/domain/CampToken.java

@@ -4,14 +4,18 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.Id;
 
 @Data
 @Entity
 @AllArgsConstructor
 @NoArgsConstructor
-public class CampToken extends BaseEntity {
+public class CampToken {
 
+    @Id
+    @Column(length = 20)
     private String userId;
 
     private String token;

+ 3 - 3
src/main/java/com/izouma/yags/repo/BindGameRepo.java

@@ -2,12 +2,12 @@ package com.izouma.yags.repo;
 
 import com.izouma.yags.domain.BindGame;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 import java.util.List;
-import java.util.Optional;
 
-public interface BindGameRepo extends JpaRepository<BindGame, Long> {
-    Optional<BindGame> findByUserIdAndGameId(Long userId, Long gameId);
+public interface BindGameRepo extends JpaRepository<BindGame, Long>, JpaSpecificationExecutor<BindGame> {
+    List<BindGame> findByUserIdAndGameIdAndZone(Long userId, Long gameId, String zone);
 
     List<BindGame> findByUserId(Long userId);
 }

+ 7 - 0
src/main/java/com/izouma/yags/repo/CampTokenRepo.java

@@ -0,0 +1,7 @@
+package com.izouma.yags.repo;
+
+import com.izouma.yags.domain.CampToken;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CampTokenRepo extends JpaRepository<CampToken, String> {
+}

+ 49 - 3
src/main/java/com/izouma/yags/service/BindGameService.java

@@ -3,10 +3,13 @@ package com.izouma.yags.service;
 import com.izouma.yags.camp.api.CampApiService;
 import com.izouma.yags.camp.api.RongYaoRole;
 import com.izouma.yags.domain.BindGame;
+import com.izouma.yags.dto.PageQuery;
 import com.izouma.yags.exception.BusinessException;
 import com.izouma.yags.repo.BindGameRepo;
+import com.izouma.yags.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
@@ -22,7 +25,15 @@ public class BindGameService {
     private CampApiService campApiService;
     private BindGameRepo   bindGameRepo;
 
-    public Object bind(Long userId, Long gameId, String campId, String roleId) throws IOException {
+    public Page<BindGame> all(PageQuery pageQuery) {
+        return bindGameRepo.findAll(JpaUtils.toSpecification(pageQuery, BindGame.class), JpaUtils.toPageRequest(pageQuery));
+    }
+
+    public List<BindGame> userBindGame(Long userId) {
+        return bindGameRepo.findByUserId(userId);
+    }
+
+    public Object bind(Long userId, Long gameId, String zone, String campId, String roleId) throws IOException {
         Objects.requireNonNull(gameId);
         Objects.requireNonNull(campId);
         if (gameId == 21) {
@@ -36,11 +47,19 @@ public class BindGameService {
                 map.put("msg", "请选择角色");
                 map.put("roleItems", roleItems);
             } else {
-                BindGame bindGame = bindGameRepo.findByUserIdAndGameId(userId, gameId)
-                        .orElse(new BindGame(userId));
+                List<BindGame> bindList = bindGameRepo.findByUserIdAndGameIdAndZone(userId, gameId, zone);
+                if (bindList.stream().anyMatch(b -> b.getRongYaoRole() != null
+                        && b.getRongYaoRole().getRoleId().equals(roleId))) {
+                    throw new BusinessException("请勿重复绑定");
+                }
+                BindGame bindGame = new BindGame(userId);
                 bindGame.setGameId(gameId);
+                bindGame.setZone(zone);
                 bindGame.setRongYaoRole(roleItems.stream().filter(r -> r.getRoleId().equals(roleId))
                         .findFirst().orElseThrow(new BusinessException("未查询到游戏角色")));
+                if (bindList.isEmpty() || bindList.stream().noneMatch(BindGame::isActive)) {
+                    bindGame.setActive(true);
+                }
                 bindGameRepo.save(bindGame);
                 map.put("code", 0);
             }
@@ -48,4 +67,31 @@ public class BindGameService {
         }
         throw new BusinessException("暂不支持该游戏");
     }
+
+    public void unbind(Long userId, Long bindId) {
+        BindGame bindGame = bindGameRepo.findById(bindId).orElseThrow(new BusinessException("未查询到绑定记录"));
+        bindGameRepo.delete(bindGame);
+        List<BindGame> bindList = bindGameRepo.findByUserIdAndGameIdAndZone(userId, bindGame.getGameId(), bindGame.getZone());
+        if (!bindList.isEmpty() && bindList.stream().noneMatch(BindGame::isActive)) {
+            bindList.stream().findAny().ifPresent(b -> {
+                b.setActive(true);
+                bindGameRepo.save(b);
+            });
+        }
+    }
+
+    public void activate(Long userId, Long bindId) {
+        BindGame bindGame = bindGameRepo.findById(bindId).orElseThrow(new BusinessException("未查询到绑定记录"));
+        if (bindGame.getUserId().equals(userId)) {
+            List<BindGame> bindList = bindGameRepo.findByUserIdAndGameIdAndZone(userId, bindGame.getGameId(), bindGame.getZone());
+            bindList.stream().filter(b -> !b.getId().equals(bindId)).forEach(b -> {
+                b.setActive(false);
+                bindGameRepo.save(b);
+            });
+            bindGame.setActive(true);
+            bindGameRepo.save(bindGame);
+        } else {
+            throw new BusinessException("无权激活");
+        }
+    }
 }

+ 30 - 7
src/main/java/com/izouma/yags/web/BindGameController.java

@@ -1,14 +1,16 @@
 package com.izouma.yags.web;
 
+import com.izouma.yags.domain.BindGame;
+import com.izouma.yags.dto.PageQuery;
 import com.izouma.yags.service.BindGameService;
 import com.izouma.yags.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.List;
 
 @RestController
 @RequestMapping("/bindGame")
@@ -16,8 +18,29 @@ import java.io.IOException;
 public class BindGameController extends BaseController {
     private BindGameService bindGameService;
 
-    @GetMapping("/bind")
-    public Object bind(@RequestParam Long gameId, @RequestParam String campId, String roleId) throws IOException {
-        return bindGameService.bind(SecurityUtils.getAuthenticatedUser().getId(), gameId, campId, roleId);
+    @PostMapping("/all")
+    @PreAuthorize("hasRole('ADMIN')")
+    public Page<BindGame> bindGameList(@RequestBody PageQuery pageQuery) {
+        return bindGameService.all(pageQuery);
+    }
+
+    @GetMapping("/my")
+    public List<BindGame> my() {
+        return bindGameService.userBindGame(SecurityUtils.getAuthenticatedUser().getId());
+    }
+
+    @PostMapping("/bind")
+    public Object bind(@RequestParam Long gameId, @RequestParam String campId, @RequestParam String zone, String roleId) throws IOException {
+        return bindGameService.bind(SecurityUtils.getAuthenticatedUser().getId(), gameId, zone, campId, roleId);
+    }
+
+    @PostMapping("/unbind")
+    public void unbind(@RequestParam Long id) {
+        bindGameService.unbind(SecurityUtils.getAuthenticatedUser().getId(), id);
+    }
+
+    @PostMapping("/activate")
+    public void activate(@RequestParam Long id) {
+        bindGameService.activate(SecurityUtils.getAuthenticatedUser().getId(), id);
     }
 }

+ 10 - 9
src/test/java/com/izouma/yags/camp/api/CampApiServiceTest.java

@@ -1,27 +1,28 @@
 package com.izouma.yags.camp.api;
 
+import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
 
 import java.io.IOException;
+import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.*;
-
-@SpringBootTest
+@Slf4j
 class CampApiServiceTest {
-    @Autowired
-    private CampApiService campApiService;
+    private CampApiService campApiService = new CampApiService();
 
     @Test
-    public void getRoleItems() {
+    public void getRoleItems() throws IOException {
+        List<RongYaoRole> list1 = campApiService.getRoleItems("436174868");
+        System.out.println(list1);
+        List<RongYaoRole> list2 = campApiService.getRoleItems("1702503556");
+        System.out.println(list2);
     }
 
     @Test
     public void queryBattle() throws IOException {
         QueryBattle queryBattle1 = campApiService.queryBattle("1869802843");
         System.out.println(queryBattle1.getInvisible() + queryBattle1.getInvisDes());
-        QueryBattle queryBattle2 = campApiService.queryBattle("165684487");
+        QueryBattle queryBattle2 = campApiService.queryBattle("1501416972");
         System.out.println(queryBattle2.getInvisible() + queryBattle2.getInvisDes());
 
         Battle battle = queryBattle2.getList().get(5);