Browse Source

统一物品和子表的id

toby 1 năm trước cách đây
mục cha
commit
cfb599fb45

+ 8 - 3
logic/bag-logic/src/main/java/com/iohao/mmo/bag/region/internal/equip/BuildEquipUseProcess.java

@@ -30,6 +30,8 @@ import com.iohao.mmo.bag.region.UseContext;
 import com.iohao.mmo.bag.region.UseProcess;
 import com.iohao.mmo.bag.service.BagService;
 import com.iohao.mmo.common.config.GameCode;
+import com.iohao.mmo.equip.client.EquipExchange;
+import com.iohao.mmo.equip.proto.EquipResetMessage;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -83,13 +85,13 @@ public class BuildEquipUseProcess implements UseProcess {
 
         // 调用【装备模块】的打造 api
         BuildEquipParse.BuildParam equipBuildParam = buildEquipParse.getEquipBuildParam();
-        BagItem equip = createEquip(equipBuildParam);
+        BagItem equip = createEquip(equipBuildParam,flowContext);
 
         // 将新装备添加到背包中
         bagService.incrementItem(equip, userId);
     }
 
-    private BagItem createEquip(BuildEquipParse.BuildParam buildParam) {
+    private BagItem createEquip(BuildEquipParse.BuildParam buildParam,FlowContext flowContext) {
         // TODO 这里后续调用【装备模块】生成装备的 action,目前先暂时写假数据。
         // 得到对应装备的 itemId
         String equipItemId = buildParam.getEquipItemId();
@@ -104,7 +106,10 @@ public class BuildEquipUseProcess implements UseProcess {
         bagItem.setQuantity(1);
 
         log.info("调用【装备模块-api】开始打造装备 : {}", bagItem);
-
+        EquipResetMessage equipResetMessage = new EquipResetMessage();
+        equipResetMessage.itemId = "";
+        equipResetMessage.excellentRateString = "0.3";
+        EquipExchange.resetEquip(equipResetMessage,flowContext);
         return bagItem;
     }
 }

+ 3 - 2
logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipAction.java

@@ -52,6 +52,7 @@ public class EquipAction {
      * 获取装备信息
      *
      * @param flowContext flowContext
+     * @param stringValue itemId
      */
     @ActionMethod(EquipCmd.getEquip)
     public EquipMessage getEquip(FlowContext flowContext, StringValue stringValue) { //参数值
@@ -78,8 +79,8 @@ public class EquipAction {
      */
     @ActionMethod(EquipCmd.resetEquip)
     public EquipMessage resetEquip(FlowContext flowContext, EquipResetMessage equipResetMessage) { //参数值
-        GameCode.objNotFound.assertTrue(StringUtils.isNotBlank(equipResetMessage.equipId)&&StringUtils.isNotBlank(equipResetMessage.excellentRateString));
-        Equip equip = equipService.resetEquip((equipResetMessage.equipId), new BigDecimal(equipResetMessage.excellentRateString));
+        GameCode.objNotFound.assertTrue(StringUtils.isNotBlank(equipResetMessage.itemId)&&StringUtils.isNotBlank(equipResetMessage.excellentRateString));
+        Equip equip = equipService.resetEquip((equipResetMessage.itemId), new BigDecimal(equipResetMessage.excellentRateString));
         return EquipMapper.ME.convert(equip);
     }
 

+ 0 - 2
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Equip.java

@@ -54,8 +54,6 @@ public class Equip {
     int totalAttrMin;
     /** 自定义属性随机范围最大值 */
     int totalAttrMax;
-    /** 极品率 0.0000-1.0000*/
-    double excellentRate;
     /** 装备库id */
     String equipTemplateId;
     /** 基础属性 */

+ 0 - 2
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Goods.java

@@ -50,8 +50,6 @@ public class Goods {
     boolean dealFlag;
     /** 物品类型:0装备,1药品,2材料,3装备库 */
     int type;
-    /** 子表主键 */
-    String detailId;
     /** 所属位置:1包裹,2仓库,3穿戴 */
     int store = 1;
     /** 是否删除 */

+ 6 - 4
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipService.java

@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author 唐斌
@@ -59,6 +60,7 @@ public class EquipService {
     public List<Equip> listByUser(long userId,int store) {
         Query query = new Query();
         query.addCriteria(Criteria.where("userId").is(userId));
+        query.addCriteria(Criteria.where("delFlag").is(false));
         if(store>0) {
             query.addCriteria(Criteria.where("goods.store").is(store));
         }
@@ -138,13 +140,13 @@ public class EquipService {
 
     /**
      * 重新随机总属性点
-     * @param equipId 装备id
+     * @param itemId 装备物品id
      * @param excellentRate 增加的极品率
      */
-    public Equip resetEquip(String equipId, BigDecimal excellentRate){
-        Equip equip = findById(equipId);
+    public Equip resetEquip(String itemId, BigDecimal excellentRate){
+        Equip equip = findById(itemId);
         GameCode.objNotFound.assertTrue(equip!=null);
-        // TODO 这里判断道具效果,然后提高装备随机的最小值进行随机,一般是增加最小值的百分比
+
         int randomMin = equip.getTotalAttrMin();
         int randomMax = equip.getTotalAttrMax();
         //品质

+ 3 - 6
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipTemplateService.java

@@ -130,11 +130,10 @@ public class EquipTemplateService {
         goods.setDealFlag(true);
         goods.setType(3);
         mongoTemplate.save(goods);
+        equipTemplate.setId(goods.getId());
         equipTemplate.setGoods(goods);
 
         mongoTemplate.save(equipTemplate);
-        goods.setDetailId(equipTemplate.getId());
-        mongoTemplate.save(goods);
 
         // 初始化一些装备配置,后期将移到 excel 中做。
         EquipTemplate equipTemplate2 = new EquipTemplate();
@@ -153,10 +152,10 @@ public class EquipTemplateService {
         goods2.setDealFlag(true);
         goods2.setType(3);
         mongoTemplate.save(goods2);
+        equipTemplate2.setId(goods2.getId());
         equipTemplate2.setGoods(goods2);
 
         mongoTemplate.save(equipTemplate2);
-        goods2.setDetailId(equipTemplate2.getId());
         mongoTemplate.save(goods2);
     }
 
@@ -180,7 +179,7 @@ public class EquipTemplateService {
         //将装备库属性拷贝到装备中
         //对应的物品数据是新建的
         BeanUtils.copyProperties(equipTemplate,equip);
-        equip.setId(null);
+        equip.setId(goods.getId());
         equip.setGoods(goods);
         equip.setName(equipTemplate.getGoods().getName());
         //品质
@@ -194,8 +193,6 @@ public class EquipTemplateService {
         equip.setBasicEquipProperty(BasicEquipProperty.resetBasicEquipProperty());
         equip.setUserId(userId);
         mongoTemplate.save(equip);
-        goods.setDetailId(equip.getId());
-        mongoTemplate.save(goods);
         return equip;
     }
 }

+ 1 - 1
logic/equip-logic/src/main/java/com/iohao/mmo/equip/utils/RandomUtils.java

@@ -85,7 +85,7 @@ public class RandomUtils {
         BigDecimal boundaryValue =
                 BigDecimal.valueOf(randomMin).add(
                         (BigDecimal.valueOf(randomMax).subtract(BigDecimal.valueOf(randomMin)))
-                                .multiply(excellentProp).setScale(0, RoundingMode.HALF_UP)
+                                .multiply(BigDecimal.ONE.subtract(excellentProp)).setScale(0, RoundingMode.HALF_UP)
                 );
         BigDecimal rangeMin = BigDecimal.valueOf(randomMin);
         BigDecimal rangeMax = BigDecimal.valueOf(randomMax);

+ 6 - 1
provide/bag-provide/pom.xml

@@ -29,5 +29,10 @@
             <artifactId>level-provide</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.iohao.mmo</groupId>
+            <artifactId>equip-provide</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
     </dependencies>
-</project>
+</project>

+ 41 - 0
provide/equip-provide/src/main/java/com/iohao/mmo/equip/client/EquipExchange.java

@@ -0,0 +1,41 @@
+/*
+ * ioGame
+ * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
+ * # iohao.com . 渔民小镇
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+package com.iohao.mmo.equip.client;
+
+import com.iohao.game.action.skeleton.core.CmdInfo;
+import com.iohao.game.action.skeleton.core.flow.FlowContext;
+import com.iohao.mmo.common.provide.client.ExchangeKit;
+import com.iohao.mmo.equip.cmd.EquipCmd;
+import com.iohao.mmo.equip.proto.EquipResetMessage;
+import lombok.experimental.UtilityClass;
+
+/**
+ * 装备模块,对外提供的访问 api
+ *
+ * @author 唐斌
+ * @date 2023-08-15
+ */
+@UtilityClass
+public class EquipExchange {
+    public void resetEquip(EquipResetMessage equipResetMessage, FlowContext flowContext) {
+        CmdInfo cmdInfo = EquipCmd.of(EquipCmd.resetEquip);
+        ExchangeKit.invokeModuleVoidMessage(flowContext, cmdInfo, equipResetMessage);
+    }
+
+}

+ 4 - 4
provide/equip-provide/src/main/java/com/iohao/mmo/equip/client/EquipInputCommandRegion.java

@@ -71,7 +71,7 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
 
         // 动态请求参数(参数值)
         inputRequestData = () -> {
-            ScannerKit.log(() -> log.info("请输入要查询的装备id"));
+            ScannerKit.log(() -> log.info("请输入要查询的装备itemId"));
             String id = ScannerKit.nextLine();
 
             // 请求参数
@@ -88,7 +88,7 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
 
         // 动态请求参数(参数值)
         inputRequestData = () -> {
-            ScannerKit.log(() -> log.info("请输入装备id"));
+            ScannerKit.log(() -> log.info("请输入装备itemId"));
             String id = ScannerKit.nextLine();
             ScannerKit.log(() -> log.info("请输入体质、魔力、力量、耐力、敏捷,格式[体质-魔力-力量-耐力-敏捷]"));
             String inputValue = ScannerKit.nextLine("1-1-1-1-1");
@@ -118,11 +118,11 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             ScannerKit.log(() -> log.info("请输入装备id和消耗道具id,格式 [装备id-增益百分比]"));
             String inputValue = ScannerKit.nextLine("1-0.3");
             SplitParam param = new SplitParam(inputValue);
-            String equipId = param.getString(0);
+            String itemId = param.getString(0);
             String excellentRateString = param.getString(1);
 
             EquipResetMessage equipResetMessage = new EquipResetMessage();
-            equipResetMessage.equipId = equipId;
+            equipResetMessage.itemId = itemId;
             equipResetMessage.excellentRateString = excellentRateString;
             return equipResetMessage;
         };

+ 3 - 3
provide/equip-provide/src/main/java/com/iohao/mmo/equip/cmd/EquipCmd.java

@@ -44,8 +44,8 @@ public interface EquipCmd {
     int getEquipTemplate = 12;
     /** 根据装备库随机出一件新的装备 */
     int randomEquip = 13;
-
-    static CmdInfo getCmdInfo(int subCmd) {
-        return CmdInfo.getCmdInfo(cmd, subCmd);
+    
+    static CmdInfo of(int subCmd) {
+        return CmdInfo.of(cmd, subCmd);
     }
 }

+ 2 - 0
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/EquipMessage.java

@@ -48,6 +48,8 @@ public class EquipMessage{
     int position;
     /** 要求等级 */
     int level;
+    /** 品质 1普通,2极品*/
+    int quality;
     /** 自定义属性随机范围最小值 */
     int totalAttrMin;
     /** 自定义属性随机范围最大值 */

+ 1 - 1
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/EquipResetMessage.java

@@ -34,7 +34,7 @@ import lombok.experimental.FieldDefaults;
 @FieldDefaults(level = AccessLevel.PUBLIC)
 public class EquipResetMessage {
     /** 装备id */
-    String equipId;
+    String itemId;
     /** 增加的极品率 0.0000-1.0000 */
     String excellentRateString;
 }