Browse Source

excel和springdoc

toby 1 year ago
parent
commit
cfc7d3e8d4

+ 1 - 1
logic/a-logic-common/src/main/resources/logback-spring.xml

@@ -6,7 +6,7 @@
     <!-- 其他日志级别 -->
     <property name="log.other.level" value="DEBUG"/>
     <!-- 模块名称, 影响日志配置名,日志文件名 -->
-    <property name="log.moduleName" value="game"/>
+    <property name="log.moduleName" value="yinyue"/>
     <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
     <property name="log.base" value="${log.dir:-logs}/${log.moduleName}"/>
     <!-- 日志文件大小,超过这个大小将被压缩 -->

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

@@ -65,7 +65,7 @@ public class EquipAction {
      */
     @ActionMethod(EquipCmd.allotEquip)
     public void allotEquip(EquipMessage equipMessage) {
-        equipService.allotEquip(EquipMapper.ME.convert(equipMessage));
+//        equipService.allotEquip(EquipMapper.ME.convert(equipMessage));
     }
 
     /**

+ 65 - 63
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipEntryTemplateService.java

@@ -129,72 +129,74 @@ public class EquipEntryTemplateService {
     }
 
     /**
-     * 根据装备等级、部位、数量随机词条
-     * @param itemTypeIdList 物品分类标识列表
-     * @param userId 用户id
+     * 根据装备等级、部位、数量 随机词条
+     * @param level 等级
+     * @param position 部位
+     * @param count 随机数量
      * @return
      */
-    public List<Equip> randomEquipBatch(List<String> itemTypeIdList,long userId){
-        List<Equip> equipList = itemTypeIdList.stream()
-                .map(itemTypeId -> randomEquip(itemTypeId,userId))
-                .toList();
-        return equipList;
+    public List<EquipEntry> randomEquipBatch(int level,String position,int count){
+//        List<EquipEntry> equipEntryList = itemTypeIdList.stream()
+//                .map(itemTypeId -> randomEquip(itemTypeId,userId))
+//                .toList();
+//        return equipEntryList;
+        return null;
     }
 
-    /**
-     * 根据装备库列表批量随机新的装备
-     * @param itemTypeIdList 物品分类标识列表
-     * @param userId 用户id
-     * @return
-     */
-    public List<Equip> randomEquipBatch(List<String> itemTypeIdList,long userId){
-        List<Equip> equipList = itemTypeIdList.stream()
-                .map(itemTypeId -> randomEquip(itemTypeId,userId))
-                .toList();
-        return equipList;
-    }
+//    /**
+//     * 根据装备库列表批量随机新的装备
+//     * @param itemTypeIdList 物品分类标识列表
+//     * @param userId 用户id
+//     * @return
+//     */
+//    public List<Equip> randomEquipBatch(List<String> itemTypeIdList,long userId){
+//        List<Equip> equipList = itemTypeIdList.stream()
+//                .map(itemTypeId -> randomEquip(itemTypeId,userId))
+//                .toList();
+//        return equipList;
+//    }
 
-    /**
-     * 根据装备库随机一件新的装备
-     * @param itemTypeId itemTypeId
-     * @param userId 用户id
-     * @return
-     */
-    public Equip randomEquip(String itemTypeId, long userId){
-        //取到装备库
-        EquipTemplate equipTemplate = findByItemTypeId(itemTypeId);
-        GameCode.objNotFound.assertTrue(equipTemplate!=null,"找不到对应装备库");
-        //将装备库属性拷贝到装备中
-        Equip equip = copyTemplate2Equip(equipTemplate);
-        equip.setUserId(userId);
-        mongoTemplate.save(equip);
-        return equip;
-    }
-
-    /**
-     * 根据需要拷贝装备库属性到装备
-     * @param equipTemplate 装备库
-     * @return
-     */
-    public Equip copyTemplate2Equip(EquipTemplate equipTemplate){
-
-        return Equip.builder()
-                .itemTypeId(equipTemplate.getItemTypeId())
-                .quality(0) //品质
-                .fixedEquipProperty(
-                        FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),
-                                equipTemplate.getFixedEquipPropertyMax())) //装备固定属性
-                .attrTotal(0)
-                .undistributedAttr(0)
-                .elseEquipProperty(EquipPropertyElse.resetElseEquipProperty()) //初始化分配的具体属性点
-                .position(equipTemplate.getPosition())
-                .level(equipTemplate.getLevel())
-                .identifyCount(0)
-                .fixedEquipPropertyMin(equipTemplate.getFixedEquipPropertyMin())
-                .fixedEquipPropertyMax(equipTemplate.getFixedEquipPropertyMax())
-                .totalAttrMin(equipTemplate.getTotalAttrMin())
-                .totalAttrMax(equipTemplate.getTotalAttrMax())
-                .equipTemplateId(equipTemplate.getItemTypeId())
-                .build();
-    }
+//    /**
+//     * 根据装备库随机一件新的装备
+//     * @param itemTypeId itemTypeId
+//     * @param userId 用户id
+//     * @return
+//     */
+//    public Equip randomEquip(String itemTypeId, long userId){
+//        //取到装备库
+//        EquipTemplate equipTemplate = findByItemTypeId(itemTypeId);
+//        GameCode.objNotFound.assertTrue(equipTemplate!=null,"找不到对应装备库");
+//        //将装备库属性拷贝到装备中
+//        Equip equip = copyTemplate2Equip(equipTemplate);
+//        equip.setUserId(userId);
+//        mongoTemplate.save(equip);
+//        return equip;
+//    }
+//
+//    /**
+//     * 根据需要拷贝装备库属性到装备
+//     * @param equipTemplate 装备库
+//     * @return
+//     */
+//    public Equip copyTemplate2Equip(EquipTemplate equipTemplate){
+//
+//        return Equip.builder()
+//                .itemTypeId(equipTemplate.getItemTypeId())
+//                .quality(0) //品质
+//                .fixedEquipProperty(
+//                        FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),
+//                                equipTemplate.getFixedEquipPropertyMax())) //装备固定属性
+//                .attrTotal(0)
+//                .undistributedAttr(0)
+//                .elseEquipProperty(EquipPropertyElse.resetElseEquipProperty()) //初始化分配的具体属性点
+//                .position(equipTemplate.getPosition())
+//                .level(equipTemplate.getLevel())
+//                .identifyCount(0)
+//                .fixedEquipPropertyMin(equipTemplate.getFixedEquipPropertyMin())
+//                .fixedEquipPropertyMax(equipTemplate.getFixedEquipPropertyMax())
+//                .totalAttrMin(equipTemplate.getTotalAttrMin())
+//                .totalAttrMax(equipTemplate.getTotalAttrMax())
+//                .equipTemplateId(equipTemplate.getItemTypeId())
+//                .build();
+//    }
 }

