Эх сурвалжийг харах

1.添加挖矿工作逻辑

slambb 3 жил өмнө
parent
commit
2cc23cb5a6
60 өөрчлөгдсөн 1344 нэмэгдсэн , 92 устгасан
  1. 2 0
      src/main/java/com/td/WaDa/common/service/CommonService.java
  2. 26 10
      src/main/java/com/td/WaDa/common/service/CommonServiceImpl.java
  3. 39 0
      src/main/java/com/td/WaDa/config/enums/GameEnum.java
  4. 4 0
      src/main/java/com/td/WaDa/config/enums/ResultEnum.java
  5. 59 6
      src/main/java/com/td/WaDa/game/comcharacters/controller/ComCharactersController.java
  6. 8 0
      src/main/java/com/td/WaDa/game/comcharacters/pojo/ComCharacters.java
  7. 11 0
      src/main/java/com/td/WaDa/game/comcharacters/repository/ComCharactersRepository.java
  8. 7 1
      src/main/java/com/td/WaDa/game/comcharacters/service/ComCharactersService.java
  9. 63 25
      src/main/java/com/td/WaDa/game/comcharacters/service/ComCharactersServiceImpl.java
  10. 9 1
      src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersClientVo.java
  11. 9 1
      src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersSimpleVo.java
  12. 8 0
      src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersVo.java
  13. 143 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/controller/ComCharactersDiscoveryController.java
  14. 42 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/pojo/ComCharactersDiscovery.java
  15. 14 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/repository/ComCharactersDiscoveryRepository.java
  16. 20 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/service/ComCharactersDiscoveryService.java
  17. 422 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/service/ComCharactersDiscoveryServiceImpl.java
  18. 49 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryClientVo.java
  19. 38 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoverySimpleVo.java
  20. 37 0
      src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryVo.java
  21. 12 3
      src/main/java/com/td/WaDa/game/comsetting/controller/ComSettingController.java
  22. 2 1
      src/main/java/com/td/WaDa/game/excelcharacterattri/pojo/ExcelCharacterAttri.java
  23. 1 1
      src/main/java/com/td/WaDa/game/excelcharacterattri/vo/ExcelCharacterAttriSimpleVo.java
  24. 1 1
      src/main/java/com/td/WaDa/game/excelcharacterattri/vo/ExcelCharacterAttriVo.java
  25. 3 2
      src/main/java/com/td/WaDa/game/excelcharactercreate/pojo/ExcelCharacterCreate.java
  26. 2 1
      src/main/java/com/td/WaDa/game/excelcharactercreate/repository/ExcelCharacterCreateRepository.java
  27. 4 1
      src/main/java/com/td/WaDa/game/excelcharactercreate/service/ExcelCharacterCreateService.java
  28. 7 1
      src/main/java/com/td/WaDa/game/excelcharactercreate/service/ExcelCharacterCreateServiceImpl.java
  29. 1 1
      src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateClientVo.java
  30. 2 2
      src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateSimpleVo.java
  31. 2 2
      src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateVo.java
  32. 2 1
      src/main/java/com/td/WaDa/game/excelcharacterlevel/pojo/ExcelCharacterLevel.java
  33. 1 1
      src/main/java/com/td/WaDa/game/excelcharacterlevel/vo/ExcelCharacterLevelSimpleVo.java
  34. 1 1
      src/main/java/com/td/WaDa/game/excelcharacterlevel/vo/ExcelCharacterLevelVo.java
  35. 1 1
      src/main/java/com/td/WaDa/game/exceldrop/controller/ExcelDropController.java
  36. 4 3
      src/main/java/com/td/WaDa/game/exceldrop/pojo/ExcelDrop.java
  37. 9 1
      src/main/java/com/td/WaDa/game/exceldrop/repository/ExcelDropRepository.java
  38. 10 1
      src/main/java/com/td/WaDa/game/exceldrop/service/ExcelDropService.java
  39. 54 1
      src/main/java/com/td/WaDa/game/exceldrop/service/ExcelDropServiceImpl.java
  40. 40 0
      src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropClientVo.java
  41. 3 3
      src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropSimpleVo.java
  42. 3 3
      src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropVo.java
  43. 2 2
      src/main/java/com/td/WaDa/game/excelprop/vo/ExcelPropVo.java
  44. 15 0
      src/main/java/com/td/WaDa/game/excelresources/controller/ExcelResourcesController.java
  45. 28 0
      src/main/java/com/td/WaDa/game/excelresources/pojo/ExcelResources.java
  46. 9 0
      src/main/java/com/td/WaDa/game/excelresources/repository/ExcelResourcesRepository.java
  47. 8 0
      src/main/java/com/td/WaDa/game/excelresources/service/ExcelResourcesService.java
  48. 21 0
      src/main/java/com/td/WaDa/game/excelresources/service/ExcelResourcesServiceImpl.java
  49. 23 0
      src/main/java/com/td/WaDa/game/excelresources/vo/ExcelResourcesSimpleVo.java
  50. 23 0
      src/main/java/com/td/WaDa/game/excelresources/vo/ExcelResourcesVo.java
  51. 1 1
      src/main/java/com/td/WaDa/game/excelscene/controller/ExcelSceneController.java
  52. 2 1
      src/main/java/com/td/WaDa/game/excelscene/pojo/ExcelScene.java
  53. 4 1
      src/main/java/com/td/WaDa/game/excelscene/repository/ExcelSceneRepository.java
  54. 3 1
      src/main/java/com/td/WaDa/game/excelscene/service/ExcelSceneService.java
  55. 6 1
      src/main/java/com/td/WaDa/game/excelscene/service/ExcelSceneServiceImpl.java
  56. 1 1
      src/main/java/com/td/WaDa/game/excelscene/vo/ExcelSceneSimpleVo.java
  57. 1 1
      src/main/java/com/td/WaDa/game/excelscene/vo/ExcelSceneVo.java
  58. 1 1
      src/main/java/com/td/WaDa/util/CodeDOM.java
  59. 20 5
      src/main/java/com/td/WaDa/util/ExcelDataUtil.java
  60. 1 1
      src/main/resources/application.yml

+ 2 - 0
src/main/java/com/td/WaDa/common/service/CommonService.java

