فهرست منبع

1.修改角色配置
2.修改后台

slambb 3 سال پیش
والد
کامیت
fbb57a0775
62فایلهای تغییر یافته به همراه1550 افزوده شده و 167 حذف شده
  1. 47 0
      src/main/java/com/td/Dawa/BossApplication.java
  2. 7 0
      src/main/java/com/td/Dawa/common/service/CommonService.java
  3. 42 0
      src/main/java/com/td/Dawa/common/service/CommonServiceImpl.java
  4. 15 3
      src/main/java/com/td/Dawa/config/enums/GameEnum.java
  5. 4 1
      src/main/java/com/td/Dawa/config/enums/ResultEnum.java
  6. 5 4
      src/main/java/com/td/Dawa/filter/gameFilter.java
  7. 6 3
      src/main/java/com/td/Dawa/game/comcharacters/controller/ComCharactersController.java
  8. 5 2
      src/main/java/com/td/Dawa/game/comcharacters/pojo/ComCharacters.java
  9. 1 1
      src/main/java/com/td/Dawa/game/comcharacters/repository/ComCharactersRepository.java
  10. 3 1
      src/main/java/com/td/Dawa/game/comcharacters/service/ComCharactersService.java
  11. 168 19
      src/main/java/com/td/Dawa/game/comcharacters/service/ComCharactersServiceImpl.java
  12. 4 1
      src/main/java/com/td/Dawa/game/comcharacters/vo/ComCharactersClientVo.java
  13. 1 1
      src/main/java/com/td/Dawa/game/comcharacters/vo/ComCharactersSimpleVo.java
  14. 3 1
      src/main/java/com/td/Dawa/game/comcharacters/vo/ComCharactersVo.java
  15. 11 9
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/controller/ComCharactersDiscoveryController.java
  16. 2 0
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/pojo/ComCharactersDiscovery.java
  17. 1 1
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/service/ComCharactersDiscoveryService.java
  18. 270 94
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/service/ComCharactersDiscoveryServiceImpl.java
  19. 5 2
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryClientVo.java
  20. 2 0
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoverySimpleVo.java
  21. 2 0
      src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryVo.java
  22. 7 4
      src/main/java/com/td/Dawa/game/complayersattri/controller/ComPlayersAttriController.java
  23. 27 1
      src/main/java/com/td/Dawa/game/complayersattri/service/ComPlayersAttriServiceImpl.java
  24. 25 0
      src/main/java/com/td/Dawa/game/comsetting/controller/ComSettingController.java
  25. 15 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/controller/ExcelCharacterColorController.java
  26. 30 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/pojo/ExcelCharacterColor.java
  27. 9 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/repository/ExcelCharacterColorRepository.java
  28. 8 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/service/ExcelCharacterColorService.java
  29. 21 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/service/ExcelCharacterColorServiceImpl.java
  30. 26 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorClientVo.java
  31. 25 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorSimpleVo.java
  32. 25 0
      src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorVo.java
  33. 2 0
      src/main/java/com/td/Dawa/game/excelcharactercreate/repository/ExcelCharacterCreateRepository.java
  34. 4 0
      src/main/java/com/td/Dawa/game/excelcharactercreate/service/ExcelCharacterCreateService.java
  35. 14 0
      src/main/java/com/td/Dawa/game/excelcharactercreate/service/ExcelCharacterCreateServiceImpl.java
  36. 6 0
      src/main/java/com/td/Dawa/game/excelprop/pojo/ExcelProp.java
  37. 4 1
      src/main/java/com/td/Dawa/game/excelprop/service/ExcelPropServiceImpl.java
  38. 42 0
      src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropClientVo.java
  39. 6 0
      src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropSimpleVo.java
  40. 6 0
      src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropVo.java
  41. 5 1
      src/main/java/com/td/Dawa/game/excelresources/pojo/ExcelResources.java
  42. 5 0
      src/main/java/com/td/Dawa/game/excelresources/repository/ExcelResourcesRepository.java
  43. 5 0
      src/main/java/com/td/Dawa/game/excelresources/service/ExcelResourcesService.java
  44. 10 0
      src/main/java/com/td/Dawa/game/excelresources/service/ExcelResourcesServiceImpl.java
  45. 36 0
      src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesClientVo.java
  46. 5 1
      src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesSimpleVo.java
  47. 5 1
      src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesVo.java
  48. 15 0
      src/main/java/com/td/Dawa/game/excelworkpro/controller/ExcelWorkProController.java
  49. 42 0
      src/main/java/com/td/Dawa/game/excelworkpro/pojo/ExcelWorkPro.java
  50. 9 0
      src/main/java/com/td/Dawa/game/excelworkpro/repository/ExcelWorkProRepository.java
  51. 8 0
      src/main/java/com/td/Dawa/game/excelworkpro/service/ExcelWorkProService.java
  52. 21 0
      src/main/java/com/td/Dawa/game/excelworkpro/service/ExcelWorkProServiceImpl.java
  53. 37 0
      src/main/java/com/td/Dawa/game/excelworkpro/vo/ExcelWorkProSimpleVo.java
  54. 37 0
      src/main/java/com/td/Dawa/game/excelworkpro/vo/ExcelWorkProVo.java
  55. 55 5
      src/main/java/com/td/Dawa/sys/sysGame/controller/sysExcelController.java
  56. 1 1
      src/main/java/com/td/Dawa/util/CodeDOM.java
  57. 42 2
      src/main/java/com/td/Dawa/util/ExcelDataUtil.java
  58. 8 0
      src/main/java/com/td/Dawa/util/RedisData.java
  59. 5 5
      src/main/resources/static/sys/aComConfig/js/excelCharacterAttri.js
  60. 2 2
      src/main/resources/static/sys/aComConfig/js/excelScene.js
  61. 142 0
      src/main/resources/static/sys/aComConfig/js/excelWorkPro.js
  62. 149 0
      src/main/resources/view/sys/aComConfig/excelWorkPro.html

+ 47 - 0
src/main/java/com/td/Dawa/BossApplication.java

@@ -1,7 +1,18 @@
 package com.td.Dawa;
 
 import com.td.Dawa.common.service.ComConfigService;
+import com.td.Dawa.config.enums.GameEnum;
 import com.td.Dawa.game.comusers.service.ComUsersService;
+import com.td.Dawa.game.excelcharacterattri.service.ExcelCharacterAttriService;
+import com.td.Dawa.game.excelcharactercolor.service.ExcelCharacterColorService;
+import com.td.Dawa.game.excelcharactercreate.service.ExcelCharacterCreateService;
+import com.td.Dawa.game.excelcharacterlevel.service.ExcelCharacterLevelService;
+import com.td.Dawa.game.exceldrop.service.ExcelDropService;
+import com.td.Dawa.game.excelparameter.service.ExcelParameterService;
+import com.td.Dawa.game.excelprop.service.ExcelPropService;
+import com.td.Dawa.game.excelresources.service.ExcelResourcesService;
+import com.td.Dawa.game.excelscene.service.ExcelSceneService;
+import com.td.Dawa.game.excelworkpro.service.ExcelWorkProService;
 import com.td.Dawa.sys.sysmenu.vo.SysMenuVo;
 import com.td.Dawa.sys.syssetting.service.SysSettingService;
 import com.td.Dawa.sys.syssettinglimit.service.SysSettingLimitService;