+ 14 - 13
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipService.java

@@ -81,19 +81,20 @@ public class EquipService {
      * @param excellentRate 增加的极品率
      */
     public Equip resetEquip(String id, BigDecimal excellentRate){
-        Equip equip = findById(id);
-        GameCode.objNotFound.assertTrue(equip!=null);
-
-        int randomMin = equip.getTotalAttrMin();
-        int randomMax = equip.getTotalAttrMax();
-        //本次是否生成极品
-        boolean excellentFlag = EquipRandomKit.isExcellent(excellentRate);
-        //品质
-        equip.setQuality(excellentFlag?2:1);
-        //额外属性值
-        int newAttrTotal = EquipRandomKit.randomFromExcellent(randomMin,randomMax,excellentFlag);
-        // 直接替换掉原装备的属性值
-        return replaceEquipAttr(equip,newAttrTotal);
+//        Equip equip = findById(id);
+//        GameCode.objNotFound.assertTrue(equip!=null);
+//
+//        int randomMin = equip.getTotalAttrMin();
+//        int randomMax = equip.getTotalAttrMax();
+//        //本次是否生成极品
+//        boolean excellentFlag = EquipRandomKit.isExcellent(excellentRate);
+//        //品质
+//        equip.setQuality(excellentFlag?2:1);
+//        //额外属性值
+//        int newAttrTotal = EquipRandomKit.randomFromExcellent(randomMin,randomMax,excellentFlag);
+//        // 直接替换掉原装备的属性值
+//        return replaceEquipAttr(equip,newAttrTotal);
+        return null;
     }
 
 

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

@@ -82,48 +82,48 @@ public class EquipTemplateService {
      * 初始化装备库(临时方法,后期移除改为从运营数据中导入)
      */
     public void initEquipTemplate() {
-        // 初始化一些装备配置,后期将移到 excel 中做。
-        EquipTemplate equipTemplate = new EquipTemplate();
-        equipTemplate.setPosition(1);
-        equipTemplate.setLevel(10);
-        equipTemplate.setFixedEquipPropertyMin(FixedEquipProperty.builder()
-                        .hp(100)
-                        .mp(100)
-                        .physicsDefense(10)
-                        .magicDefense(10)
-                .build());
-        equipTemplate.setFixedEquipPropertyMax(FixedEquipProperty.builder()
-                .hp(300)
-                .mp(300)
-                .physicsDefense(30)
-                .magicDefense(30)
-                .build());
-        equipTemplate.setTotalAttrMin(20);
-        equipTemplate.setTotalAttrMax(30);
-
-        equipTemplate.setItemTypeId(ItemTypeIdConst.equipClothing10);
-
-        mongoTemplate.save(equipTemplate);
-
-        // 初始化一些装备配置,后期将移到 excel 中做。
-        EquipTemplate equipTemplate2 = new EquipTemplate();
-        equipTemplate2.setPosition(2);
-        equipTemplate2.setLevel(10);
-        equipTemplate2.setFixedEquipPropertyMin(FixedEquipProperty.builder()
-                .physicsAttack(10)
-                .magicAttack(10)
-                .anger(10)
-                .build());
-        equipTemplate2.setFixedEquipPropertyMax(FixedEquipProperty.builder()
-                .physicsAttack(30)
-                .magicAttack(30)
-                .anger(30)
-                .build());
-        equipTemplate2.setTotalAttrMin(20);
-        equipTemplate2.setTotalAttrMax(30);
-
-        equipTemplate2.setItemTypeId(ItemTypeIdConst.equipWeapon10);
-        mongoTemplate.save(equipTemplate2);
+//        // 初始化一些装备配置,后期将移到 excel 中做。
+//        EquipTemplate equipTemplate = new EquipTemplate();
+//        equipTemplate.setPosition(1);
+//        equipTemplate.setLevel(10);
+//        equipTemplate.setFixedEquipPropertyMin(FixedEquipProperty.builder()
+//                        .hp(100)
+//                        .mp(100)
+//                        .physicsDefense(10)
+//                        .magicDefense(10)
+//                .build());
+//        equipTemplate.setFixedEquipPropertyMax(FixedEquipProperty.builder()
+//                .hp(300)
+//                .mp(300)
+//                .physicsDefense(30)
+//                .magicDefense(30)
+//                .build());
+//        equipTemplate.setTotalAttrMin(20);
+//        equipTemplate.setTotalAttrMax(30);
+//
+//        equipTemplate.setItemTypeId(ItemTypeIdConst.equipClothing10);
+//
+//        mongoTemplate.save(equipTemplate);
+//
+//        // 初始化一些装备配置,后期将移到 excel 中做。
+//        EquipTemplate equipTemplate2 = new EquipTemplate();
+//        equipTemplate2.setPosition(2);
+//        equipTemplate2.setLevel(10);
+//        equipTemplate2.setFixedEquipPropertyMin(FixedEquipProperty.builder()
+//                .physicsAttack(10)
+//                .magicAttack(10)
+//                .anger(10)
+//                .build());
+//        equipTemplate2.setFixedEquipPropertyMax(FixedEquipProperty.builder()
+//                .physicsAttack(30)
+//                .magicAttack(30)
+//                .anger(30)
+//                .build());
+//        equipTemplate2.setTotalAttrMin(20);
+//        equipTemplate2.setTotalAttrMax(30);
+//
+//        equipTemplate2.setItemTypeId(ItemTypeIdConst.equipWeapon10);
+//        mongoTemplate.save(equipTemplate2);
     }
 
     /**
@@ -164,22 +164,22 @@ public class EquipTemplateService {
     public Equip copyTemplate2Equip(EquipTemplate equipTemplate){
 
         return Equip.builder()
-                .itemTypeId(equipTemplate.getItemTypeId())
-                .quality(0) //品质
-                .fixedEquipProperty(
-                        FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),
-                                equipTemplate.getFixedEquipPropertyMax())) //装备固定属性
-                .attrTotal(0)
-                .undistributedAttr(0)
-                .elseEquipProperty(EquipPropertyElse.resetElseEquipProperty()) //初始化分配的具体属性点
-                .position(equipTemplate.getPosition())
-                .level(equipTemplate.getLevel())
-                .identifyCount(0)
-                .fixedEquipPropertyMin(equipTemplate.getFixedEquipPropertyMin())
-                .fixedEquipPropertyMax(equipTemplate.getFixedEquipPropertyMax())
-                .totalAttrMin(equipTemplate.getTotalAttrMin())
-                .totalAttrMax(equipTemplate.getTotalAttrMax())
-                .equipTemplateId(equipTemplate.getItemTypeId())
+//                .itemTypeId(equipTemplate.getItemTypeId())
+//                .quality(0) //品质
+//                .fixedEquipProperty(
+//                        FixedEquipProperty.randomFixed(equipTemplate.getFixedEquipPropertyMin(),
+//                                equipTemplate.getFixedEquipPropertyMax())) //装备固定属性
+//                .attrTotal(0)
+//                .undistributedAttr(0)
+//                .elseEquipProperty(EquipPropertyElse.resetElseEquipProperty()) //初始化分配的具体属性点
+//                .position(equipTemplate.getPosition())
+//                .level(equipTemplate.getLevel())
+//                .identifyCount(0)
+//                .fixedEquipPropertyMin(equipTemplate.getFixedEquipPropertyMin())
+//                .fixedEquipPropertyMax(equipTemplate.getFixedEquipPropertyMax())
+//                .totalAttrMin(equipTemplate.getTotalAttrMin())
+//                .totalAttrMax(equipTemplate.getTotalAttrMax())
+//                .equipTemplateId(equipTemplate.getItemTypeId())
                 .build();
     }
 }

+ 7 - 2
logic/excel-logic/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.iohao.mmo</groupId>
-        <artifactId>game</artifactId>
+        <artifactId>yinyue</artifactId>
         <version>1.0-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
@@ -24,6 +24,11 @@
             <artifactId>a-logic-common</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.iohao.mmo</groupId>
+            <artifactId>equip-logic</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -42,4 +47,4 @@
             <version>${springdoc.version}</version>
         </dependency>
     </dependencies>
-</project>
+</project>

+ 75 - 0
logic/excel-logic/src/main/java/com/iohao/mmo/excel/controller/EquipExcelController.java

@@ -0,0 +1,75 @@
+package com.iohao.mmo.excel.controller;
+
+import com.alibaba.excel.EasyExcel;
+import com.iohao.mmo.common.kit.Result;
+import com.iohao.mmo.excel.dto.DemoExcelDTO;
+import com.iohao.mmo.excel.entity.DemoExcel;
+import com.iohao.mmo.excel.kit.ExcelKit;
+import com.iohao.mmo.excel.listener.ExcelDataCustomListener;
+import com.iohao.mmo.excel.listener.ExcelDataListener;
+import com.iohao.mmo.excel.service.DemoExcelService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.AllArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 装备excel数据
+ * @author 唐斌
+ * @date 2023-08-29
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/equipexcel")
+@Tag(name = "EquipExcelController", description = "装备excel数据")
+public class EquipExcelController {
+    private final DemoExcelService demoExcelService;
+
+    /**
+     * 通用导出示例
+     * @param params
+     * @param response
+     * @throws Exception
+     */
+    @Operation(summary = "通用导出示例",description = "通用导出示例")
+    @GetMapping("exportdemo")
+    public void exportDemo(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception{
+        List<DemoExcel> list = demoExcelService.list(params,DemoExcel.class);
+        ExcelKit.exportExcelToTarget(response, null, "Excel示例", list, DemoExcelDTO.class);
+    }
+
+    /**
+     * 通用导入示例
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(value = "importdemo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    @Operation(summary = "通用导入示例",description = "通用导入示例")
+    public Result importDemo(@RequestPart("file") @Parameter(description = "文件")MultipartFile file) throws Exception {
+        //通用读取
+        EasyExcel.read(file.getInputStream(), DemoExcelDTO.class, new ExcelDataListener<>(demoExcelService)).sheet(0).doRead();
+        return new Result().ok("导入成功!");
+    }
+
+    /**
+     * 导入数据自定义处理示例
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    @PostMapping(value = "importcustom", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    @Operation(summary = "导入数据自定义处理示例",description = "导入数据自定义处理示例")
+    public Result importCustom(@RequestPart("file") @Parameter(description = "文件")MultipartFile file) throws Exception {
+        //自定义读取
+        EasyExcel.read(file.getInputStream(), DemoExcelDTO.class, new ExcelDataCustomListener<>(demoExcelService)).sheet(0).doRead();
+        return new Result().ok("导入成功!");
+    }
+}

+ 22 - 0
logic/excel-logic/src/main/java/com/iohao/mmo/excel/service/EquipEntryExcelService.java

@@ -0,0 +1,22 @@
+package com.iohao.mmo.excel.service;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.iohao.mmo.equip.entity.EquipEntry;
+import com.iohao.mmo.excel.entity.DemoExcel;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+
+/**
+ * 装备词条Excel
+ *
+ * @author 唐斌
+ * @date 2023-08-30
+ * @description: 装备词条Excel
+ */
+public interface EquipEntryExcelService extends BaseService<EquipEntry>{
+
+    @Transactional(rollbackFor = Exception.class)
+    void updateBatch(List<EquipEntry> entityList) throws JsonProcessingException;
+}

+ 59 - 0
logic/excel-logic/src/main/java/com/iohao/mmo/excel/service/impl/EquipEntryExcelServiceImpl.java

@@ -0,0 +1,59 @@
+package com.iohao.mmo.excel.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.iohao.mmo.equip.entity.EquipEntry;
+import com.iohao.mmo.excel.service.EquipEntryExcelService;
+import com.mongodb.bulk.BulkWriteResult;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.data.mongodb.core.BulkOperations;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.data.util.Pair;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 装备词条Excel
+ *
+ * @author 唐斌
+ * @date 2023-08-30
+ * @description: 装备词条Excel
+ */
+@Service
+public class EquipEntryExcelServiceImpl extends BaseServiceImpl<EquipEntry> implements EquipEntryExcelService {
+    final MongoTemplate mongoTemplate;
+
+    public EquipEntryExcelServiceImpl(MongoTemplate mongoTemplate) {
+        super(mongoTemplate);
+        this.mongoTemplate = mongoTemplate;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateBatch(List<EquipEntry> entityList) throws JsonProcessingException {
+        if (CollectionUtils.isEmpty(entityList)) {
+            return;
+        }
+        List<Pair<Query, Update>> updateList = new ArrayList<>(entityList.size());
+        BulkOperations operations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "demoExcel");
+        entityList.forEach(data -> {
+            //以code为标识判断新增或者修改
+            Query query = new Query(new Criteria("code").is(data.getCode()));
+            Update update = new Update();
+            //如果userId是主键,必须使用setOnInsert()
+            update.set("name",data.getName());
+            update.set("description",data.getDescription());
+            update.set("entryPropertyList",data.getEntryPropertyList());
+
+            Pair<Query, Update> updatePair = Pair.of(query, update);
+            updateList.add(updatePair);
+        });
+        operations.upsert(updateList);
+        BulkWriteResult result = operations.execute();
+        System.out.println(result.getUpserts());
+    }
+}

+ 1 - 1
one-application/src/main/resources/logback-spring.xml

@@ -6,7 +6,7 @@
     <!-- 其他日志级别 -->
     <property name="log.other.level" value="DEBUG"/>
     <!-- 模块名称, 影响日志配置名,日志文件名 -->
-    <property name="log.moduleName" value="game"/>
+    <property name="log.moduleName" value="yinyue"/>
     <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
     <property name="log.base" value="${log.dir:-logs}/${log.moduleName}"/>
     <!-- 日志文件大小,超过这个大小将被压缩 -->

+ 1 - 1
one-client/src/main/resources/logback.xml

@@ -6,7 +6,7 @@
     <!-- 其他日志级别 -->
     <property name="log.other.level" value="DEBUG"/>
     <!-- 模块名称, 影响日志配置名,日志文件名 -->
-    <property name="log.moduleName" value="game"/>
+    <property name="log.moduleName" value="yinyue"/>
     <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
     <property name="log.base" value="${log.dir:-logs}/${log.moduleName}"/>
     <property name="log.max.size" value="100MB"/> <!-- 日志文件大小,超过这个大小将被压缩 -->