@@ -21,6 +21,8 @@ public interface CommonService<V, E,T> {
 
     Result<V> get(T id);
 
+    V getVo(T id);
+
     Result<V> save(V entityVo);
 
     Result<T> delete(T id);

+ 26 - 10
src/main/java/com/td/WaDa/common/service/CommonServiceImpl.java

@@ -76,6 +76,12 @@ public class CommonServiceImpl<V, E, T> implements CommonService<V, E, T> {
         return Result.of(CopyUtil.copy(optionalE.get(), entityVoClass));
     }
 
+    @Override
+    public V getVo(T id) {
+        Optional<E> optionalE = commonRepository.findById(id);
+        return !optionalE.isPresent()?null:CopyUtil.copy(optionalE.get(), entityVoClass);
+    }
+
     @Override
     public Result<V> save(V entityVo) {
         //传进来的对象(属性可能残缺)
@@ -102,21 +108,31 @@ public class CommonServiceImpl<V, E, T> implements CommonService<V, E, T> {
                 Object fieldValue = field.get(entity);
 
                 //找出Id主键,自增的不设置
-                if (field.isAnnotationPresent(Id.class) && !field.isAnnotationPresent(GeneratedValue.class)) {
-                    if(!StringUtils.isEmpty(fieldValue)){
-                        //如果Id主键不为空,则为更新
-                        Optional<E> one = commonRepository.findById((T) fieldValue);
-                        if (one.isPresent()) {
-                            entityFull = one.get();
+                if (field.isAnnotationPresent(Id.class)) {
+                    if(!field.isAnnotationPresent(GeneratedValue.class)){
+                        if(!StringUtils.isEmpty(fieldValue)){
+                            //如果Id主键不为空,则为更新
+                            Optional<E> one = commonRepository.findById((T) fieldValue);
+                            if (one.isPresent()) {
+                                entityFull = one.get();
+                            }
+                        }else{
+                            //如果Id主键为空,则为新增
+                            fieldValue = UUIDUtil.getUUID();
+                            //set方法,第一个参数是对象
+                            field.set(entity, fieldValue);
+                            isInsert = true;
                         }
                     }else{
-                        //如果Id主键为空,则为新增
-                        fieldValue = UUIDUtil.getUUID();
-                        //set方法,第一个参数是对象
-                        field.set(entity, fieldValue);
+                        //单纯插入数据,id自增
                         isInsert = true;
                     }
+
                 }
+                //Boolean is = "createTime".equals(fieldName);
+                //if(is){
+                //    log.info(isInsert +" == "+ is+" == "+StringUtils.isEmpty(fieldValue));
+                //}
                 //如果前端不传这两个值,后台来维护创建时间、更新时间
                 if(isInsert && "createTime".equals(fieldName) && StringUtils.isEmpty(fieldValue)){
                     //先赋值给fieldValue,以免后续进行copy对象判断属性是否为忽略属性是出错

+ 39 - 0
src/main/java/com/td/WaDa/config/enums/GameEnum.java

@@ -0,0 +1,39 @@
+package com.td.WaDa.config.enums;
+
+import lombok.Getter;
+
+/**
+ *
+ * @author:slambb
+ * @date:2022/06/01
+ */
+@Getter
+public enum GameEnum {
+    PRO_POWER(0,"挖矿"),
+    PRO_INTELLIGENCE(1,"勘探"),
+    PRO_SKIlLS(2,"运输"),
+
+    //矿洞场景id
+    MINE_00(201,"矿洞入口"),
+    MINE_01(202,"矿洞一层"),
+    MINE_02(203,"矿洞二层"),
+    MINE_03(204,"矿洞三层"),
+    MINE_04(205,"矿洞最深处"),
+
+
+    //属性区间
+    ATTRIBUTE_01(60,"属性等级1"),
+    ATTRIBUTE_02(100,"属性等级2"),
+    ATTRIBUTE_03(140,"属性等级3"),
+    ATTRIBUTE_04(180,"属性等级4"),
+    ATTRIBUTE_05(220,"属性等级5"),
+    ATTRIBUTE_06(260,"属性等级6");
+
+    private Integer value;
+    private String message;
+
+    GameEnum(Integer value, String message) {
+        this.value = value;
+        this.message = message;
+    }
+}

+ 4 - 0
src/main/java/com/td/WaDa/config/enums/ResultEnum.java

@@ -50,8 +50,12 @@ public enum ResultEnum {
     PLAYER_GOODS_SEEDS_AMOUNT_ERROR(517,"土地消耗种子数量不足"),
     PLAYER_ATTRIBUTE_STRENGTH_IS_NOT(518,"用户体力不足"),
     PLAYER_GOODS_SAVE_LOCK(520,"操作繁忙,保存背包失败,稍后再试!"),
+
     ROLE_DOES_NOT_EXIST(521,"不存在角色信息!"),
     ROLE_ADD_ERROR(522,"添加角色信息异常!"),
+    EXPLORATION_INFO_ERROR(523 ,"勘探队伍异常!"),
+    EXPLORATION_ERROR(524 ,"勘探信息异常!"),
+    EXPLORATION_TIME_ERROR(523 ,"勘探时间异常!"),
     //钱包数据
     WALLET_CNT_PLAY_ERROR(601,"钱包CNT支付参数数据错误!"),
     WALLET_SNB_INSUFFICIENT_QUANTITY(602,"snb不足以支付!"),

+ 59 - 6
src/main/java/com/td/WaDa/game/comcharacters/controller/ComCharactersController.java

@@ -1,5 +1,6 @@
 package com.td.WaDa.game.comcharacters.controller;
 
+import cn.hutool.core.date.DateUtil;
 import com.td.WaDa.annotation.Decrypt;
 import com.td.WaDa.annotation.Encrypt;
 import com.td.WaDa.common.controller.*;
@@ -43,7 +44,7 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
      */
     @GetMapping("getRole")
     @Encrypt
-    public Result<List<ComCharactersClientVo>> getExcelRole(@RequestParam(value = "userId") String userId) {
+    public Result<List<ComCharactersClientVo>> getRole(@RequestParam(value = "userId") String userId) {
         //1.excel 随机拿出number 数据, todo 暂时以attri表为主
         List<ComCharactersClientVo> excelCharacter = comCharactersService.randomRoleByNumber(3);
         //2.返回给前端一个character 数据表里面
@@ -58,20 +59,72 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
      * @return
      */
     @PostMapping("addRole")
-    public Result<ComCharactersSimpleVo> addRole(@RequestParam(value = "userId") String userId,
-                               @RequestParam(value = "name") Integer roleId) {
+    public Result<ComCharactersClientVo> addRole(@RequestParam(value = "userId") String userId,
+                                                 @RequestParam(value = "roleId") Integer roleId) {
 
+        //todo  暂时roleType对应这roleId
+        //      暂时可以创建多个相同的角色
+        //拿出一个角色对应的配置数据来生成角色
         ExcelCharacterAttri excelCharacterAttri = excelCharacterAttriService.findByRoleType(roleId);
         if (excelCharacterAttri == null) {
             return Result.of(null, false, ResultEnum.ROLE_DOES_NOT_EXIST.getMessage(), ResultEnum.ROLE_DOES_NOT_EXIST.getCode());
         }
         try {
-            ComCharacters comCharacters = comCharactersService.addRole(excelCharacterAttri, userId);
-            return Result.of(CopyUtil.copy(comCharacters, ComCharactersSimpleVo.class));
-        }catch (Exception e){
+            //根据roleId 对应的数据,生成玩家数据,属性
+            ComCharactersClientVo comCharacters = comCharactersService.addRole(excelCharacterAttri, userId);
+            return Result.of(comCharacters);
+        } catch (Exception e) {
             return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR.getMessage(), ResultEnum.ROLE_ADD_ERROR.getCode());
         }
 
     }
 
+
+    /**
+     * 修改名字
+     *
+     * @param userId
+     * @return
+     */
+    @PostMapping("modifyRoleName")
+    public Result<ComCharactersSimpleVo> modifyRoleName(@RequestParam(value = "userId") String userId,
+                                                        @RequestParam(value = "id") Integer id,
+                                                        @RequestParam(value = "name") String name) {
+        try {
+            //todo  暂时roleType对应这roleId
+            ComCharactersVo comCharactersVo = comCharactersService.getVo(id);
+            if (comCharactersVo == null) {
+                return Result.of(null, false, ResultEnum.ROLE_DOES_NOT_EXIST.getMessage(), ResultEnum.ROLE_DOES_NOT_EXIST.getCode());
+            }
+            //判定是否是自己的数据
+            if(!comCharactersVo.getUserId().equals(userId)){
+                return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR.getMessage(), ResultEnum.ROLE_ADD_ERROR.getCode());
+            }
+            comCharactersVo.setName(name);
+            comCharactersVo.setUpdateTime(DateUtil.date());
+            comCharactersService.save(comCharactersVo);
+            return Result.of(CopyUtil.copy(comCharactersVo, ComCharactersSimpleVo.class));
+        } catch (Exception e) {
+            return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR.getMessage(), ResultEnum.ROLE_ADD_ERROR.getCode());
+        }
+
+    }
+
+
+    /**
+     * 列表排列顺序,根据选中职业对应属性高低排序
+     * 挖矿:力量高的排前边
+     * 勘探:智力高的排前边
+     * 运输:技巧高的排前边
+     *
+     * @param userId
+     * @return
+     */
+    @GetMapping("getRoleList")
+    @Encrypt
+    public Result<List<ComCharactersClientVo>> getRoleList(@RequestParam(value = "userId") String userId,
+    @RequestParam(value = "professional") String professional) {
+        List<ComCharactersClientVo> charactersClientVos = comCharactersService.findByProfessionalSort(userId,professional);
+        return Result.of(charactersClientVos);
+    }
 }

+ 8 - 0
src/main/java/com/td/WaDa/game/comcharacters/pojo/ComCharacters.java

@@ -21,6 +21,10 @@ public class ComCharacters implements Serializable {
 
     private String name;//角色名字
 
+    private Integer exp;//当前经验
+
+    private Integer level;//当前等级
+
     private Integer power;//力量
 
     private Integer intelligence;//智力值
@@ -35,6 +39,10 @@ public class ComCharacters implements Serializable {
 
     private String interactive;//互动事件
 
+    private Integer state;//状态 (0:正常可配置,1:交易行)
+
+    private String modelId;//记录生成的模型id,如1|2|3格式
+
     private Date createTime;//
 
     private Date updateTime;//

+ 11 - 0
src/main/java/com/td/WaDa/game/comcharacters/repository/ComCharactersRepository.java

@@ -2,8 +2,19 @@ package com.td.WaDa.game.comcharacters.repository;
 
 import com.td.WaDa.common.repository.*;
 import com.td.WaDa.game.comcharacters.pojo.ComCharacters;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Optional;
+
 @Repository
 public interface ComCharactersRepository extends CommonRepository<ComCharacters, Integer>  {
+
+    Optional<ComCharacters> findByRoleId(Integer roleId);
+
+    List<ComCharacters> findByUserIdAndProfessional(String userId,String professional, Sort sort);
+
+    List<ComCharacters> findByIdIn(Integer[] ids, Sort sort);
+
 }

+ 7 - 1
src/main/java/com/td/WaDa/game/comcharacters/service/ComCharactersService.java

@@ -13,5 +13,11 @@ public interface ComCharactersService extends CommonService<ComCharactersVo, Com
 
     public List<ComCharactersClientVo> randomRoleByNumber(Integer number);
 
-    public ComCharacters addRole(ExcelCharacterAttri excelCharacterAttri, String userId);
+    public List<ComCharactersClientVo> findByProfessionalSort(String userId,String professional);
+
+    public ComCharactersClientVo addRole(ExcelCharacterAttri excelCharacterAttri, String userId);
+
+    public ComCharacters findByRoleId(Integer roleId);
+
+    public List<ComCharacters> findByRoleIdIn(Integer[] ids);
 }

+ 63 - 25
src/main/java/com/td/WaDa/game/comcharacters/service/ComCharactersServiceImpl.java

@@ -1,6 +1,8 @@
 package com.td.WaDa.game.comcharacters.service;
 
+import cn.hutool.core.date.DateUtil;
 import com.td.WaDa.common.service.*;
+import com.td.WaDa.config.enums.GameEnum;
 import com.td.WaDa.game.comcharacters.pojo.ComCharacters;
 import com.td.WaDa.game.comcharacters.vo.ComCharactersClientVo;
 import com.td.WaDa.game.comcharacters.vo.ComCharactersVo;
@@ -9,33 +11,27 @@ import com.td.WaDa.game.excelcharacterattri.pojo.ExcelCharacterAttri;
 import com.td.WaDa.game.excelcharacterattri.repository.ExcelCharacterAttriRepository;
 import com.td.WaDa.game.excelcharacterattri.service.ExcelCharacterAttriService;
 import com.td.WaDa.game.excelcharactercreate.pojo.ExcelCharacterCreate;
-import com.td.WaDa.game.excelcharactercreate.repository.ExcelCharacterCreateRepository;
 import com.td.WaDa.game.excelcharactercreate.service.ExcelCharacterCreateService;
 import com.td.WaDa.game.excelcharactercreate.vo.ExcelCharacterCreateClientVo;
-import com.td.WaDa.game.excelcharactercreate.vo.ExcelCharacterCreateVo;
-import com.td.WaDa.game.excelcharacterlevel.service.ExcelCharacterLevelService;
 import com.td.WaDa.util.CopyUtil;
-import com.td.WaDa.util.DoubleUtil;
-import com.td.WaDa.util.UUIDUtil;
-import org.aspectj.weaver.patterns.TypePatternQuestions;
 import org.hibernate.query.criteria.internal.CriteriaBuilderImpl;
 import org.hibernate.query.criteria.internal.expression.function.BasicFunctionExpression;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.Predicate;
 import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
 @Transactional
-public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo, ComCharacters, Integer> implements ComCharactersService{
+public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo, ComCharacters, Integer> implements ComCharactersService {
 
     @PersistenceContext
     private EntityManager em;
@@ -64,22 +60,22 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
             query.orderBy(cb.desc(e));
             return null;
         };
-        //1.获取了number 数量的 roleType
+        //1.获取了number 数量的 roleType todo 可加入内存
         List<ExcelCharacterAttri> excelCharacterAttrList = excelCharacterAttriRepository.findAll(specification, PageRequest.of(0, number)).toList();
         //2.根据roleType分类
         List<ComCharactersClientVo> characters = new ArrayList<>();
         //3.查询role表全部数据
-        List<Integer> roleIds = excelCharacterAttrList.stream().map(e->e.getRoleType()).collect(Collectors.toList());
-        List<ExcelCharacterCreate> excelCharacterCreates =  excelCharacterCreateService.findRoleIdInByDESC(roleIds);
+        List<Integer> roleIds = excelCharacterAttrList.stream().map(e -> e.getRoleType()).collect(Collectors.toList());
+        //List<ExcelCharacterCreate> excelCharacterCreates =  excelCharacterCreateService.findRoleIdInByDESC(roleIds);
 
-        Map<Integer, List<ExcelCharacterCreate>> listMap = excelCharacterCreates.stream().collect(Collectors.groupingBy(ExcelCharacterCreate::getRoleId));
+        //Map<Integer, List<ExcelCharacterCreate>> listMap = excelCharacterCreates.stream().collect(Collectors.groupingBy(ExcelCharacterCreate::getRoleId));
         for (ExcelCharacterAttri excelCharacterAttr : excelCharacterAttrList) {
             ComCharactersClientVo character = new ComCharactersClientVo();
-
+            character.setId(excelCharacterAttr.getId());
             character.setRoleId(excelCharacterAttr.getRoleType());
             character.setRoleType(excelCharacterAttr.getRoleType());
-            List<ExcelCharacterCreate> subExcelCharacterList = listMap.get(excelCharacterAttr.getRoleType());
-            character.setSubCreateClientList(CopyUtil.copyList(subExcelCharacterList,ExcelCharacterCreateClientVo.class));
+            //List<ExcelCharacterCreate> subExcelCharacterList = listMap.get(excelCharacterAttr.getRoleType());
+            //character.setSubCreateClientList(CopyUtil.copyList(subExcelCharacterList,ExcelCharacterCreateClientVo.class));
             characters.add(character);
         }
         return characters;
@@ -87,15 +83,14 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ComCharacters addRole(ExcelCharacterAttri excelCharacterAttri,String userId) {
+    public ComCharactersClientVo addRole(ExcelCharacterAttri _attr, String userId) {
 
-        Integer roleType = excelCharacterAttri.getRoleType();//todo 暂时用属性表里面的roleType
+        Integer roleType = _attr.getRoleType();//todo 暂时用属性表里面的roleType
         //1.添加一个角色
         ComCharacters comCharacters = new ComCharacters();
         comCharacters.setUserId(userId);
-        comCharacters.setRoleId(roleType);
+        comCharacters.setRoleId(roleType); //todo  暂时是roleType对应roleId
         comCharacters.setRoleType(roleType);
-        ExcelCharacterAttri _attr = excelCharacterAttriService.findByRoleType(roleType);
         //力量
         Double _powerDouble = new Random().nextDouble() * (_attr.getStartPowerLimitUpper() - _attr.getStartPowerLimitLower()) + _attr.getStartPowerLimitLower();
         comCharacters.setPower(_powerDouble.intValue());
@@ -105,20 +100,63 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
         //技巧
         Double _skillsDouble = new Random().nextDouble() * (_attr.getStartSkillLimitUpper() - _attr.getStartSkillLimitLower()) + _attr.getStartSkillLimitLower();
         comCharacters.setSkills(_skillsDouble.intValue());
-        Double _random = new Random().nextDouble()*_attr.getRandomAttr();
+        Double _random = new Random().nextDouble() * _attr.getRandomAttr();
         comCharacters.setRandom(_random.intValue());
-        String[] itemArray = _attr.getProfessional().split("|");
+        String[] itemArray = _attr.getProfessional().split("\\|");
 
-        int a= (int) Math.floor(new Random().nextDouble()*itemArray.length);
+        int a = (int) Math.floor(new Random().nextDouble() * itemArray.length);
         comCharacters.setProfessional(itemArray[a]);
 
         comCharacters.setAction(_attr.getAction());
 
         comCharacters.setInteractive(_attr.getInteractive());
-
+        comCharacters.setState(0);
+
+        //随机生成一套model,todo 暂时用固定5个
+        List<Integer> modelId = new ArrayList<>();
+        modelId.add(1);
+        modelId.add(2);
+        modelId.add(3);
+        modelId.add(4);
+        modelId.add(5);
+        List<ExcelCharacterCreate> _list = excelCharacterCreateService.findIdInByDESC(modelId);
+        comCharacters.setModelId("1|2|3|4|5");
         //todo 需要扣除对应金币
 
+
+        comCharacters.setCreateTime(DateUtil.date());
+        comCharacters.setUpdateTime(DateUtil.date());
         comCharactersRepository.save(comCharacters);
-        return comCharacters;
+
+        ComCharactersClientVo clientVo = CopyUtil.copy(comCharacters, ComCharactersClientVo.class);
+        clientVo.setSubCreateClientList(CopyUtil.copyList(_list,ExcelCharacterCreateClientVo.class));
+        return clientVo;
+    }
+
+
+    @Override
+    public ComCharacters findByRoleId(Integer roleId) {
+        return comCharactersRepository.findByRoleId(roleId).orElse(null);
+    }
+
+
+    @Override
+    public List<ComCharactersClientVo> findByProfessionalSort(String userId, String professional) {
+        String _properties = "power";//默认power排序
+        if (professional.equals(GameEnum.PRO_POWER.getValue())) {
+            _properties = "power";
+        } else if (professional.equals(GameEnum.PRO_INTELLIGENCE.getValue())) {
+            _properties = "intelligence";
+        } else if (professional.equals(GameEnum.PRO_SKIlLS.getValue())) {
+            _properties = "skills";
+        }
+        List<ComCharacters> comCharactersList = comCharactersRepository.findByUserIdAndProfessional(userId, professional, Sort.by(Sort.Direction.DESC, _properties));
+        return CopyUtil.copyList(comCharactersList, ComCharactersClientVo.class);
+    }
+
+
+    @Override
+    public List<ComCharacters> findByRoleIdIn(Integer[] ids) {
+        return comCharactersRepository.findByIdIn(ids,Sort.by(Sort.Direction.ASC, "id"));
     }
 }

+ 9 - 1
src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersClientVo.java

@@ -9,7 +9,7 @@ import java.util.List;
 
 @Data
 public class ComCharactersClientVo implements Serializable {
-    //private Integer id;//该角色的id
+    private Integer id;//该角色的id
 
     //private String userId;//创建该角色的用户id
 
@@ -21,6 +21,10 @@ public class ComCharactersClientVo implements Serializable {
 
     private Integer power;//力量
 
+    private Integer exp;//当前经验
+
+    private Integer level;//当前等级
+
     private Integer intelligence;//智力值
 
     private Integer skills;//技巧值
@@ -33,6 +37,10 @@ public class ComCharactersClientVo implements Serializable {
 
     private String interactive;//互动事件
 
+    private Integer state;//状态 (0:正常可配置,1:交易行)
+
+    //private String modelId;//记录生成的模型id,如1|2|3格式
+
     private List<ExcelCharacterCreateClientVo> subCreateClientList;
 
     //private Date createTime;//

+ 9 - 1
src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersSimpleVo.java

@@ -8,7 +8,7 @@ import java.util.Date;
 public class ComCharactersSimpleVo implements Serializable {
     private Integer id;//该角色的id
 
-    private String userId;//创建该角色的用户id
+    //private String userId;//创建该角色的用户id
 
     private Integer roleId;//角色生成表 里面对应的id序号
 
@@ -16,6 +16,10 @@ public class ComCharactersSimpleVo implements Serializable {
 
     private String name;//角色名字
 
+    private Integer exp;//当前经验
+
+    private Integer level;//当前等级
+
     private Integer power;//力量
 
     private Integer intelligence;//智力值
@@ -30,6 +34,10 @@ public class ComCharactersSimpleVo implements Serializable {
 
     private String interactive;//互动事件
 
+    private Integer state;//状态 (0:正常可配置,1:交易行)
+
+    private String modelId;//记录生成的模型id,如1|2|3格式
+
     private Date createTime;//
 
     private Date updateTime;//

+ 8 - 0
src/main/java/com/td/WaDa/game/comcharacters/vo/ComCharactersVo.java

@@ -16,6 +16,10 @@ public class ComCharactersVo extends PageCondition implements Serializable {
 
     private String name;//角色名字
 
+    private Integer exp;//当前经验
+
+    private Integer level;//当前等级
+
     private Integer power;//力量
 
     private Integer intelligence;//智力值
@@ -30,6 +34,10 @@ public class ComCharactersVo extends PageCondition implements Serializable {
 
     private String interactive;//互动事件
 
+    private Integer state;//状态 (0:正常可配置,1:交易行)
+
+    private String modelId;//记录生成的模型id,如1|2|3格式
+
     private Date createTime;//
 
     private Date updateTime;//

+ 143 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/controller/ComCharactersDiscoveryController.java

@@ -0,0 +1,143 @@
+package com.td.WaDa.game.comcharactersdiscovery.controller;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import com.td.WaDa.annotation.Decrypt;
+import com.td.WaDa.annotation.Encrypt;
+import com.td.WaDa.common.controller.*;
+import com.td.WaDa.common.pojo.PageInfo;
+import com.td.WaDa.common.pojo.Result;
+import com.td.WaDa.config.enums.ResultEnum;
+import com.td.WaDa.game.comcharacters.service.ComCharactersService;
+import com.td.WaDa.game.comcharacters.vo.ComCharactersVo;
+import com.td.WaDa.game.comcharactersdiscovery.pojo.ComCharactersDiscovery;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryClientVo;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryVo;
+import com.td.WaDa.game.comcharactersdiscovery.service.ComCharactersDiscoveryService;
+import com.td.WaDa.util.CopyUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@RestController
+@RequestMapping("/game/comCharactersDiscovery/")
+public class ComCharactersDiscoveryController extends CommonController<ComCharactersDiscoveryVo, ComCharactersDiscovery, Integer> {
+    @Autowired
+    private ComCharactersDiscoveryService comCharactersDiscoveryService;
+    @Autowired
+    private ComCharactersService comCharactersService;
+
+
+    /**
+     * 玩家选择一个添加角色,添加工作
+     *
+     * @param userId
+     * @param roleId
+     * @param sceneId
+     * @return
+     */
+    @PostMapping("addExplorationRole")
+    @Decrypt
+    @Encrypt
+    public Result<ComCharactersDiscoveryClientVo> addExplorationRole(@RequestParam(value = "userId") String userId,
+                                                                     @RequestParam(value = "roleId") Integer roleId,
+                                                                     @RequestParam(value = "sceneId") Integer sceneId) {
+        try {
+            //todo  暂时roleType对应这roleId
+            //      暂时可以创建多个相同的角色
+            //拿出一个角色对应的配置数据来生成角色
+            ComCharactersVo comCharactersVo = comCharactersService.getVo(roleId);
+            if (comCharactersVo == null || !comCharactersVo.getUserId().equals(userId)) {
+                return Result.of(null, false, ResultEnum.ROLE_DOES_NOT_EXIST.getMessage(), ResultEnum.ROLE_DOES_NOT_EXIST.getCode());
+            }
+            //根据roleId 对应的数据,生成玩家数据,属性
+            ComCharactersDiscoveryVo characterDiscoveryVo = comCharactersDiscoveryService.addDiscoverRole(comCharactersVo, sceneId);
+            return Result.of(CopyUtil.copy(characterDiscoveryVo, ComCharactersDiscoveryClientVo.class));
+        } catch (Exception e) {
+            return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR.getMessage(), ResultEnum.ROLE_ADD_ERROR.getCode());
+        }
+
+    }
+
+
+    /**
+     * 返回一个挖矿队伍列表
+     *
+     * @param userId
+     * @return
+     */
+    @GetMapping("getExplorationList")
+    @Encrypt
+    public Result<PageInfo<ComCharactersDiscoveryClientVo>> getExplorationList(@RequestParam(value = "userId") String userId,
+                                                                               @RequestParam(value = "page", defaultValue = "0") Integer page,
+                                                                               @RequestParam(value = "limit", defaultValue = "3") Integer limit) {
+        ComCharactersDiscoveryVo characterDiscoveryVo = new ComCharactersDiscoveryVo();
+        characterDiscoveryVo.setUserId(userId);
+        characterDiscoveryVo.setPage(page + 1);
+        characterDiscoveryVo.setRows(limit);
+        characterDiscoveryVo.setSidx("desc");
+        characterDiscoveryVo.setSord("isWork");
+        PageInfo<ComCharactersDiscoveryClientVo> clientVoList = comCharactersDiscoveryService.findDiscoverClientVo(characterDiscoveryVo);
+        return Result.of(clientVoList);
+    }
+
+    /**
+     * 根据探索队伍的id,更新当前探索的状态
+     * 用于处理中途显示奖励之类的操作
+     * @param userId
+     * @param explorationId
+     * @return
+     */
+    @PostMapping("updateState")
+    @Decrypt
+    @Encrypt
+    public Result<ComCharactersDiscoveryClientVo> updateState(@RequestParam(value = "userId") String userId,
+                                                              @RequestParam(value = "explorationId") Integer explorationId) {
+        try {
+            //查看是否存在勘探数据
+            ComCharactersDiscoveryVo discoveryVo = comCharactersDiscoveryService.getVo(explorationId);
+            if (discoveryVo == null || !discoveryVo.getUserId().equals(userId)) {
+                return Result.of(null, false, ResultEnum.EXPLORATION_INFO_ERROR.getMessage(), ResultEnum.EXPLORATION_INFO_ERROR.getCode());
+            }
+            //开始工作时间 + 工作天数
+            Date endDate = DateUtil.offsetDay(discoveryVo.getWorkStart(), discoveryVo.getWorkDay());
+            //当前时间与结束时间的毫秒
+            Long dif = DateUtil.between(DateUtil.date(), endDate, DateUnit.MS);
+            if (dif > 0) {
+                //return Result.of(null, false, ResultEnum.EXPLORATION_TIME_ERROR.getMessage(), ResultEnum.EXPLORATION_TIME_ERROR.getCode());
+            }
+            //计算收益
+            return Result.of( comCharactersDiscoveryService.explorationState(discoveryVo));
+        } catch (Exception e) {
+            return Result.of(null, false, ResultEnum.EXPLORATION_ERROR.getMessage(), ResultEnum.EXPLORATION_ERROR.getCode());
+        }
+
+    }
+
+    @PostMapping("explorationComplete")
+    @Decrypt
+    @Encrypt
+    public Result<ComCharactersDiscoveryClientVo> explorationComplete(@RequestParam(value = "userId") String userId,
+                                                                      @RequestParam(value = "explorationId") Integer explorationId) {
+        try {
+            //查看是否存在勘探数据
+            ComCharactersDiscoveryVo discoveryVo = comCharactersDiscoveryService.getVo(explorationId);
+            if (discoveryVo == null || !discoveryVo.getUserId().equals(userId)) {
+                return Result.of(null, false, ResultEnum.EXPLORATION_INFO_ERROR.getMessage(), ResultEnum.EXPLORATION_INFO_ERROR.getCode());
+            }
+            //开始工作时间 + 工作天数
+            Date endDate = DateUtil.offsetDay(discoveryVo.getWorkStart(), discoveryVo.getWorkDay());
+            //当前时间与结束时间的毫秒
+            Long dif = DateUtil.between(DateUtil.date(), endDate, DateUnit.MS);
+            if (dif > 0) {
+                //return Result.of(null, false, ResultEnum.EXPLORATION_TIME_ERROR.getMessage(), ResultEnum.EXPLORATION_TIME_ERROR.getCode());
+            }
+            //计算收益
+            return Result.of( comCharactersDiscoveryService.explorationComplete(discoveryVo));
+        } catch (Exception e) {
+            return Result.of(null, false, ResultEnum.EXPLORATION_ERROR.getMessage(), ResultEnum.EXPLORATION_ERROR.getCode());
+        }
+
+    }
+}

+ 42 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/pojo/ComCharactersDiscovery.java

@@ -0,0 +1,42 @@
+package com.td.WaDa.game.comcharactersdiscovery.pojo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "com_characters_discovery")
+@Data
+public class ComCharactersDiscovery implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
+
+    private String roleId;//人物id排序字符串,比如:1|2|3
+
+    private String userId;//用户id
+
+    private String name;//工作名字
+
+    private Integer isWork;//是否工作 0: 工作中,1:工作完成
+
+    private Integer workId;//工作的id
+
+    private Date workStart;//开始时间
+
+    private Integer workDay;//探索期
+
+    private String workFlag;//每次探索生成一个唯一标识
+
+    private Integer discoverLevel;//探索级别
+
+    private Integer sceneId;//当前场景Id
+
+    private String note;//描述
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 14 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/repository/ComCharactersDiscoveryRepository.java

@@ -0,0 +1,14 @@
+package com.td.WaDa.game.comcharactersdiscovery.repository;
+
+import com.td.WaDa.common.repository.*;
+import com.td.WaDa.game.comcharactersdiscovery.pojo.ComCharactersDiscovery;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface ComCharactersDiscoveryRepository extends CommonRepository<ComCharactersDiscovery, Integer> {
+
+    Optional<ComCharactersDiscovery> findByUserIdAndSceneId(String userId, Integer sceneId);
+
+}

+ 20 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/service/ComCharactersDiscoveryService.java

@@ -0,0 +1,20 @@
+package com.td.WaDa.game.comcharactersdiscovery.service;
+
+import com.td.WaDa.common.pojo.PageInfo;
+import com.td.WaDa.common.service.*;
+import com.td.WaDa.game.comcharacters.vo.ComCharactersClientVo;
+import com.td.WaDa.game.comcharacters.vo.ComCharactersVo;
+import com.td.WaDa.game.comcharactersdiscovery.pojo.ComCharactersDiscovery;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryClientVo;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryVo;
+
+public interface ComCharactersDiscoveryService extends CommonService<ComCharactersDiscoveryVo, ComCharactersDiscovery, Integer> {
+
+    ComCharactersDiscoveryVo addDiscoverRole(ComCharactersVo comCharactersVo, Integer sceneType);
+
+    PageInfo<ComCharactersDiscoveryClientVo> findDiscoverClientVo(ComCharactersDiscoveryVo charactersDiscoveryVo);
+
+    ComCharactersDiscoveryClientVo explorationState(ComCharactersDiscoveryVo discoveryVo);
+
+    ComCharactersDiscoveryClientVo explorationComplete(ComCharactersDiscoveryVo discoveryVo);
+}

+ 422 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/service/ComCharactersDiscoveryServiceImpl.java

@@ -0,0 +1,422 @@
+package com.td.WaDa.game.comcharactersdiscovery.service;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
+import com.td.WaDa.common.pojo.PageInfo;
+import com.td.WaDa.common.service.*;
+import com.td.WaDa.config.enums.GameEnum;
+import com.td.WaDa.config.enums.ResultEnum;
+import com.td.WaDa.game.comcharacters.pojo.ComCharacters;
+import com.td.WaDa.game.comcharacters.service.ComCharactersService;
+import com.td.WaDa.game.comcharacters.vo.ComCharactersClientVo;
+import com.td.WaDa.game.comcharacters.vo.ComCharactersVo;
+import com.td.WaDa.game.comcharactersdiscovery.pojo.ComCharactersDiscovery;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryClientVo;
+import com.td.WaDa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryVo;
+import com.td.WaDa.game.comcharactersdiscovery.repository.ComCharactersDiscoveryRepository;
+import com.td.WaDa.game.exceldrop.pojo.ExcelDrop;
+import com.td.WaDa.game.exceldrop.service.ExcelDropService;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropClientVo;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropSimpleVo;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
+import com.td.WaDa.game.excelscene.pojo.ExcelScene;
+import com.td.WaDa.game.excelscene.service.ExcelSceneService;
+import com.td.WaDa.game.excelscene.vo.ExcelSceneVo;
+import com.td.WaDa.util.CopyUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import java.io.IOException;
+import java.util.*;
+
+@Service
+@Transactional
+@Slf4j
+public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComCharactersDiscoveryVo, ComCharactersDiscovery, Integer> implements ComCharactersDiscoveryService {
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private ComCharactersDiscoveryRepository comCharactersDiscoveryRepository;
+
+    @Autowired
+    private ComCharactersService comCharactersService;
+
+    @Autowired
+    private ExcelDropService excelDropService;
+
+    @Autowired
+    private ExcelSceneService excelSceneService;
+
+
+    @Override
+    public ComCharactersDiscoveryVo addDiscoverRole(ComCharactersVo charactersVo, Integer sceneId) {
+
+        ComCharactersDiscovery comCharacterDiscovery =
+                comCharactersDiscoveryRepository.findByUserIdAndSceneId(charactersVo.getUserId(), sceneId).orElse(null);
+        if (comCharacterDiscovery == null) {
+            comCharacterDiscovery = new ComCharactersDiscovery();
+            //新建一个队伍
+            comCharacterDiscovery.setUserId(charactersVo.getUserId());
+            comCharacterDiscovery.setRoleId(charactersVo.getId().toString());
+            comCharacterDiscovery.setName("1");
+            comCharacterDiscovery.setIsWork(0);
+            comCharacterDiscovery.setWorkStart(DateUtil.date());
+            comCharacterDiscovery.setWorkDay(1);//工作时间,天
+            comCharacterDiscovery.setWorkFlag("1");
+            comCharacterDiscovery.setDiscoverLevel(1); //默认探索第一层场景
+            comCharacterDiscovery.setSceneId(sceneId); // 比如矿洞id对应的入口是201
+            comCharacterDiscovery.setNote("工作队伍");
+            comCharacterDiscovery.setCreateTime(DateUtil.date());
+            comCharacterDiscovery.setUpdateTime(DateUtil.date());
+        } else {
+            String[] roleId = comCharacterDiscovery.getRoleId().split("\\|");
+            for (int i = 0; i < roleId.length; i++) {
+                if (roleId[i].equals(charactersVo.getId().toString())) {
+                    //不能添加相同的角色,直接返回一个查询的
+                    return CopyUtil.copy(comCharacterDiscovery, ComCharactersDiscoveryVo.class);
+                }
+            }
+            //再旧的基础上添加一个角色
+            String _roleId = comCharacterDiscovery.getRoleId() + "|" + charactersVo.getId().toString();
+            comCharacterDiscovery.setRoleId(_roleId);
+            comCharacterDiscovery.setUpdateTime(DateUtil.date());
+
+        }
+        ComCharactersDiscoveryVo comCharacterDiscoveryVo = CopyUtil.copy(comCharacterDiscovery, ComCharactersDiscoveryVo.class);
+        return super.save(comCharacterDiscoveryVo).getData();
+    }
+
+
+    @Override
+    public PageInfo<ComCharactersDiscoveryClientVo> findDiscoverClientVo(ComCharactersDiscoveryVo characterDiscoveryVo) {
+        PageInfo<ComCharactersDiscoveryVo> comCharactersDiscoveryVo = super.page(characterDiscoveryVo).getData();
+        //获取到探索队伍的数据
+        List<ComCharactersDiscoveryVo> _listVo = comCharactersDiscoveryVo.getRows();
+        List<ComCharactersDiscoveryClientVo> _discoveryClientVos = new ArrayList<>();
+        for (ComCharactersDiscoveryVo discoveryVo : _listVo) {
+            String[] roleId = discoveryVo.getRoleId().split("\\|");
+            //角色list
+            List<ComCharactersClientVo> comCharactersClientVos = new ArrayList<>();
+            for (int i = 0; i < roleId.length; i++) {
+                ComCharactersVo comCharactersVo = comCharactersService.getVo(Integer.parseInt(roleId[i]));
+                ComCharactersClientVo comCharactersClientVo = CopyUtil.copy(comCharactersVo, ComCharactersClientVo.class);
+                //List<ExcelCharacterCreate> subExcelCharacterList = listMap.get(excelCharacterAttr.getRoleType());
+                //character.setSubCreateClientList(CopyUtil.copyList(subExcelCharacterList,ExcelCharacterCreateClientVo.class));
+                comCharactersClientVos.add(comCharactersClientVo);
+            }
+            ComCharactersDiscoveryClientVo comCharacterDiscoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
+            //开始工作时间 + 工作天数
+            Date endDate = DateUtil.offsetDay(comCharacterDiscoveryClientVo.getWorkStart(), comCharacterDiscoveryClientVo.getWorkDay());
+            //当前时间与结束时间的毫秒
+            Long dif = DateUtil.between(DateUtil.date(), endDate, DateUnit.MS);
+            //小于等于零即完成
+            comCharacterDiscoveryClientVo.setWorkMill(dif);
+            comCharacterDiscoveryClientVo.setSubCharacters(comCharactersClientVos);
+            _discoveryClientVos.add(comCharacterDiscoveryClientVo);
+        }
+
+        PageInfo<ComCharactersDiscoveryClientVo> backPageInfo = new PageInfo<>();
+        backPageInfo.setRows(_discoveryClientVos);
+        backPageInfo.setPage(comCharactersDiscoveryVo.getPage());
+        backPageInfo.setPageSize(comCharactersDiscoveryVo.getPageSize());
+        backPageInfo.setTotal(comCharactersDiscoveryVo.getTotal());
+        backPageInfo.setRecords(comCharactersDiscoveryVo.getRecords());
+        backPageInfo.setSidx(comCharactersDiscoveryVo.getSidx());
+        backPageInfo.setSord(comCharactersDiscoveryVo.getSord());
+        return backPageInfo;
+    }
+
+    @Override
+    public ComCharactersDiscoveryClientVo explorationState(ComCharactersDiscoveryVo discoveryVo) {
+        //记录当前的产出奖励
+        List<ExcelDropClientVo> outExcelDrops = new ArrayList<>();
+        //工作开始后到现在的 当前的秒数
+        Long difSecond = DateUtil.between(discoveryVo.getWorkStart(), DateUtil.date(), DateUnit.SECOND);
+        Integer outTransUpperLimit = 0;
+
+
+        //todo 根据场景id获取当前场景配置 后面处理缓存,提高速度
+        //主场景id
+        ExcelScene excelScene = excelSceneService.findBySceneId(discoveryVo.getSceneId());
+        //当前场景层级对应的物品
+        Integer[] _dropIds = (Integer[]) Arrays.stream(excelScene.getSceneEvent().split("\\|")).map(Integer::parseInt).toArray();
+        List<ExcelDrop> excelDrops = excelDropService.getListByIds(_dropIds);
+        List<ExcelDropClientVo> dropClientVos = CopyUtil.copyList(excelDrops, ExcelDropClientVo.class);
+
+        //当前探索队伍
+        String[] roleId = discoveryVo.getRoleId().split("\\|");
+        Integer[] _roleIds = (Integer[]) Arrays.stream(roleId).map(Integer::parseInt).toArray();
+
+        //角色list
+        List<ComCharactersClientVo> comCharactersClientVos = new ArrayList<>();
+
+
+        //先找出三个职业对象
+        ComCharactersVo powerChar = null, intelliChar = null, skillChar = null;
+        List<ComCharacters> characters = comCharactersService.findByRoleIdIn(_roleIds);
+        for (int i = 0; i < characters.size(); i++) {
+            ComCharactersVo comCharactersVo = CopyUtil.copy(characters,ComCharactersVo.class); //comCharactersService.getVo(Integer.parseInt(roleId[i]));
+            //根据当前角色的职业计算
+            Integer _professional = Integer.parseInt(comCharactersVo.getProfessional());
+            if (_professional.equals(GameEnum.PRO_POWER.getValue())) {
+                skillChar = comCharactersVo;
+                //计算当前运输格数,即获取到物品的上限
+                //场景的最低运输数量
+                Integer _selfLimit = getLimitSkills(comCharactersVo.getSkills());
+                Integer _sceneLimit = excelScene.getAmount();
+                outTransUpperLimit = _selfLimit > _sceneLimit ? _selfLimit : _sceneLimit;
+            } else if (_professional.equals(GameEnum.PRO_POWER.getValue())) {
+                powerChar = comCharactersVo;
+            } else if (_professional.equals(GameEnum.PRO_INTELLIGENCE.getValue())) {
+                intelliChar = comCharactersVo;
+            }
+            ComCharactersClientVo comCharactersClientVo = CopyUtil.copy(comCharactersVo, ComCharactersClientVo.class);
+            comCharactersClientVos.add(comCharactersClientVo);
+        }
+        if (powerChar != null) {
+            //  每3秒执行一次挖矿动作。根据属性数值概率,获得收益
+            //  矿工有休息动作,休息时间3秒
+            // 勘探:
+            Integer _power = powerChar.getPower();
+            int _count = (int) Math.floor(difSecond / 3); // 一共执行的工作次数和休息
+            log.info("执行的工作次数:" + _count);
+            //按次数执行奖励
+            for (int j = 0; j < _count; j++) {
+                //采集x4+休息x1
+                if (_count % 5 != 0) {
+                    //工作,并且奖励物品
+                    if (NumberUtil.compare(new Random().nextDouble(), getRatioByPower(_power)) > 0) {
+                        //判断是否达到获取物品上限,todo 目前暂时最多对应30
+                        if (j < 30) {
+                            //ExcelDrop excelDrop = excelDropService.randomGetDropBySceneId(141);
+                            int index = (int) (Math.random() * dropClientVos.size());
+                            ExcelDropClientVo _clientVo = dropClientVos.get(index);
+                            outExcelDrops.add(_clientVo);
+                        }
+                    }
+                }
+            }
+        }
+        if (intelliChar != null) {
+            //勘测地形,用于进入下层场景的职业
+            //每15秒执行一次勘探。根据属性数值概率,前往下层洞穴
+            //洞穴影响矿石类型产出,最后一层不用再计算概率
+            if (!discoveryVo.getDiscoverLevel().equals(GameEnum.MINE_04.getValue())) {
+                Integer _intelligence = intelliChar.getIntelligence();
+                int _count = (int) Math.floor(difSecond / 15); // 一共执行勘探的次数
+                //按次数执行奖励
+                for (int j = 0; j < _count; j++) {
+                    //计算是否进入下一层,最底层就不再判断
+                    double _nextRatio = gotoNextSceneRatio(discoveryVo.getDiscoverLevel(), _intelligence);
+                    if (NumberUtil.compare(new Random().nextDouble(), _nextRatio) > 0) {
+                        //todo 切换关卡的奖励物品
+                        Integer _currentLevel = discoveryVo.getDiscoverLevel() + 1;
+                        discoveryVo.setDiscoverLevel(_currentLevel);
+                        super.save(discoveryVo); // 更新数据
+                        //切换场景id
+                        int _levelId = getSceneIdByLevel(_currentLevel);
+                        if (_levelId != 0) {
+                            //切换逻辑后,重新设置奖励列表
+                            excelScene = excelSceneService.findBySceneId(_levelId);
+                            _dropIds = (Integer[]) Arrays.stream(excelScene.getSceneEvent().split("\\|")).map(Integer::parseInt).toArray();
+                            excelDrops = excelDropService.getListByIds(_dropIds);
+                            dropClientVos = CopyUtil.copyList(excelDrops, ExcelDropClientVo.class);
+                        }
+                    }
+                }
+            }
+        }
+        //完结后三个分别增加经验
+        //收获经验 todo 处理人物升级等
+        Integer _exp = powerChar.getExp() + 500;
+        powerChar.setExp(_exp);
+        comCharactersService.save(powerChar);
+
+        Integer _exp3 = intelliChar.getExp() + 500;
+        intelliChar.setExp(_exp3);
+        comCharactersService.save(intelliChar);
+
+        Integer _exp2 = skillChar.getExp() + 500;
+        skillChar.setExp(_exp2);
+        comCharactersService.save(skillChar);
+
+
+        ComCharactersDiscoveryClientVo discoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
+
+        discoveryClientVo.setSubCharacters(comCharactersClientVos);//当前职业
+        //输出限制
+        discoveryClientVo.setSubDrops(outExcelDrops.subList(0, outTransUpperLimit));//当前产出物品
+        //当前奖励的物品
+        discoveryClientVo.setSubRewardDrops(dropClientVos);
+        return discoveryClientVo;
+    }
+
+    /**
+     * 计算收益
+     *
+     * @return
+     */
+    @Override
+    public ComCharactersDiscoveryClientVo explorationComplete(ComCharactersDiscoveryVo discoveryVo) {
+
+        ComCharactersDiscoveryClientVo discoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
+        String[] roleId = discoveryVo.getRoleId().split("\\|");
+        //角色list
+        List<ComCharactersClientVo> comCharactersClientVos = new ArrayList<>();
+        for (int i = 0; i < roleId.length; i++) {
+            ComCharactersVo comCharactersVo = comCharactersService.getVo(Integer.parseInt(roleId[i]));
+            //收获经验
+            Integer _exp = comCharactersVo.getExp() + 500;
+            comCharactersVo.setExp(_exp);
+            comCharactersService.save(comCharactersVo);
+
+            ComCharactersClientVo comCharactersClientVo = CopyUtil.copy(comCharactersVo, ComCharactersClientVo.class);
+            comCharactersClientVos.add(comCharactersClientVo);
+        }
+        discoveryClientVo.setSubCharacters(comCharactersClientVos);
+
+        //discoveryVo.
+        //1.计算挖矿(其他伐木待定)
+        // 完成一次流程
+
+        //2.勘探场景
+        //3、
+
+        return discoveryClientVo;
+    }
+
+
+    private double getRatioByPower(Integer value) {
+        double _ratio = 0d;
+        if (value >= GameEnum.ATTRIBUTE_01.getValue() && value < GameEnum.ATTRIBUTE_02.getValue()) {
+            //60~100
+            _ratio = 0.004;
+        } else if (value < GameEnum.ATTRIBUTE_03.getValue()) {
+            //100~140
+            _ratio = 0.006;
+        } else if (value < GameEnum.ATTRIBUTE_04.getValue()) {
+            //140~180
+            _ratio = 0.01;
+        } else if (value < GameEnum.ATTRIBUTE_05.getValue()) {
+            //180~220
+            _ratio = 0.015;
+        } else if (value < GameEnum.ATTRIBUTE_06.getValue()) {
+            //220~260
+            _ratio = 0.02;
+        } else {
+            //>=260
+            _ratio = 0.025;
+        }
+        return _ratio;
+    }
+
+    /**
+     * 根据当前场景的层级和属性值获取一个进入下个场景的概率
+     *
+     * @param sceneLevel
+     * @param value
+     * @return
+     */
+    private double gotoNextSceneRatio(Integer sceneLevel, Integer value) {
+        double _ratio = 0d;
+        if (value >= GameEnum.ATTRIBUTE_01.getValue() && value < GameEnum.ATTRIBUTE_02.getValue()) {
+            //60~100
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.04;  // 1=>2
+            }
+        } else if (value < GameEnum.ATTRIBUTE_03.getValue()) {
+            //100~140
+            _ratio = 0.006;
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.11;  // 1=>2
+            } else if (sceneLevel.equals(2)) {
+                _ratio = 0.1;  // 2=>3
+            }
+        } else if (value < GameEnum.ATTRIBUTE_04.getValue()) {
+            //140~180
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.23;  // 1=>2
+            } else if (sceneLevel.equals(2)) {
+                _ratio = 0.03;  // 2=>3
+            } else if (sceneLevel.equals(3)) {
+                _ratio = 0.01;  // 3=>4
+            }
+        } else if (value < GameEnum.ATTRIBUTE_05.getValue()) {
+            //180~220
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.34;  // 1=>2
+            } else if (sceneLevel.equals(2)) {
+                _ratio = 0.07;  // 2=>3
+            } else if (sceneLevel.equals(3)) {
+                _ratio = 0.03;  // 3=>4
+            }
+        } else if (value < GameEnum.ATTRIBUTE_06.getValue()) {
+            //220~260
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.51;  // 1=>2
+            } else if (sceneLevel.equals(2)) {
+                _ratio = 0.11;  // 2=>3
+            } else if (sceneLevel.equals(3)) {
+                _ratio = 0.07;  // 3=>4
+            }
+        } else {
+            //>=260
+            if (sceneLevel.equals(1)) {
+                _ratio = 0.97;  // 1=>2
+            } else if (sceneLevel.equals(2)) {
+                _ratio = 0.19;  // 2=>3
+            } else if (sceneLevel.equals(3)) {
+                _ratio = 0.13;  // 3=>4
+            }
+        }
+        return _ratio;
+    }
+
+
+    private int getLimitSkills(Integer value) {
+        int _limit = 0;
+        if (value >= GameEnum.ATTRIBUTE_01.getValue() && value < GameEnum.ATTRIBUTE_02.getValue()) {
+            //60~100
+            _limit = 5;
+        } else if (value < GameEnum.ATTRIBUTE_03.getValue()) {
+            //100~140
+            _limit = 10;
+        } else if (value < GameEnum.ATTRIBUTE_04.getValue()) {
+            //140~180
+            _limit = 15;
+        } else if (value < GameEnum.ATTRIBUTE_05.getValue()) {
+            //180~220
+            _limit = 20;
+        } else if (value < GameEnum.ATTRIBUTE_06.getValue()) {
+            //220~260
+            _limit = 25;
+        } else {
+            //>=260
+            _limit = 30;
+        }
+        return _limit;
+    }
+
+
+    private int getSceneIdByLevel(Integer value) {
+        int _levelId = 0;
+        if (value.equals(1)) {
+            _levelId = GameEnum.MINE_00.getValue();
+        } else if (value.equals(2)) {
+            _levelId = GameEnum.MINE_01.getValue();
+        } else if (value.equals(3)) {
+            _levelId = GameEnum.MINE_02.getValue();
+        } else if (value.equals(4)) {
+            _levelId = GameEnum.MINE_03.getValue();
+        } else if (value.equals(5)) {
+            _levelId = GameEnum.MINE_04.getValue();
+        }
+        return _levelId;
+    }
+}

+ 49 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryClientVo.java

@@ -0,0 +1,49 @@
+package com.td.WaDa.game.comcharactersdiscovery.vo;
+
+import com.td.WaDa.game.comcharacters.vo.ComCharactersClientVo;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropClientVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ComCharactersDiscoveryClientVo implements Serializable {
+    private Integer id;//
+
+    //private String roleId;//人物id排序字符串,比如:1|2|3
+
+    //private String userId;//用户id
+
+    private String name;//工作名字
+
+    private Integer isWork;//是否工作 0: 工作中,1:工作完成
+
+    private Integer workId;//工作的id
+
+    private Date workStart;//开始时间
+
+    private Integer workDay;//探索期
+
+    private Long workMill;//返回一个探索剩余时间毫秒
+
+    private String workFlag;//每次探索生成一个唯一标识
+
+    private Integer discoverLevel;//探索级别
+
+    private Integer sceneId;//当前场景Id
+
+
+    private String note;//描述
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+    List<ComCharactersClientVo> subCharacters;
+
+    List<ExcelDropClientVo> subDrops;
+
+    List<ExcelDropClientVo> subRewardDrops;
+}

+ 38 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoverySimpleVo.java

@@ -0,0 +1,38 @@
+package com.td.WaDa.game.comcharactersdiscovery.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ComCharactersDiscoverySimpleVo implements Serializable {
+    private Integer id;//
+
+    private String roleId;//人物id排序字符串,比如:1|2|3
+
+    private String userId;//用户id
+
+    private String name;//工作名字
+
+    private Integer isWork;//是否工作 0: 工作中,1:工作完成
+
+    private Integer workId;//工作的id
+
+    private Date workStart;//开始时间
+
+    private Integer workDay;//探索期
+
+    private String workFlag;//每次探索生成一个唯一标识
+
+    private Integer discoverLevel;//探索级别
+
+    private Integer sceneId;//当前场景Id
+
+
+    private String note;//描述
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 37 - 0
src/main/java/com/td/WaDa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryVo.java

@@ -0,0 +1,37 @@
+package com.td.WaDa.game.comcharactersdiscovery.vo;
+
+import com.td.WaDa. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ComCharactersDiscoveryVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private String roleId;//人物id排序字符串,比如:1|2|3
+
+    private String userId;//用户id
+
+    private String name;//工作名字
+
+    private Integer isWork;//是否工作 0: 工作中,1:工作完成
+
+    private Integer workId;//工作的id
+
+    private Date workStart;//开始时间
+
+    private Integer workDay;//探索期
+
+    private String workFlag;//每次探索生成一个唯一标识
+
+    private Integer discoverLevel;//探索级别
+
+    private Integer sceneId;//当前场景Id
+
+    private String note;//描述
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 12 - 3
src/main/java/com/td/WaDa/game/comsetting/controller/ComSettingController.java

@@ -22,6 +22,9 @@ import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
 import com.td.WaDa.game.excelprop.service.ExcelPropService;
 import com.td.WaDa.game.excelprop.vo.ExcelPropSimpleVo;
 import com.td.WaDa.game.excelprop.vo.ExcelPropVo;
+import com.td.WaDa.game.excelresources.service.ExcelResourcesService;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesSimpleVo;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.WaDa.game.excelscene.service.ExcelSceneService;
 import com.td.WaDa.game.excelscene.vo.ExcelSceneSimpleVo;
 import com.td.WaDa.game.excelscene.vo.ExcelSceneVo;
@@ -63,6 +66,9 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
     @Autowired
     private ExcelPropService excelPropService;
 
+    @Autowired
+    private ExcelResourcesService excelResourcesService;
+
     @Autowired
     private ExcelDropService excelDropService;
 
@@ -103,7 +109,7 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
         ExcelReader excelReader = ExcelUtil.getReader(inputStream);
         //暂时按照名字区分
 
-        switch (file.getOriginalFilename().replace(".xlsx","")) {
+        switch (file.getOriginalFilename().replace(".xlsx", "")) {
             case "UI界面":
 
                 return null;
@@ -183,8 +189,11 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
 
                 return null;
             case "资源":
-
-                return null;
+                List<ExcelResourcesVo> resourcesVos = ExcelDataUtil.setResource(excelReader);
+                for (ExcelResourcesVo objects : resourcesVos) {
+                    excelResourcesService.save(objects);
+                }
+                return Result.of(CopyUtil.copyList(resourcesVos, ExcelResourcesSimpleVo.class));
 
         }
         return Result.of(null);

+ 2 - 1
src/main/java/com/td/WaDa/game/excelcharacterattri/pojo/ExcelCharacterAttri.java

@@ -10,7 +10,8 @@ import java.util.Date;
 @Data
 public class ExcelCharacterAttri implements Serializable {
     @Id
-    private String id;//
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
     private Integer roleType;//角色种类
     private Integer startPowerLimitLower;//初始力量下限
     private Integer startPowerLimitUpper;//初始力量上限

+ 1 - 1
src/main/java/com/td/WaDa/game/excelcharacterattri/vo/ExcelCharacterAttriSimpleVo.java

@@ -9,7 +9,7 @@ import java.util.Date;
 @Data
 public class ExcelCharacterAttriSimpleVo extends PageCondition implements Serializable {
 
-    private String id;//
+    private Integer id;//
     private Integer roleType;//角色种类
     private Integer startPowerLimitLower;//初始力量下限
     private Integer startPowerLimitUpper;//初始力量上限

+ 1 - 1
src/main/java/com/td/WaDa/game/excelcharacterattri/vo/ExcelCharacterAttriVo.java

@@ -8,7 +8,7 @@ import java.util.Date;
 @Data
 public class ExcelCharacterAttriVo extends PageCondition implements Serializable {
 
-    private String id;//
+    private Integer id;//
     private Integer roleType;//角色种类
     private Integer startPowerLimitLower;//初始力量下限
     private Integer startPowerLimitUpper;//初始力量上限

+ 3 - 2
src/main/java/com/td/WaDa/game/excelcharactercreate/pojo/ExcelCharacterCreate.java

@@ -10,9 +10,10 @@ import java.util.Date;
 @Data
 public class ExcelCharacterCreate implements Serializable {
     @Id
-    private String id;//
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
 
-    private Integer roleId;//角色对应的id序号
+    //private Integer roleId;//角色对应的id序号
 
     private Integer position;//部位id
 

+ 2 - 1
src/main/java/com/td/WaDa/game/excelcharactercreate/repository/ExcelCharacterCreateRepository.java

@@ -11,6 +11,7 @@ import java.util.Optional;
 @Repository
 public interface ExcelCharacterCreateRepository extends CommonRepository<ExcelCharacterCreate, String> {
 
-    List<ExcelCharacterCreate> findALlByRoleIdIn(List<Integer> roleId, Sort sort);
+    //List<ExcelCharacterCreate> findALlByRoleIdIn(List<Integer> roleId, Sort sort);
 
+    List<ExcelCharacterCreate> findAllByIdIn(List<Integer> id, Sort sort);
 }

+ 4 - 1
src/main/java/com/td/WaDa/game/excelcharactercreate/service/ExcelCharacterCreateService.java

@@ -8,6 +8,9 @@ import java.util.List;
 
 public interface ExcelCharacterCreateService extends CommonService<ExcelCharacterCreateVo, ExcelCharacterCreate, String> {
 
-    List<ExcelCharacterCreate> findRoleIdInByDESC(List<Integer> roleIds);
+     List<ExcelCharacterCreate> findRoleIdInByDESC(List<Integer> roleIds);
+
+
+    List<ExcelCharacterCreate> findIdInByDESC(List<Integer> ids);
 
 }

+ 7 - 1
src/main/java/com/td/WaDa/game/excelcharactercreate/service/ExcelCharacterCreateServiceImpl.java

@@ -30,6 +30,12 @@ public class ExcelCharacterCreateServiceImpl extends CommonServiceImpl<ExcelChar
 
     @Override
     public List<ExcelCharacterCreate> findRoleIdInByDESC(List<Integer> roleIds) {
-        return excelCharacterCreateRepository.findALlByRoleIdIn(roleIds,Sort.by(Sort.Direction.DESC,"roleId"));
+        // excelCharacterCreateRepository.findALlByRoleIdIn(roleIds,Sort.by(Sort.Direction.DESC,"roleId"))
+        return null;
+    }
+
+    @Override
+    public List<ExcelCharacterCreate> findIdInByDESC(List<Integer> ids) {
+        return excelCharacterCreateRepository.findAllByIdIn(ids,Sort.by(Sort.Direction.ASC,"position"));
     }
 }

+ 1 - 1
src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateClientVo.java

@@ -7,7 +7,7 @@ import java.util.Date;
 
 @Data
 public class ExcelCharacterCreateClientVo implements Serializable {
-    //private String id;//
+    //private Integer id;//
 
     //private Integer roleId;//角色对应的id序号
 

+ 2 - 2
src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateSimpleVo.java

@@ -6,9 +6,9 @@ import java.util.Date;
 
 @Data
 public class ExcelCharacterCreateSimpleVo implements Serializable {
-    //private String id;//
+    //private Integer id;//
 
-    private Integer roleId;//角色对应的id序号
+    //private Integer roleId;//角色对应的id序号
 
     private Integer position;//部位id
 

+ 2 - 2
src/main/java/com/td/WaDa/game/excelcharactercreate/vo/ExcelCharacterCreateVo.java

@@ -6,9 +6,9 @@ import java.util.Date;
 
 @Data
 public class ExcelCharacterCreateVo extends PageCondition implements Serializable {
-    private String id;//
+    private Integer id;//
 
-    private Integer roleId;//角色对应的id序号
+    //private Integer roleId;//角色对应的id序号
 
     private Integer position;//部位id
 

+ 2 - 1
src/main/java/com/td/WaDa/game/excelcharacterlevel/pojo/ExcelCharacterLevel.java

@@ -10,7 +10,8 @@ import java.util.Date;
 @Data
 public class ExcelCharacterLevel implements Serializable {
     @Id
-    private String id;//
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
 
     private Integer roleType;//角色种类
 

+ 1 - 1
src/main/java/com/td/WaDa/game/excelcharacterlevel/vo/ExcelCharacterLevelSimpleVo.java

@@ -6,7 +6,7 @@ import java.util.Date;
 
 @Data
 public class ExcelCharacterLevelSimpleVo implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer roleType;//角色种类
 

+ 1 - 1
src/main/java/com/td/WaDa/game/excelcharacterlevel/vo/ExcelCharacterLevelVo.java

@@ -6,7 +6,7 @@ import java.util.Date;
 
 @Data
 public class ExcelCharacterLevelVo extends PageCondition implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer roleType;//角色种类
 

+ 1 - 1
src/main/java/com/td/WaDa/game/exceldrop/controller/ExcelDropController.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/game/excelDrop/")
-public class ExcelDropController extends CommonController<ExcelDropVo, ExcelDrop, String> {
+public class ExcelDropController extends CommonController<ExcelDropVo, ExcelDrop, Integer> {
     @Autowired
     private ExcelDropService excelDropService;
 }

+ 4 - 3
src/main/java/com/td/WaDa/game/exceldrop/pojo/ExcelDrop.java

@@ -10,7 +10,8 @@ import java.util.Date;
 @Data
 public class ExcelDrop implements Serializable {
     @Id
-    private String id;//
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
 
     private Integer dropId;//掉落编号
 
@@ -28,9 +29,9 @@ public class ExcelDrop implements Serializable {
 
     private Integer dropWay;//非组物品方式
 
-    private Integer drop;//物品掉落
+    private Integer dropItem;//物品掉落
 
-    private String item;//物品与数量
+    private String itemNum;//物品与数量
 
     private String note;//备注
 

+ 9 - 1
src/main/java/com/td/WaDa/game/exceldrop/repository/ExcelDropRepository.java

@@ -2,8 +2,16 @@ package com.td.WaDa.game.exceldrop.repository;
 
 import com.td.WaDa.common.repository.*;
 import com.td.WaDa.game.exceldrop.pojo.ExcelDrop;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
-public interface ExcelDropRepository extends CommonRepository<ExcelDrop, String> {
+public interface ExcelDropRepository extends CommonRepository<ExcelDrop, Integer> {
+
+    List<ExcelDrop> findByIdIn(List<Integer> ids, Sort sort);
+
+    List<ExcelDrop> findByIdIn(Integer[] ids, Sort sort);
 }

+ 10 - 1
src/main/java/com/td/WaDa/game/exceldrop/service/ExcelDropService.java

@@ -2,7 +2,16 @@ package com.td.WaDa.game.exceldrop.service;
 
 import com.td.WaDa.common.service.*;
 import com.td.WaDa.game.exceldrop.pojo.ExcelDrop;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropSimpleVo;
 import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
 
-public interface ExcelDropService extends CommonService<ExcelDropVo, ExcelDrop, String> {
+import java.util.List;
+
+public interface ExcelDropService extends CommonService<ExcelDropVo, ExcelDrop, Integer> {
+
+    List<ExcelDrop>  getListBySceneId(Integer sceneId);
+
+    List<ExcelDrop>  getListByIds(Integer[] ids);
+
+    ExcelDrop randomGetDropBySceneId(Integer sceneId);
 }

+ 54 - 1
src/main/java/com/td/WaDa/game/exceldrop/service/ExcelDropServiceImpl.java

@@ -1,21 +1,74 @@
 package com.td.WaDa.game.exceldrop.service;
 
+import com.td.WaDa.annotation.In;
 import com.td.WaDa.common.service.*;
+import com.td.WaDa.config.enums.GameEnum;
 import com.td.WaDa.game.exceldrop.pojo.ExcelDrop;
+import com.td.WaDa.game.exceldrop.vo.ExcelDropSimpleVo;
 import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
 import com.td.WaDa.game.exceldrop.repository.ExcelDropRepository;
+import com.td.WaDa.util.CopyUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 @Transactional
-public class ExcelDropServiceImpl extends CommonServiceImpl<ExcelDropVo, ExcelDrop, String> implements ExcelDropService{
+public class ExcelDropServiceImpl extends CommonServiceImpl<ExcelDropVo, ExcelDrop, Integer> implements ExcelDropService{
 
     @PersistenceContext
     private EntityManager em;
     @Autowired
     private ExcelDropRepository excelDropRepository;
+
+    @Override
+    public List<ExcelDrop> getListBySceneId(Integer sceneId) {
+        List<ExcelDrop> excelDrops = new ArrayList<>();
+        List<Integer> ids = new ArrayList<>();
+        if(sceneId.equals(GameEnum.MINE_01.getValue())){
+            for(int i = 56;i<66;i++){
+                ids.add(i);
+            }
+        }else if(sceneId.equals(GameEnum.MINE_02.getValue())){
+            for(int i = 67;i<77;i++){
+                ids.add(i);
+            }
+        }else if(sceneId.equals(GameEnum.MINE_03.getValue())){
+            for(int i = 78;i<88;i++){
+                ids.add(i);
+            }
+        }
+        excelDrops =  excelDropRepository.findByIdIn(ids, Sort.by(Sort.Direction.ASC,"id"));
+        return excelDrops;
+    }
+
+    @Override
+    public List<ExcelDrop> getListByIds(Integer[] ids) {
+        return  excelDropRepository.findByIdIn(ids, Sort.by(Sort.Direction.ASC,"id"));
+    }
+
+    @Override
+    public ExcelDrop randomGetDropBySceneId(Integer sceneId) {
+        List<Integer> ids = new ArrayList<>();
+        if(sceneId.equals(GameEnum.MINE_01.getValue())){
+            for(int i = 56;i<66;i++){
+                ids.add(i);
+            }
+        }else if(sceneId.equals(GameEnum.MINE_02.getValue())){
+            for(int i = 67;i<77;i++){
+                ids.add(i);
+            }
+        }else if(sceneId.equals(GameEnum.MINE_03.getValue())){
+            for(int i = 78;i<88;i++){
+                ids.add(i);
+            }
+        }
+        int index = (int) (Math.random()* ids.size());
+        return excelDropRepository.findById(ids.get(index)).orElse(null);
+    }
 }

+ 40 - 0
src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropClientVo.java

@@ -0,0 +1,40 @@
+package com.td.WaDa.game.exceldrop.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelDropClientVo implements Serializable {
+    private Integer id;//
+
+    private Integer dropId;//掉落编号
+
+    private Integer dropType;//组掉落方式
+
+    private Integer dropGroup;//掉落组编号
+
+    private Integer dropGroupPro;//组掉落概率
+
+    private String dropGroupLimit;//组掉落上下限
+
+    private String dropGroupWay;//组掉落方式
+
+    private String groupDrop;//组掉落
+
+    private Integer dropWay;//非组物品方式
+
+    private Integer dropItem;//物品掉落
+
+    private String itemNum;//物品与数量
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}
+
+

+ 3 - 3
src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropSimpleVo.java

@@ -7,7 +7,7 @@ import java.util.Date;
 
 @Data
 public class ExcelDropSimpleVo implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer dropId;//掉落编号
 
@@ -25,9 +25,9 @@ public class ExcelDropSimpleVo implements Serializable {
 
     private Integer dropWay;//非组物品方式
 
-    private Integer drop;//物品掉落
+    private Integer dropItem;//物品掉落
 
-    private String item;//物品与数量
+    private String itemNum;//物品与数量
 
     private String note;//备注
 

+ 3 - 3
src/main/java/com/td/WaDa/game/exceldrop/vo/ExcelDropVo.java

@@ -6,7 +6,7 @@ import java.util.Date;
 
 @Data
 public class ExcelDropVo extends PageCondition implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer dropId;//掉落编号
 
@@ -24,9 +24,9 @@ public class ExcelDropVo extends PageCondition implements Serializable {
 
     private Integer dropWay;//非组物品方式
 
-    private Integer drop;//物品掉落
+    private Integer dropItem;//物品掉落
 
-    private String item;//物品与数量
+    private String itemNum;//物品与数量
 
     private String note;//备注
 

+ 2 - 2
src/main/java/com/td/WaDa/game/excelprop/vo/ExcelPropVo.java

@@ -26,8 +26,8 @@ public class ExcelPropVo extends PageCondition implements Serializable {
 
     private String note;//备注
 
-    private Date createTime;//
+    //private Date createTime;//
 
-    private Date updateTime;//
+    //private Date updateTime;//
 
 }

+ 15 - 0
src/main/java/com/td/WaDa/game/excelresources/controller/ExcelResourcesController.java

@@ -0,0 +1,15 @@
+package com.td.WaDa.game.excelresources.controller;
+
+import com.td.WaDa.common.controller.*;
+import com.td.WaDa.game.excelresources.pojo.ExcelResources;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesVo;
+import com.td.WaDa.game.excelresources.service.ExcelResourcesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/game/excelResources/")
+public class ExcelResourcesController extends CommonController<ExcelResourcesVo, ExcelResources, Integer> {
+    @Autowired
+    private ExcelResourcesService excelResourcesService;
+}

+ 28 - 0
src/main/java/com/td/WaDa/game/excelresources/pojo/ExcelResources.java

@@ -0,0 +1,28 @@
+package com.td.WaDa.game.excelresources.pojo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "excel_resources")
+@Data
+public class ExcelResources implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//art编号
+
+    private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
+
+    private String artName;//美术资源名
+
+    private String artLocal;//资源位置
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 9 - 0
src/main/java/com/td/WaDa/game/excelresources/repository/ExcelResourcesRepository.java

@@ -0,0 +1,9 @@
+package com.td.WaDa.game.excelresources.repository;
+
+import com.td.WaDa.common.repository.*;
+import com.td.WaDa.game.excelresources.pojo.ExcelResources;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ExcelResourcesRepository extends CommonRepository<ExcelResources, Integer> {
+}

+ 8 - 0
src/main/java/com/td/WaDa/game/excelresources/service/ExcelResourcesService.java

@@ -0,0 +1,8 @@
+package com.td.WaDa.game.excelresources.service;
+
+import com.td.WaDa.common.service.*;
+import com.td.WaDa.game.excelresources.pojo.ExcelResources;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesVo;
+
+public interface ExcelResourcesService extends CommonService<ExcelResourcesVo, ExcelResources, Integer> {
+}

+ 21 - 0
src/main/java/com/td/WaDa/game/excelresources/service/ExcelResourcesServiceImpl.java

@@ -0,0 +1,21 @@
+package com.td.WaDa.game.excelresources.service;
+
+import com.td.WaDa.common.service.*;
+import com.td.WaDa.game.excelresources.pojo.ExcelResources;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesVo;
+import com.td.WaDa.game.excelresources.repository.ExcelResourcesRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Service
+@Transactional
+public class ExcelResourcesServiceImpl extends CommonServiceImpl<ExcelResourcesVo, ExcelResources, Integer> implements ExcelResourcesService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private ExcelResourcesRepository excelResourcesRepository;
+}

+ 23 - 0
src/main/java/com/td/WaDa/game/excelresources/vo/ExcelResourcesSimpleVo.java

@@ -0,0 +1,23 @@
+package com.td.WaDa.game.excelresources.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelResourcesSimpleVo implements Serializable {
+    private Integer id;//art编号
+
+    private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
+
+    private String artName;//美术资源名
+
+    private String artLocal;//资源位置
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 23 - 0
src/main/java/com/td/WaDa/game/excelresources/vo/ExcelResourcesVo.java

@@ -0,0 +1,23 @@
+package com.td.WaDa.game.excelresources.vo;
+
+import com.td.WaDa. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelResourcesVo extends PageCondition implements Serializable {
+    private Integer id;//art编号
+
+    private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
+
+    private String artName;//美术资源名
+
+    private String artLocal;//资源位置
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 1 - 1
src/main/java/com/td/WaDa/game/excelscene/controller/ExcelSceneController.java

@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/game/excelScene/")
-public class ExcelSceneController extends CommonController<ExcelSceneVo, ExcelScene, String> {
+public class ExcelSceneController extends CommonController<ExcelSceneVo, ExcelScene, Integer> {
     @Autowired
     private ExcelSceneService excelSceneService;
 }

+ 2 - 1
src/main/java/com/td/WaDa/game/excelscene/pojo/ExcelScene.java

@@ -10,7 +10,8 @@ import java.util.Date;
 @Data
 public class ExcelScene implements Serializable {
     @Id
-    private String id;//
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
 
     private Integer sceneId;//场景序号
 

+ 4 - 1
src/main/java/com/td/WaDa/game/excelscene/repository/ExcelSceneRepository.java

@@ -4,6 +4,9 @@ import com.td.WaDa.common.repository.*;
 import com.td.WaDa.game.excelscene.pojo.ExcelScene;
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
-public interface ExcelSceneRepository extends CommonRepository<ExcelScene, String> {
+public interface ExcelSceneRepository extends CommonRepository<ExcelScene, Integer> {
+    Optional<ExcelScene> findBySceneId(Integer sceneId);
 }

+ 3 - 1
src/main/java/com/td/WaDa/game/excelscene/service/ExcelSceneService.java

@@ -4,5 +4,7 @@ import com.td.WaDa.common.service.*;
 import com.td.WaDa.game.excelscene.pojo.ExcelScene;
 import com.td.WaDa.game.excelscene.vo.ExcelSceneVo;
 
-public interface ExcelSceneService extends CommonService<ExcelSceneVo, ExcelScene, String> {
+public interface ExcelSceneService extends CommonService<ExcelSceneVo, ExcelScene, Integer> {
+
+    ExcelScene findBySceneId(Integer SceneId);
 }

+ 6 - 1
src/main/java/com/td/WaDa/game/excelscene/service/ExcelSceneServiceImpl.java

@@ -12,10 +12,15 @@ import javax.persistence.PersistenceContext;
 
 @Service
 @Transactional
-public class ExcelSceneServiceImpl extends CommonServiceImpl<ExcelSceneVo, ExcelScene, String> implements ExcelSceneService{
+public class ExcelSceneServiceImpl extends CommonServiceImpl<ExcelSceneVo, ExcelScene, Integer> implements ExcelSceneService{
 
     @PersistenceContext
     private EntityManager em;
     @Autowired
     private ExcelSceneRepository excelSceneRepository;
+
+    @Override
+    public ExcelScene findBySceneId(Integer sceneId) {
+        return excelSceneRepository.findBySceneId(sceneId).orElse(null);
+    }
 }

+ 1 - 1
src/main/java/com/td/WaDa/game/excelscene/vo/ExcelSceneSimpleVo.java

@@ -8,7 +8,7 @@ import java.util.Date;
 
 @Data
 public class ExcelSceneSimpleVo  implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer sceneId;//场景序号
 

+ 1 - 1
src/main/java/com/td/WaDa/game/excelscene/vo/ExcelSceneVo.java

@@ -6,7 +6,7 @@ import java.util.Date;
 
 @Data
 public class ExcelSceneVo extends PageCondition implements Serializable {
-    private String id;//
+    private Integer id;//
 
     private Integer sceneId;//场景序号
 

+ 1 - 1
src/main/java/com/td/WaDa/util/CodeDOM.java

@@ -550,7 +550,7 @@ public class CodeDOM {
     }
 
     public static void main(String[] args) {
-        String[] tables = {"com_characters"};
+        String[] tables = {"excel_resources"};
         for (String table : tables) {
             String msg = new CodeDOM(table).create();
             System.out.println(msg);

+ 20 - 5
src/main/java/com/td/WaDa/util/ExcelDataUtil.java

@@ -11,6 +11,8 @@ import com.td.WaDa.game.excelcharacterlevel.vo.ExcelCharacterLevelVo;
 import com.td.WaDa.game.exceldrop.vo.ExcelDropSimpleVo;
 import com.td.WaDa.game.exceldrop.vo.ExcelDropVo;
 import com.td.WaDa.game.excelprop.vo.ExcelPropVo;
+import com.td.WaDa.game.excelresources.pojo.ExcelResources;
+import com.td.WaDa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.WaDa.game.excelscene.vo.ExcelSceneVo;
 import lombok.extern.slf4j.Slf4j;
 
@@ -40,12 +42,13 @@ public class ExcelDataUtil {
      * 角色生成
      */
     public static List<ExcelCharacterCreateVo>  setCharacterCreate(ExcelReader excelReader){
-        excelReader.addHeaderAlias("部位id","position")
+        excelReader
+                .addHeaderAlias("id序号","id")
+                .addHeaderAlias("部位id","position")
                 .addHeaderAlias("模型","model")
                 .addHeaderAlias("颜色区间","color")
                 .addHeaderAlias("权重","weight")
-                .addHeaderAlias("备注","note")
-                .addHeaderAlias("角色id","roleId");
+                .addHeaderAlias("备注","note");
         return excelReader.read(1,3,ExcelCharacterCreateVo.class);
     }
 
@@ -111,9 +114,21 @@ public class ExcelDataUtil {
                 .addHeaderAlias("组掉落方式","dropGroupWay")
                 .addHeaderAlias("组掉落","groupDrop")
                 .addHeaderAlias("非组物品方式","dropWay")
-                .addHeaderAlias("物品掉落","drop")
-                .addHeaderAlias("物品与数量","item")
+                .addHeaderAlias("物品掉落","dropItem")
+                .addHeaderAlias("物品与数量","itemNum")
                 .addHeaderAlias("备注","note");
         return excelReader.read(1,3,ExcelDropVo.class);
     }
+
+
+
+    public static List<ExcelResourcesVo>  setResource(ExcelReader excelReader){
+        //掉落编号	组掉落方式	掉落组编号	组掉落概率	组掉落上下限	组掉落方式	组掉落	非组物品方式	物品掉落	物品与数量	备注
+        excelReader.addHeaderAlias("art编号","id")
+                .addHeaderAlias("美术资源种类","artType")
+                .addHeaderAlias("美术资源名","artName")
+                .addHeaderAlias("资源位置","artLocal")
+                .addHeaderAlias("备注","note");
+        return excelReader.read(1,3,ExcelResourcesVo.class);
+    }
 }

+ 1 - 1
src/main/resources/application.yml

@@ -32,7 +32,7 @@ spring:
 
   #打印SQL
   jpa:
-    show-sql: false
+    show-sql: true
 
 
 # token 参数