From 8af1ac948450cd73f9d2e139218216e6f53602a7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5RP3AKU\\Jisol" <2858626794@qq.com> Date: Sat, 20 Jan 2024 02:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E5=80=BC=E7=A4=BC=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataTables/Datas/礼包/礼包.xlsx | Bin 13684 -> 13574 bytes JisolGameCocos/assets/script/consts/API.ts | 2 +- .../java/cn/jisol/game/JGameApplication.java | 2 + .../cn/jisol/game/actions/GActionEnum.java | 9 +- .../exception/HTTPExceptionHandler.java | 4 +- .../game/controller/game/GiftController.java | 114 ++++++++++++++++++ .../java/cn/jisol/game/data/ResourceId.java | 2 + .../game/entity/table/GiftDayRecord.java | 25 ++++ .../jisol/game/entity/table/GiftRecord.java | 31 +++++ .../jisol/game/manager/GScheduledManager.java | 45 +++++++ .../game/mapper/GiftDayRecordMapper.java | 11 ++ .../jisol/game/mapper/GiftRecordMapper.java | 11 ++ .../game/service/GiftDayRecordService.java | 9 ++ .../jisol/game/service/GiftRecordService.java | 9 ++ .../impl/GiftDayRecordServiceImpl.java | 11 ++ .../service/impl/GiftRecordServiceImpl.java | 11 ++ .../service/impl/ResourceServiceImpl.java | 8 +- 17 files changed, 295 insertions(+), 9 deletions(-) create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GiftController.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftDayRecord.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftRecord.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/manager/GScheduledManager.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftDayRecordMapper.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftRecordMapper.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftDayRecordService.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftRecordService.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftDayRecordServiceImpl.java create mode 100644 JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftRecordServiceImpl.java diff --git a/DataTables/Datas/礼包/礼包.xlsx b/DataTables/Datas/礼包/礼包.xlsx index 0c632a741a34a8d3a137c06f838b8a1a71069670..cfdf4596827672c85df1553d8fa844fea0c6cec8 100644 GIT binary patch delta 5494 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 delta 5604 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 Lq$BDV{X6Vm16@tg diff --git a/JisolGameCocos/assets/script/consts/API.ts b/JisolGameCocos/assets/script/consts/API.ts index c091aaf2..a3cfaf3c 100644 --- a/JisolGameCocos/assets/script/consts/API.ts +++ b/JisolGameCocos/assets/script/consts/API.ts @@ -16,7 +16,7 @@ export const RData = (data:any,isTips:boolean = false) => { }) } //如果有 rewards 字段 表示要弹出获得资源 - if(data.data['rewards']){ + if(data.data['rewards'] && data.data['rewards'].length){ //弹出获得资源 app.layer.Open(GUI.RewardClaimView,data.data['rewards']) } diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/JGameApplication.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/JGameApplication.java index b63f8cc4..6cd98f54 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/JGameApplication.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/JGameApplication.java @@ -7,10 +7,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.retry.annotation.EnableRetry; +import org.springframework.scheduling.annotation.EnableScheduling; @EnableRetry @MapperScan(basePackages = "cn.jisol.game.mapper") @SpringBootApplication +@EnableScheduling public class JGameApplication { public static void main(String[] args) { SpringBeanUtils.context = SpringApplication.run(JGameApplication.class); diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/GActionEnum.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/GActionEnum.java index 0378c5f0..4c495886 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/GActionEnum.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/actions/GActionEnum.java @@ -20,8 +20,11 @@ public interface GActionEnum { /*************** 裁决 *********************/ - int CR_REFEREE_READY = 4000; //裁决就绪 - int CR_REFEREE_PVP_MODE = 4001; //裁决PVP模式 - int CR_REFEREE_PVP_END = 4002; //裁决PVP结束 + int CR_REFEREE_READY = 4000; //裁决就绪 + int CR_REFEREE_PVP_MODE = 4001; //裁决PVP模式 + int CR_REFEREE_PVP_END = 4002; //裁决PVP结束 + + /************** 任务推送 ****************/ + int C_TASK_PUSH_DAY_RESET = 5001; //任务推送 - 每天重置 } diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/exception/HTTPExceptionHandler.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/exception/HTTPExceptionHandler.java index 873d34b6..cce30ba8 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/exception/HTTPExceptionHandler.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/exception/HTTPExceptionHandler.java @@ -18,11 +18,11 @@ public class HTTPExceptionHandler { return NewsContext.onMessage("Token 失效",null,LOGIN_TOKEN); } - //材料不够 + //资源不够 @ExceptionHandler(value = ResourceNotException.class) @ResponseBody public NewsContext retryExceptionHandler(ResourceNotException e){ - return NewsContext.onFail("材料不够."); + return NewsContext.onFail(e.getMessage()); } //并发异常 diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GiftController.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GiftController.java new file mode 100644 index 00000000..9452fbf3 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/controller/game/GiftController.java @@ -0,0 +1,114 @@ +package cn.jisol.game.controller.game; + + +import cfg.TB.TbGGift; +import cfg.TbGEnum.TGiftLimit; +import cn.jisol.game.controller.argsresolver.CurrentPlayer; +import cn.jisol.game.controller.exception.ResourceNotException; +import cn.jisol.game.data.ResourceId; +import cn.jisol.game.data.TD; +import cn.jisol.game.entity.table.GiftDayRecord; +import cn.jisol.game.entity.table.GiftRecord; +import cn.jisol.game.entity.table.Player; +import cn.jisol.game.entity.table.PlayerPet; +import cn.jisol.game.service.GiftDayRecordService; +import cn.jisol.game.service.GiftRecordService; +import cn.jisol.game.service.ResourceService; +import cn.jisol.game.vo.news.NewsReward; +import cn.jisol.game.vo.news.ov.ResourceUpdateOV; +import cn.jisol.ngame.util.NewsContext; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Api(value = "JNGameDemo - API", tags = {"礼包 - API"}) +@RestController +@RequestMapping("/game/gift") +@ResponseBody +public class GiftController { + + @Autowired + ResourceService resourceService; + + @Autowired + GiftRecordService giftRecordService; + + @Autowired + GiftDayRecordService giftDayRecordService; + + //购买指定礼包 + @ApiImplicitParams({}) + @ApiOperation(value = "购买指定礼包") + @PostMapping("/buy/{giftId}") + @Transactional + public NewsReward buy(@CurrentPlayer Player player, @PathVariable Integer giftId){ + + TbGGift gift = TD.DATA.getTbGGift().get(giftId); + + if(Objects.isNull(gift)) return NewsReward.onFail("暂无该礼包"); + + //判断是否可以购买当前礼包 + if(gift.limit == TGiftLimit.DayLimit){ + //每天限制购买 + if(gift.limitValue <= giftDayRecordService.count(Wrappers.lambdaQuery(GiftDayRecord.class).eq(GiftDayRecord::getPlayerId,player.getPlayerId()).eq(GiftDayRecord::getGiftCfgId,gift.id))){ + return NewsReward.onFail("今天买太多啦 每天再买哦"); + } + } + if(gift.limit == TGiftLimit.Limit){ + //每天限制购买 + if(gift.limitValue <= giftRecordService.count(Wrappers.lambdaQuery(GiftRecord.class).eq(GiftRecord::getPlayerId,player.getPlayerId()).eq(GiftRecord::getGiftCfgId,gift.id))){ + return NewsReward.onFail("当前礼包买太多了 看看其他礼包哦"); + } + } + + resourceService.addResourceValue(player.getPlayerId(), ResourceId.GiftCoupons.id, (long) -gift.price); + + //发放奖励 + List ovs = resourceService.rewards(player.getPlayerId(), gift.rewards); + + + GiftRecord giftRecord = GiftRecord.builder() + .playerId(player.getPlayerId()) + .giftCfgId(gift.id) + .giftCfgName(gift.name) + .giftCfgRewards(Arrays.asList(gift.rewards)) + .giftCfgPrice(gift.price) + .giftBuyingTime(new Date().getTime()) + .build(); + + //保存购买记录 + giftRecordService.save(giftRecord); + giftDayRecordService.save(GiftDayRecord.builder() + .playerId(giftRecord.getPlayerId()) + .giftId(giftRecord.getGiftId()) + .giftCfgId(giftRecord.getGiftCfgId()) + .build()); + + + return NewsReward.onSuccess("购买成功",true,ovs, Arrays.asList(gift.rewards)); + + } + + //查询当天购买记录 + @ApiImplicitParams({}) + @ApiOperation(value = "查询当天购买记录") + @GetMapping("/record/day") + public NewsContext> getGiftDayRecord(@CurrentPlayer Player player){ + return NewsContext.onSuccess("查询成功",giftDayRecordService.list( + Wrappers.lambdaQuery(GiftDayRecord.class) + .eq(GiftDayRecord::getPlayerId,player.getPlayerId()) + )); + } + + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/data/ResourceId.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/data/ResourceId.java index bc05d0f0..9eab55ab 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/data/ResourceId.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/data/ResourceId.java @@ -14,6 +14,8 @@ public enum ResourceId { DungeonForgedStones(90005), //魂:一品宠物魂 Q1S(90006), + //兑换券 + GiftCoupons(90007), ; public int id; diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftDayRecord.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftDayRecord.java new file mode 100644 index 00000000..b1516c6e --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftDayRecord.java @@ -0,0 +1,25 @@ +package cn.jisol.game.entity.table; + +import cfg.TbGEntity.TReward; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Builder +@Data +@TableName("`gift_day_record`") +public class GiftDayRecord { + + @TableId(type = IdType.AUTO) + private Long giftDayId; //礼包Id + private Long playerId; //玩家Id + private Long giftId; //礼包价格 + private Integer giftCfgId; //礼包配置表Id + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftRecord.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftRecord.java new file mode 100644 index 00000000..711f08a6 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/entity/table/GiftRecord.java @@ -0,0 +1,31 @@ +package cn.jisol.game.entity.table; + +import cfg.TbGEntity.TReward; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +@Builder +@Data +@TableName("`gift_record`") +public class GiftRecord { + + @TableId(type = IdType.AUTO) + private Long giftId; //礼包Id + private Long playerId; //玩家Id + private Integer giftCfgId; //礼包配置表Id + private String giftCfgName; //礼包名称 + + @TableField(typeHandler = FastjsonTypeHandler.class) + private List giftCfgRewards; //礼包奖励 + + private Integer giftCfgPrice; //礼包价格 + private Long giftBuyingTime; //礼包购买时间戳 + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/manager/GScheduledManager.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/manager/GScheduledManager.java new file mode 100644 index 00000000..7fbd3673 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/manager/GScheduledManager.java @@ -0,0 +1,45 @@ +package cn.jisol.game.manager; + +import cn.jisol.game.actions.GActionEnum; +import cn.jisol.game.entity.table.GiftDayRecord; +import cn.jisol.game.network.WebSocket; +import cn.jisol.game.network.client.GClient; +import cn.jisol.game.service.GiftDayRecordService; +import cn.jisol.game.service.GiftRecordService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +public class GScheduledManager { + + @Autowired + GiftDayRecordService giftDayRecordService; + + //获取所有在线玩家 + public Map getClients(){ + return WebSocket.CLIENTS; + } + + //每天重置 任务 + @Scheduled(cron="0 0 0 * * ?") + public void dayReset(){ + + System.out.println("定时器执行[每天重置] ScheduledManager - dayReset"); + + //重置每日礼包记录 + giftDayRecordService.remove(Wrappers.lambdaQuery(GiftDayRecord.class)); + System.out.println("定时器执行[每天重置] ScheduledManager - dayReset : 重置每日礼包记录"); + + //通知所有玩家 - 每天重置结束 + getClients().values().forEach(client1 -> { + client1.invoke(GActionEnum.C_TASK_PUSH_DAY_RESET); + }); + + } + + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftDayRecordMapper.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftDayRecordMapper.java new file mode 100644 index 00000000..71413b70 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftDayRecordMapper.java @@ -0,0 +1,11 @@ +package cn.jisol.game.mapper; + +import cn.jisol.game.entity.table.GiftDayRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Component; + +@Component +public interface GiftDayRecordMapper extends BaseMapper { + + +} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftRecordMapper.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftRecordMapper.java new file mode 100644 index 00000000..4da8ef9c --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/mapper/GiftRecordMapper.java @@ -0,0 +1,11 @@ +package cn.jisol.game.mapper; + +import cn.jisol.game.entity.table.GiftRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Component; + +@Component +public interface GiftRecordMapper extends BaseMapper { + + +} \ No newline at end of file diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftDayRecordService.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftDayRecordService.java new file mode 100644 index 00000000..2ff87f9a --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftDayRecordService.java @@ -0,0 +1,9 @@ +package cn.jisol.game.service; + +import cn.jisol.game.entity.table.GiftDayRecord; +import cn.jisol.game.entity.table.GiftRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface GiftDayRecordService extends IService { + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftRecordService.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftRecordService.java new file mode 100644 index 00000000..552db854 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/GiftRecordService.java @@ -0,0 +1,9 @@ +package cn.jisol.game.service; + +import cn.jisol.game.entity.table.Dungeon; +import cn.jisol.game.entity.table.GiftRecord; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface GiftRecordService extends IService { + +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftDayRecordServiceImpl.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftDayRecordServiceImpl.java new file mode 100644 index 00000000..1ba0e9f2 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftDayRecordServiceImpl.java @@ -0,0 +1,11 @@ +package cn.jisol.game.service.impl; + +import cn.jisol.game.entity.table.GiftDayRecord; +import cn.jisol.game.mapper.GiftDayRecordMapper; +import cn.jisol.game.service.GiftDayRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class GiftDayRecordServiceImpl extends ServiceImpl implements GiftDayRecordService { +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftRecordServiceImpl.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftRecordServiceImpl.java new file mode 100644 index 00000000..eeaace86 --- /dev/null +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/GiftRecordServiceImpl.java @@ -0,0 +1,11 @@ +package cn.jisol.game.service.impl; + +import cn.jisol.game.entity.table.GiftRecord; +import cn.jisol.game.mapper.GiftRecordMapper; +import cn.jisol.game.service.GiftRecordService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class GiftRecordServiceImpl extends ServiceImpl implements GiftRecordService { +} diff --git a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java index 739f315a..4863101e 100644 --- a/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java +++ b/JisolGameServer/Main/src/main/java/cn/jisol/game/service/impl/ResourceServiceImpl.java @@ -1,5 +1,6 @@ package cn.jisol.game.service.impl; +import cfg.TB.TbGResource; import cfg.TbGEntity.TResource; import cfg.TbGEntity.TReward; import cn.jisol.game.controller.exception.GeneralException; @@ -39,6 +40,7 @@ public class ResourceServiceImpl extends ServiceImpl i @Override public Resource addResourceValue(Long playerId, int type, Long value) { + TbGResource tbGResource = TD.DATA.getTbGResource().get(type); LambdaUpdateWrapper eq = Wrappers.lambdaUpdate(Resource.class) .eq(Resource::getPlayerId, playerId) //玩家 @@ -71,17 +73,17 @@ public class ResourceServiceImpl extends ServiceImpl i throw new RetryException("服务器忙碌啦"); } }else{ - throw new ResourceNotException("资源不够"); + throw new ResourceNotException(tbGResource.name+"不够"); } }else{ //更新失败 材料不够 - throw new ResourceNotException("资源不够"); + throw new ResourceNotException(tbGResource.name+"资源不够"); } } //如果资源不够则报错 - if(res.getResourceValue() < 0) throw new ResourceNotException("资源不够"); + if(res.getResourceValue() < 0) throw new ResourceNotException(tbGResource.name+"资源不够"); return res;