@@ -92,6 +103,36 @@ class IndexController {
     @Autowired
     private ComConfigService comConfigService;
 
+    @Autowired
+    private ExcelWorkProService excelWorkProService;
+
+    @Autowired
+    private ExcelSceneService excelSceneService;
+
+    @Autowired
+    private ExcelResourcesService excelResourcesService;
+
+    @Autowired
+    private ExcelPropService excelPropService;
+
+    @Autowired
+    private ExcelParameterService excelParameterService;
+
+    @Autowired
+    private ExcelDropService excelDropService;
+
+    @Autowired
+    private ExcelCharacterLevelService excelCharacterLevelService;
+
+    @Autowired
+    private ExcelCharacterCreateService excelCharacterCreateService;
+
+    @Autowired
+    private ExcelCharacterAttriService excelCharacterAttriService;
+
+    @Autowired
+    private ExcelCharacterColorService excelCharacterColorService;
+
     @Value("${server.servlet.context-path:}")
     private String contextPath;
 
@@ -132,6 +173,12 @@ class IndexController {
                 //comConfigService.updateList();
                 ////更新com setting 的redis数据
                 //redisSettingMap.updateComSettingMap();
+                //更新excel表对应缓存
+                excelCharacterColorService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_CHARACTER_COLOR.getMessage());
+                excelWorkProService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_WORK_PRO.getMessage());
+                excelPropService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_PROP.getMessage());
+                excelWorkProService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_SCENE.getMessage());
+
                 //获取本机内网IP
                 log.info("启动成功:" + "http://" + InetAddress.getLocalHost().getHostAddress() + ":" + port + contextPath);
             } catch (UnknownHostException e) {

+ 7 - 0
src/main/java/com/td/Dawa/common/service/CommonService.java

@@ -19,6 +19,7 @@ public interface CommonService<V, E,T> {
 
     Result<List<V>> list(V entityVo);
 
+
     Result<V> get(T id);
 
     V getVo(T id);
@@ -26,4 +27,10 @@ public interface CommonService<V, E,T> {
     Result<V> save(V entityVo);
 
     Result<T> delete(T id);
+
+    //更新当前列表数据到缓存
+    List<E> updateListToCache(String key);
+    //添加缓存列表操作
+    List<E> getListFromCache(String key);
+
 }

+ 42 - 0
src/main/java/com/td/Dawa/common/service/CommonServiceImpl.java

@@ -1,5 +1,6 @@
 package com.td.Dawa.common.service;
 
+import cn.hutool.json.JSONUtil;
 import com.td.Dawa.common.pojo.PageCondition;
 import com.td.Dawa.common.pojo.PageInfo;
 import com.td.Dawa.common.pojo.Result;
@@ -13,6 +14,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.Page;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.util.StringUtils;
 
 import javax.persistence.GeneratedValue;
@@ -39,9 +41,17 @@ public class CommonServiceImpl<V, E, T> implements CommonService<V, E, T> {
 
     private Class<E> entityClass;//实体类
 
+
     @Autowired
     private CommonRepository<E, T> commonRepository;//注入实体类仓库
 
+    @Autowired
+    private StringRedisTemplate redisTemplate; //注入缓存机制
+
+    //key 的前缀
+    private String keyPrefixStr = "data:excel:";
+
+
     public CommonServiceImpl() {
         Type[] types = ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments();
         this.entityVoClass = (Class<V>) types[0];
@@ -173,4 +183,36 @@ public class CommonServiceImpl<V, E, T> implements CommonService<V, E, T> {
         commonRepository.deleteById(id);
         return Result.of(id);
     }
+
+
+    /**
+     * 更新当前列表数据到缓存
+     * @param key
+     */
+    public List<E> updateListToCache(String key){
+        key = keyPrefixStr.concat(key);
+        List<E> entityList = commonRepository.findAll();
+        redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(entityList));
+        return entityList;
+    }
+
+
+    /**
+     * 从缓存中获取列表,没有缓存更新一次数据库数据到缓存
+     * @param key
+     * @return
+     */
+    @Override
+    public List<E> getListFromCache(String key) {
+        key = keyPrefixStr.concat(key);
+        List<E> entityList;
+        String s = redisTemplate.opsForValue().get(key);
+        if (StringUtils.hasText(s)) {
+            entityList = JSONUtil.toList(s,entityClass);
+        } else {
+            entityList = commonRepository.findAll();
+            redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(entityList));
+        }
+        return entityList;
+    }
 }

+ 15 - 3
src/main/java/com/td/Dawa/config/enums/GameEnum.java

@@ -12,6 +12,12 @@ import java.util.Map;
  */
 @Getter
 public enum GameEnum {
+    //redis key
+    REDIS_KEY_EXCEL_WORK_PRO(0,"work_pro"),//工作效率表key
+    REDIS_KEY_EXCEL_SCENE(1,"scene"),//场景信息表key
+    REDIS_KEY_EXCEL_PROP(2,"prop"),//场景道具表key
+    REDIS_KEY_EXCEL_CHARACTER_COLOR(3,"character_color"),//颜色表key
+
     CHARACTERS_STATE_NORMAL(0,"角色普通状态"),
     CHARACTERS_STATE_TRADE_BANK(1,"角色在交易行状态"),
     CHARACTERS_STATE_IN_TEAM(2,"角色在队列状态"),
@@ -21,9 +27,15 @@ public enum GameEnum {
     WORK_COMPLETE(1,"探索工作完成"),
     WORK_NOT_STARTED(2,"探索工作未开始"),
 
-    PRO_POWER(0,"挖矿"),
-    PRO_INTELLIGENCE(1,"勘探"),
-    PRO_SKIlLS(2,"运输"),
+
+    PRO_POWER(0,"影响挖矿(或者伐木)"),
+    PRO_INTELLIGENCE(1,"影响勘探"),
+    PRO_SKIlLS(2,"影响运输"),
+
+    PRO_WORK_MINING(1,"工作职业为挖矿"),
+    PRO_WORK_PROSPECT(2,"工作职业为勘探职业"),
+    PRO_WORK_TRANSPORT(3,"工作职业为运输职业"),
+    PRO_WORK_LUMBERING(4,"工作职业为运输职业"),
 
     //伐木场景id
     LUMBERING_00(101,"深林入口"),

+ 4 - 1
src/main/java/com/td/Dawa/config/enums/ResultEnum.java

@@ -37,8 +37,9 @@ public enum ResultEnum {
     USER_LIMIT_LOGIN(404,"用户限制登录!"),
 
     USER_LOGIN_LOCK(405,"用户保存繁忙,请重试操作!"),
-    //角色数据
+    //角色数据 和 属性
     PLAYER_DOES_NOT_EXIST(500,"不存在角色信息!"),
+    PLAYER_ATTRIBUTE_ERROR(500,"角色属性信息异常!"),
     PLAYER_DOES_NOT_ATTRIBUTES(501,"battle player 数据不存在!"),
     PLAYER_GOODS_LIMIT_ERROR(510,"背包超过预设长度!"),
     PLAYER_NO_CHEST_INFO(511,"没有对应宝箱类型信息"),
@@ -50,9 +51,11 @@ public enum ResultEnum {
     PLAYER_GOODS_SEEDS_AMOUNT_ERROR(517,"土地消耗种子数量不足"),
     PLAYER_ATTRIBUTE_STRENGTH_IS_NOT(518,"当前体力不足,队伍无法工作"),
     PLAYER_GOODS_SAVE_LOCK(520,"操作繁忙,保存背包失败,稍后再试!"),
+    PLAYER_ATTRIBUTE_SAVE_LOCK(520,"属性操作繁满,稍后再试!"),
 
     ROLE_DOES_NOT_EXIST(521,"不存在角色信息!"),
     ROLE_ADD_ERROR(522,"添加角色信息异常!"),
+    ROLE_NAME_TOO_LONG(522,"角色名字不能大于12个字!"),
     ROLE_ALREADY_ADD(522,"角色已经添加!"),
     GOLD_NOT_GET_ROLE(522,"金币不足,无法召唤!"),
     ROLE_REPATRIATE_ERROR(522,"角色遣返错误!"),

+ 5 - 4
src/main/java/com/td/Dawa/filter/gameFilter.java

@@ -92,13 +92,14 @@ public class gameFilter implements Filter {
         /**
          * 除了上面三个提供给DApp的接口,剩下的game接口都需要限制访问
          */
-        //设置20秒内可以访问10次,同一个接口
+        //设置5秒内可以访问5次,同一个接口
         String redisKey = "limit-req:".concat(req.getRequestURL().toString()).concat(":").concat(ipAddr);
+        int _limitTime = 5,_limitCount = 10;
         if (!redisTemplate.hasKey(redisKey)) {
-            redisTemplate.opsForValue().set(redisKey, String.valueOf(1), 20, TimeUnit.SECONDS);
+            redisTemplate.opsForValue().set(redisKey, String.valueOf(1), _limitTime, TimeUnit.SECONDS);
         } else {
             int increment = Convert.toInt(redisTemplate.opsForValue().get(redisKey));
-            if (increment > 10) {
+            if (increment > _limitCount) {
                 response.setCharacterEncoding("UTF-8");
                 response.setContentType("application/json; charset=utf-8");
                 PrintWriter out = response.getWriter();
@@ -107,7 +108,7 @@ public class gameFilter implements Filter {
                 out.close();
                 return;
             } else {
-                redisTemplate.opsForValue().set(redisKey, String.valueOf(++increment), 20, TimeUnit.SECONDS);
+                redisTemplate.opsForValue().set(redisKey, String.valueOf(++increment), _limitTime, TimeUnit.SECONDS);
             }
         }
 

+ 6 - 3
src/main/java/com/td/Dawa/game/comcharacters/controller/ComCharactersController.java

@@ -102,7 +102,7 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
      */
     @PostMapping("modifyRoleName")
     @Encrypt
-    public Result<ComCharactersClientVo> modifyRoleName(@RequestParam(value = "userId") String userId,
+    public Result<?> modifyRoleName(@RequestParam(value = "userId") String userId,
                                                         @RequestParam(value = "id") Integer id,
                                                         @RequestParam(value = "name") String name) {
         try {
@@ -115,6 +115,9 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
             if(!comCharactersVo.getUserId().equals(userId)){
                 return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR);
             }
+            if(name.length()>12){
+                return Result.of(null, false, ResultEnum.ROLE_NAME_TOO_LONG);
+            }
             if(StringUtils.hasText(name)){
                 comCharactersVo.setName(name);
             }else{
@@ -127,7 +130,7 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
 
 
         } catch (Exception e) {
-            return Result.of(null, false, ResultEnum.ROLE_ADD_ERROR);
+            return Result.of(e.getMessage(), false, ResultEnum.ROLE_ADD_ERROR);
         }
 
     }
@@ -145,7 +148,7 @@ public class ComCharactersController extends CommonController<ComCharactersVo, C
     @PostMapping("getRoleList")
     @Encrypt
     public Result<List<ComCharactersClientVo>> getRoleList(@RequestParam(value = "userId") String userId,
-    @RequestParam(value = "professional") String professional) {
+    @RequestParam(value = "professional") Integer professional) {
         List<ComCharactersClientVo> charactersClientVos = comCharactersService.findByProfessionalSort(userId,professional);
         return Result.of(charactersClientVos);
     }

+ 5 - 2
src/main/java/com/td/Dawa/game/comcharacters/pojo/ComCharacters.java

@@ -1,6 +1,7 @@
 package com.td.Dawa.game.comcharacters.pojo;
 
 import lombok.Data;
+
 import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
@@ -10,7 +11,7 @@ import java.util.Date;
 @Data
 public class ComCharacters implements Serializable {
     @Id
-    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Integer id;//该角色的id
 
     private String userId;//创建该角色的用户id
@@ -33,7 +34,7 @@ public class ComCharacters implements Serializable {
 
     private Integer random;//随机属性值
 
-    private String professional;//当前职业
+    private Integer professional;//当前职业
 
     private String action;//携带动作
 
@@ -43,6 +44,8 @@ public class ComCharacters implements Serializable {
 
     private String modelId;//记录生成的模型id,如1|2|3格式
 
+    private String modelColor;//记录模型生成的颜色id,如1|2|3格式
+
     private Date createTime;//
 
     private Date updateTime;//

+ 1 - 1
src/main/java/com/td/Dawa/game/comcharacters/repository/ComCharactersRepository.java

@@ -13,7 +13,7 @@ public interface ComCharactersRepository extends CommonRepository<ComCharacters,
 
     Optional<ComCharacters> findByRoleId(Integer roleId);
 
-    List<ComCharacters> findByUserIdAndProfessional(String userId,String professional, Sort sort);
+    List<ComCharacters> findByUserIdAndProfessional(String userId,Integer professional, Sort sort);
 
     List<ComCharacters> findByIdIn(Integer[] ids, Sort sort);
 

+ 3 - 1
src/main/java/com/td/Dawa/game/comcharacters/service/ComCharactersService.java

@@ -14,11 +14,13 @@ public interface ComCharactersService extends CommonService<ComCharactersVo, Com
 
     public List<ComCharactersRandomVo> randomRoleByNumber(Integer number);
 
-    public List<ComCharactersClientVo> findByProfessionalSort(String userId,String professional);
+    public List<ComCharactersClientVo> findByProfessionalSort(String userId,Integer professional);
 
     public ComCharactersClientVo addRole(ExcelCharacterAttriVo _attr, String userId);
 
     public ComCharacters findByRoleId(Integer roleId);
 
     public List<ComCharacters> findByRoleIdIn(Integer[] ids);
+
+    public ComCharactersClientVo addSubResourcesClientListToVO(ComCharactersClientVo comCharactersClientVo ,String _modelIdStr,String _modelColorStr);
 }

+ 168 - 19
src/main/java/com/td/Dawa/game/comcharacters/service/ComCharactersServiceImpl.java

@@ -1,6 +1,9 @@
 package com.td.Dawa.game.comcharacters.service;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ArrayUtil;
+import com.td.Dawa.annotation.In;
 import com.td.Dawa.common.service.*;
 import com.td.Dawa.config.enums.GameEnum;
 import com.td.Dawa.game.comcharacters.pojo.ComCharacters;
@@ -12,12 +15,18 @@ import com.td.Dawa.game.excelcharacterattri.pojo.ExcelCharacterAttri;
 import com.td.Dawa.game.excelcharacterattri.repository.ExcelCharacterAttriRepository;
 import com.td.Dawa.game.excelcharacterattri.service.ExcelCharacterAttriService;
 import com.td.Dawa.game.excelcharacterattri.vo.ExcelCharacterAttriVo;
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import com.td.Dawa.game.excelcharactercolor.service.ExcelCharacterColorService;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorClientVo;
 import com.td.Dawa.game.excelcharactercreate.pojo.ExcelCharacterCreate;
 import com.td.Dawa.game.excelcharactercreate.service.ExcelCharacterCreateService;
 import com.td.Dawa.game.excelcharactercreate.vo.ExcelCharacterCreateClientVo;
 import com.td.Dawa.game.excelcharacterlevel.service.ExcelCharacterLevelService;
 import com.td.Dawa.game.excelcharacterlevel.vo.ExcelCharacterLevelVo;
+import com.td.Dawa.game.excelresources.service.ExcelResourcesService;
+import com.td.Dawa.game.excelresources.vo.ExcelResourcesClientVo;
 import com.td.Dawa.util.CopyUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.hibernate.query.criteria.internal.CriteriaBuilderImpl;
 import org.hibernate.query.criteria.internal.expression.function.BasicFunctionExpression;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +45,7 @@ import java.util.stream.Collectors;
 
 @Service
 @Transactional
+@Slf4j
 public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo, ComCharacters, Integer> implements ComCharactersService {
 
     @PersistenceContext
@@ -58,6 +68,12 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
     @Autowired
     private ExcelCharacterLevelService excelCharacterLevelService;
 
+    @Autowired
+    private ExcelCharacterColorService excelCharacterColorService;
+
+    @Autowired
+    private ExcelResourcesService excelResourcesService;
+
 
     @Override
     public List<ComCharactersRandomVo> randomRoleByNumber(Integer number) {
@@ -96,36 +112,59 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
         comCharacters.setUserId(userId);
         comCharacters.setRoleId(_attr.getId()); //用属性的id来设置roleId
         comCharacters.setRoleType(roleType);
+        ////力量
+        //Double _powerDouble = new Random().nextDouble() * (_attr.getStartPowerLimitUpper() - _attr.getStartPowerLimitLower()) + _attr.getStartPowerLimitLower();
+        //comCharacters.setPower(_powerDouble.intValue());
+        ////智力(智慧)
+        //Double _intelligenceDouble = new Random().nextDouble() * (_attr.getStartWisdomLimitUpper() - _attr.getStartWisdomLimitLower()) + _attr.getStartWisdomLimitLower();
+        //comCharacters.setIntelligence(_intelligenceDouble.intValue());
+        ////技巧
+        //Double _skillsDouble = new Random().nextDouble() * (_attr.getStartSkillLimitUpper() - _attr.getStartSkillLimitLower()) + _attr.getStartSkillLimitLower();
+        //comCharacters.setSkills(_skillsDouble.intValue());
+
+        //随机一个力量值,添加到后面的属性上
+        Double _random = new Random().nextDouble() * _attr.getRandomAttr();
+        comCharacters.setRandom(_random.intValue());
+
         //力量
-        Double _powerDouble = new Random().nextDouble() * (_attr.getStartPowerLimitUpper() - _attr.getStartPowerLimitLower()) + _attr.getStartPowerLimitLower();
+        Double _powerDouble = _random + _attr.getStartPowerLimitLower();
         comCharacters.setPower(_powerDouble.intValue());
         //智力(智慧)
-        Double _intelligenceDouble = new Random().nextDouble() * (_attr.getStartWisdomLimitUpper() - _attr.getStartWisdomLimitLower()) + _attr.getStartWisdomLimitLower();
+        Double _intelligenceDouble = _random + _attr.getStartWisdomLimitLower();
         comCharacters.setIntelligence(_intelligenceDouble.intValue());
         //技巧
-        Double _skillsDouble = new Random().nextDouble() * (_attr.getStartSkillLimitUpper() - _attr.getStartSkillLimitLower()) + _attr.getStartSkillLimitLower();
+        Double _skillsDouble = _random + _attr.getStartSkillLimitLower();
         comCharacters.setSkills(_skillsDouble.intValue());
-        Double _random = new Random().nextDouble() * _attr.getRandomAttr();
-        comCharacters.setRandom(_random.intValue());
+
+
         String[] itemArray = _attr.getProfessional().split("\\|");
 
         int a = (int) Math.floor(new Random().nextDouble() * itemArray.length);
-        comCharacters.setProfessional(itemArray[a]);
+        comCharacters.setProfessional(Integer.parseInt(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");
+        //随机生成一套model,todo 暂时固定7个,
+
+        List<ExcelCharacterColor> colorListVo = new ArrayList<>();
+        List<String> colorIdList = new ArrayList<>();
+        //全部颜色
+        List<ExcelCharacterColor> characterColorList = excelCharacterColorService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_CHARACTER_COLOR.getMessage());
+        List<ExcelCharacterCreate> _list = excelCharacterCreateService.findAll();
+        List<ExcelCharacterCreate> _genList = generateCharacterModels(_list);
+        List<String> modelList = _genList.stream().map(e -> {
+            //创建对应的颜色
+            ExcelCharacterColor _color = characterColorList.get((int) (Math.random() * characterColorList.size()));
+            colorListVo.add(_color);
+            colorIdList.add(_color.getId().toString());
+            return e.getModel().toString();
+        }).collect(Collectors.toList());
+        comCharacters.setModelId(String.join("|", modelList));
+        //记录颜色id
+        comCharacters.setModelColor(String.join("|", colorIdList));
 
         //设置经验和等级
         comCharacters.setExp(0);
@@ -143,7 +182,21 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
         //设置第二级的升级经验
         ExcelCharacterLevelVo excelCharacterLevelVo = excelCharacterLevelService.getVo(2);
         clientVo.setLevelUpExp(excelCharacterLevelVo.getExp());
-        clientVo.setSubCreateClientList(CopyUtil.copyList(_list,ExcelCharacterCreateClientVo.class));
+        //clientVo.setSubCreateClientList(CopyUtil.copyList(_list, ExcelCharacterCreateClientVo.class));
+        //对应资源
+        Integer[] _modelIdArray = Convert.toIntArray(comCharacters.getModelId().split("\\|"));
+        final int[] index = {0};
+        List<ExcelResourcesClientVo> resourcesList = excelResourcesService.findByArtIdIn(_modelIdArray).stream().map(_res -> {
+            ExcelCharacterCreate excelCharacterCreate = _genList.stream().filter(_gen -> _gen.getModel().equals(_res.getArtId())).findFirst().get();
+
+            _res.setPosition(excelCharacterCreate.getPosition());
+            _res.setCharacterColor(CopyUtil.copy(colorListVo.get(index[0]), ExcelCharacterColorClientVo.class));
+            index[0]++;
+            log.info(index[0] + "");
+            return _res;
+        }).collect(Collectors.toList());
+        clientVo.setSubResourcesClientList(resourcesList);
+
         return clientVo;
     }
 
@@ -155,7 +208,7 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
 
 
     @Override
-    public List<ComCharactersClientVo> findByProfessionalSort(String userId, String professional) {
+    public List<ComCharactersClientVo> findByProfessionalSort(String userId, Integer professional) {
         String _properties = "power";//默认power排序
         if (professional.equals(GameEnum.PRO_POWER.getValue())) {
             _properties = "power";
@@ -165,12 +218,108 @@ public class ComCharactersServiceImpl extends CommonServiceImpl<ComCharactersVo,
             _properties = "skills";
         }
         List<ComCharacters> comCharactersList = comCharactersRepository.findByUserIdAndProfessional(userId, professional, Sort.by(Sort.Direction.DESC, _properties));
-        return CopyUtil.copyList(comCharactersList, ComCharactersClientVo.class);
+        List<ComCharactersClientVo> comCharactersClientVos = comCharactersList.stream().map(e -> {
+            ComCharactersClientVo comCharactersClientVo = new ComCharactersClientVo();
+            comCharactersClientVo = CopyUtil.copy(e, ComCharactersClientVo.class);
+            comCharactersClientVo = addSubResourcesClientListToVO(comCharactersClientVo, e.getModelId(), e.getModelColor());
+            //Integer[] _modelIdArray = Convert.toIntArray(e.getModelId().split("\\|"));
+            ////查询position
+            //List<ExcelCharacterCreate> _genList =  excelCharacterCreateService.findByModelIn(_modelIdArray);
+            //List<ExcelResourcesClientVo> resourcesList = excelResourcesService.findByArtIdIn(_modelIdArray).stream().map(_res->{
+            //    ExcelCharacterCreate excelCharacterCreate = _genList.stream().filter(_gen->_gen.getModel().equals(_res.getArtId())).findFirst().get();
+            //    _res.setPosition(excelCharacterCreate.getPosition());
+            //    return _res;
+            //}).collect(Collectors.toList());
+            //comCharactersClientVo.setSubResourcesClientList(resourcesList);
+            return comCharactersClientVo;
+        }).collect(Collectors.toList());
+        return comCharactersClientVos;
     }
 
 
     @Override
     public List<ComCharacters> findByRoleIdIn(Integer[] ids) {
-        return comCharactersRepository.findByIdIn(ids,Sort.by(Sort.Direction.ASC, "id"));
+        return comCharactersRepository.findByIdIn(ids, Sort.by(Sort.Direction.ASC, "id"));
+    }
+
+    /**
+     * 生成 7个配件
+     *
+     * @param _allList
+     * @return
+     */
+    private List<ExcelCharacterCreate> generateCharacterModels(List<ExcelCharacterCreate> _allList) {
+        List<ExcelCharacterCreate> _currentCharacters = new ArrayList<>();
+        //1.生成瞳孔
+        //权重计算,当前有20个权重1,9个权重6,4个权重5,加起来值是100
+        List<ExcelCharacterCreate> pupilAll = _allList.stream().filter(e -> e.getPosition().equals(1)).collect(Collectors.toList());
+        ExcelCharacterCreate pupil = pupilAll.get((int) (Math.random() * pupilAll.size()));
+        //左右瞳孔 todo 颜色区分
+        _currentCharacters.add(pupil);
+        _currentCharacters.add(pupil);
+        //2.生成耳朵
+        List<ExcelCharacterCreate> earsAll = _allList.stream().filter(e -> e.getPosition().equals(2)).collect(Collectors.toList());
+        ExcelCharacterCreate ears = earsAll.get((int) (Math.random() * earsAll.size()));
+        _currentCharacters.add(ears);
+        _currentCharacters.add(ears);
+
+        //3.生成眉毛
+        List<ExcelCharacterCreate> eyebrowAll = _allList.stream().filter(e -> e.getPosition().equals(3)).collect(Collectors.toList());
+        ExcelCharacterCreate eyebrow = eyebrowAll.get((int) (Math.random() * eyebrowAll.size()));
+        _currentCharacters.add(eyebrow);
+        _currentCharacters.add(eyebrow);
+
+        //4.生成吻部
+        List<ExcelCharacterCreate> snoutAll = _allList.stream().filter(e -> e.getPosition().equals(4)).collect(Collectors.toList());
+        ExcelCharacterCreate snout = snoutAll.get((int) (Math.random() * snoutAll.size()));
+        _currentCharacters.add(snout);
+
+        //5.生成花纹
+        List<ExcelCharacterCreate> decorativePatternAll = _allList.stream().filter(e -> e.getPosition().equals(5)).collect(Collectors.toList());
+        ExcelCharacterCreate decorativePattern = decorativePatternAll.get((int) (Math.random() * decorativePatternAll.size()));
+        _currentCharacters.add(decorativePattern);
+
+        //6.生成轮廓
+        List<ExcelCharacterCreate> outLineAll = _allList.stream().filter(e -> e.getPosition().equals(6)).collect(Collectors.toList());
+        ExcelCharacterCreate outLine = outLineAll.get((int) (Math.random() * outLineAll.size()));
+        _currentCharacters.add(outLine);
+
+        //7.生成尾巴
+        List<ExcelCharacterCreate> tailAll = _allList.stream().filter(e -> e.getPosition().equals(7)).collect(Collectors.toList());
+        ExcelCharacterCreate tail = tailAll.get((int) (Math.random() * tailAll.size()));
+        _currentCharacters.add(tail);
+
+        return _currentCharacters;
+    }
+
+    /**
+     * 查询子配件,设置到 ComCharactersClientVo 里面
+     *
+     * @param comCharactersClientVo
+     * @param _modelIdStr
+     * @return
+     */
+    @Override
+    public ComCharactersClientVo addSubResourcesClientListToVO(ComCharactersClientVo comCharactersClientVo, String _modelIdStr, String _modelColorStr) {
+        Integer[] _modelIdArray = Convert.toIntArray(_modelIdStr.split("\\|"));
+        //查询position
+        List<ExcelCharacterCreate> _genList = excelCharacterCreateService.findByModelIn(_modelIdArray);
+
+        List<ExcelCharacterColor> allColorList = excelCharacterColorService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_CHARACTER_COLOR.getMessage());
+        List<String> _colorList = Arrays.asList(_modelColorStr.split("\\|"));
+        List<ExcelCharacterColor> allExcelProps = allColorList.stream().filter(e -> _colorList.contains(e.getId().toString())).collect(Collectors.toList());
+
+
+        final int[] index = {0};
+        List<ExcelResourcesClientVo> resourcesList = excelResourcesService.findByArtIdIn(_modelIdArray).stream().map(_res -> {
+            ExcelCharacterCreate excelCharacterCreate = _genList.stream().filter(_gen -> _gen.getModel().equals(_res.getArtId())).findFirst().get();
+            _res.setPosition(excelCharacterCreate.getPosition());
+
+            _res.setCharacterColor(CopyUtil.copy(allExcelProps.get(index[0]), ExcelCharacterColorClientVo.class));
+            index[0]++;
+            return _res;
+        }).collect(Collectors.toList());
+        comCharactersClientVo.setSubResourcesClientList(resourcesList);
+        return comCharactersClientVo;
     }
 }

+ 4 - 1
src/main/java/com/td/Dawa/game/comcharacters/vo/ComCharactersClientVo.java

@@ -1,6 +1,7 @@
 package com.td.Dawa.game.comcharacters.vo;
 
 import com.td.Dawa.game.excelcharactercreate.vo.ExcelCharacterCreateClientVo;
+import com.td.Dawa.game.excelresources.vo.ExcelResourcesClientVo;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -32,7 +33,7 @@ public class ComCharactersClientVo implements Serializable {
 
     private Integer random;//随机属性值
 
-    private String professional;//当前职业
+    private Integer professional;//当前职业
 
     private String action;//携带动作
 
@@ -44,6 +45,8 @@ public class ComCharactersClientVo implements Serializable {
 
     private List<ExcelCharacterCreateClientVo> subCreateClientList;
 
+    private List<ExcelResourcesClientVo> subResourcesClientList;
+
     //private Date createTime;//
     //
     //private Date updateTime;//

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

@@ -28,7 +28,7 @@ public class ComCharactersSimpleVo implements Serializable {
 
     private Integer random;//随机属性值
 
-    private String professional;//当前职业
+    private Integer professional;//当前职业
 
     private String action;//携带动作
 

+ 3 - 1
src/main/java/com/td/Dawa/game/comcharacters/vo/ComCharactersVo.java

@@ -28,7 +28,7 @@ public class ComCharactersVo extends PageCondition implements Serializable {
 
     private Integer random;//随机属性值
 
-    private String professional;//当前职业
+    private Integer professional;//当前职业
 
     private String action;//携带动作
 
@@ -38,6 +38,8 @@ public class ComCharactersVo extends PageCondition implements Serializable {
 
     private String modelId;//记录生成的模型id,如1|2|3格式
 
+    private String modelColor;//记录模型生成的颜色id,如1|2|3格式
+
     private Date createTime;//
 
     private Date updateTime;//

+ 11 - 9
src/main/java/com/td/Dawa/game/comcharactersdiscovery/controller/ComCharactersDiscoveryController.java

@@ -39,13 +39,15 @@ public class ComCharactersDiscoveryController extends CommonController<ComCharac
     @PostMapping("startExploration")
     @Decrypt
     @Encrypt
-    public Result<ComCharactersDiscoveryClientVo> startExploration(@RequestParam(value = "userId") String userId,
+    public Result<?> startExploration(@RequestParam(value = "userId") String userId,
                                                                    @RequestParam(value = "sceneId") Integer sceneId) {
         try {
-            ComCharactersDiscoveryVo characterDiscoveryVo = comCharactersDiscoveryService.startDiscover(userId, sceneId);
-            return Result.of(CopyUtil.copy(characterDiscoveryVo, ComCharactersDiscoveryClientVo.class));
+            ComCharactersDiscoveryClientVo characterDiscoveryClientVo = comCharactersDiscoveryService.startDiscover(userId, sceneId);
+            return Result.of(characterDiscoveryClientVo);
         } catch (AuthorizeException e) {
             return Result.of(null, false, e.getMessage(), e.getCode());
+        } catch (Exception e) {
+            return Result.of(e.getMessage(), false, ResultEnum.EXPLORATION_INFO_ERROR);
         }
 
     }
@@ -62,8 +64,8 @@ public class ComCharactersDiscoveryController extends CommonController<ComCharac
     @Decrypt
     @Encrypt
     public Result<?> addExplorationRole(@RequestParam(value = "userId") String userId,
-                                                                     @RequestParam(value = "roleId") Integer roleId,
-                                                                     @RequestParam(value = "sceneId") Integer sceneId) {
+                                        @RequestParam(value = "roleId") Integer roleId,
+                                        @RequestParam(value = "sceneId") Integer sceneId) {
         try {
             //todo  暂时roleType对应这roleId
             //      暂时可以创建多个相同的角色
@@ -100,7 +102,7 @@ public class ComCharactersDiscoveryController extends CommonController<ComCharac
         characterDiscoveryVo.setPage(page + 1);
         characterDiscoveryVo.setRows(limit);
         characterDiscoveryVo.setSidx("desc");
-        characterDiscoveryVo.setSord("isWork");
+        characterDiscoveryVo.setSord("createTime");
         PageInfo<ComCharactersDiscoveryClientVo> clientVoList = comCharactersDiscoveryService.findDiscoverClientVo(characterDiscoveryVo);
         return Result.of(clientVoList);
     }
@@ -117,15 +119,15 @@ public class ComCharactersDiscoveryController extends CommonController<ComCharac
     @Decrypt
     @Encrypt
     public Result<?> updateState(@RequestParam(value = "userId") String userId,
-                                                              @RequestParam(value = "explorationId") Integer explorationId,
-                                                              @RequestParam(value = "isStop", defaultValue = "false") Boolean isStop) {
+                                 @RequestParam(value = "explorationId") Integer explorationId,
+                                 @RequestParam(value = "isStop", defaultValue = "false") Boolean isStop) {
         try {
             //查看是否存在勘探数据
             ComCharactersDiscoveryVo discoveryVo = comCharactersDiscoveryService.getVo(explorationId);
             if (discoveryVo == null || !discoveryVo.getUserId().equals(userId)) {
                 throw new RuntimeException("勘探队伍不存在!");
             }
-            //计算收益
+            //计算收益updateState
             return Result.of(comCharactersDiscoveryService.explorationState(discoveryVo, isStop));
         } catch (AuthorizeException e) {
             return Result.of(null, false, e.getMessage(), e.getCode());

+ 2 - 0
src/main/java/com/td/Dawa/game/comcharactersdiscovery/pojo/ComCharactersDiscovery.java

@@ -40,6 +40,8 @@ public class ComCharactersDiscovery implements Serializable {
 
     private Integer rewardExp; //记录奖励的经验
 
+    private Integer rewardCurrency;//记录奖励的货币
+
     private String allItem; //全部产出的item记录
 
     private String note;//描述

+ 1 - 1
src/main/java/com/td/Dawa/game/comcharactersdiscovery/service/ComCharactersDiscoveryService.java

@@ -9,7 +9,7 @@ import com.td.Dawa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryVo;
 
 public interface ComCharactersDiscoveryService extends CommonService<ComCharactersDiscoveryVo, ComCharactersDiscovery, Integer> {
 
-    ComCharactersDiscoveryVo startDiscover(String userId, Integer sceneId);
+    ComCharactersDiscoveryClientVo startDiscover(String userId, Integer sceneId);
 
     ComCharactersDiscoveryClientVo addDiscoverRole(ComCharactersVo charactersVo, Integer sceneId);
 

+ 270 - 94
src/main/java/com/td/Dawa/game/comcharactersdiscovery/service/ComCharactersDiscoveryServiceImpl.java

@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.NumberUtil;
 import com.td.Dawa.common.pojo.PageInfo;
-import com.td.Dawa.common.pojo.Result;
 import com.td.Dawa.common.service.*;
 import com.td.Dawa.config.enums.GameEnum;
 import com.td.Dawa.config.enums.ResultEnum;
@@ -19,10 +18,10 @@ import com.td.Dawa.game.comcharactersdiscovery.pojo.ComCharactersDiscovery;
 import com.td.Dawa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryClientVo;
 import com.td.Dawa.game.comcharactersdiscovery.vo.ComCharactersDiscoveryVo;
 import com.td.Dawa.game.comcharactersdiscovery.repository.ComCharactersDiscoveryRepository;
-import com.td.Dawa.game.complayers.service.ComPlayersService;
 import com.td.Dawa.game.complayersattri.service.ComPlayersAttriService;
-import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriClientVo;
 import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriVo;
+import com.td.Dawa.game.excelcharactercreate.pojo.ExcelCharacterCreate;
+import com.td.Dawa.game.excelcharactercreate.service.ExcelCharacterCreateService;
 import com.td.Dawa.game.excelcharacterlevel.service.ExcelCharacterLevelService;
 import com.td.Dawa.game.excelcharacterlevel.vo.ExcelCharacterLevelVo;
 import com.td.Dawa.game.exceldrop.pojo.ExcelDrop;
@@ -30,8 +29,16 @@ import com.td.Dawa.game.exceldrop.service.ExcelDropService;
 import com.td.Dawa.game.exceldrop.vo.ExcelDropClientVo;
 import com.td.Dawa.game.excelparameter.service.ExcelParameterService;
 import com.td.Dawa.game.excelparameter.vo.ExcelParameterVo;
+import com.td.Dawa.game.excelprop.pojo.ExcelProp;
+import com.td.Dawa.game.excelprop.service.ExcelPropService;
+import com.td.Dawa.game.excelprop.vo.ExcelPropClientVo;
+import com.td.Dawa.game.excelresources.service.ExcelResourcesService;
+import com.td.Dawa.game.excelresources.vo.ExcelResourcesClientVo;
 import com.td.Dawa.game.excelscene.pojo.ExcelScene;
 import com.td.Dawa.game.excelscene.service.ExcelSceneService;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.service.ExcelWorkProService;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
 import com.td.Dawa.util.CopyUtil;
 import com.td.Dawa.util.UUIDUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -42,8 +49,8 @@ import org.springframework.util.StringUtils;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
-import java.math.BigInteger;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -73,6 +80,17 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
     @Autowired
     private ExcelParameterService excelParameterService;
 
+    @Autowired
+    private ExcelResourcesService excelResourcesService;
+
+    @Autowired
+    private ExcelCharacterCreateService excelCharacterCreateService;
+
+    @Autowired
+    private ExcelWorkProService excelWorkProService;
+    @Autowired
+    private ExcelPropService excelPropService;
+
     /**
      * 开始工作
      *
@@ -81,7 +99,7 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
      * @return
      */
     @Override
-    public ComCharactersDiscoveryVo startDiscover(String userId, Integer sceneId) {
+    public ComCharactersDiscoveryClientVo startDiscover(String userId, Integer sceneId) {
 
         ComCharactersDiscovery comCharacterDiscovery =
                 comCharactersDiscoveryRepository.findByUserIdAndSceneId(userId, sceneId).orElse(null);
@@ -94,6 +112,7 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             if (comCharacterDiscovery.getIsWork().equals(GameEnum.WORK_COMPLETE.getValue())) {
                 throw new AuthorizeException(ResultEnum.EXPLORATION_COMPLETE);
             }
+
             //设置工作状态,设置工作开始时间
             comCharacterDiscovery.setIsWork(GameEnum.WORK_ING.getValue());
             comCharacterDiscovery.setWorkStart(DateUtil.date());
@@ -115,8 +134,37 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             comPlayersAttriService.save(attriVo);
         }
         ComCharactersDiscoveryVo comCharacterDiscoveryVo = CopyUtil.copy(comCharacterDiscovery, ComCharactersDiscoveryVo.class);
+        //存储
+        ComCharactersDiscoveryVo discoveryVo = super.save(comCharacterDiscoveryVo).getData();
+        //先找出三个职业对象
+        String[] roleId = discoveryVo.getRoleId().split("\\|");
+        Integer[] _roleIds = Convert.toIntArray(roleId);
+        List<ComCharacters> characters = comCharactersService.findByRoleIdIn(_roleIds);
+        ComCharactersDiscoveryClientVo discoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
+        //找出资源
+        List<ComCharactersClientVo> comCharactersClientVos = characters.stream().map(e -> {
+            ComCharactersClientVo comCharactersClientVo = new ComCharactersClientVo();
+            comCharactersClientVo = CopyUtil.copy(e, ComCharactersClientVo.class);
+            comCharactersClientVo = comCharactersService.addSubResourcesClientListToVO(comCharactersClientVo, e.getModelId(),e.getModelColor());
+            //Integer[] _modelIdArray = Convert.toIntArray(e.getModelId().split("\\|"));
+            ////查询position
+            //List<ExcelCharacterCreate> _genList = excelCharacterCreateService.findByModelIn(_modelIdArray);
+            //List<ExcelResourcesClientVo> resourcesList = excelResourcesService.findByArtIdIn(_modelIdArray).stream().map(_res -> {
+            //    ExcelCharacterCreate excelCharacterCreate = _genList.stream().filter(_gen -> _gen.getModel().equals(_res.getArtId())).findFirst().get();
+            //    _res.setPosition(excelCharacterCreate.getPosition());
+            //    return _res;
+            //}).collect(Collectors.toList());
+            //comCharactersClientVo.setSubResourcesClientList(resourcesList);
+            return comCharactersClientVo;
+        }).collect(Collectors.toList());
+        discoveryClientVo.setSubCharacters(comCharactersClientVos);//当前职业
+        // 把当前时间设置到mill中
+        discoveryClientVo.setWorkMill(discoveryVo.getWorkDay().longValue());
+        //设置携带属性
+        discoveryClientVo = setDiscoveryClientVoProAndTransNum(discoveryClientVo);
+
         //存储并且返回
-        return super.save(comCharacterDiscoveryVo).getData();
+        return discoveryClientVo;
     }
 
     /**
@@ -147,6 +195,7 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             comCharacterDiscovery.setDiscoverLevel(1); //默认探索第一层场景
             comCharacterDiscovery.setSceneId(sceneId); // 比如矿洞id对应的入口是201
             comCharacterDiscovery.setRewardExp(0); // 默认不奖励经验
+            comCharacterDiscovery.setRewardCurrency(0); // 默认不奖励货币
             comCharacterDiscovery.setNote("工作队伍");
 
             comCharacterDiscovery.setCreateTime(DateUtil.date());
@@ -220,14 +269,25 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             }
             //开始工作时间 + 工作天数
             Date endDate = DateUtil.offsetMillisecond(discoveryVo.getWorkStart(), discoveryVo.getWorkDay());
-            //当前时间与结束时间的毫秒
-            Long dif = DateUtil.between(DateUtil.date(), endDate, DateUnit.MS, false);
-            if (dif <= 0L) {
-                //工作完成
-                discoveryVo.setIsWork(GameEnum.WORK_COMPLETE.getValue());
-                super.save(discoveryVo);
-                dif = 0L;
+            //
+            Long dif = 0L;
+            if (discoveryVo.getIsWork().equals(GameEnum.WORK_ING.getValue())) {
+                //如果已经开始工作,计算当前时间与结束时间的毫秒
+                dif = DateUtil.between(DateUtil.date(), endDate, DateUnit.MS, false);
+                if (dif <= 0L) {
+                    //工作完成
+                    discoveryVo.setIsWork(GameEnum.WORK_COMPLETE.getValue());
+                    super.save(discoveryVo);
+                    dif = 0L;
+                }
+            } else {
+                //还没开始工作,返回开始和结束直接的毫秒
+                dif = DateUtil.between(discoveryVo.getWorkStart(), endDate, DateUnit.MS, false);
+                if (dif <= 0L) {
+                    dif = 0L;
+                }
             }
+
             ComCharactersDiscoveryClientVo comCharacterDiscoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
             //小于等于零即完成
             comCharacterDiscoveryClientVo.setWorkMill(dif);
@@ -252,7 +312,7 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
      * 挖矿工作状态
      * 1.工作时间未完结时候,刷新按照最后一次updateTime来判定是否重新计算产出,假如挖矿和勘探分别有不同的时间
      * 2.工作未完结时间,记录当前产出的物品和产出m
-     * 3.工作完结,删除工作队列,相关产出转移背包,计算经验等。(todo 删除的队列进入回收列表)
+     * 3.工作完结,删除工作队列,相关产出转移背包,计算经验等。(删除的队列进入回收列表)
      * 4.可中途结束工作
      *
      * @param discoveryVo
@@ -267,17 +327,18 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
         List<ExcelParameterVo> parameterVos = excelParameterService.list(new ExcelParameterVo()).getData();
         ExcelParameterVo parameter = parameterVos.get(6); //初始化工作经验
         Integer outExp = parameter.getValue().intValue();
-
+        //当前关卡奖励的经验
+        discoveryVo.setRewardExp(outExp);
         //todo 获取当前人物等级经验表,待优化
         List<ExcelCharacterLevelVo> excelCharacterLevelVo = excelCharacterLevelService.list(new ExcelCharacterLevelVo()).getData();
         //已产生的奖励物品
         String[] _hasDropIds = StringUtils.hasText(discoveryVo.getRewardItem()) ? discoveryVo.getRewardItem().split("\\|") : new String[0];
         //奖励物品的计数
         String[] _hasDropCounts = StringUtils.hasText(discoveryVo.getRewardCount()) ? discoveryVo.getRewardCount().split("\\|") : new String[0];
-        //奖励物品的计数
+        //总共参数的奖励物品
         String[] _allDropIds = StringUtils.hasText(discoveryVo.getRewardCount()) ? discoveryVo.getAllItem().split("\\|") : new String[0];
         //记录当前的产出奖励
-        List<ExcelDropClientVo> outExcelDrops = new ArrayList<>();
+        List<ExcelPropClientVo> outExcelProps = new ArrayList<>();
 
         //开始工作时间 + 工作天数
         Date endDate = DateUtil.offsetMillisecond(discoveryVo.getWorkStart(), discoveryVo.getWorkDay());
@@ -300,39 +361,50 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
         }
 
         //todo 根据场景id获取当前场景配置 后面处理缓存,提高速度
+        //获取场景全部列表
+        //List<ExcelScene> excelSceneList = excelSceneService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_SCENE.getMessage());
         //主场景id
         ExcelScene excelScene = excelSceneService.findBySceneId(discoveryVo.getSceneId());
-        if (!StringUtils.hasText(excelScene.getSceneEvent())) {
-            throw new RuntimeException("scene event 奖励未配置");
-        }
+        //if (!StringUtils.hasText(excelScene.getSceneEvent())) {
+        //    throw new RuntimeException("scene event 奖励未配置");
+        //}
         //获取当前的一个基础数量
         Integer outTransUpperLimit = excelScene.getAmount();
-
         //当前场景层级对应的物品
-        String[] _dropIds = excelScene.getSceneEvent().split("\\|");
-        List<ExcelDrop> excelDrops = excelDropService.getListByDropIds(Convert.toIntArray(_dropIds));
-        //List<ExcelDropClientVo> dropClientVos = CopyUtil.copyList(excelDrops, ExcelDropClientVo.class);
-        List<ExcelDropClientVo> dropClientVos = new ArrayList<>(); // 这里返回的是挖取出来的物品
-
-        //todo 添加已经有的物品信息
-        for (int i = 0; i < _allDropIds.length; i++) {
-            if (ArrayUtil.contains(_dropIds, _allDropIds[i])) {
-                int _index = ArrayUtil.indexOf(_dropIds, _allDropIds[i]);
-                ExcelDrop _clientVo = excelDrops.get(_index);
-                ExcelDropClientVo dropClientVo = CopyUtil.copy(_clientVo, ExcelDropClientVo.class);
-                dropClientVo.setCount(0);
-                dropClientVos.add(dropClientVo);
-            }
-        }
+        //String[] _dropIds = excelScene.getSceneEvent().split("\\|");
+        //List<ExcelDrop> currentSceneExcelDrops = excelDropService.getListByDropIds(Convert.toIntArray(_dropIds));
+
+        //获取概率表数据(缓存取)
+        List<ExcelWorkPro> workProList = excelWorkProService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_WORK_PRO.getMessage());
+        //获取当前道具表
+        List<ExcelProp> propList = excelPropService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_PROP.getMessage());
+
+        //已经挖出的全部道具
+        List<String> _allDropIdList = Arrays.asList(_allDropIds);
+        List<ExcelProp> allExcelProps = propList.stream().filter(e -> _allDropIdList.contains(e.getPropId().toString())).collect(Collectors.toList());
+        // 这里返回的是挖取出来的物品
+        List<ExcelPropClientVo> allPropClientVoList = allExcelProps.stream().map(e -> {
+            ExcelPropClientVo _vo = CopyUtil.copy(e, ExcelPropClientVo.class);
+            _vo.setItemNum(0);
+            return _vo;
+        }).collect(Collectors.toList());
+        //已经得到的奖励
         for (int i = 0; i < _hasDropIds.length; i++) {
-            if (ArrayUtil.contains(_dropIds, _hasDropIds[i])) {
-                int _index = ArrayUtil.indexOf(_dropIds, _hasDropIds[i]);
-                ExcelDrop _clientVo = excelDrops.get(_index);
-                ExcelDropClientVo dropClientVo = CopyUtil.copy(_clientVo, ExcelDropClientVo.class);
+            //if (ArrayUtil.contains(_allDropIds, _hasDropIds[i])) {
+            //    int _index = ArrayUtil.indexOf(_allDropIds, _hasDropIds[i]);
+            //    ExcelDropClientVo _dropClientVo = allDropClientVos.get(_index);
+            //    int _dropCount = Integer.parseInt(ArrayUtil.get(_hasDropCounts, i));//根据id获取记录的count
+            //    _dropClientVo.setCount(_dropCount);
+            //    outExcelProps.add(_dropClientVo);
+            //}
+            if (_allDropIdList.contains(_hasDropIds[i])) {
+                int _index = _allDropIdList.indexOf(_hasDropIds[i]);
+                ExcelPropClientVo _dropClientVo = allPropClientVoList.get(_index);
                 int _dropCount = Integer.parseInt(ArrayUtil.get(_hasDropCounts, i));//根据id获取记录的count
-                dropClientVo.setCount(_dropCount);
-                outExcelDrops.add(dropClientVo);
+                _dropClientVo.setItemNum(_dropCount);
+                outExcelProps.add(_dropClientVo);
             }
+
         }
 
         //当前探索队伍
@@ -342,20 +414,25 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
         //角色list
         List<ComCharactersClientVo> comCharactersClientVos = new ArrayList<>();
 
+
         //先找出三个职业对象
         ComCharactersVo powerChar = null, intelliChar = null, skillChar = null;
+        ExcelWorkPro _excelWorkPro = null;
+        String[] _levelItemList = new String[0];
+        List<ExcelProp> currentExcelProps;
+        List<String> _levelPropIds;
         List<ComCharacters> characters = comCharactersService.findByRoleIdIn(_roleIds);
         //设置一个默认的基础数量
         for (int i = 0; i < characters.size(); i++) {
             ComCharactersVo comCharactersVo = CopyUtil.copy(characters.get(i), ComCharactersVo.class); //comCharactersService.getVo(Integer.parseInt(roleId[i]));
             //根据当前角色的职业计算
-            Integer _professional = Integer.parseInt(comCharactersVo.getProfessional());
+            Integer _professional = comCharactersVo.getProfessional();
             if (_professional.equals(GameEnum.PRO_SKIlLS.getValue())) {
                 //运输工
                 skillChar = comCharactersVo;
                 //计算当前运输格数,即获取到物品的上限
                 //场景的最低运输数量
-                Integer _selfLimit = getLimitSkills(comCharactersVo.getSkills());
+                Integer _selfLimit = getLimitSkillsAndList(comCharactersVo.getSkills(), workProList);
                 if (_selfLimit > outTransUpperLimit) {
                     outTransUpperLimit = _selfLimit;
                 }
@@ -373,6 +450,22 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             //  矿工有休息动作,休息时间3秒
             // 勘探:
             Integer _power = powerChar.getPower();
+            //获取当前工作的效率表
+            _excelWorkPro = getRatioByPowerAndSceneIdAndList(_power, discoveryVo.getSceneId(), workProList);
+            //道具和道具对应的概率
+            _levelItemList = _excelWorkPro.getLevelItem().split(",");
+            String _levelProp = ArrayUtil.get(_levelItemList, discoveryVo.getDiscoverLevel() - 1);//获取当前层级的道具
+            String[] _mainAndProp = _levelProp.split("\\|");
+            _levelPropIds = Arrays.asList(ArrayUtil.remove(_mainAndProp, 0)); //对应的id list
+            String _levelSceneId = _mainAndProp[0];//第一个是场景id,移除
+            List<String> final_levelPropIds = _levelPropIds;
+            currentExcelProps = propList.stream().filter(e -> final_levelPropIds.contains(e.getPropId().toString())).collect(Collectors.toList());//过滤后的当前场景可获得的道具
+            String[] _levelProList = _excelWorkPro.getLevelPro().split(",");
+            String _levelPropPro = ArrayUtil.get(_levelProList, discoveryVo.getDiscoverLevel() - 1);//获取当前层级的道具对应的概率
+            String[] _mainAndPropPro = _levelPropPro.split("\\|");
+            List<String> _levelPropProList = Arrays.asList(ArrayUtil.remove(_mainAndPropPro, 0)); //对应的概率id list
+            String _level = _mainAndPropPro[0];//第一个是场景level,移除
+
             int _miningInterval = parameterVos.get(3).getValue().intValue();//挖矿时间间隔
             log.info("挖矿间隔时间:" + _miningInterval);
             int _count = (int) Math.floor(difSecond / _miningInterval); // 一共执行的工作次数和休息
@@ -383,34 +476,50 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
                 //采集x4+休息x1
                 if (j % 5 != 0) {
                     //工作,并且奖励物品
-                    if (NumberUtil.compare(new Random().nextDouble(), getRatioByPower(_power)) > 0) {
-                        int index = (int) (Math.random() * excelDrops.size());
-                        ExcelDrop _clientVo = excelDrops.get(index);
-                        //
-                        {
-                            //todo 如果挖了多少个,添加上去
-                            if (ArrayUtil.contains(_hasDropIds, _clientVo.getId().toString())) {
-                                //已经存在的下标
-                                int _index = ArrayUtil.indexOf(_hasDropIds, _clientVo.getId().toString());
-                                int _dropCount = Integer.parseInt(ArrayUtil.get(_hasDropCounts, _index));//根据id获取记录的count
-                                _dropCount = _dropCount + 1;
-                                _hasDropCounts = ArrayUtil.setOrAppend(_hasDropCounts, _index, _dropCount + "");//添加1个数量
-                                //重新设置count+1
-                                ExcelDropClientVo dropClientVo = outExcelDrops.get(_index);
-                                dropClientVo.setCount(_dropCount);
-                            } else if (outExcelDrops.size() < outTransUpperLimit) {
-                                _hasDropIds = ArrayUtil.append(_hasDropIds, _clientVo.getId().toString());
-                                _hasDropCounts = ArrayUtil.append(_hasDropCounts, "1");//新添加
-                                outExcelDrops.add(CopyUtil.copy(_clientVo, ExcelDropClientVo.class));
+                    //1.先判定Probability, 2.再判定Currency是不是挖到货币或道具  3.挖到道具 再计算道具概率掉落
+                    Double _getProbability = _excelWorkPro.getProbability() / 100;
+                    log.info("_getProbability:" + _getProbability);
+                    if (NumberUtil.compare(new Random().nextDouble(), _getProbability) <= 0) {
+                        Double _currencyPro = Double.parseDouble(_excelWorkPro.getCurrency() + "") / 100;
+                        log.info("当前计算货币概率: " + _currencyPro);
+                        if (NumberUtil.compare(new Random().nextDouble(), _currencyPro) > 0) {//物品概率
+                            //随机获取一个物品,再判断物品概率是否掉落
+                            int index = (int) (Math.random() * currentExcelProps.size());
+                            ExcelProp _clientVo = currentExcelProps.get(index); //随机获得道具
+                            Double _clientPro = Double.parseDouble(_levelPropProList.get(index)) / 100;//随机获得道具对应的概率
+                            if (NumberUtil.compare(new Random().nextDouble(), _clientPro) <= 0) {
+                                //todo 如果挖了多少个,添加上去
+                                if (ArrayUtil.contains(_hasDropIds, _clientVo.getPropId().toString())) {
+                                    //已经存在的下标
+                                    int _index = ArrayUtil.indexOf(_hasDropIds, _clientVo.getPropId().toString());
+                                    int _dropCount = Integer.parseInt(ArrayUtil.get(_hasDropCounts, _index));//根据id获取记录的count
+                                    _dropCount = _dropCount + 1;
+                                    _hasDropCounts = ArrayUtil.setOrAppend(_hasDropCounts, _index, _dropCount + "");//添加1个数量
+                                    //重新设置count+1
+                                    ExcelPropClientVo _propClientVo = outExcelProps.get(_index);
+                                    _propClientVo.setItemNum(_dropCount);
+
+                                } else if (outExcelProps.size() < outTransUpperLimit) {
+                                    _hasDropIds = ArrayUtil.append(_hasDropIds, _clientVo.getPropId().toString());
+                                    _hasDropCounts = ArrayUtil.append(_hasDropCounts, "1");//新添加
+                                    outExcelProps.add(CopyUtil.copy(_clientVo, ExcelPropClientVo.class));
+                                }
                             }
-                        }
 
-                        if (!ArrayUtil.contains(_allDropIds, _clientVo.getId().toString())) {
-                            //如果没添加过,添加一次物品
-                            _allDropIds = ArrayUtil.append(_allDropIds, _clientVo.getId().toString());
-                            ExcelDropClientVo dropClientVo = CopyUtil.copy(_clientVo, ExcelDropClientVo.class);
-                            dropClientVo.setCount(0);
-                            dropClientVos.add(dropClientVo);
+                            if (!ArrayUtil.contains(_allDropIds, _clientVo.getPropId().toString())) {
+                                //如果没添加过,添加一次物品
+                                _allDropIds = ArrayUtil.append(_allDropIds, _clientVo.getPropId().toString());
+                                ExcelPropClientVo _propClientVo = CopyUtil.copy(_clientVo, ExcelPropClientVo.class);
+                                _propClientVo.setItemNum(0);
+                                allPropClientVoList.add(_propClientVo);
+                            }
+                        } else {
+                            //剩余获得货币
+                            log.info("增加货币");
+                            //todo 货币数据未给出,暂定100
+                            ExcelParameterVo _currency = excelParameterService.getVo(8);
+                            int _num =(int) Math.round(_currency.getValue());
+                            discoveryVo.setRewardCurrency(discoveryVo.getRewardCurrency() == null ?  _num: discoveryVo.getRewardCurrency() + _num);
                         }
 
                     }
@@ -420,6 +529,7 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             //完结后三个分别增加经验
             //收获经验 todo 处理人物升级等
             ComCharactersClientVo comCharactersClientVo = upgradeComCharactersVo(powerChar, excelCharacterLevelVo, outExp);
+            comCharactersClientVo = comCharactersService.addSubResourcesClientListToVO(comCharactersClientVo, powerChar.getModelId(),powerChar.getModelColor());
             comCharactersClientVos.add(comCharactersClientVo);
         }
         if (intelliChar != null) {
@@ -433,46 +543,41 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
                 int _count = (int) Math.floor(difSecond / _explorationInterval); // 一共执行勘探的次数
                 //按次数执行奖励
                 for (int j = 0; j < _count; j++) {
-                    //如果等于最后一层,返回
-                    if (discoveryVo.getDiscoverLevel().equals(GameEnum.LIMIT_LEVEL.getValue())) {
-                        break;
-                    }
                     //计算是否进入下一层的概率
-                    double _nextRatio = gotoNextSceneRatio(discoveryVo.getDiscoverLevel(), _intelligence);
-                    if (NumberUtil.compare(new Random().nextDouble(), _nextRatio) > 0) {
+                    double _nextRatio = gotoNextSceneRatioAndList(discoveryVo.getDiscoverLevel(), _intelligence, workProList);
+                    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, discoveryVo.getSceneId());
-                        if (_levelId != 0) {
-                            //切换逻辑后,重新设置奖励列表
-                            excelScene = excelSceneService.findBySceneId(_levelId);
-                            if (StringUtils.hasText(excelScene.getSceneEvent())) {
-                                _dropIds = excelScene.getSceneEvent().split("\\|");
-                                excelDrops = excelDropService.getListByDropIds(Convert.toIntArray(_dropIds));
-                                dropClientVos = CopyUtil.copyList(excelDrops, ExcelDropClientVo.class);
-                            } else {
-                                throw new RuntimeException("scene event 奖励未配置");
-                            }
-
+                        if (_excelWorkPro != null) { //道具和道具对应的概率
+                            String _levelProp = ArrayUtil.get(_levelItemList, _currentLevel - 1);//获取当前层级的道具
+                            String[] _mainAndProp = _levelProp.split("\\|");
+                            _levelPropIds = Arrays.asList(ArrayUtil.remove(_mainAndProp, 0)); //对应的id list
+                            String _levelSceneId = _mainAndProp[0];//第一个是场景id,移除
+                            List<String> final_levelPropIds = _levelPropIds;
+                            currentExcelProps = propList.stream().filter(e -> final_levelPropIds.contains(e.getPropId().toString())).collect(Collectors.toList());//过滤后的当前场景可获得的道具
                         }
+
                     }
                 }
             }
             //完结后三个分别增加经验
             //收获经验 todo 处理人物升级等
             ComCharactersClientVo comCharactersClientVo = upgradeComCharactersVo(intelliChar, excelCharacterLevelVo, outExp);
+            comCharactersClientVo = comCharactersService.addSubResourcesClientListToVO(comCharactersClientVo, intelliChar.getModelId(),intelliChar.getModelColor());
             comCharactersClientVos.add(comCharactersClientVo);
         }
         if (skillChar != null) {
             //完结后三个分别增加经验
             //收获经验 todo 处理人物升级等
             ComCharactersClientVo comCharactersClientVo = upgradeComCharactersVo(skillChar, excelCharacterLevelVo, outExp);
+            comCharactersClientVo = comCharactersService.addSubResourcesClientListToVO(comCharactersClientVo, skillChar.getModelId(),skillChar.getModelColor());
             comCharactersClientVos.add(comCharactersClientVo);
         }
         ComCharactersDiscoveryClientVo discoveryClientVo = CopyUtil.copy(discoveryVo, ComCharactersDiscoveryClientVo.class);
+
         discoveryClientVo.setSubCharacters(comCharactersClientVos);//当前职业
         discoveryClientVo.setWorkMill(dif);//倒计时
         //List<ExcelDropClientVo> _getDrops = outExcelDrops.subList(0, outTransUpperLimit);
@@ -496,15 +601,29 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
             super.save(discoveryVo);
         }
         //输出限制
-        discoveryClientVo.setSubGetDrops(outExcelDrops);//当前产出物品
+        discoveryClientVo.setSubGetDrops(outExcelProps);//当前产出物品
         //全部的奖励物品
-        discoveryClientVo.setSubAllDrops(dropClientVos);
+        discoveryClientVo.setSubAllDrops(allPropClientVoList);
 
         //设置携带属性
         discoveryClientVo = setDiscoveryClientVoProAndTransNum(discoveryClientVo);
         return discoveryClientVo;
     }
 
+
+    //private ComCharactersClientVo addSubResourcesClientList(ComCharactersClientVo comCharactersClientVo ,String _modelIdStr){
+    //    Integer[] _modelIdArray = Convert.toIntArray(_modelIdStr.split("\\|"));
+    //    //查询position
+    //    List<ExcelCharacterCreate> _genList = excelCharacterCreateService.findByModelIn(_modelIdArray);
+    //    List<ExcelResourcesClientVo> resourcesList = excelResourcesService.findByArtIdIn(_modelIdArray).stream().map(_res -> {
+    //        ExcelCharacterCreate excelCharacterCreate = _genList.stream().filter(_gen -> _gen.getModel().equals(_res.getArtId())).findFirst().get();
+    //        _res.setPosition(excelCharacterCreate.getPosition());
+    //        return _res;
+    //    }).collect(Collectors.toList());
+    //    comCharactersClientVo.setSubResourcesClientList(resourcesList);
+    //    return comCharactersClientVo;
+    //}
+
     /**
      * 存储
      *
@@ -549,6 +668,8 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
      * @return
      */
     private ComCharactersDiscoveryClientVo setDiscoveryClientVoProAndTransNum(ComCharactersDiscoveryClientVo clientVo) {
+        //获取概率表数据(缓存取)
+        List<ExcelWorkPro> workProList = excelWorkProService.getListFromCache(GameEnum.REDIS_KEY_EXCEL_WORK_PRO.getMessage());
         //主场景id
         ExcelScene excelScene = excelSceneService.findBySceneId(clientVo.getSceneId());
         if (excelScene.getAmount() == null) {
@@ -560,26 +681,54 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
         List<ComCharactersClientVo> voList = clientVo.getSubCharacters();
         for (int i = 0; i < clientVo.getSubCharacters().size(); i++) {
             ComCharactersClientVo charactersClientVo = voList.get(i);
-            Integer _professional = Integer.parseInt(charactersClientVo.getProfessional());
+            Integer _professional = charactersClientVo.getProfessional();
             if (_professional.equals(GameEnum.PRO_SKIlLS.getValue())) {
                 //运输工
                 //计算当前运输格数,即获取到物品的上限
                 //场景的最低运输数量
-                Integer _selfLimit = getLimitSkills(charactersClientVo.getSkills());
+                Integer _selfLimit = getLimitSkillsAndList(charactersClientVo.getSkills(), workProList);
                 if (_selfLimit > outTransUpperLimit) {
                     clientVo.setTransQuantity(_selfLimit);
                 }
             } else if (_professional.equals(GameEnum.PRO_POWER.getValue())) {
                 //矿工
-                clientVo.setPowerPro(getRatioByPower(charactersClientVo.getPower()));
+                ExcelWorkPro excelWorkPro = getRatioByPowerAndSceneIdAndList(charactersClientVo.getPower(), clientVo.getSceneId(), workProList);
+                //todo 这个概率可能还要计算
+                clientVo.setPowerPro(excelWorkPro.getProbability());
             } else if (_professional.equals(GameEnum.PRO_INTELLIGENCE.getValue())) {
                 //勘测地形
-                clientVo.setIntelliPro(gotoNextSceneRatio(clientVo.getDiscoverLevel(), charactersClientVo.getIntelligence()));
+                clientVo.setIntelliPro(gotoNextSceneRatioAndList(clientVo.getDiscoverLevel(), charactersClientVo.getIntelligence(), workProList));
             }
         }
         return clientVo;
     }
 
+    /**
+     * 直接设置获得道具的概率
+     *
+     * @param value       当前力量值
+     * @param mainSceneId 主场景id
+     * @param workProList
+     * @return
+     */
+    private ExcelWorkPro getRatioByPowerAndSceneIdAndList(Integer value, Integer mainSceneId, List<ExcelWorkPro> workProList) {
+        //取最接近value的一个最小值
+        if (mainSceneId.equals(GameEnum.MINE_00.getValue())) {
+            //如果是挖矿场景id
+            ExcelWorkPro excelWorkPro = workProList.stream().filter(e -> e.getProfessionalType().equals(1) && e.getAttribute() <= value).max(Comparator.comparing(u -> u.getAttribute())).get();
+            return excelWorkPro;
+        } else if (mainSceneId.equals(GameEnum.LUMBERING_00.getValue())) {
+            //如果是伐木场景id
+            List<ExcelWorkPro> workPros = workProList.stream().filter(e -> e.getProfessionalType().equals(4) && e.getAttribute() >= value).collect(Collectors.toList());
+
+            log.info(workPros.toString());
+            ExcelWorkPro excelWorkPro = workProList.stream().filter(e -> e.getProfessionalType().equals(4) && e.getAttribute() <= value).max(Comparator.comparing(u -> u.getAttribute())).get();
+            return excelWorkPro;
+        } else {
+            throw new RuntimeException("No mainSceneId value");
+        }
+    }
+
     private double getRatioByPower(Integer value) {
         double _ratio = 0d;
         if (value >= GameEnum.ATTRIBUTE_01.getValue() && value < GameEnum.ATTRIBUTE_02.getValue()) {
@@ -611,6 +760,21 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
      * @param value
      * @return
      */
+    private double gotoNextSceneRatioAndList(Integer sceneLevel, Integer value, List<ExcelWorkPro> workProList) {
+        //取最接近value的一个最小值
+        ExcelWorkPro excelWorkPro = workProList.stream().filter(e -> e.getProfessionalType().equals(2) && e.getAttribute() <= value).max(Comparator.comparing(u -> u.getAttribute())).get();
+        String[] exploration = excelWorkPro.getExploration().split("\\|");//层级参数
+        String[] enterPro = excelWorkPro.getEnterPro().split("\\|");//层级参数对应的概率
+        Double _ratio = 0d;
+        String netLevel = String.valueOf(sceneLevel + 1);
+        if (ArrayUtil.contains(exploration, netLevel)) {
+            int index = ArrayUtil.indexOf(exploration, netLevel);
+            log.info(Integer.parseInt(ArrayUtil.get(enterPro, index)) + "");
+            _ratio = Double.parseDouble(ArrayUtil.get(enterPro, index)) / 100;
+        }
+        return _ratio;
+    }
+
     private double gotoNextSceneRatio(Integer sceneLevel, Integer value) {
         double _ratio = 0d;
         if (value >= GameEnum.ATTRIBUTE_01.getValue() && value < GameEnum.ATTRIBUTE_02.getValue()) {
@@ -666,6 +830,18 @@ public class ComCharactersDiscoveryServiceImpl extends CommonServiceImpl<ComChar
         return _ratio;
     }
 
+    /**
+     * 获得当前的运输数量值
+     *
+     * @param value
+     * @param workProList
+     * @return
+     */
+    private int getLimitSkillsAndList(Integer value, List<ExcelWorkPro> workProList) {
+        //取最接近value的一个最小值
+        ExcelWorkPro excelWorkPro = workProList.stream().filter(e -> e.getProfessionalType().equals(3) && e.getAttribute() <= value).max(Comparator.comparing(u -> u.getAttribute())).get();
+        return excelWorkPro.getTransport();
+    }
 
     private int getLimitSkills(Integer value) {
         int _limit = 0;

+ 5 - 2
src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryClientVo.java

@@ -2,6 +2,7 @@ package com.td.Dawa.game.comcharactersdiscovery.vo;
 
 import com.td.Dawa.game.comcharacters.vo.ComCharactersClientVo;
 import com.td.Dawa.game.exceldrop.vo.ExcelDropClientVo;
+import com.td.Dawa.game.excelprop.vo.ExcelPropClientVo;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -41,6 +42,8 @@ public class ComCharactersDiscoveryClientVo implements Serializable {
 
     private Integer rewardExp; //记录奖励的经验
 
+    private Integer rewardCurrency;//记录奖励的货币
+
     //private String allItem; //全部产出的item记录
 
     private Double powerPro;//产出概率
@@ -57,7 +60,7 @@ public class ComCharactersDiscoveryClientVo implements Serializable {
 
     List<ComCharactersClientVo> subCharacters;
 
-    List<ExcelDropClientVo> subGetDrops;
+    List<ExcelPropClientVo> subGetDrops;
 
-    List<ExcelDropClientVo> subAllDrops;
+    List<ExcelPropClientVo> subAllDrops;
 }

+ 2 - 0
src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoverySimpleVo.java

@@ -35,6 +35,8 @@ public class ComCharactersDiscoverySimpleVo implements Serializable {
 
     private Integer rewardExp; //记录奖励的经验
 
+    private Integer rewardCurrency;//记录奖励的货币
+
     private String allItem; //全部产出的item记录
 
     private String note;//描述

+ 2 - 0
src/main/java/com/td/Dawa/game/comcharactersdiscovery/vo/ComCharactersDiscoveryVo.java

@@ -35,6 +35,8 @@ public class ComCharactersDiscoveryVo extends PageCondition implements Serializa
 
     private Integer rewardExp; //记录奖励的经验
 
+    private Integer rewardCurrency;//记录奖励的货币
+
     private String allItem; //全部产出的item记录
 
     private String note;//描述

+ 7 - 4
src/main/java/com/td/Dawa/game/complayersattri/controller/ComPlayersAttriController.java

@@ -3,6 +3,7 @@ package com.td.Dawa.game.complayersattri.controller;
 import com.td.Dawa.common.controller.*;
 import com.td.Dawa.common.pojo.Result;
 import com.td.Dawa.config.enums.ResultEnum;
+import com.td.Dawa.config.exception.AuthorizeException;
 import com.td.Dawa.game.complayersattri.pojo.ComPlayersAttri;
 import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriClientVo;
 import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriSimpleVo;
@@ -46,16 +47,18 @@ public class ComPlayersAttriController extends CommonController<ComPlayersAttriV
             //todo 暂时是id=1为体力
             ExcelParameterVo excelParameterVo = excelParameterService.getVo(1);
             if (excelParameterVo.equals(null)) {
-                return Result.of(null, false, ResultEnum.SETTING_IS_NULL.getMessage(), ResultEnum.SETTING_IS_NULL.getCode());
-                //throw new IllegalArgumentException(ResultEnum.SETTING_IS_NULL.getMessage());
+                //return Result.of(null, false, ResultEnum.SETTING_IS_NULL);
+                throw new AuthorizeException(ResultEnum.SETTING_IS_NULL);
             }
             //获取一下用户属性,新增表
             ComPlayersAttriVo attriVo = comPlayersAttriService.findByUserId(userId);
             //计算一下体力值
             ComPlayersAttriClientVo clientVo =  comPlayersAttriService.setStrengthAttriClientVo(attriVo,excelParameterVo.getValue().intValue());
             return Result.of(clientVo);
-        }catch (Exception e){
-            return Result.of(null, false, ResultEnum.SETTING_IS_NULL.getMessage(), ResultEnum.SETTING_IS_NULL.getCode());
+        } catch (AuthorizeException e){
+            return Result.of(null, false, e.getMessage(),e.getCode());
+        } catch (Exception e){
+            return Result.of(null, false, ResultEnum.PLAYER_ATTRIBUTE_ERROR);
         }
 
     }

+ 27 - 1
src/main/java/com/td/Dawa/game/complayersattri/service/ComPlayersAttriServiceImpl.java

@@ -1,8 +1,10 @@
 package com.td.Dawa.game.complayersattri.service;
 
+import cn.hutool.core.util.StrUtil;
 import com.td.Dawa.common.pojo.Result;
 import com.td.Dawa.common.service.*;
 import com.td.Dawa.config.enums.ResultEnum;
+import com.td.Dawa.config.exception.AuthorizeException;
 import com.td.Dawa.game.complayersattri.pojo.ComPlayersAttri;
 import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriClientVo;
 import com.td.Dawa.game.complayersattri.vo.ComPlayersAttriSimpleVo;
@@ -12,10 +14,14 @@ import com.td.Dawa.game.excelparameter.service.ExcelParameterService;
 import com.td.Dawa.game.excelparameter.vo.ExcelParameterVo;
 import com.td.Dawa.util.CopyUtil;
 import com.td.Dawa.util.DateUtil;
+import com.td.Dawa.util.RedisData;
+import com.td.Dawa.util.RedisLock;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.naming.AuthenticationException;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
@@ -28,9 +34,22 @@ public class ComPlayersAttriServiceImpl extends CommonServiceImpl<ComPlayersAttr
     @Autowired
     private ComPlayersAttriRepository comPlayersAttriRepository;
 
+    @Autowired
+    private RedisLock redisLock;
 
+    /**
+     * 如果没有体力相关数据,创建一个新的数据,此代码块加redis锁
+     * @param userId
+     * @return
+     */
     @Override
     public ComPlayersAttriVo findByUserId(String userId) {
+        long time = System.currentTimeMillis() + RedisData.getPlayerTimeout();
+        String redisKey = StrUtil.format("players_attri_{}", userId);
+        // redis锁
+        if (!redisLock.lock(redisKey, String.valueOf(time))) {
+            throw new AuthorizeException(ResultEnum.PLAYER_ATTRIBUTE_SAVE_LOCK);
+        }
         ComPlayersAttri comPlayersAttri = comPlayersAttriRepository.findByUserId(userId).orElse(null);
         ComPlayersAttriVo playersAttribute = CopyUtil.copy(comPlayersAttri, ComPlayersAttriVo.class);
         if (comPlayersAttri == null) {
@@ -42,11 +61,18 @@ public class ComPlayersAttriServiceImpl extends CommonServiceImpl<ComPlayersAttr
             playersAttribute.setResetStrength(DateUtil.getNowDate());
             playersAttribute.setCreateTime(DateUtil.getNowDate());
             playersAttribute.setUpdateTime(DateUtil.getNowDate());
-            super.save(playersAttribute);
+            playersAttribute = super.save(playersAttribute).getData();
         }
+        redisLock.unlock(redisKey, String.valueOf(time));
         return playersAttribute;
     }
 
+    /**
+     * 返回一个当前的显示体力计算
+     * @param attriVo
+     * @param strength
+     * @return
+     */
     @Override
     public ComPlayersAttriClientVo setStrengthAttriClientVo(ComPlayersAttriVo attriVo,Integer strength){
         //前端的显示,输出一个不小于0的体力值

+ 25 - 0
src/main/java/com/td/Dawa/game/comsetting/controller/ComSettingController.java

@@ -10,6 +10,9 @@ import com.td.Dawa.game.comsetting.vo.ComSettingVo;
 import com.td.Dawa.game.comsetting.service.ComSettingService;
 import com.td.Dawa.game.excelcharacterattri.vo.ExcelCharacterAttriSimpleVo;
 import com.td.Dawa.game.excelcharacterattri.vo.ExcelCharacterAttriVo;
+import com.td.Dawa.game.excelcharactercolor.service.ExcelCharacterColorService;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorSimpleVo;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorVo;
 import com.td.Dawa.game.excelcharactercreate.service.ExcelCharacterCreateService;
 import com.td.Dawa.game.excelcharactercreate.vo.ExcelCharacterCreateSimpleVo;
 import com.td.Dawa.game.excelcharactercreate.vo.ExcelCharacterCreateVo;
@@ -30,6 +33,10 @@ import com.td.Dawa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.Dawa.game.excelscene.service.ExcelSceneService;
 import com.td.Dawa.game.excelscene.vo.ExcelSceneSimpleVo;
 import com.td.Dawa.game.excelscene.vo.ExcelSceneVo;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.service.ExcelWorkProService;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProSimpleVo;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
 import com.td.Dawa.util.CopyUtil;
 import com.td.Dawa.util.ExcelDataUtil;
 import com.td.Dawa.util.RedisSettingMap;
@@ -60,6 +67,9 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
     @Autowired
     private ExcelCharacterAttriService excelCharacterAttriService;
 
+    @Autowired
+    private ExcelCharacterColorService excelCharacterColorService;
+
     @Autowired
     private ExcelSceneService excelSceneService;
 
@@ -75,6 +85,9 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
     @Autowired
     private ExcelParameterService excelParameterService;
 
+    @Autowired
+    private ExcelWorkProService excelWorkProService;
+
     /**
      * 获取游戏设置
      *
@@ -149,6 +162,12 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
             case "多语言":
 
                 return null;
+            case "工作效率对应":
+                List<ExcelWorkProVo> excelWorkPros = ExcelDataUtil.setWorkPro(excelReader);
+                for (ExcelWorkProVo objects : excelWorkPros) {
+                    excelWorkProService.save(objects);
+                }
+                return Result.of(CopyUtil.copyList(excelWorkPros, ExcelWorkProSimpleVo.class));
             case "挂机收益":
 
                 return null;
@@ -179,6 +198,12 @@ public class ComSettingController extends CommonController<ComSettingVo, ComSett
                     excelCharacterAttriService.save(objects);
                 }
                 return Result.of(CopyUtil.copyList(characterReaderList, ExcelCharacterAttriSimpleVo.class));
+            case "角色颜色":
+                List<ExcelCharacterColorVo> characterColorVoList = ExcelDataUtil.setCharacterColor(excelReader);
+                for (ExcelCharacterColorVo objects : characterColorVoList) {
+                    excelCharacterColorService.save(objects);
+                }
+                return Result.of(CopyUtil.copyList(characterColorVoList, ExcelCharacterColorSimpleVo.class));
             case "角色刷新":
 
                 return null;

+ 15 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/controller/ExcelCharacterColorController.java

@@ -0,0 +1,15 @@
+package com.td.Dawa.game.excelcharactercolor.controller;
+
+import com.td.Dawa.common.controller.*;
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorVo;
+import com.td.Dawa.game.excelcharactercolor.service.ExcelCharacterColorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/game/excelCharacterColor/")
+public class ExcelCharacterColorController extends CommonController<ExcelCharacterColorVo, ExcelCharacterColor, Integer> {
+    @Autowired
+    private ExcelCharacterColorService excelCharacterColorService;
+}

+ 30 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/pojo/ExcelCharacterColor.java

@@ -0,0 +1,30 @@
+package com.td.Dawa.game.excelcharactercolor.pojo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "excel_character_color")
+@Data
+public class ExcelCharacterColor implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
+
+    private Double r;//
+
+    private Double g;//
+
+    private Double b;//
+
+    private Integer a;//alpha
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 9 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/repository/ExcelCharacterColorRepository.java

@@ -0,0 +1,9 @@
+package com.td.Dawa.game.excelcharactercolor.repository;
+
+import com.td.Dawa.common.repository.*;
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ExcelCharacterColorRepository extends CommonRepository<ExcelCharacterColor, Integer> {
+}

+ 8 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/service/ExcelCharacterColorService.java

@@ -0,0 +1,8 @@
+package com.td.Dawa.game.excelcharactercolor.service;
+
+import com.td.Dawa.common.service.*;
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorVo;
+
+public interface ExcelCharacterColorService extends CommonService<ExcelCharacterColorVo, ExcelCharacterColor, Integer> {
+}

+ 21 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/service/ExcelCharacterColorServiceImpl.java

@@ -0,0 +1,21 @@
+package com.td.Dawa.game.excelcharactercolor.service;
+
+import com.td.Dawa.common.service.*;
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorVo;
+import com.td.Dawa.game.excelcharactercolor.repository.ExcelCharacterColorRepository;
+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 ExcelCharacterColorServiceImpl extends CommonServiceImpl<ExcelCharacterColorVo, ExcelCharacterColor, Integer> implements ExcelCharacterColorService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private ExcelCharacterColorRepository excelCharacterColorRepository;
+}

+ 26 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorClientVo.java

@@ -0,0 +1,26 @@
+package com.td.Dawa.game.excelcharactercolor.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelCharacterColorClientVo implements Serializable {
+    //private Integer id;//
+
+    private Double r;//
+
+    private Double g;//
+
+    private Double b;//
+
+    private Integer a;//alpha
+
+    //private String note;//备注
+    //
+    //private Date createTime;//
+    //
+    //private Date updateTime;//
+
+}

+ 25 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorSimpleVo.java

@@ -0,0 +1,25 @@
+package com.td.Dawa.game.excelcharactercolor.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelCharacterColorSimpleVo implements Serializable {
+    private Integer id;//
+
+    private Double r;//
+
+    private Double g;//
+
+    private Double b;//
+
+    private Integer a;//alpha
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 25 - 0
src/main/java/com/td/Dawa/game/excelcharactercolor/vo/ExcelCharacterColorVo.java

@@ -0,0 +1,25 @@
+package com.td.Dawa.game.excelcharactercolor.vo;
+
+import com.td.Dawa. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelCharacterColorVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private Double r;//
+
+    private Double g;//
+
+    private Double b;//
+
+    private Integer a;//alpha
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 2 - 0
src/main/java/com/td/Dawa/game/excelcharactercreate/repository/ExcelCharacterCreateRepository.java

@@ -13,4 +13,6 @@ public interface ExcelCharacterCreateRepository extends CommonRepository<ExcelCh
     //List<ExcelCharacterCreate> findALlByRoleIdIn(List<Integer> roleId, Sort sort);
 
     List<ExcelCharacterCreate> findAllByIdIn(List<Integer> id, Sort sort);
+
+    List<ExcelCharacterCreate> findAllByModelIn(Integer[] models,Sort sort);
 }

+ 4 - 0
src/main/java/com/td/Dawa/game/excelcharactercreate/service/ExcelCharacterCreateService.java

@@ -13,4 +13,8 @@ public interface ExcelCharacterCreateService extends CommonService<ExcelCharacte
 
     List<ExcelCharacterCreate> findIdInByDESC(List<Integer> ids);
 
+    List<ExcelCharacterCreate> findAll();
+
+    List<ExcelCharacterCreate>  findByModelIn(Integer[] models);
+
 }

+ 14 - 0
src/main/java/com/td/Dawa/game/excelcharactercreate/service/ExcelCharacterCreateServiceImpl.java

@@ -31,4 +31,18 @@ public class ExcelCharacterCreateServiceImpl extends CommonServiceImpl<ExcelChar
     public List<ExcelCharacterCreate> findIdInByDESC(List<Integer> ids) {
         return excelCharacterCreateRepository.findAllByIdIn(ids,Sort.by(Sort.Direction.ASC,"position"));
     }
+
+    @Override
+    public List<ExcelCharacterCreate> findAll() {
+        //Sort.by(Sort.Direction.ASC,"id")
+        return excelCharacterCreateRepository.findAll();
+    }
+
+    @Override
+    public List<ExcelCharacterCreate> findByModelIn(Integer[] models) {
+        //
+        return excelCharacterCreateRepository.findAllByModelIn(models, Sort.by(Sort.Direction.ASC,"position"));
+    }
+
+
 }

+ 6 - 0
src/main/java/com/td/Dawa/game/excelprop/pojo/ExcelProp.java

@@ -29,6 +29,12 @@ public class ExcelProp implements Serializable {
 
     private Integer overlap;//堆叠上限
 
+    private Integer effect;//默认为初始值空,没效果
+
+    private Integer employ;//是否可使用(0不可用,1可用)
+
+    private Integer result;//使用效果
+
     private String note;//备注
 
     private Date createTime;//

+ 4 - 1
src/main/java/com/td/Dawa/game/excelprop/service/ExcelPropServiceImpl.java

@@ -7,15 +7,18 @@ import com.td.Dawa.game.excelprop.repository.ExcelPropRepository;
 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 ExcelPropServiceImpl extends CommonServiceImpl<ExcelPropVo, ExcelProp, Integer> implements ExcelPropService{
+public class ExcelPropServiceImpl extends CommonServiceImpl<ExcelPropVo, ExcelProp, Integer> implements ExcelPropService {
 
     @PersistenceContext
     private EntityManager em;
     @Autowired
     private ExcelPropRepository excelPropRepository;
+
+
 }

+ 42 - 0
src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropClientVo.java

@@ -0,0 +1,42 @@
+package com.td.Dawa.game.excelprop.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelPropClientVo implements Serializable {
+    //private Integer id;//
+
+    private Integer propId;//物品id
+
+    private Integer itemType;//物品类型
+
+    private Integer itemLevel;//等级
+
+    private String name;//名称
+
+    private Integer icon;//图标
+
+    private Integer model;//模型
+
+    private String tips;//描述
+
+    private Integer effect;//默认为初始值空,没效果
+
+    private Integer employ;//是否可使用(0不可用,1可用)
+
+    private Integer result;//使用效果
+
+    private Integer overlap;//堆叠上限
+
+    private Integer itemNum;//计数
+
+    private String note;//备注
+
+    //private Date createTime;//
+
+    //private Date updateTime;//
+
+}

+ 6 - 0
src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropSimpleVo.java

@@ -23,6 +23,12 @@ public class ExcelPropSimpleVo implements Serializable {
 
     private String tips;//描述
 
+    private Integer effect;//默认为初始值空,没效果
+
+    private Integer employ;//是否可使用(0不可用,1可用)
+
+    private Integer result;//使用效果
+
     private Integer overlap;//堆叠上限
 
     private String note;//备注

+ 6 - 0
src/main/java/com/td/Dawa/game/excelprop/vo/ExcelPropVo.java

@@ -22,6 +22,12 @@ public class ExcelPropVo extends PageCondition implements Serializable {
 
     private String tips;//描述
 
+    private Integer effect;//默认为初始值空,没效果
+
+    private Integer employ;//是否可使用(0不可用,1可用)
+
+    private Integer result;//使用效果
+
     private Integer overlap;//堆叠上限
 
     private String note;//备注

+ 5 - 1
src/main/java/com/td/Dawa/game/excelresources/pojo/ExcelResources.java

@@ -11,12 +11,16 @@ import java.util.Date;
 public class ExcelResources implements Serializable {
     @Id
     @GeneratedValue(strategy= GenerationType.IDENTITY)
-    private Integer id;//art编号
+    private Integer id;//
+
+    private Integer artId;//art编号
 
     private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
 
     private String artName;//美术资源名
 
+    private String artActionFrame;//帧数
+
     private String artLocal;//资源位置
 
     private String note;//备注

+ 5 - 0
src/main/java/com/td/Dawa/game/excelresources/repository/ExcelResourcesRepository.java

@@ -2,8 +2,13 @@ package com.td.Dawa.game.excelresources.repository;
 
 import com.td.Dawa.common.repository.*;
 import com.td.Dawa.game.excelresources.pojo.ExcelResources;
+import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface ExcelResourcesRepository extends CommonRepository<ExcelResources, Integer> {
+
+   List<ExcelResources> findAllByArtIdIn(Integer[] artIds, Sort sort);
 }

+ 5 - 0
src/main/java/com/td/Dawa/game/excelresources/service/ExcelResourcesService.java

@@ -2,7 +2,12 @@ package com.td.Dawa.game.excelresources.service;
 
 import com.td.Dawa.common.service.*;
 import com.td.Dawa.game.excelresources.pojo.ExcelResources;
+import com.td.Dawa.game.excelresources.vo.ExcelResourcesClientVo;
 import com.td.Dawa.game.excelresources.vo.ExcelResourcesVo;
 
+import java.util.List;
+
 public interface ExcelResourcesService extends CommonService<ExcelResourcesVo, ExcelResources, Integer> {
+
+    List<ExcelResourcesClientVo>  findByArtIdIn(Integer[] artIds);
 }

+ 10 - 0
src/main/java/com/td/Dawa/game/excelresources/service/ExcelResourcesServiceImpl.java

@@ -2,13 +2,17 @@ package com.td.Dawa.game.excelresources.service;
 
 import com.td.Dawa.common.service.*;
 import com.td.Dawa.game.excelresources.pojo.ExcelResources;
+import com.td.Dawa.game.excelresources.vo.ExcelResourcesClientVo;
 import com.td.Dawa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.Dawa.game.excelresources.repository.ExcelResourcesRepository;
+import com.td.Dawa.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.List;
 
 @Service
 @Transactional
@@ -18,4 +22,10 @@ public class ExcelResourcesServiceImpl extends CommonServiceImpl<ExcelResourcesV
     private EntityManager em;
     @Autowired
     private ExcelResourcesRepository excelResourcesRepository;
+
+    @Override
+    public List<ExcelResourcesClientVo> findByArtIdIn(Integer[] artIds) {
+        List<ExcelResources> excelResources = excelResourcesRepository.findAllByArtIdIn(artIds,  Sort.by(Sort.Direction.DESC, "artId"));
+        return CopyUtil.copyList(excelResources,ExcelResourcesClientVo.class);
+    }
 }

+ 36 - 0
src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesClientVo.java

@@ -0,0 +1,36 @@
+package com.td.Dawa.game.excelresources.vo;
+
+import com.td.Dawa.game.excelcharactercolor.pojo.ExcelCharacterColor;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorClientVo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelResourcesClientVo implements Serializable {
+    private Integer id;//
+
+    private Integer artId;//art编号
+
+    private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
+
+    private String artName;//美术资源名
+
+    private String artActionFrame;//帧数
+
+    private String artLocal;//资源位置
+
+    private Integer position;//部位
+
+    //private Integer color;//颜色区间
+
+    private ExcelCharacterColorClientVo characterColor;//角色颜色
+
+    private String note;//备注
+
+    //private Date createTime;//
+
+    //private Date updateTime;//
+
+}

+ 5 - 1
src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesSimpleVo.java

@@ -6,12 +6,16 @@ import java.util.Date;
 
 @Data
 public class ExcelResourcesSimpleVo implements Serializable {
-    private Integer id;//art编号
+    private Integer id;//
+
+    private Integer artId;//art编号
 
     private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
 
     private String artName;//美术资源名
 
+    private String artActionFrame;//帧数
+
     private String artLocal;//资源位置
 
     private String note;//备注

+ 5 - 1
src/main/java/com/td/Dawa/game/excelresources/vo/ExcelResourcesVo.java

@@ -6,12 +6,16 @@ import java.util.Date;
 
 @Data
 public class ExcelResourcesVo extends PageCondition implements Serializable {
-    private Integer id;//art编号
+    private Integer id;//
+
+    private Integer artId;//art编号
 
     private String artType;//美术资源种类(1:场景,2:动作,3:特效,4:图标)
 
     private String artName;//美术资源名
 
+    private String artActionFrame;//帧数
+
     private String artLocal;//资源位置
 
     private String note;//备注

+ 15 - 0
src/main/java/com/td/Dawa/game/excelworkpro/controller/ExcelWorkProController.java

@@ -0,0 +1,15 @@
+package com.td.Dawa.game.excelworkpro.controller;
+
+import com.td.Dawa.common.controller.*;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
+import com.td.Dawa.game.excelworkpro.service.ExcelWorkProService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/game/excelWorkPro/")
+public class ExcelWorkProController extends CommonController<ExcelWorkProVo, ExcelWorkPro, Integer> {
+    @Autowired
+    private ExcelWorkProService excelWorkProService;
+}

+ 42 - 0
src/main/java/com/td/Dawa/game/excelworkpro/pojo/ExcelWorkPro.java

@@ -0,0 +1,42 @@
+package com.td.Dawa.game.excelworkpro.pojo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "excel_work_pro")
+@Data
+public class ExcelWorkPro implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
+
+    private Integer professionalType;//职业下的工作类型
+
+    private Integer parameter;//属性参数
+
+    private Integer attribute;//属性值
+
+    private Double probability;//可获得道具概率
+
+    private String levelItem;//层级获得道具
+
+    private String levelPro;//层级道具概率
+
+    private Integer transport;//运输格数
+
+    private String exploration;//勘探层数
+
+    private String enterPro;//进入下一层概率
+
+    private Integer currency;//产出货币的概率(物品变成货币) 货币概率
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 9 - 0
src/main/java/com/td/Dawa/game/excelworkpro/repository/ExcelWorkProRepository.java

@@ -0,0 +1,9 @@
+package com.td.Dawa.game.excelworkpro.repository;
+
+import com.td.Dawa.common.repository.*;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ExcelWorkProRepository extends CommonRepository<ExcelWorkPro, Integer> {
+}

+ 8 - 0
src/main/java/com/td/Dawa/game/excelworkpro/service/ExcelWorkProService.java

@@ -0,0 +1,8 @@
+package com.td.Dawa.game.excelworkpro.service;
+
+import com.td.Dawa.common.service.*;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
+
+public interface ExcelWorkProService extends CommonService<ExcelWorkProVo, ExcelWorkPro, Integer> {
+}

+ 21 - 0
src/main/java/com/td/Dawa/game/excelworkpro/service/ExcelWorkProServiceImpl.java

@@ -0,0 +1,21 @@
+package com.td.Dawa.game.excelworkpro.service;
+
+import com.td.Dawa.common.service.*;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
+import com.td.Dawa.game.excelworkpro.repository.ExcelWorkProRepository;
+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 ExcelWorkProServiceImpl extends CommonServiceImpl<ExcelWorkProVo, ExcelWorkPro, Integer> implements ExcelWorkProService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private ExcelWorkProRepository excelWorkProRepository;
+}

+ 37 - 0
src/main/java/com/td/Dawa/game/excelworkpro/vo/ExcelWorkProSimpleVo.java

@@ -0,0 +1,37 @@
+package com.td.Dawa.game.excelworkpro.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelWorkProSimpleVo implements Serializable {
+    private Integer id;//
+
+    private Integer professionalType;//职业下的工作类型
+
+    private Integer parameter;//属性参数
+
+    private Integer attribute;//属性值
+
+    private Double probability;//可获得道具概率
+
+    private String levelItem;//层级获得道具
+
+    private String levelPro;//层级道具概率
+
+    private Integer transport;//运输格数
+
+    private String exploration;//勘探层数
+
+    private String enterPro;//进入下一层概率
+
+    private Integer currency;//产出货币的概率(物品变成货币) 货币概率
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 37 - 0
src/main/java/com/td/Dawa/game/excelworkpro/vo/ExcelWorkProVo.java

@@ -0,0 +1,37 @@
+package com.td.Dawa.game.excelworkpro.vo;
+
+import com.td.Dawa. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ExcelWorkProVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private Integer professionalType;//职业下的工作类型
+
+    private Integer parameter;//属性参数
+
+    private Integer attribute;//属性值
+
+    private Double probability;//可获得道具概率
+
+    private String levelItem;//层级获得道具
+
+    private String levelPro;//层级道具概率
+
+    private Integer transport;//运输格数
+
+    private String exploration;//勘探层数
+
+    private String enterPro;//进入下一层概率
+
+    private Integer currency;//产出货币的概率(物品变成货币) 货币概率
+
+    private String note;//备注
+
+    private Date createTime;//
+
+    private Date updateTime;//
+
+}

+ 55 - 5
src/main/java/com/td/Dawa/sys/sysGame/controller/sysExcelController.java

@@ -6,6 +6,7 @@ import com.td.Dawa.common.controller.CommonController;
 import com.td.Dawa.common.pojo.PageInfo;
 import com.td.Dawa.common.pojo.Result;
 
+import com.td.Dawa.config.enums.GameEnum;
 import com.td.Dawa.game.comusers.pojo.ComUsers;
 import com.td.Dawa.game.comusers.vo.ComUsersVo;
 import com.td.Dawa.game.excelcharacterattri.service.ExcelCharacterAttriService;
@@ -24,6 +25,9 @@ import com.td.Dawa.game.excelresources.service.ExcelResourcesService;
 import com.td.Dawa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.Dawa.game.excelscene.service.ExcelSceneService;
 import com.td.Dawa.game.excelscene.vo.ExcelSceneVo;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.service.ExcelWorkProService;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -34,6 +38,9 @@ import org.springframework.web.servlet.ModelAndView;
 @RequestMapping("/sys/sysExcel/")
 public class sysExcelController extends CommonController<ComUsersVo, ComUsers, String> {
 
+    @Autowired
+    private ExcelWorkProService excelWorkProService;
+
     @Autowired
     private ExcelSceneService excelSceneService;
 
@@ -58,7 +65,40 @@ public class sysExcelController extends CommonController<ComUsersVo, ComUsers, S
     @Autowired
     private ExcelCharacterAttriService excelCharacterAttriService;
 
-    //获取excel场景配置页面
+    //参数表操作,修改数据需要刷新缓存
+    @GetMapping("excelWorkPro")
+    public ModelAndView excelWorkPro() {
+        return new ModelAndView("sys/aComConfig/excelWorkPro");
+    }
+
+    @PostMapping("findAllExcelWorkPro")
+    @Decrypt
+    @Encrypt
+    public Result<PageInfo<ExcelWorkProVo>> findAllExcelWorkPro(ExcelWorkProVo vo) {
+        return excelWorkProService.page(vo);
+    }
+
+    @PostMapping("saveExcelWorkPro")
+    @Decrypt
+    @Encrypt
+    public Result saveExcelWorkPro(ExcelWorkProVo vo) {
+        Result result = excelWorkProService.save(vo);
+        excelWorkProService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_WORK_PRO.getMessage());
+        return result;
+    }
+
+    @PostMapping("deleteExcelWorkPro")
+    @Decrypt
+    @Encrypt
+    public Result deleteExcelWorkPro(@RequestParam("id") Integer id) {
+        //return excelWorkProService.delete(id);
+        Result result = excelWorkProService.delete(id);
+        excelWorkProService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_WORK_PRO.getMessage());
+        return result;
+    }
+
+
+    //获取excel场景配置页面,修改缓存
     @GetMapping("excelScene")
     public ModelAndView excelScene() {
         return new ModelAndView("sys/aComConfig/excelScene");
@@ -75,14 +115,20 @@ public class sysExcelController extends CommonController<ComUsersVo, ComUsers, S
     @Decrypt
     @Encrypt
     public Result saveExcelScene(ExcelSceneVo excelSceneVo) {
-        return excelSceneService.save(excelSceneVo);
+
+        Result result = excelSceneService.save(excelSceneVo);
+        excelSceneService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_SCENE.getMessage());
+        return result;
     }
 
     @PostMapping("deleteExcelScene")
     @Decrypt
     @Encrypt
     public Result deleteExcelScene(@RequestParam("id") Integer id) {
-        return excelSceneService.delete(id);
+
+        Result result = excelSceneService.delete(id);
+        excelSceneService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_SCENE.getMessage());
+        return result;
     }
 
     //资源操作
@@ -128,14 +174,18 @@ public class sysExcelController extends CommonController<ComUsersVo, ComUsers, S
     @Decrypt
     @Encrypt
     public Result saveExcelProp(ExcelPropVo vo) {
-        return excelPropService.save(vo);
+        Result result = excelPropService.save(vo);
+        excelPropService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_PROP.getMessage());
+        return result;
     }
 
     @PostMapping("deleteExcelProp")
     @Decrypt
     @Encrypt
     public Result deleteExcelProp(@RequestParam("id") Integer id) {
-        return excelPropService.delete(id);
+        Result result = excelPropService.delete(id);
+        excelPropService.updateListToCache(GameEnum.REDIS_KEY_EXCEL_PROP.getMessage());
+        return result;
     }
     //参数表操作
     @GetMapping("excelParameter")

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

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

+ 42 - 2
src/main/java/com/td/Dawa/util/ExcelDataUtil.java

@@ -2,6 +2,7 @@ package com.td.Dawa.util;
 
 import cn.hutool.poi.excel.ExcelReader;
 import com.td.Dawa.game.excelcharacterattri.vo.ExcelCharacterAttriVo;
+import com.td.Dawa.game.excelcharactercolor.vo.ExcelCharacterColorVo;
 import com.td.Dawa.game.excelcharactercreate.vo.ExcelCharacterCreateVo;
 import com.td.Dawa.game.excelcharacterlevel.vo.ExcelCharacterLevelVo;
 import com.td.Dawa.game.exceldrop.vo.ExcelDropVo;
@@ -9,6 +10,8 @@ import com.td.Dawa.game.excelparameter.vo.ExcelParameterVo;
 import com.td.Dawa.game.excelprop.vo.ExcelPropVo;
 import com.td.Dawa.game.excelresources.vo.ExcelResourcesVo;
 import com.td.Dawa.game.excelscene.vo.ExcelSceneVo;
+import com.td.Dawa.game.excelworkpro.pojo.ExcelWorkPro;
+import com.td.Dawa.game.excelworkpro.vo.ExcelWorkProVo;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
@@ -65,6 +68,23 @@ public class ExcelDataUtil {
         return excelReader.read(1,3,ExcelCharacterAttriVo.class);
     }
 
+    /**
+     * 设置角色颜色
+     * @param excelReader
+     * @return
+     */
+    public static List<ExcelCharacterColorVo>  setCharacterColor(ExcelReader excelReader){
+
+                //.addHeaderAlias("A","a")
+                //.addHeaderAlias("备注","note")
+        excelReader.addHeaderAlias("ID","id")
+                .addHeaderAlias("R","r")
+                .addHeaderAlias("G","g")
+                .addHeaderAlias("B","b");
+        return excelReader.read(0,1,ExcelCharacterColorVo.class);
+    }
+
+
     /**
      * 设置场景excel
      */
@@ -87,7 +107,7 @@ public class ExcelDataUtil {
     }
 
     public static List<ExcelPropVo>  setProp(ExcelReader excelReader){
-        //序号	物品类型	等级	名称	图标	模型	描述	堆叠上限	备注
+        //序号	物品类型	等级	名称	图标	描述	模型	携带效果	是否可使用	使用效果	堆叠上限	备注
         excelReader.addHeaderAlias("序号","propId")
                 .addHeaderAlias("物品类型","itemType")
                 .addHeaderAlias("等级","itemLevel")
@@ -95,11 +115,30 @@ public class ExcelDataUtil {
                 .addHeaderAlias("图标","icon")
                 .addHeaderAlias("模型","model")
                 .addHeaderAlias("描述","tips")
+                .addHeaderAlias("携带效果","effect")
+                .addHeaderAlias("是否可使用","employ")
+                .addHeaderAlias("使用效果","result")
                 .addHeaderAlias("堆叠上限","overlap")
                 .addHeaderAlias("备注","note");
         return excelReader.read(1,3,ExcelPropVo.class);
     }
 
+    public static List<ExcelWorkProVo>  setWorkPro(ExcelReader excelReader){
+        //职业id	属性参数	属性值	可获得道具概率	获得道具	道具概率	运输格数	勘探层数	进入概率	货币概率	备注
+         excelReader.addHeaderAlias("职业id","professionalType")
+                .addHeaderAlias("属性参数","parameter")
+                .addHeaderAlias("属性值","attribute")
+                .addHeaderAlias("可获得道具概率","probability")
+                .addHeaderAlias("获得道具","levelItem")
+                .addHeaderAlias("道具概率","levelPro")
+                .addHeaderAlias("运输格数","transport")
+                .addHeaderAlias("勘探层数","exploration")
+                .addHeaderAlias("进入概率","enterPro")
+                .addHeaderAlias("货币概率","currency")
+                .addHeaderAlias("备注","note");
+        return excelReader.read(1,3, ExcelWorkProVo.class);
+    }
+
     public static List<ExcelDropVo>  setDrop(ExcelReader excelReader){
         //掉落编号	组掉落方式	掉落组编号	组掉落概率	组掉落上下限	组掉落方式	组掉落	非组物品方式	物品掉落	物品与数量	备注
         excelReader.addHeaderAlias("掉落编号","dropId")
@@ -120,9 +159,10 @@ public class ExcelDataUtil {
 
     public static List<ExcelResourcesVo>  setResource(ExcelReader excelReader){
         //掉落编号	组掉落方式	掉落组编号	组掉落概率	组掉落上下限	组掉落方式	组掉落	非组物品方式	物品掉落	物品与数量	备注
-        excelReader.addHeaderAlias("art编号","id")
+        excelReader.addHeaderAlias("art编号","artId")
                 .addHeaderAlias("美术资源种类","artType")
                 .addHeaderAlias("美术资源名","artName")
+                .addHeaderAlias("帧数","artActionFrame")
                 .addHeaderAlias("资源位置","artLocal")
                 .addHeaderAlias("备注","note");
         return excelReader.read(1,3,ExcelResourcesVo.class);

+ 8 - 0
src/main/java/com/td/Dawa/util/RedisData.java

@@ -4,6 +4,14 @@ package com.td.Dawa.util;
  * redis 参数
  */
 public class RedisData {
+    /**
+     * ss player 相关
+     */
+    private static final int PLAYER_TIMEOUT = 5 * 1000; //5s锁
+
+    public static int getPlayerTimeout() {
+        return PLAYER_TIMEOUT;
+    }
 
     /**
      * 1s SNB锁

+ 5 - 5
src/main/resources/static/sys/aComConfig/js/excelCharacterAttri.js

@@ -41,12 +41,12 @@ layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], func
         , cols: [[
             {field: 'id', title: 'ID', hide: true}
             , {field: 'roleType', title: '掉落编号'}
-            , {field: 'startPowerLimitLower', title: '组掉落方式'}
-            , {field: 'startPowerLimitLower', title: '掉落组编号'}
+            , {field: 'startPowerLimitLower', title: '初始力量下限'}
+            , {field: 'startPowerLimitUpper', title: '初始力量上限' , hide: true }
             , {field: 'startWisdomLimitLower', title: '初始智慧下限'}
-            , {field: 'startWisdomLimitUpper', title: '初始智慧上限'}
+            , {field: 'startWisdomLimitUpper', title: '初始智慧上限' , hide: true }
             , {field: 'startSkillLimitLower', title: '初始技巧下限'}
-            , {field: 'startSkillLimitUpper', title: '初始技巧上限'}
+            , {field: 'startSkillLimitUpper', title: '初始技巧上限' , hide: true }
             , {field: 'randomAttr', title: '属性随机值'}
             , {field: 'professional', title: '职业'}
             , {field: 'action', title: '携带动作'}
@@ -54,7 +54,7 @@ layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], func
             , {field: 'note', title: '备注', hide: true}
             , {field: 'createTime', title: '创建时间', hide: true}
             , {field: 'updateTime', title: '更新时间', hide: true}
-            , {fixed: 'right', title: '操作', toolbar: '#configTableBarDemo'}
+            , {fixed: 'right', title: '操作', width:100, toolbar: '#configTableBarDemo'}
         ]]
         , defaultToolbar: ['', 'exports', 'print']
         , page: true

+ 2 - 2
src/main/resources/static/sys/aComConfig/js/excelScene.js

@@ -42,7 +42,7 @@ layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], func
             {field: 'id', title: 'ID', hide: true}
             , {field: 'sceneId', title: '场景序号'}
             , {field: 'sceneType', title: '场景种类'}
-            , {field: 'sceneGroup', title: '场景组编号'}
+            , {field: 'sceneGroup', title: '场景组编号', hide: true}
             , {field: 'sceneLevel', title: '场景等级'}
             , {field: 'sceneResources', title: 'art编号', hide: true}
             , {field: 'sceneEvent', title: '场景掉落id', hide: true}
@@ -51,7 +51,7 @@ layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], func
             , {field: 'determine', title: '获得花种概率', hide: true}
             , {field: 'flowers', title: '花种概率', hide: true}
             , {field: 'probability', title: '进入基础概率', hide: true}
-            , {field: 'amount', title: '运输基础数量', hide: true}
+            , {field: 'amount', title: '运输基础数量'}
             , {field: 'note', title: '备注', hide: true}
             , {field: 'createTime', title: '创建时间', hide: true}
             , {field: 'updateTime', title: '更新时间', hide: true}

+ 142 - 0
src/main/resources/static/sys/aComConfig/js/excelWorkPro.js

@@ -0,0 +1,142 @@
+let tableIns;
+let tree;
+let mallType = 0;
+layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], function () {
+    let table = layui.table;
+    let form = layui.form;//select、单选、复选等依赖form
+    //form自定义校验,使用在标签上lay-verify="phoneRequiredFalse"      非必填项验证:新增部分:(^$)|
+    form.verify({
+        positiveNumberRequiredTrue: [/^(([0-9]+[\.]?[0-9]+)|[1-9])$/, '只能填写正数'],//必填,且只能输入正数
+        positiveWholeNumberRequiredTrue: [/^[+]{0,1}(\d+)$/, '只能填写正整数'],//必填,且只能输入正整数
+    });
+    let element = layui.element; //导航的hover效果、二级菜单等功能,需要依赖element模块
+    let laydate = layui.laydate;
+    tree = layui.tree;
+    let height = document.documentElement.clientHeight * 0.8; //随便设置下,和操作表单大概一样
+    //用户列表
+    tableIns = table.render({
+        elem: '#configTable'
+        , url: ctx + "/sys/sysExcel/findAllExcelWorkPro"
+        , method: 'POST'
+        , response: {
+            statusName: 'flag' //规定数据状态的字段名称,默认:code
+            , statusCode: true //规定成功的状态码,默认:0
+            , msgName: 'msg' //规定状态信息的字段名称,默认:msg
+            , countName: 'records' //规定数据总数的字段名称,默认:count
+            , dataName: 'rows' //规定数据列表的字段名称,默认:data
+        }
+        //响应后数据处理
+        , parseData: function (res) { //res 即为原始返回的数据
+            let data = res.data;
+            // console.log(res);
+            return {
+                "flag": res.flag, //解析接口状态
+                "msg": res.msg, //解析提示文本
+                "records": data.records, //解析数据长度
+                "rows": data.rows //解析数据列表
+            };
+        }
+        , toolbar: '#configToolbar'
+        , title: '道具列表'
+        , cols: [[
+            {field: 'id', title: 'ID'}
+            , {field: 'professionalType', title: '工作类型'}
+            , {field: 'parameter', title: '属性参数'}
+            , {field: 'attribute', title: '属性值'}
+            , {field: 'probability', title: '可获得道具概率'}
+            , {field: 'levelItem', title: '层级获得道具'}
+            , {field: 'levelPro', title: '层级道具概率'}
+            , {field: 'transport', title: '运输格数'}
+            , {field: 'exploration', title: '勘探层数'}
+            , {field: 'enterPro', title: '进入下一层概率'}
+            , {field: 'currency', title: '产出货币的概率(物品变成货币)'}
+            , {field: 'note', title: '备注'}
+            , {field: 'createTime', title: '创建时间', hide: true}
+            , {field: 'updateTime', title: '更新时间', hide: true}
+            , {fixed: 'right', title: '操作', width:120, toolbar: '#configTableBarDemo'}
+        ]]
+        , defaultToolbar: ['', 'exports', 'print']
+        , page: true
+        , height: height
+        , cellMinWidth: 80
+    });
+    //工具栏事件
+    table.on('toolbar(test)', function(obj){
+        let data = obj.data;
+        switch(obj.event){
+            case 'addNewRow':
+                $("#configForm")[0].reset();
+                form.render();
+                $("#tableId").css("display", "none");
+                $("#tableTime").css("display", "none");
+
+                $("#saveBtn").css("display", "none");
+                $("#addBtn").css("display", "block");
+                break;
+        };
+    });
+    //监听行工具事件
+    table.on('tool(test)', function (obj) {
+        let data = obj.data;
+        //编辑
+        if (obj.event === 'edit') {
+            $("#tableId").css("display", "block");
+            $("#tableTime").css("display", "block");
+            $("#saveBtn").css("display", "block");
+            $("#addBtn").css("display", "none");
+            $("#configForm").form(data);
+            form.render();
+        }else if(obj.event === 'del'){
+            layer.confirm('真的删除行么?', function(index){
+                $.post(ctx + "/sys/sysExcel/deleteExcelWorkPro", {id:data.id}, function (data) {
+                    if (!data.flag) {
+                        layer.msg(data.msg, {icon: 2, time: 2000}, function () {
+                        });
+                        return;
+                    }
+                    obj.del();
+                    tableIns.reload();
+                });
+                layer.close(index);
+            });
+        }
+    });
+
+    //监听提交
+    form.on('submit(configFilter)', function (data) {
+        configSave(false);
+    });
+    form.on('submit(configAddFilter)', function (data) {
+        configSave(true);
+    });
+
+    $("#saveBtn").css("display", "none");
+    $("#addBtn").css("display", "none");
+});
+
+/**
+ * 提交保存
+ */
+function configSave(isAddNew) {
+    let configForm = $("#configForm").serializeObject();
+    if (!configForm.id && !isAddNew) {
+        layer.msg("选择编辑的数据", {icon: 2, time: 1000}, function () {
+        });
+        return;
+    }
+    let nowTime = commonUtil.getNowTime();
+    configForm.updateTime = nowTime;
+    $("input[name='updateTime']").val(nowTime);
+    $.post(ctx + "/sys/sysExcel/saveExcelWorkPro", configForm, function (data) {
+        if (!data.flag) {
+            layer.msg(data.msg, {icon: 2, time: 2000}, function () {
+            });
+            return;
+        }
+        tableIns.reload();
+    });
+}
+
+
+
+

+ 149 - 0
src/main/resources/view/sys/aComConfig/excelWorkPro.html

@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<!--解决idea thymeleaf 表达式模板报红波浪线-->
+<!--suppress ALL -->
+<html xmlns:th="http://www.thymeleaf.org">
+<head>
+    <!-- 引入公用部分 -->
+    <script th:replace="common/head::static"></script>
+    <!-- 游戏数据用户相关样式 -->
+    <link th:href="@{/sys/aComConfig/css/config.css}" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div class="layui-row layui-col-space15">
+    <!-- 树 -->
+    <div class="layui-col-md9">
+        <div class="layui-card">
+            <div class="layui-card-header">参数列表</div>
+            <div class="layui-card-body">
+                <!-- 表格主体 -->
+                <table class="layui-hide" id="configTable" lay-filter="test"></table>
+                <script type="text/html" id="configToolbar">
+                    <div class="layui-btn-container">
+                        <button class="layui-btn layui-btn-sm" lay-event="addNewRow">新增</button>
+                    </div>
+                </script>
+                <script type="text/html" id="configTableBarDemo">
+                    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑<i class="layui-icon layui-icon-edit"></i></a>
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+                </script>
+            </div>
+        </div>
+
+    </div>
+    <!-- 操作表单 -->
+    <div class="layui-col-md3">
+        <div class="layui-card">
+            <div class="layui-card-header">操作表单</div>
+            <div class="layui-card-body">
+                <form id="configForm" class="layui-form layui-form-pane">
+                    <div class="layui-form-item" id="tableId">
+                        <label class="layui-form-label">id</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="id" autocomplete="off" placeholder="id"
+                                   class="layui-input" readonly = "readonly">
+                        </div>
+                    </div>
+                    <!--readonly = "readonly"-->
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">工作类型</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="professionalType" autocomplete="off" placeholder="1:挖矿,2:勘探,3:运输,4:伐木"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">属性参数</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="parameter" autocomplete="off" placeholder="parameter"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">属性值</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="attribute" autocomplete="off" placeholder="attribute"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">可获得道具概率</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="probability" autocomplete="off" placeholder="probability"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item layui-form-text">
+                        <label class="layui-form-label">层级获得道具</label>
+                        <div class="layui-input-block">
+                            <textarea name="levelItem" placeholder="levelItem" class="layui-textarea"></textarea>
+                        </div>
+                    </div>
+                    <div class="layui-form-item layui-form-text">
+                        <label class="layui-form-label">层级道具概率</label>
+                        <div class="layui-input-block">
+                            <textarea name="levelPro" placeholder="levelPro" class="layui-textarea"></textarea>
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">运输格数</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="transport" autocomplete="off" placeholder="transport"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">勘探层数</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="exploration" autocomplete="off" placeholder="exploration"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">进入下一层概率</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="enterPro" autocomplete="off" placeholder="enterPro"
+                                   class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">产出货币的概率(物品变成货币)</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="currency" autocomplete="off" placeholder="currency"
+                                   class="layui-input">
+                        </div>
+                    </div>
+
+                    <div class="layui-form-item layui-form-text">
+                        <label class="layui-form-label">备注</label>
+                        <div class="layui-input-block">
+                            <textarea name="note" placeholder="note" class="layui-textarea"></textarea>
+                        </div>
+                    </div>
+                    <div class="layui-form-item" id="tableTime">
+                        <div class="layui-inline">
+                            <label class="layui-form-label">更新时间</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="updateTime" autocomplete="off" class="layui-input"
+                                       readonly="readonly">
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 隐藏域 -->
+                    <input type="text" name="id" hidden="hidden"/>
+                    <div class="layui-form-item">
+                        <div class="layui-input-block">
+                            <a id="saveBtn" class="layui-btn" type="submit" lay-submit lay-filter="configFilter">保存</a>
+                            <a id="addBtn" class="layui-btn" type="submit" lay-submit lay-filter="configAddFilter">新增</a>
+                        </div>
+                    </div>
+                </form>
+
+            </div>
+        </div>
+    </div>
+
+</div>
+</body>
+<!-- js -->
+<script th:src="@{/sys/aComConfig/js/excelWorkPro.js}"></script>
+</html>