diff --git a/ff-game/src/main/resources/application-test.properties b/ff-fetcher/src/main/resources/application-test.properties similarity index 51% rename from ff-game/src/main/resources/application-test.properties rename to ff-fetcher/src/main/resources/application-test.properties index b948166..6d078c8 100644 --- a/ff-game/src/main/resources/application-test.properties +++ b/ff-fetcher/src/main/resources/application-test.properties @@ -1,15 +1,12 @@ - # 引入子配置文件 spring.config.import=\ - classpath:config/test/mybatis.properties,\ classpath:config/test/redis.properties,\ - classpath:config/test/forest.properties,\ classpath:config/test/xxljob.properties,\ - classpath:config/test/datasource.properties + classpath:config/test/mongo.properties # 项目相关配置 -ff.name=FF +ff.name=FF-Fetcher ff.version=0.0.1 ff.copyrightYear=2024 ff.profile=D:/ff/uploadPath @@ -17,7 +14,7 @@ ff.addressEnabled=false ff.captchaType=math # 开发环境配置 -server.port=9080 +server.port=9082 server.servlet.context-path=/ server.tomcat.uri-encoding=UTF-8 server.tomcat.accept-count=1000 @@ -32,38 +29,13 @@ logging.level.org.springframework=warn user.password.maxRetryCount=5 user.password.lockTime=10 -# 跑批处理配置 -batchProcessing.commissionBatchSize=20 -batchProcessing.agentLevelBatchSize=50 -batchProcessing.bettingDataBatchSize=1000 - # Spring配置 spring.mvc.pathmatch.matching-strategy=ant_path_matcher spring.messages.basename=i18n/messages spring.servlet.multipart.max-file-size=20MB spring.servlet.multipart.max-request-size=20MB -spring.devtools.restart.enabled=false -# token配置 +# Token配置 token.header=Authorization token.secret=abcdefghijklmnopqrstuvwxyz token.expireTime=10080 - -# MyBatis配置 -mybatis.typeAliasesPackage=com.ff.**.domain -mybatis.mapperLocations=classpath*:mapper/**/*Mapper.xml -mybatis.configLocation=classpath:mybatis/mybatis-config.xml - -# PageHelper分页插件 -pagehelper.helperDialect=mysql -pagehelper.supportMethodsArguments=true -pagehelper.params=count=countSql - -# Swagger配置 -swagger.enabled=true -swagger.pathMapping=/ - -# 防止XSS攻击 -xss.enabled=true -xss.excludes=/system/notice -xss.urlPatterns=/system/*,/monitor/*,/tool/* diff --git a/ff-game/src/main/java/com/ff/FFApplication.java b/ff-game/src/main/java/com/ff/FFApplication.java deleted file mode 100644 index df86721..0000000 --- a/ff-game/src/main/java/com/ff/FFApplication.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ff; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.SpringBootVersion; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.FilterType; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.security.authentication.dao.DaoAuthenticationProvider; - -/** - * 启动程序 - * - * @author ff - */ -@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) -@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = DaoAuthenticationProvider.class)}) -@EnableAsync -public class FFApplication { - - - public static void main(String[] args) { - // System.setProperty("spring.devtools.restart.enabled", "false"); - SpringApplication.run(FFApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ FF启动成功 ლ(´ڡ`ლ)゙" + SpringBootVersion.getVersion()); - - - } - - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/AgentController.java b/ff-game/src/main/java/com/ff/agent/controller/AgentController.java deleted file mode 100644 index 1bf86d6..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/AgentController.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.ff.agent.controller; - - -import com.ff.agent.dto.AgentCreateTenantDTO; -import com.ff.agent.dto.AgentTenantSecretKeyDTO; -import com.ff.base.constant.Constants; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.OperationType; -import com.ff.base.enums.QuotaType; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.dto.CreateTenantDTO; -import com.ff.base.system.dto.TenantSecretKeyDTO; -import com.ff.base.system.service.ITenantPlatformService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.bean.BeanUtils; -import com.ff.base.utils.ip.IpUtils; -import com.ff.common.domain.TenantAgentPlatform; -import com.ff.common.dto.BalanceChangesDTO; -import com.ff.common.service.ITenantAgentPlatformService; -import com.ff.common.service.ITenantGameQuotaService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ObjectUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; - -/** - * api控制器 - * - * @author shi - * @date 2025/02/10 - */ -@RestController -@RequestMapping("/agent/tenant") -@Slf4j -public class AgentController extends BaseController { - - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - @Resource - private ITenantPlatformService tenantPlatformService; - - @Resource - private ITenantAgentPlatformService tenantAgentPlatformService; - - /** - * 列表 - * - * @param tenantSecretKeyDTO 租户密钥 - * @return {@link TableDataInfo } - */ - @GetMapping("/list") - @Transactional - @PreAuthorize("@ss.hasPermi('agent:tenant:list')") - public TableDataInfo list(TenantSecretKeyDTO tenantSecretKeyDTO) { - startPage(); - tenantSecretKeyDTO.setAgentId(getUserId()); - List tenantSecretKeys = tenantSecretKeyService.selectTenantSecretKeyDTOList(tenantSecretKeyDTO); - TableDataInfo dataTable = getDataTable(tenantSecretKeys); - List list = new ArrayList<>(); - for (TenantSecretKey row : (List) dataTable.getRows()) { - AgentTenantSecretKeyDTO agentTenantSecretKeyDTO = new AgentTenantSecretKeyDTO(); - BeanUtils.copyProperties(row, agentTenantSecretKeyDTO); - agentTenantSecretKeyDTO.setTenantPlatforms(tenantPlatformService.selectTenantPlatformList(TenantPlatform.builder() - .tenantId(row.getId()) - .build())); - list.add(agentTenantSecretKeyDTO); - } - dataTable.setRows(list); - - return dataTable; - } - - - /** - * 创建租户 - * - * @return {@link AjaxResult } - */ - @PostMapping("/create") - @Transactional - @PreAuthorize("@ss.hasPermi('agent:tenant:create')") - public AjaxResult createTenant(@Validated @RequestBody AgentCreateTenantDTO agentCreateTenantDTO) { - - //构造租户的充值信息 - List tenantPlatforms = new ArrayList<>(); - for (TenantAgentPlatform tenantAgentPlatform : agentCreateTenantDTO.getTenantAgentPlatforms()) { - TenantAgentPlatform agentPlatform = tenantAgentPlatformService.selectTenantAgentPlatformById(tenantAgentPlatform.getId()); - // 成本比平台成本大 - if (agentPlatform.getCost().compareTo(tenantAgentPlatform.getCost()) > 0) { - throw new BaseException("成本比例不允许比最低比例小"); - } - TenantPlatform tenantPlatform = new TenantPlatform(); - BeanUtils.copyProperties(tenantAgentPlatform, tenantPlatform); - tenantPlatforms.add(tenantPlatform); - - } - - - //创建租户 - Integer tenant = tenantSecretKeyService.createTenant(CreateTenantDTO.builder() - .registerTime(DateUtils.getNowDate()) - .registerIp(IpUtils.getIpAddr()) - .agentId(getUserId()) - .account(agentCreateTenantDTO.getAccount()) - .password(agentCreateTenantDTO.getPassword()) - .scoreRatio(agentCreateTenantDTO.getScoreRatio()) - .tenantType(agentCreateTenantDTO.getTenantType()) - .depositRatio(agentCreateTenantDTO.getDepositRatio()) - .tenantPlatforms(tenantPlatforms) - .build()); - - if (tenant > 0) { - //信誉额度 - if (!ObjectUtils.isEmpty(agentCreateTenantDTO.getRealBalance())) { - tenantGameQuotaService.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.TRUE) - .currencyCode(Constants.USDT) - .tenantKey(agentCreateTenantDTO.getAccount()) - .balance(agentCreateTenantDTO.getRealBalance()) - .operationType(OperationType.TENANT_RECHARGE.getCode()) - .quotaType(QuotaType.REPUTATION.getCode()) - .remark(OperationType.TENANT_RECHARGE.getDescription()) - .build()); - - } - } - - return toAjax(tenant); - } - - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentCommissionController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentCommissionController.java deleted file mode 100644 index 2730bf6..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentCommissionController.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.ff.agent.controller; - -import java.math.BigDecimal; -import java.util.List; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - -import cn.hutool.core.util.NumberUtil; -import com.ff.agent.domain.TenantAgentWithdrawal; -import com.ff.agent.service.ITenantAgentInviteService; -import com.ff.agent.service.ITenantAgentWithdrawalService; -import com.ff.base.annotation.Excel; -import com.ff.base.constant.Constants; -import com.ff.base.enums.CommissionApprovalStatus; -import com.ff.base.enums.CommissionSourceType; -import com.ff.base.enums.CommissionType; -import com.ff.base.system.domain.TenantAgent; -import com.ff.base.system.service.ITenantAgentService; -import com.github.pagehelper.util.StringUtil; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.agent.domain.TenantAgentCommission; -import com.ff.agent.service.ITenantAgentCommissionService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 代理佣金管理 Controller - * - * @author shi - * @date 2025-02-26 - */ -@RestController -@RequestMapping("/agent/commission") -public class TenantAgentCommissionController extends BaseController { - @Autowired - private ITenantAgentCommissionService tenantAgentCommissionService; - - @Resource - private ITenantAgentWithdrawalService tenantAgentWithdrawalService; - - @Resource - private ITenantAgentService tenantAgentService; - - /** - * 查询代理佣金管理 列表 - */ - @PreAuthorize("@ss.hasPermi('agent:commission:list')") - @GetMapping("/list") - public AjaxResult list(TenantAgentCommission tenantAgentCommission) { - startPage(); - tenantAgentCommission.setAgentId(getUserId()); - List list = tenantAgentCommissionService.selectTenantAgentCommissionList(tenantAgentCommission); - - //未提现佣金 - tenantAgentCommission.setApprovalStatus(CommissionApprovalStatus.UNWITHDRAWN.getValue()); - BigDecimal unwithdrawn = tenantAgentCommissionService.getAgentCommissionSum(tenantAgentCommission); - //已提现佣金 - tenantAgentCommission.setApprovalStatus(CommissionApprovalStatus.WITHDRAWN.getValue()); - BigDecimal withdrawn = tenantAgentCommissionService.getAgentCommissionSum(tenantAgentCommission); - //总佣金 - tenantAgentCommission.setApprovalStatus(null); - BigDecimal total = tenantAgentCommissionService.getAgentCommissionSum(tenantAgentCommission); - - // 邀请佣金 - tenantAgentCommission.setCommissionType(CommissionType.INVITE.getValue()); - BigDecimal invite = tenantAgentCommissionService.getAgentCommissionSum(tenantAgentCommission); - //抽成佣金 - tenantAgentCommission.setCommissionType(CommissionType.TAKE.getValue()); - BigDecimal take = tenantAgentCommissionService.getAgentCommissionSum(tenantAgentCommission); - TableDataInfo dataTable = getDataTable(list); - - AjaxResult ajaxResult = success(dataTable); - ajaxResult.put("unwithdrawn", unwithdrawn); - ajaxResult.put("withdrawn", withdrawn); - ajaxResult.put("total", total); - ajaxResult.put("invite", invite); - ajaxResult.put("take", take); - return ajaxResult; - } - - - - /** - * 获取代理佣金管理 详细信息 - */ - @PreAuthorize("@ss.hasPermi('agent:commission:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { - return success(tenantAgentCommissionService.selectTenantAgentCommissionById(id)); - } - - - /** - * 修改代理佣金管理 - */ - @PreAuthorize("@ss.hasPermi('agent:commission:edit')") - @Log(title = "代理佣金管理 ", businessType = BusinessType.UPDATE) - @PutMapping - @Transactional - public synchronized AjaxResult edit() { - - //查询钱包 - TenantAgent tenantAgent = tenantAgentService.selectTenantAgentById(getUserId()); - Assert.isTrue(tenantAgent.getTenantStatus(), "当前租户已被停用"); - Assert.isTrue(!StringUtil.isEmpty(tenantAgent.getWalletAddress()) && - !StringUtil.isEmpty(tenantAgent.getCurrencyAgreement()), "钱包地址为空"); - - - //查询代理佣金信息 - TenantAgentCommission agentCommission = new TenantAgentCommission(); - agentCommission.setAgentId(getUserId()); - agentCommission.setApprovalStatus(CommissionApprovalStatus.UNWITHDRAWN.getValue()); - List list = tenantAgentCommissionService.selectTenantAgentCommissionList(agentCommission); - - BigDecimal usdtBalance = list.stream().map(TenantAgentCommission::getUsdtBalance).reduce(NumberUtil::add).get(); - Assert.isTrue(usdtBalance.compareTo(BigDecimal.ZERO) > 0, "佣金待提现余额为0"); - - TenantAgentWithdrawal tenantAgentWithdrawal = TenantAgentWithdrawal.builder() - .agentId(getUserId()) - .commissionBalance(usdtBalance) - .currencyAgreement(tenantAgent.getWalletAddress()) - .walletAddress(tenantAgent.getWalletAddress()) - .build(); - tenantAgentWithdrawalService.insertTenantAgentWithdrawal(tenantAgentWithdrawal); - for (TenantAgentCommission commission : list) { - commission.setAgentWithdrawalId(tenantAgentWithdrawal.getId()); - commission.setUpdateBy(getUsername()); - commission.setApprovalStatus(CommissionApprovalStatus.WITHDRAWING.getValue()); - tenantAgentCommissionService.updateTenantAgentCommission(commission); - } - return toAjax(1); - } - - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteController.java deleted file mode 100644 index 02e2ce7..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteController.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.ff.agent.controller; - -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Resource; - -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.agent.dto.TenantAgentInviteDTO; -import com.ff.agent.service.ITenantAgentInvitePlatformService; -import com.ff.base.annotation.Anonymous; -import com.ff.base.constant.ConfigConstants; -import com.ff.base.enums.InviteType; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.bean.BeanUtils; -import com.ff.common.domain.TenantAgentPlatform; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.agent.domain.TenantAgentInvite; -import com.ff.agent.service.ITenantAgentInviteService; -import com.ff.base.core.page.TableDataInfo; - -/** - * 代理邀请链接Controller - * - * @author shi - * @date 2025-02-25 - */ -@RestController -@RequestMapping("/agent/invite") -public class TenantAgentInviteController extends BaseController { - @Autowired - private ITenantAgentInviteService tenantAgentInviteService; - - @Resource - private ISysConfigService sysConfigService; - - - @Resource - private ITenantAgentInvitePlatformService tenantAgentInvitePlatformService; - - /** - * 获取代理邀请链接详细信息 - */ - @Anonymous - @GetMapping(value = "/code/{inviteCode}") - public AjaxResult getInfo(@PathVariable("inviteCode") String inviteCode) { - return success(tenantAgentInviteService.selectTenantAgentInviteByInviteCode(inviteCode)); - } - - - /** - * 查询代理邀请链接列表 - */ - @PreAuthorize("@ss.hasPermi('agent:invite:list')") - @GetMapping("/list") - public TableDataInfo list(TenantAgentInvite tenantAgentInvite) { - startPage(); - tenantAgentInvite.setAgentId(getUserId()); - List list = tenantAgentInviteService.selectTenantAgentInviteList(tenantAgentInvite); - return getDataTable(list); - } - - - /** - * 获取代理邀请链接详细信息 - */ - @PreAuthorize("@ss.hasPermi('agent:invite:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { - return success(tenantAgentInviteService.selectTenantAgentInviteById(id)); - } - - /** - * 新增代理邀请链接 - */ - @PreAuthorize("@ss.hasPermi('agent:invite:add')") - @Log(title = "代理邀请链接", businessType = BusinessType.INSERT) - @PostMapping - @Transactional - public AjaxResult add(@Validated @RequestBody TenantAgentInviteDTO tenantAgentInvite) { - tenantAgentInvite.setAgentId(getUserId()); - String inviteUrl = sysConfigService.selectConfigByKey(ConfigConstants.INVITE_URL); - tenantAgentInvite.setInviteCode(tenantAgentInviteService.getInviteCode()); - tenantAgentInvite.setInviteUrl(inviteUrl + "?code=" + tenantAgentInvite.getInviteCode()); - tenantAgentInvite.setCreateBy(getUsername()); - int result = tenantAgentInviteService.insertTenantAgentInvite(tenantAgentInvite); - if (result > 0 && InviteType.TENANT.getValue().equals(tenantAgentInvite.getInviteType())) { - // 保存平台注册利润信息 - List tenantAgentInvitePlatforms = tenantAgentInvite.getTenantAgentInvitePlatforms(); - for (TenantAgentInvitePlatform tenantAgentInvitePlatform : tenantAgentInvitePlatforms) { - tenantAgentInvitePlatform.setInviteId(tenantAgentInvite.getId()); - tenantAgentInvitePlatform.setCreateBy(getUsername()); - tenantAgentInvitePlatformService.insertTenantAgentInvitePlatform(tenantAgentInvitePlatform); - } - } - - return toAjax(result); - } - - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInvitePlatformController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInvitePlatformController.java deleted file mode 100644 index e4a34a7..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInvitePlatformController.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ff.agent.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.agent.service.ITenantAgentInvitePlatformService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 平台邀请注册成本管理Controller - * - * @author shi - * @date 2025-02-27 - */ -@RestController -@RequestMapping("/agent/invite/platform") -public class TenantAgentInvitePlatformController extends BaseController -{ - @Autowired - private ITenantAgentInvitePlatformService tenantAgentInvitePlatformService; - - /** - * 查询平台邀请注册成本管理列表 - */ - @GetMapping("/select") - public AjaxResult select(TenantAgentInvitePlatform tenantAgentInvitePlatform) - { - - List list = tenantAgentInvitePlatformService.selectTenantAgentInvitePlatformList(tenantAgentInvitePlatform); - return AjaxResult.success(list); - } - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteRegisterController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteRegisterController.java deleted file mode 100644 index c28c2a5..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentInviteRegisterController.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.ff.agent.controller; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - -import cn.hutool.core.util.IdUtil; -import com.ff.agent.domain.TenantAgentCommission; -import com.ff.agent.domain.TenantAgentInvite; -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.agent.domain.TenantAgentInviteRegister; -import com.ff.agent.dto.TenantAgentInviteRegisterAddDTO; -import com.ff.agent.dto.TenantAgentInviteRegisterDTO; -import com.ff.agent.service.ITenantAgentCommissionService; -import com.ff.agent.service.ITenantAgentInvitePlatformService; -import com.ff.agent.service.ITenantAgentInviteRegisterService; -import com.ff.agent.service.ITenantAgentInviteService; -import com.ff.base.annotation.Anonymous; -import com.ff.base.annotation.Excel; -import com.ff.base.constant.Constants; -import com.ff.base.enums.*; -import com.ff.base.system.domain.TenantAgent; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.dto.CreateTenantDTO; -import com.ff.base.system.dto.TenantSecretKeyDTO; -import com.ff.base.system.service.ITenantAgentService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.MessageUtils; -import com.ff.base.utils.SecurityUtils; -import com.ff.base.utils.bean.BeanUtils; -import com.ff.base.utils.ip.IpUtils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.common.dto.BalanceChangesDTO; -import com.ff.common.service.ITenantGameQuotaService; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 代理邀请注册Controller - * - * @author shi - * @date 2025-02-25 - */ -@RestController -@RequestMapping("/agent/invite/register") -public class TenantAgentInviteRegisterController extends BaseController { - @Autowired - private ITenantAgentInviteRegisterService tenantAgentInviteRegisterService; - - @Resource - private ITenantAgentInviteService tenantAgentInviteService; - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - - @Resource - private ITenantAgentCommissionService tenantAgentCommissionService; - - @Resource - private ITenantAgentService tenantAgentService; - - @Resource - private ITenantAgentInvitePlatformService tenantAgentInvitePlatformService; - - /** - * 查询代理邀请注册列表 - */ - @PreAuthorize("@ss.hasPermi('operation:register:list')") - @GetMapping("/list") - public TableDataInfo list(TenantAgentInviteRegisterDTO tenantAgentInviteRegisterDTO) { - startPage(); - tenantAgentInviteRegisterDTO.setAgentId(getUserId()); - List list = tenantAgentInviteRegisterService.selectTenantAgentInviteRegisterListDTO(tenantAgentInviteRegisterDTO); - return getDataTable(list); - } - - - /** - * 获取代理邀请注册详细信息 - */ - @PreAuthorize("@ss.hasPermi('operation:register:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { - return success(tenantAgentInviteRegisterService.selectTenantAgentInviteRegisterById(id)); - } - - /** - * 新增代理邀请注册 - */ - @Anonymous - @PostMapping - public AjaxResult add(@RequestBody TenantAgentInviteRegisterAddDTO tenantAgentInviteRegisterAddDTO) { - Assert.isTrue(tenantAgentInviteRegisterAddDTO.getPassword().equals(tenantAgentInviteRegisterAddDTO.getConfirmPassword()), "两次密码不一致"); - - List tenantAgentInvites = tenantAgentInviteService.selectTenantAgentInviteList(TenantAgentInvite.builder() - .inviteCode(tenantAgentInviteRegisterAddDTO.getInviteCode()) - .build()); - Assert.isTrue(!CollectionUtils.isEmpty(tenantAgentInvites), "邀请码错误"); - - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(tenantAgentInviteRegisterAddDTO.getAccount()); - Assert.isTrue(ObjectUtils.isEmpty(tenantSecretKey), MessageUtils.message("operation.tenant.account.already.used")); - - List tenantAgentInviteRegisters = tenantAgentInviteRegisterService.selectTenantAgentInviteRegisterList(TenantAgentInviteRegister.builder() - .account(tenantAgentInviteRegisterAddDTO.getAccount()) - .build()); - Assert.isTrue(CollectionUtils.isEmpty(tenantAgentInviteRegisters), MessageUtils.message("operation.tenant.account.already.used")); - - - TenantAgentInviteRegister tenantAgentInviteRegister = new TenantAgentInviteRegister(); - tenantAgentInviteRegister.setAgentId(tenantAgentInvites.get(0).getAgentId()); - tenantAgentInviteRegister.setRegisterTime(DateUtils.getNowDate()); - tenantAgentInviteRegister.setRegisterIp(IpUtils.getIpAddr()); - tenantAgentInviteRegister.setAccount(tenantAgentInviteRegisterAddDTO.getAccount()); - tenantAgentInviteRegister.setPassword(tenantAgentInviteRegisterAddDTO.getPassword()); - tenantAgentInviteRegister.setBalance(tenantAgentInvites.get(0).getBalance()); - tenantAgentInviteRegister.setInviteCode(tenantAgentInviteRegisterAddDTO.getInviteCode()); - tenantAgentInviteRegister.setOrderId(IdUtil.getSnowflakeNextIdStr()); - return toAjax(tenantAgentInviteRegisterService.insertTenantAgentInviteRegister(tenantAgentInviteRegister)); - } - - /** - * 编辑 - * - * @param dto 向 - */ - @Anonymous - @PutMapping - @Transactional - public void edit(@RequestBody TenantAgentInviteRegisterAddDTO dto) { - TenantAgentInviteRegister tenantAgentInviteRegister = tenantAgentInviteRegisterService.selectTenantAgentInviteRegisterById(dto.getId()); - - Assert.isTrue(tenantAgentInviteRegister.getStatus().equals(InviterRegisterStatus.PENDING.getValue()), "该账号已激活"); - - //查询注册配置信息 - TenantAgentInvite tenantAgentInvite = tenantAgentInviteService.selectTenantAgentInviteByInviteCode(tenantAgentInviteRegister.getInviteCode()); - - List tenantAgentInvitePlatforms = tenantAgentInvitePlatformService.selectTenantAgentInvitePlatformList(TenantAgentInvitePlatform.builder() - .inviteId(tenantAgentInvite.getId()) - .build()); - Integer result = 0; - if (tenantAgentInvite.getInviteType().equals(InviteType.TENANT.getValue())) { - - List tenantPlatforms = new ArrayList<>(); - for (TenantAgentInvitePlatform tenantAgentInvitePlatform : tenantAgentInvitePlatforms) { - TenantPlatform tenantPlatform = new TenantPlatform(); - BeanUtils.copyProperties(tenantAgentInvitePlatform, tenantPlatform); - tenantPlatforms.add(tenantPlatform); - } - - //创建租户 - result = tenantSecretKeyService.createTenant(CreateTenantDTO.builder() - .registerTime(tenantAgentInviteRegister.getRegisterTime()) - .registerIp(tenantAgentInviteRegister.getRegisterIp()) - .agentId(tenantAgentInvite.getAgentId()) - .account(tenantAgentInviteRegister.getAccount()) - .password(tenantAgentInviteRegister.getPassword()) - .scoreRatio(tenantAgentInvite.getScoreRatio()) - .tenantType(tenantAgentInvite.getTenantType()) - .depositRatio(tenantAgentInvite.getDepositRatio()) - .tenantPlatforms(tenantPlatforms) - .build()); - //信誉额度 - if (result > 0 & !ObjectUtils.isEmpty(tenantAgentInvite.getRealBalance())) { - tenantGameQuotaService.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.TRUE) - .currencyCode(Constants.USDT) - .tenantKey(tenantAgentInviteRegister.getAccount()) - .balance(tenantAgentInvite.getRealBalance()) - .operationType(OperationType.TENANT_RECHARGE.getCode()) - .quotaType(QuotaType.REPUTATION.getCode()) - .remark(OperationType.TENANT_RECHARGE.getDescription()) - .build()); - - } - } else { - result = tenantAgentService.createTenantAgent(TenantAgent.builder() - .account(tenantAgentInviteRegister.getAccount()) - .password(tenantAgentInviteRegister.getPassword()) - .registerTime(tenantAgentInviteRegister.getRegisterTime()) - .registerIp(tenantAgentInviteRegister.getRegisterIp()) - .registerIpCity(tenantAgentInviteRegister.getRegisterIpCity()) - .tenantStatus(Boolean.TRUE) - .build()); - } - if (result > 0) { - //添加佣金信息 - TenantAgentCommission tenantAgentCommission = TenantAgentCommission.builder() - .agentId(tenantAgentInvite.getAgentId()) - .sourceId(tenantAgentInviteRegister.getId()) - .sourceType(CommissionSourceType.AGENT_TENANT_REGISTER.getValue()) - .commissionType(CommissionType.INVITE.getValue()) - .currencyCode(Constants.USDT) - .balance(tenantAgentInviteRegister.getBalance()) - .costBalance(BigDecimal.ZERO) - .merchantBalance(BigDecimal.ZERO) - .commissionBalance(tenantAgentInviteRegister.getBalance()) - .usdtBalance(tenantAgentInviteRegister.getBalance()) - .build(); - tenantAgentCommission.setCreateBy(tenantAgentInviteRegister.getAccount()); - tenantAgentCommissionService.insertTenantAgentCommission(tenantAgentCommission); - - //更新激活状态 - tenantAgentInviteRegister.setStatus(InviterRegisterStatus.ACTIVATED.getValue()); - tenantAgentInviteRegisterService.updateTenantAgentInviteRegister(tenantAgentInviteRegister); - - } - - - } - - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentPlatformController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentPlatformController.java deleted file mode 100644 index 569d422..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentPlatformController.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.ff.agent.controller; - -import java.util.List; - -import com.ff.base.core.page.PageDomain; -import com.ff.common.domain.TenantAgentPlatform; -import com.ff.common.service.ITenantAgentPlatformService; -import com.github.pagehelper.PageHelper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.agent.service.ITenantAgentInvitePlatformService; - -/** - * 平台邀请注册成本管理Controller - * - * @author shi - * @date 2025-02-27 - */ -@RestController -@RequestMapping("/agent/platform") -public class TenantAgentPlatformController extends BaseController -{ - @Autowired - private ITenantAgentPlatformService tenantAgentPlatformService; - - /** - * 查询平台邀请注册成本管理列表 - */ - @GetMapping("/select") - public AjaxResult select( ) - { - PageHelper.orderBy("platform_code desc,currency_code desc"); - List list = tenantAgentPlatformService.selectTenantAgentPlatformList(TenantAgentPlatform.builder().build()); - return AjaxResult.success(list); - } - -} diff --git a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentWithdrawalController.java b/ff-game/src/main/java/com/ff/agent/controller/TenantAgentWithdrawalController.java deleted file mode 100644 index 4aa0b60..0000000 --- a/ff-game/src/main/java/com/ff/agent/controller/TenantAgentWithdrawalController.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.ff.agent.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.agent.domain.TenantAgentWithdrawal; -import com.ff.agent.service.ITenantAgentWithdrawalService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 代理申请提现审批管理Controller - * - * @author shi - * @date 2025-02-26 - */ -@RestController -@RequestMapping("/agent/withdrawal") -public class TenantAgentWithdrawalController extends BaseController -{ - @Autowired - private ITenantAgentWithdrawalService tenantAgentWithdrawalService; - - /** - * 查询代理申请提现审批管理列表 - */ - @PreAuthorize("@ss.hasPermi('agent:withdrawal:list')") - @GetMapping("/list") - public TableDataInfo list(TenantAgentWithdrawal tenantAgentWithdrawal) - { - startPage(); - tenantAgentWithdrawal.setAgentId(getUserId()); - List list = tenantAgentWithdrawalService.selectTenantAgentWithdrawalList(tenantAgentWithdrawal); - return getDataTable(list); - } - - - /** - * 获取代理申请提现审批管理详细信息 - */ - @PreAuthorize("@ss.hasPermi('agent:withdrawal:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(tenantAgentWithdrawalService.selectTenantAgentWithdrawalById(id)); - } - - - /** - * 修改代理申请提现审批管理 - */ - @PreAuthorize("@ss.hasPermi('agent:withdrawal:edit')") - @Log(title = "代理申请提现审批管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TenantAgentWithdrawal tenantAgentWithdrawal) - { - return toAjax(tenantAgentWithdrawalService.updateTenantAgentWithdrawal(tenantAgentWithdrawal)); - } - -} diff --git a/ff-game/src/main/java/com/ff/agent/dto/AgentCreateTenantDTO.java b/ff-game/src/main/java/com/ff/agent/dto/AgentCreateTenantDTO.java deleted file mode 100644 index 191e3c9..0000000 --- a/ff-game/src/main/java/com/ff/agent/dto/AgentCreateTenantDTO.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.ff.agent.dto; - - -import com.ff.base.xss.Xss; -import com.ff.common.domain.TenantAgentPlatform; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * 代理创建租户 - * - * @author shi - * @date 2025/02/20 - */ -@Data -public class AgentCreateTenantDTO implements Serializable { - private static final long serialVersionUID = -5561068216486978354L; - - - /** - * 账户 - */ - @Xss(message = "用户账号不能包含脚本字符") - @NotBlank(message = "用户账号不能为空") - @Size(min = 2, max = 30, message = "用户账号长度不能超过30个字符") - private String account; - /** - * 密码 - */ - @NotBlank(message = "密码不能为空") - @Size(min = 5, max = 20, message = "密码长度不能超过25个字符") - private String password; - - - /** 买分比例 */ - @NotNull(message = "买分比例不能为空") - private BigDecimal scoreRatio; - - - - /** 租户类型 TenantType 枚举 */ - @NotNull(message = "租户类型不能为空") - private Integer tenantType; - - /** 信誉额度*/ - private BigDecimal realBalance; - - /** 透支比例 */ - private BigDecimal depositRatio; - - /** - * 租户代理平台利润 - */ - @NotNull(message = "租户代理平台列表不能为空") - @Size(min = 1, message = "租户代理平台列表必须包含至少一个元素") - private List tenantAgentPlatforms; - - - - -} diff --git a/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java b/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java deleted file mode 100644 index 7612262..0000000 --- a/ff-game/src/main/java/com/ff/agent/dto/AgentTenantSecretKeyDTO.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ff.agent.dto; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.ff.base.annotation.Excel; -import com.ff.base.core.domain.BaseEntity; -import com.ff.base.system.domain.TenantPlatform; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 用户租户密钥对象 ff_tenant_secret_key - * - * @author shi - * @date 2025-02-20 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class AgentTenantSecretKeyDTO extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - /** 主键id */ - @JsonSerialize(using = ToStringSerializer.class) - private Long id; - - - - - /** 密码 */ - @Excel(name = "密码") - @JsonIgnore - private String password; - - /** 最后登录ip */ - @Excel(name = "最后登录ip") - private String loginIp; - - /** 最后登录时间 */ - @Excel(name = "最后登录时间") - @JsonSerialize(using = ToStringSerializer.class) - private Long loginData; - - - - /** 租户key */ - @Excel(name = "租户key") - private String tenantKey; - - /** 代理id */ - @Excel(name = "代理id") - @JsonSerialize(using = ToStringSerializer.class) - private Long agentId; - - - - /** 商户后缀 */ - @Excel(name = "商户后缀") - private String tenantSn; - - /** 租户密钥 */ - @Excel(name = "租户密钥") - @JsonIgnore - private String tenantSecret; - - /** 租户状态 1正常 0停用 */ - @Excel(name = "租户状态 1正常 0停用") - private Boolean tenantStatus; - - /** 额度类型 TenantQuotaType 枚举 */ - @Excel(name = "额度类型 TenantQuotaType 枚举") - private Integer quotaType; - - /** 买分比例 */ - @Excel(name = "买分比例") - private BigDecimal scoreRatio; - - /** 租户类型 TenantType 枚举 */ - @Excel(name = "租户类型 TenantType 枚举") - private Integer tenantType; - - /** 透支比例 */ - @Excel(name = "透支比例") - private BigDecimal depositRatio; - - - /** - * 租户代理平台利润 - */ - private List tenantPlatforms; - - -} diff --git a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteDTO.java b/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteDTO.java deleted file mode 100644 index 1a7c228..0000000 --- a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.agent.dto; - -import com.ff.agent.domain.TenantAgentInvite; -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.common.domain.TenantAgentPlatform; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import java.util.List; - - -/** - * 租户代理邀请dto - * - * @author shi - * @date 2025/02/27 - */ -@Data -public class TenantAgentInviteDTO extends TenantAgentInvite { - - /** - * 租户代理平台利润 - */ - @NotNull(message = "租户代理平台列表不能为空") - @Size(min = 1, message = "租户代理平台列表必须包含至少一个元素") - private List tenantAgentInvitePlatforms; -} diff --git a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterAddDTO.java b/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterAddDTO.java deleted file mode 100644 index 69cbb69..0000000 --- a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterAddDTO.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ff.agent.dto; - - -import com.ff.base.annotation.Excel; -import com.ff.base.core.domain.BaseEntity; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 租户代理邀请注册添加数据 - * - * @author shi - * @date 2025/02/25 - */ -@Data -public class TenantAgentInviteRegisterAddDTO extends BaseEntity { - - - /** 邀请码 */ - private String inviteCode; - - /** 账号 */ - private String account; - - /** 密码 */ - private String password; - - /** - * 确认密码 - */ - private String confirmPassword; - -} diff --git a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterDTO.java b/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterDTO.java deleted file mode 100644 index 541af92..0000000 --- a/ff-game/src/main/java/com/ff/agent/dto/TenantAgentInviteRegisterDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.agent.dto; - -import com.ff.agent.domain.TenantAgentInviteRegister; -import com.ff.base.core.domain.BaseEntity; -import lombok.Data; - -/** - * 租户代理邀请注册dto - * - * @author shi - * @date 2025/02/26 - */ -@Data -public class TenantAgentInviteRegisterDTO extends TenantAgentInviteRegister { - /** - * 邀请类型 - */ - private Integer inviteType; -} diff --git a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentCommissionMapper.java b/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentCommissionMapper.java deleted file mode 100644 index e0daaac..0000000 --- a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentCommissionMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.agent.mapper; - -import java.math.BigDecimal; -import java.util.List; -import com.ff.agent.domain.TenantAgentCommission; - -/** - * 代理佣金管理 Mapper接口 - * - * @author shi - * @date 2025-02-26 - */ -public interface TenantAgentCommissionMapper -{ - /** - * 查询代理佣金管理 - * - * @param id 代理佣金管理 主键 - * @return 代理佣金管理 - */ - TenantAgentCommission selectTenantAgentCommissionById(Long id); - - /** - * 查询代理佣金管理 列表 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 代理佣金管理 集合 - */ - List selectTenantAgentCommissionList(TenantAgentCommission tenantAgentCommission); - - /** - * 新增代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - int insertTenantAgentCommission(TenantAgentCommission tenantAgentCommission); - - /** - * 修改代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - int updateTenantAgentCommission(TenantAgentCommission tenantAgentCommission); - - /** - * 删除代理佣金管理 - * - * @param id 代理佣金管理 主键 - * @return 结果 - */ - int deleteTenantAgentCommissionById(Long id); - - /** - * 批量删除代理佣金管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentCommissionByIds(Long[] ids); - - - /** - * 获得代理佣金 - * - * @param tenantAgentCommission 租户代理佣金 - * @return {@link BigDecimal } - */ - BigDecimal getAgentCommissionSum(TenantAgentCommission tenantAgentCommission); - -} diff --git a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteMapper.java b/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteMapper.java deleted file mode 100644 index 7f06873..0000000 --- a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteMapper.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.ff.agent.mapper; - -import java.util.List; -import com.ff.agent.domain.TenantAgentInvite; - -/** - * 代理邀请链接Mapper接口 - * - * @author shi - * @date 2025-02-25 - */ -public interface TenantAgentInviteMapper -{ - /** - * 查询代理邀请链接 - * - * @param id 代理邀请链接主键 - * @return 代理邀请链接 - */ - TenantAgentInvite selectTenantAgentInviteById(Long id); - - - /** - * 按邀请代码选择租户代理邀请 - * - * @param inviteCode 邀请码 - * @return {@link TenantAgentInvite } - */ - TenantAgentInvite selectTenantAgentInviteByInviteCode(String inviteCode); - - /** - * 查询代理邀请链接列表 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 代理邀请链接集合 - */ - List selectTenantAgentInviteList(TenantAgentInvite tenantAgentInvite); - - /** - * 新增代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - int insertTenantAgentInvite(TenantAgentInvite tenantAgentInvite); - - /** - * 修改代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - int updateTenantAgentInvite(TenantAgentInvite tenantAgentInvite); - - /** - * 删除代理邀请链接 - * - * @param id 代理邀请链接主键 - * @return 结果 - */ - int deleteTenantAgentInviteById(Long id); - - /** - * 批量删除代理邀请链接 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentInviteByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInvitePlatformMapper.java b/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInvitePlatformMapper.java deleted file mode 100644 index 3b292b9..0000000 --- a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInvitePlatformMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.agent.mapper; - -import java.util.List; -import com.ff.agent.domain.TenantAgentInvitePlatform; - -/** - * 平台邀请注册成本管理Mapper接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface TenantAgentInvitePlatformMapper -{ - /** - * 查询平台邀请注册成本管理 - * - * @param id 平台邀请注册成本管理主键 - * @return 平台邀请注册成本管理 - */ - TenantAgentInvitePlatform selectTenantAgentInvitePlatformById(Long id); - - /** - * 查询平台邀请注册成本管理列表 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 平台邀请注册成本管理集合 - */ - List selectTenantAgentInvitePlatformList(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 新增平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - int insertTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 修改平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - int updateTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 删除平台邀请注册成本管理 - * - * @param id 平台邀请注册成本管理主键 - * @return 结果 - */ - int deleteTenantAgentInvitePlatformById(Long id); - - /** - * 批量删除平台邀请注册成本管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentInvitePlatformByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteRegisterMapper.java b/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteRegisterMapper.java deleted file mode 100644 index 0cf28f7..0000000 --- a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentInviteRegisterMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.agent.mapper; - -import com.ff.agent.domain.TenantAgentInviteRegister; -import com.ff.agent.dto.TenantAgentInviteRegisterDTO; - -import java.util.List; - -/** - * 代理邀请注册Mapper接口 - * - * @author shi - * @date 2025-02-25 - */ -public interface TenantAgentInviteRegisterMapper -{ - /** - * 查询代理邀请注册 - * - * @param id 代理邀请注册主键 - * @return 代理邀请注册 - */ - TenantAgentInviteRegister selectTenantAgentInviteRegisterById(Long id); - - - /** - * 选择租户代理邀请注册列表dto - * - * @param tenantAgentInviteRegisterDTO 租户代理邀请注册dto - * @return {@link List }<{@link TenantAgentInviteRegisterDTO }> - */ - List selectTenantAgentInviteRegisterListDTO(TenantAgentInviteRegisterDTO tenantAgentInviteRegisterDTO); - - /** - * 查询代理邀请注册列表 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 代理邀请注册集合 - */ - List selectTenantAgentInviteRegisterList(TenantAgentInviteRegister tenantAgentInviteRegister); - - /** - * 新增代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - int insertTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister); - - /** - * 修改代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - int updateTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister); - - /** - * 删除代理邀请注册 - * - * @param id 代理邀请注册主键 - * @return 结果 - */ - int deleteTenantAgentInviteRegisterById(Long id); - - /** - * 批量删除代理邀请注册 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentInviteRegisterByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentWithdrawalMapper.java b/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentWithdrawalMapper.java deleted file mode 100644 index fa2e10f..0000000 --- a/ff-game/src/main/java/com/ff/agent/mapper/TenantAgentWithdrawalMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.agent.mapper; - -import java.util.List; -import com.ff.agent.domain.TenantAgentWithdrawal; - -/** - * 代理申请提现审批管理Mapper接口 - * - * @author shi - * @date 2025-02-26 - */ -public interface TenantAgentWithdrawalMapper -{ - /** - * 查询代理申请提现审批管理 - * - * @param id 代理申请提现审批管理主键 - * @return 代理申请提现审批管理 - */ - TenantAgentWithdrawal selectTenantAgentWithdrawalById(Long id); - - /** - * 查询代理申请提现审批管理列表 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 代理申请提现审批管理集合 - */ - List selectTenantAgentWithdrawalList(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 新增代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - int insertTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 修改代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - int updateTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 删除代理申请提现审批管理 - * - * @param id 代理申请提现审批管理主键 - * @return 结果 - */ - int deleteTenantAgentWithdrawalById(Long id); - - /** - * 批量删除代理申请提现审批管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentWithdrawalByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentCommissionService.java b/ff-game/src/main/java/com/ff/agent/service/ITenantAgentCommissionService.java deleted file mode 100644 index ce5277a..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentCommissionService.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.ff.agent.service; - -import java.math.BigDecimal; -import java.util.List; -import com.ff.agent.domain.TenantAgentCommission; - -/** - * 代理佣金管理 Service接口 - * - * @author shi - * @date 2025-02-26 - */ -public interface ITenantAgentCommissionService -{ - /** - * 查询代理佣金管理 - * - * @param id 代理佣金管理 主键 - * @return 代理佣金管理 - */ - TenantAgentCommission selectTenantAgentCommissionById(Long id); - - /** - * 查询代理佣金管理 列表 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 代理佣金管理 集合 - */ - List selectTenantAgentCommissionList(TenantAgentCommission tenantAgentCommission); - - - /** - * 获得代理佣金 - * - * @param tenantAgentCommission 租户代理佣金 - * @return {@link BigDecimal } - */ - BigDecimal getAgentCommissionSum(TenantAgentCommission tenantAgentCommission); - - /** - * 新增代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - int insertTenantAgentCommission(TenantAgentCommission tenantAgentCommission); - - /** - * 修改代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - int updateTenantAgentCommission(TenantAgentCommission tenantAgentCommission); - - /** - * 批量删除代理佣金管理 - * - * @param ids 需要删除的代理佣金管理 主键集合 - * @return 结果 - */ - int deleteTenantAgentCommissionByIds(Long[] ids); - - /** - * 删除代理佣金管理 信息 - * - * @param id 代理佣金管理 主键 - * @return 结果 - */ - int deleteTenantAgentCommissionById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInvitePlatformService.java b/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInvitePlatformService.java deleted file mode 100644 index 47ca2bb..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInvitePlatformService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.agent.service; - -import java.util.List; -import com.ff.agent.domain.TenantAgentInvitePlatform; - -/** - * 平台邀请注册成本管理Service接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface ITenantAgentInvitePlatformService -{ - /** - * 查询平台邀请注册成本管理 - * - * @param id 平台邀请注册成本管理主键 - * @return 平台邀请注册成本管理 - */ - TenantAgentInvitePlatform selectTenantAgentInvitePlatformById(Long id); - - /** - * 查询平台邀请注册成本管理列表 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 平台邀请注册成本管理集合 - */ - List selectTenantAgentInvitePlatformList(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 新增平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - int insertTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 修改平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - int updateTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform); - - /** - * 批量删除平台邀请注册成本管理 - * - * @param ids 需要删除的平台邀请注册成本管理主键集合 - * @return 结果 - */ - int deleteTenantAgentInvitePlatformByIds(Long[] ids); - - /** - * 删除平台邀请注册成本管理信息 - * - * @param id 平台邀请注册成本管理主键 - * @return 结果 - */ - int deleteTenantAgentInvitePlatformById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteRegisterService.java b/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteRegisterService.java deleted file mode 100644 index 40cd363..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteRegisterService.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.ff.agent.service; - -import com.ff.agent.domain.TenantAgentInviteRegister; -import com.ff.agent.dto.TenantAgentInviteRegisterDTO; - -import java.util.List; - -/** - * 代理邀请注册Service接口 - * - * @author shi - * @date 2025-02-25 - */ -public interface ITenantAgentInviteRegisterService -{ - /** - * 查询代理邀请注册 - * - * @param id 代理邀请注册主键 - * @return 代理邀请注册 - */ - TenantAgentInviteRegister selectTenantAgentInviteRegisterById(Long id); - - /** - * 查询代理邀请注册列表 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 代理邀请注册集合 - */ - List selectTenantAgentInviteRegisterList(TenantAgentInviteRegister tenantAgentInviteRegister); - - - /** - * 选择租户代理邀请注册列表dto - * - * @param tenantAgentInviteRegisterDTO 租户代理邀请注册dto - * @return {@link List }<{@link TenantAgentInviteRegisterDTO }> - */ - List selectTenantAgentInviteRegisterListDTO(TenantAgentInviteRegisterDTO tenantAgentInviteRegisterDTO); - - - /** - * 新增代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - int insertTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister); - - /** - * 修改代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - int updateTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister); - - /** - * 批量删除代理邀请注册 - * - * @param ids 需要删除的代理邀请注册主键集合 - * @return 结果 - */ - int deleteTenantAgentInviteRegisterByIds(Long[] ids); - - /** - * 删除代理邀请注册信息 - * - * @param id 代理邀请注册主键 - * @return 结果 - */ - int deleteTenantAgentInviteRegisterById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteService.java b/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteService.java deleted file mode 100644 index 0b5afd9..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentInviteService.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ff.agent.service; - -import java.util.List; -import com.ff.agent.domain.TenantAgentInvite; - -/** - * 代理邀请链接Service接口 - * - * @author shi - * @date 2025-02-25 - */ -public interface ITenantAgentInviteService -{ - /** - * 查询代理邀请链接 - * - * @param id 代理邀请链接主键 - * @return 代理邀请链接 - */ - TenantAgentInvite selectTenantAgentInviteById(Long id); - - - /** - * 按邀请代码选择租户代理邀请 - * - * @param inviteCode 邀请码 - * @return {@link TenantAgentInvite } - */ - TenantAgentInvite selectTenantAgentInviteByInviteCode(String inviteCode); - - /** - * 查询代理邀请链接列表 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 代理邀请链接集合 - */ - List selectTenantAgentInviteList(TenantAgentInvite tenantAgentInvite); - - /** - * 新增代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - int insertTenantAgentInvite(TenantAgentInvite tenantAgentInvite); - - /** - * 获取邀请码 - * - * @return {@link String } - */ - String getInviteCode(); - - /** - * 修改代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - int updateTenantAgentInvite(TenantAgentInvite tenantAgentInvite); - - /** - * 批量删除代理邀请链接 - * - * @param ids 需要删除的代理邀请链接主键集合 - * @return 结果 - */ - int deleteTenantAgentInviteByIds(Long[] ids); - - /** - * 删除代理邀请链接信息 - * - * @param id 代理邀请链接主键 - * @return 结果 - */ - int deleteTenantAgentInviteById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentWithdrawalService.java b/ff-game/src/main/java/com/ff/agent/service/ITenantAgentWithdrawalService.java deleted file mode 100644 index e4dfc15..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/ITenantAgentWithdrawalService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.agent.service; - -import java.util.List; -import com.ff.agent.domain.TenantAgentWithdrawal; - -/** - * 代理申请提现审批管理Service接口 - * - * @author shi - * @date 2025-02-26 - */ -public interface ITenantAgentWithdrawalService -{ - /** - * 查询代理申请提现审批管理 - * - * @param id 代理申请提现审批管理主键 - * @return 代理申请提现审批管理 - */ - TenantAgentWithdrawal selectTenantAgentWithdrawalById(Long id); - - /** - * 查询代理申请提现审批管理列表 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 代理申请提现审批管理集合 - */ - List selectTenantAgentWithdrawalList(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 新增代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - int insertTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 修改代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - int updateTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal); - - /** - * 批量删除代理申请提现审批管理 - * - * @param ids 需要删除的代理申请提现审批管理主键集合 - * @return 结果 - */ - int deleteTenantAgentWithdrawalByIds(Long[] ids); - - /** - * 删除代理申请提现审批管理信息 - * - * @param id 代理申请提现审批管理主键 - * @return 结果 - */ - int deleteTenantAgentWithdrawalById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentCommissionServiceImpl.java b/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentCommissionServiceImpl.java deleted file mode 100644 index 4e0471c..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentCommissionServiceImpl.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.ff.agent.service.impl; - -import java.math.BigDecimal; -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.agent.mapper.TenantAgentCommissionMapper; -import com.ff.agent.domain.TenantAgentCommission; -import com.ff.agent.service.ITenantAgentCommissionService; - -/** - * 代理佣金管理 Service业务层处理 - * - * @author shi - * @date 2025-02-26 - */ -@Service -public class TenantAgentCommissionServiceImpl implements ITenantAgentCommissionService -{ - @Autowired - private TenantAgentCommissionMapper tenantAgentCommissionMapper; - - /** - * 查询代理佣金管理 - * - * @param id 代理佣金管理 主键 - * @return 代理佣金管理 - */ - @Override - public TenantAgentCommission selectTenantAgentCommissionById(Long id) - { - return tenantAgentCommissionMapper.selectTenantAgentCommissionById(id); - } - - /** - * 查询代理佣金管理 列表 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 代理佣金管理 - */ - @Override - public List selectTenantAgentCommissionList(TenantAgentCommission tenantAgentCommission) - { - return tenantAgentCommissionMapper.selectTenantAgentCommissionList(tenantAgentCommission); - } - - /** - * 获得代理佣金 - * - * @param tenantAgentCommission 租户代理佣金 - * @return {@link BigDecimal } - */ - @Override - public BigDecimal getAgentCommissionSum(TenantAgentCommission tenantAgentCommission) { - return tenantAgentCommissionMapper.getAgentCommissionSum(tenantAgentCommission); - } - - /** - * 新增代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - @Override - public int insertTenantAgentCommission(TenantAgentCommission tenantAgentCommission) - { - tenantAgentCommission.setCreateTime(DateUtils.getNowDate()); - tenantAgentCommission.setId(IdUtil.getSnowflakeNextId()); - return tenantAgentCommissionMapper.insertTenantAgentCommission(tenantAgentCommission); - } - - /** - * 修改代理佣金管理 - * - * @param tenantAgentCommission 代理佣金管理 - * @return 结果 - */ - @Override - public int updateTenantAgentCommission(TenantAgentCommission tenantAgentCommission) - { - tenantAgentCommission.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentCommissionMapper.updateTenantAgentCommission(tenantAgentCommission); - } - - /** - * 批量删除代理佣金管理 - * - * @param ids 需要删除的代理佣金管理 主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentCommissionByIds(Long[] ids) - { - return tenantAgentCommissionMapper.deleteTenantAgentCommissionByIds(ids); - } - - /** - * 删除代理佣金管理 信息 - * - * @param id 代理佣金管理 主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentCommissionById(Long id) - { - return tenantAgentCommissionMapper.deleteTenantAgentCommissionById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInvitePlatformServiceImpl.java b/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInvitePlatformServiceImpl.java deleted file mode 100644 index 768aa50..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInvitePlatformServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.agent.service.impl; - -import java.util.List; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.agent.mapper.TenantAgentInvitePlatformMapper; -import com.ff.agent.domain.TenantAgentInvitePlatform; -import com.ff.agent.service.ITenantAgentInvitePlatformService; -import cn.hutool.core.util.IdUtil; - - -/** - * 平台邀请注册成本管理Service业务层处理 - * - * @author shi - * @date 2025-02-27 - */ -@Service -public class TenantAgentInvitePlatformServiceImpl implements ITenantAgentInvitePlatformService -{ - @Autowired - private TenantAgentInvitePlatformMapper tenantAgentInvitePlatformMapper; - - /** - * 查询平台邀请注册成本管理 - * - * @param id 平台邀请注册成本管理主键 - * @return 平台邀请注册成本管理 - */ - @Override - public TenantAgentInvitePlatform selectTenantAgentInvitePlatformById(Long id) - { - return tenantAgentInvitePlatformMapper.selectTenantAgentInvitePlatformById(id); - } - - /** - * 查询平台邀请注册成本管理列表 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 平台邀请注册成本管理 - */ - @Override - public List selectTenantAgentInvitePlatformList(TenantAgentInvitePlatform tenantAgentInvitePlatform) - { - return tenantAgentInvitePlatformMapper.selectTenantAgentInvitePlatformList(tenantAgentInvitePlatform); - } - - /** - * 新增平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - @Override - public int insertTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform) - { - tenantAgentInvitePlatform.setId(IdUtil.getSnowflakeNextId()); - tenantAgentInvitePlatform.setCreateTime(DateUtils.getNowDate()); - return tenantAgentInvitePlatformMapper.insertTenantAgentInvitePlatform(tenantAgentInvitePlatform); - } - - /** - * 修改平台邀请注册成本管理 - * - * @param tenantAgentInvitePlatform 平台邀请注册成本管理 - * @return 结果 - */ - @Override - public int updateTenantAgentInvitePlatform(TenantAgentInvitePlatform tenantAgentInvitePlatform) - { - tenantAgentInvitePlatform.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentInvitePlatformMapper.updateTenantAgentInvitePlatform(tenantAgentInvitePlatform); - } - - /** - * 批量删除平台邀请注册成本管理 - * - * @param ids 需要删除的平台邀请注册成本管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInvitePlatformByIds(Long[] ids) - { - return tenantAgentInvitePlatformMapper.deleteTenantAgentInvitePlatformByIds(ids); - } - - /** - * 删除平台邀请注册成本管理信息 - * - * @param id 平台邀请注册成本管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInvitePlatformById(Long id) - { - return tenantAgentInvitePlatformMapper.deleteTenantAgentInvitePlatformById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteRegisterServiceImpl.java b/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteRegisterServiceImpl.java deleted file mode 100644 index 36f3b2e..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteRegisterServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.ff.agent.service.impl; - -import java.util.Collections; -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.agent.domain.TenantAgentInviteRegister; -import com.ff.agent.dto.TenantAgentInviteRegisterDTO; -import com.ff.agent.mapper.TenantAgentInviteRegisterMapper; -import com.ff.agent.service.ITenantAgentInviteRegisterService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.uuid.IdUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * 代理邀请注册Service业务层处理 - * - * @author shi - * @date 2025-02-25 - */ -@Service -public class TenantAgentInviteRegisterServiceImpl implements ITenantAgentInviteRegisterService -{ - @Autowired - private TenantAgentInviteRegisterMapper tenantAgentInviteRegisterMapper; - - /** - * 查询代理邀请注册 - * - * @param id 代理邀请注册主键 - * @return 代理邀请注册 - */ - @Override - public TenantAgentInviteRegister selectTenantAgentInviteRegisterById(Long id) - { - return tenantAgentInviteRegisterMapper.selectTenantAgentInviteRegisterById(id); - } - - /** - * 查询代理邀请注册列表 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 代理邀请注册 - */ - @Override - public List selectTenantAgentInviteRegisterList(TenantAgentInviteRegister tenantAgentInviteRegister) - { - return tenantAgentInviteRegisterMapper.selectTenantAgentInviteRegisterList(tenantAgentInviteRegister); - } - - /** - * 选择租户代理邀请注册列表dto - * - * @param tenantAgentInviteRegisterDTO 租户代理邀请注册dto - * @return {@link List }<{@link TenantAgentInviteRegisterDTO }> - */ - @Override - public List selectTenantAgentInviteRegisterListDTO(TenantAgentInviteRegisterDTO tenantAgentInviteRegisterDTO) { - return tenantAgentInviteRegisterMapper.selectTenantAgentInviteRegisterListDTO(tenantAgentInviteRegisterDTO); - } - - /** - * 新增代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - @Override - public int insertTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister) - { - tenantAgentInviteRegister.setId(IdUtil.getSnowflakeNextId()); - tenantAgentInviteRegister.setCreateTime(DateUtils.getNowDate()); - return tenantAgentInviteRegisterMapper.insertTenantAgentInviteRegister(tenantAgentInviteRegister); - } - - /** - * 修改代理邀请注册 - * - * @param tenantAgentInviteRegister 代理邀请注册 - * @return 结果 - */ - @Override - public int updateTenantAgentInviteRegister(TenantAgentInviteRegister tenantAgentInviteRegister) - { - tenantAgentInviteRegister.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentInviteRegisterMapper.updateTenantAgentInviteRegister(tenantAgentInviteRegister); - } - - /** - * 批量删除代理邀请注册 - * - * @param ids 需要删除的代理邀请注册主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInviteRegisterByIds(Long[] ids) - { - return tenantAgentInviteRegisterMapper.deleteTenantAgentInviteRegisterByIds(ids); - } - - /** - * 删除代理邀请注册信息 - * - * @param id 代理邀请注册主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInviteRegisterById(Long id) - { - return tenantAgentInviteRegisterMapper.deleteTenantAgentInviteRegisterById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteServiceImpl.java b/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteServiceImpl.java deleted file mode 100644 index b87e3f2..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentInviteServiceImpl.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.ff.agent.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.agent.mapper.TenantAgentInviteMapper; -import com.ff.agent.domain.TenantAgentInvite; -import com.ff.agent.service.ITenantAgentInviteService; -import org.springframework.util.CollectionUtils; - -/** - * 代理邀请链接Service业务层处理 - * - * @author shi - * @date 2025-02-25 - */ -@Service -public class TenantAgentInviteServiceImpl implements ITenantAgentInviteService -{ - @Autowired - private TenantAgentInviteMapper tenantAgentInviteMapper; - - /** - * 查询代理邀请链接 - * - * @param id 代理邀请链接主键 - * @return 代理邀请链接 - */ - @Override - public TenantAgentInvite selectTenantAgentInviteById(Long id) - { - return tenantAgentInviteMapper.selectTenantAgentInviteById(id); - } - - /** - * 按邀请代码选择租户代理邀请 - * - * @param inviteCode 邀请码 - * @return {@link TenantAgentInvite } - */ - @Override - public TenantAgentInvite selectTenantAgentInviteByInviteCode(String inviteCode) { - return tenantAgentInviteMapper.selectTenantAgentInviteByInviteCode( inviteCode); - } - - /** - * 查询代理邀请链接列表 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 代理邀请链接 - */ - @Override - public List selectTenantAgentInviteList(TenantAgentInvite tenantAgentInvite) - { - return tenantAgentInviteMapper.selectTenantAgentInviteList(tenantAgentInvite); - } - - /** - * 新增代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - @Override - public int insertTenantAgentInvite(TenantAgentInvite tenantAgentInvite) - { - tenantAgentInvite.setId(IdUtil.getSnowflakeNextId()); - tenantAgentInvite.setCreateTime(DateUtils.getNowDate()); - return tenantAgentInviteMapper.insertTenantAgentInvite(tenantAgentInvite); - } - - /** - * 获取邀请码 - * - * @return {@link String } - */ - @Override - public synchronized String getInviteCode() { - String inviteCode = NumberUtils.generateRandomCode(12); - while (!CollectionUtils.isEmpty(tenantAgentInviteMapper.selectTenantAgentInviteList(TenantAgentInvite.builder() - .inviteCode(inviteCode) - .build()))) { - inviteCode = NumberUtils.generateRandomCode(12); - } - return inviteCode; - } - - /**3 - * 修改代理邀请链接 - * - * @param tenantAgentInvite 代理邀请链接 - * @return 结果 - */ - @Override - public int updateTenantAgentInvite(TenantAgentInvite tenantAgentInvite) - { - tenantAgentInvite.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentInviteMapper.updateTenantAgentInvite(tenantAgentInvite); - } - - /** - * 批量删除代理邀请链接 - * - * @param ids 需要删除的代理邀请链接主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInviteByIds(Long[] ids) - { - return tenantAgentInviteMapper.deleteTenantAgentInviteByIds(ids); - } - - /** - * 删除代理邀请链接信息 - * - * @param id 代理邀请链接主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentInviteById(Long id) - { - return tenantAgentInviteMapper.deleteTenantAgentInviteById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentWithdrawalServiceImpl.java b/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentWithdrawalServiceImpl.java deleted file mode 100644 index d096828..0000000 --- a/ff-game/src/main/java/com/ff/agent/service/impl/TenantAgentWithdrawalServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.agent.service.impl; - -import java.util.List; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.agent.mapper.TenantAgentWithdrawalMapper; -import com.ff.agent.domain.TenantAgentWithdrawal; -import com.ff.agent.service.ITenantAgentWithdrawalService; -import cn.hutool.core.util.IdUtil; - - -/** - * 代理申请提现审批管理Service业务层处理 - * - * @author shi - * @date 2025-02-26 - */ -@Service -public class TenantAgentWithdrawalServiceImpl implements ITenantAgentWithdrawalService -{ - @Autowired - private TenantAgentWithdrawalMapper tenantAgentWithdrawalMapper; - - /** - * 查询代理申请提现审批管理 - * - * @param id 代理申请提现审批管理主键 - * @return 代理申请提现审批管理 - */ - @Override - public TenantAgentWithdrawal selectTenantAgentWithdrawalById(Long id) - { - return tenantAgentWithdrawalMapper.selectTenantAgentWithdrawalById(id); - } - - /** - * 查询代理申请提现审批管理列表 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 代理申请提现审批管理 - */ - @Override - public List selectTenantAgentWithdrawalList(TenantAgentWithdrawal tenantAgentWithdrawal) - { - return tenantAgentWithdrawalMapper.selectTenantAgentWithdrawalList(tenantAgentWithdrawal); - } - - /** - * 新增代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - @Override - public int insertTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal) - { - tenantAgentWithdrawal.setId(IdUtil.getSnowflakeNextId()); - tenantAgentWithdrawal.setCreateTime(DateUtils.getNowDate()); - return tenantAgentWithdrawalMapper.insertTenantAgentWithdrawal(tenantAgentWithdrawal); - } - - /** - * 修改代理申请提现审批管理 - * - * @param tenantAgentWithdrawal 代理申请提现审批管理 - * @return 结果 - */ - @Override - public int updateTenantAgentWithdrawal(TenantAgentWithdrawal tenantAgentWithdrawal) - { - tenantAgentWithdrawal.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentWithdrawalMapper.updateTenantAgentWithdrawal(tenantAgentWithdrawal); - } - - /** - * 批量删除代理申请提现审批管理 - * - * @param ids 需要删除的代理申请提现审批管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentWithdrawalByIds(Long[] ids) - { - return tenantAgentWithdrawalMapper.deleteTenantAgentWithdrawalByIds(ids); - } - - /** - * 删除代理申请提现审批管理信息 - * - * @param id 代理申请提现审批管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentWithdrawalById(Long id) - { - return tenantAgentWithdrawalMapper.deleteTenantAgentWithdrawalById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/annotation/CheckHeader.java b/ff-game/src/main/java/com/ff/annotation/CheckHeader.java deleted file mode 100644 index 99d28f6..0000000 --- a/ff-game/src/main/java/com/ff/annotation/CheckHeader.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ff.annotation; - -import lombok.Data; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 检查标题 - * - * @author shi - * @date 2025/02/10 - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface CheckHeader { - // 该注解没有参数,直接标识类需要进行头部验证 -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/annotation/HeaderCheckAspect.java b/ff-game/src/main/java/com/ff/annotation/HeaderCheckAspect.java deleted file mode 100644 index 595be47..0000000 --- a/ff-game/src/main/java/com/ff/annotation/HeaderCheckAspect.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.ff.annotation; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.constant.Constants; -import com.ff.base.system.domain.TenantWhite; -import com.ff.base.system.service.ITenantWhiteService; -import com.ff.base.utils.ip.IpUtils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.config.KeyConfig; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.service.ITenantSecretKeyService; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.stereotype.Component; -import org.springframework.util.Assert; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.List; - -/** - * 标题检查方面 - * - * @author shi - * @date 2025/02/10 - */ -@Aspect -@Component -public class HeaderCheckAspect { - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private ITenantWhiteService tenantWhiteService; - - @Resource - private KeyConfig keyUtils; - - - // 定义切点: 所有带 @CheckHeader 注解的类中的所有方法 - @Pointcut("@within(CheckHeader)") - public void checkHeaderPointcut() { - } - - - // 在方法执行前进行处理 - @Before("checkHeaderPointcut()") - public void beforeMethod() throws Exception { - // 获取当前请求的 HTTP 请求对象 - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - - // 32 位小写 md5(random+key+tenantSecret) - String sign = request.getHeader(Constants.SIGN); - Assert.notNull(sign, "签名不能为空"); - // 随机数 - String random = request.getHeader(Constants.RANDOM); - Assert.notNull(random, "随机数不能为空"); - Assert.isTrue( random.length() == 32, "随机数长度错误"); - - //key值 - String key = request.getHeader(Constants.KEY); - Assert.notNull(key, "key不能为空"); - - - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(key); - Assert.notNull(tenantSecretKey, key+"key不存在"); - - Assert.isTrue(tenantSecretKey.getTenantStatus(), "当前租户已停用"); - - List tenantWhites = tenantWhiteService.selectTenantWhiteList(TenantWhite.builder() - .tenantId(tenantSecretKey.getId()) - .whiteIp(IpUtils.getIpAddr()) - .build()); - Assert.isTrue(!tenantWhites.isEmpty(), "当前"+IpUtils.getIpAddr()+"不在白名单内"); - - String keyG = Md5Utils.md5New(random + key + tenantSecretKey.getTenantSecret()); - Assert.isTrue(keyG.equals(sign), "签名错误"); - //保存 - keyUtils.set(tenantSecretKey); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java b/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java deleted file mode 100644 index 69b37ae..0000000 --- a/ff-game/src/main/java/com/ff/api/controller/ApiGameController.java +++ /dev/null @@ -1,814 +0,0 @@ -package com.ff.api.controller; - - -import com.ff.annotation.CheckHeader; -import com.ff.api.request.*; -import com.ff.api.response.*; -import com.ff.base.constant.Constants; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.ErrorCode; -import com.ff.base.enums.TransferType; -import com.ff.base.exception.base.ApiException; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.bean.BeanUtils; -import com.ff.common.dto.GameBalanceExchange; -import com.ff.common.service.ITenantGameQuotaFlowService; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.dto.GameBettingDetailsDTO; -import com.ff.game.service.*; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import com.github.pagehelper.PageHelper; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * api控制器 - * - * @author shi - * @date 2025/02/10 - */ -@RestController -@CheckHeader -@RequestMapping("/api/game") -@Slf4j -public class ApiGameController extends BaseController { - - - @Autowired - private Map gamesService; - - - @Resource - private IGameService gameService; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IMemberService memberService; - - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Resource - private IGameFreeRecordService gameFreeRecordService; - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Autowired - @Qualifier("threadPoolTaskExecutor") - private ThreadPoolTaskExecutor threadPoolTaskExecutor; - - @Resource - private IPlatformService platformService; - - /** - * 列表 - * - * @return {@link AjaxResult } - */ - @PostMapping("/list") - public AjaxResult list() { - List gameResponses = gameService.selectGameResponseList(); - for (GameResponse gameResponse : gameResponses) { - Platform platform = platformService.get(gameResponse.getPlatformCode()); - if (null == platform) { - continue; - } - - List currencyCode = new ArrayList<>(platform.getCurrencyInfo().keySet()); - gameResponse.setCurrencyCode(currencyCode); - - } - return AjaxResult.success(gameResponses); - } - - - /** - * 登录 - * - * @param loginRequest 登入游戏 - * @return {@link AjaxResult } - */ - @PostMapping("/login") - public AjaxResult login(@Validated @RequestBody GameLoginRequest loginRequest) { - - Game game = gameService.selectGameByGameId(loginRequest.getGameId()); - ApiException.notNull(game, ErrorCode.GAME_NOT_EXIST.getCode()); - - Platform platform = platformService.get(game.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - IGamesService iGamesService = gamesService.get(platform.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(loginRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(loginRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(loginRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - String targetLang = platform.getLangInfo().get(loginRequest.getLangCode()); - ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode()); - - - Member member = memberService.selectMemberByAccount(loginRequest.getAccount(), loginRequest.getCurrencyCode(), platform.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - GamesLogin gamesLogin = GamesLogin.builder() - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .account(member.getGameAccount()) - .gameType(game.getGameSourceType()) - .currency(/*secretKeyCurrencyDTO.getCurrency()*/targetCurrency) - .gameId(game.getGameCode()) - .homeUrl(loginRequest.getHomeUrl()) - .betLimit(loginRequest.getBetLimit()) - .platform(loginRequest.getPlatform()) - .disableFullScreen(loginRequest.getDisableFullScreen()) - .lang(/*gameSecretKeyLangDTO.getLang()*/ targetLang) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(loginRequest.getCurrencyCode()) - - .build(); - - String login = iGamesService.loginWithoutRedirect(gamesLogin); - - return AjaxResult.success("操作成功", login); - } - - - /** - * 汇兑差额 - * - * @param gameExchangeBalanceRequest 游戏兑换余额请求 - * @return {@link AjaxResult } - */ - @PostMapping("/exchange/balance") - @Transactional - public AjaxResult exchangeBalance(@Validated @RequestBody GameExchangeBalanceRequest gameExchangeBalanceRequest) { - - IGamesService iGamesService = gamesService.get(gameExchangeBalanceRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - TenantSecretKey tenantSecretKey = keyConfig.get(); - - - Platform platform = platformService.get(gameExchangeBalanceRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(gameExchangeBalanceRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(gameExchangeBalanceRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(gameExchangeBalanceRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - BigDecimal quota = BigDecimal.ZERO; - //如果是扣钱提前扣 - if (TransferType.GAMES.getCode().equals(gameExchangeBalanceRequest.getTransferType())) { - quota = tenantGameQuotaService.gameBalanceExchange(GameBalanceExchange.builder() - .platformCode(gameExchangeBalanceRequest.getPlatformCode()) - .sourceId(gameExchangeBalanceRequest.getOrderId()) - .currencyCode(gameExchangeBalanceRequest.getCurrencyCode()) - .currency(targetCurrency) - .transferType(gameExchangeBalanceRequest.getTransferType()) - .amount(gameExchangeBalanceRequest.getAmount()) - .account(gameExchangeBalanceRequest.getAccount()) - .tenantKey(tenantSecretKey.getTenantKey()) - .systemCurrency(gameExchangeBalanceRequest.getCurrencyCode()) - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .build()); - } - - - // 获取用户信息 - Member member = memberService.selectMemberByAccount(gameExchangeBalanceRequest.getAccount(), gameExchangeBalanceRequest.getCurrencyCode(), gameExchangeBalanceRequest.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - - //操作第三方额度接口 - ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder() - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .orderId(gameExchangeBalanceRequest.getOrderId()) - .account(member.getGameAccount()) - .currency(targetCurrency) - .tenantKey(tenantSecretKey.getTenantKey()) - .quota(quota) - .amount(gameExchangeBalanceRequest.getAmount()) - .transferType(gameExchangeBalanceRequest.getTransferType()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(gameExchangeBalanceRequest.getCurrencyCode()) - - .build(); - Long exchangeTransferId = iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO); - GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferId); - GameExchangeBalanceResponse gameExchangeBalanceResponse = new GameExchangeBalanceResponse(); - BeanUtils.copyProperties(gameExchangeMoney, gameExchangeBalanceResponse); - return AjaxResult.success(gameExchangeBalanceResponse); - } - - - /** - * 交换状态 - * - * @param gameExchangeStateRequest 游戏兑换余额状态请求 - * @return {@link AjaxResult } - */ - @PostMapping("/exchange/state") - @Transactional - public AjaxResult exchangeState(@Validated @RequestBody GameExchangeStateRequest gameExchangeStateRequest) { - TenantSecretKey tenantSecretKey = keyConfig.get(); - GameExchangeMoney gameExchangeMoney = GameExchangeMoney.builder() - .tenantKey(tenantSecretKey.getTenantKey()) - .orderId(gameExchangeStateRequest.getOrderId()) - .build(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList(gameExchangeMoney); - ApiException.isTrue(!CollectionUtils.isEmpty(gameExchangeMonies), ErrorCode.ORDER_NOT_EXIST.getCode()); - GameExchangeBalanceResponse gameExchangeBalanceResponse = new GameExchangeBalanceResponse(); - BeanUtils.copyProperties(gameExchangeMonies.get(0), gameExchangeBalanceResponse); - return AjaxResult.success(gameExchangeBalanceResponse); - } - - - /** - * 赠送免费局数 - * - * @param gameCreateFreeSpinRequest 游戏创建免费旋转请求 - * @return {@link AjaxResult } - */ - @PostMapping("/create/free/spin") - public AjaxResult createFreeSpin(@Validated @RequestBody GameCreateFreeSpinRequest gameCreateFreeSpinRequest) { - - - IGamesService iGamesService = gamesService.get(gameCreateFreeSpinRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - -// TenantSecretKey tenantSecretKey = keyConfig.get(); -// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(gameCreateFreeSpinRequest.getPlatformCode()) -// .systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()).build()); -// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - Platform platform = platformService.get(gameCreateFreeSpinRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(gameCreateFreeSpinRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(gameCreateFreeSpinRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(gameCreateFreeSpinRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - Member member = memberService.selectMemberByAccount(gameCreateFreeSpinRequest.getAccount(), gameCreateFreeSpinRequest.getCurrencyCode(), gameCreateFreeSpinRequest.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - - CreateFreeSpinRequestDTO createFreeSpinRequestDTO = CreateFreeSpinRequestDTO.builder() - .account(member.getGameAccount()) - .currency(/*gameCreateFreeSpinRequest.getCurrencyCode()*/targetCurrency) - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .referenceId(gameCreateFreeSpinRequest.getReferenceId()) - .freeSpinValidity(gameCreateFreeSpinRequest.getFreeSpinValidity()) - .numberOfRounds(gameCreateFreeSpinRequest.getNumberOfRounds()) - .gameIds(gameCreateFreeSpinRequest.getGameIds()) - .betValue(gameCreateFreeSpinRequest.getBetValue()) - .startTime(gameCreateFreeSpinRequest.getStartTime()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(gameCreateFreeSpinRequest.getCurrencyCode()) - .build(); - - - return AjaxResult.success(iGamesService.createFreeSpin(createFreeSpinRequestDTO)); - } - - - /** - * 获取投注记录 - * - * @param gameCreateFreeSpinRequest 游戏创建免费旋转请求 - * @return {@link AjaxResult } - */ - @PostMapping("/get/bet/record") - public TableDataInfo getBetRecord(@Validated @RequestBody GameGetBetRecordRequest gameCreateFreeSpinRequest) { - TenantSecretKey tenantSecretKey = keyConfig.get(); - - startPage(); - PageHelper.startPage(gameCreateFreeSpinRequest.getPageNo(), gameCreateFreeSpinRequest.getPageSize(), "wagers_time desc"); - GameBettingDetailsDTO gameBettingDetails = GameBettingDetailsDTO.builder() - .platformCode(gameCreateFreeSpinRequest.getPlatformCode()) - .currencyCode(gameCreateFreeSpinRequest.getCurrencyCode()) - .tenantKey(tenantSecretKey.getTenantKey()) - .timeType(gameCreateFreeSpinRequest.getTimeType()) - .build(); - Map params = gameBettingDetails.getParams(); - params.put("beginTime", gameCreateFreeSpinRequest.getBeginTime()); - params.put("endTime", gameCreateFreeSpinRequest.getEndTime()); - List bettingDetails = gameBettingDetailsService.selectGameBettingDetailsList(gameBettingDetails); - TableDataInfo dataTable = getDataTable(bettingDetails); - List result = new ArrayList<>(); - for (GameBettingDetails row : (List) dataTable.getRows()) { - GameBettingDetailsResponse gameBettingDetailsResponse = new GameBettingDetailsResponse(); - BeanUtils.copyProperties(row, gameBettingDetailsResponse); - Member member = memberService.selectMemberById(row.getMemberId()); - gameBettingDetailsResponse.setAccount(member.getMemberAccount()); - result.add(gameBettingDetailsResponse); - } - dataTable.setRows(result); - - return dataTable; - } - - - /** - * 获取详细信息 - * - * @param gameGetDetailRequest 游戏获取详细信息请求 - * @return {@link AjaxResult } - */ - @PostMapping("/get/detail") - public AjaxResult getDetail(@Validated @RequestBody GameGetDetailRequest gameGetDetailRequest) { - Platform platform = platformService.get(gameGetDetailRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(gameGetDetailRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(gameGetDetailRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(gameGetDetailRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - String targetLang = platform.getLangInfo().get(gameGetDetailRequest.getLangCode()); - ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode()); - -// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(gameGetDetailRequest.getPlatformCode()) -// .systemCurrency(gameGetDetailRequest.getCurrencyCode()).build()); - - -// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - - IGamesService iGamesService = gamesService.get(gameGetDetailRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - -// GameSecretKeyLangDTO gameSecretKeyLang = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder() -// .platformCode(gameGetDetailRequest.getPlatformCode()) -// .systemLangCode(gameGetDetailRequest.getLangCode()) -// .build()); -// ApiException.notNull(gameSecretKeyLang, ErrorCode.LANG_NOT_EXIST.getCode()); - - - GetGameDetailResponseDTO gameDetail = iGamesService.getGameDetail(GetGameDetailRequestDTO.builder() - .wagersId(gameGetDetailRequest.getWagersId()) - .lang(/*gameSecretKeyLang.getLang()*/targetLang) - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(gameGetDetailRequest.getCurrencyCode()) - .build()); - return AjaxResult.success(gameDetail); - } - - /** - * 踢腿队员 - * - * @param gameKickMemeberRequest 游戏踢迷请求 - * @return {@link AjaxResult } - */ - @PostMapping("/kick/member") - public AjaxResult kickMember(@Validated @RequestBody GameKickMemeberRequest gameKickMemeberRequest) { -// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(gameKickMemeberRequest.getPlatformCode()) -// .systemCurrency(gameKickMemeberRequest.getCurrencyCode()).build()); -// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - Platform platform = platformService.get(gameKickMemeberRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(gameKickMemeberRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(gameKickMemeberRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(gameKickMemeberRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - - IGamesService iGamesService = gamesService.get(gameKickMemeberRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - - Member member = memberService.selectMemberByAccount(gameKickMemeberRequest.getAccount(), gameKickMemeberRequest.getCurrencyCode(), gameKickMemeberRequest.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - return AjaxResult.success(iGamesService.kickMember(KickMemberRequestDTO.builder() - .account(member.getGameAccount()) - .agentId(keyInfo.getCode()) - .currency(targetCurrency) - .agentKey(keyInfo.getKey()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(gameKickMemeberRequest.getCurrencyCode()) - .build())); - } - - @PostMapping("/kick/member/all") - public AjaxResult kickMemberAll(@Validated @RequestBody GameKickMemeberAllRequest gameKickMemeberAllRequest) { -// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(gameKickMemeberAllRequest.getPlatformCode()) -// .systemCurrency(gameKickMemeberAllRequest.getCurrencyCode()).build()); -// -// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - Platform platform = platformService.get(gameKickMemeberAllRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(gameKickMemeberAllRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(gameKickMemeberAllRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(gameKickMemeberAllRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - IGamesService iGamesService = gamesService.get(gameKickMemeberAllRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - - KickMemberAllDTO kickMemberAllDTO = KickMemberAllDTO.builder() - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .currency(/*gameSecretKey.getCurrency()*/targetCurrency) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(gameKickMemeberAllRequest.getCurrencyCode()) - .build(); - if (!ObjectUtils.isEmpty(gameKickMemeberAllRequest.getGameId())) { - Game game = gameService.selectGameById(gameKickMemeberAllRequest.getGameId()); - ApiException.notNull(game, ErrorCode.GAME_NOT_EXIST.getCode()); - kickMemberAllDTO.setGameId(game.getGameCode()); - } - - - return AjaxResult.success(iGamesService.kickMemberAll(kickMemberAllDTO)); - - } - - /** - * 获得自由旋转气流 - * - * @param gameGetFreeSpinDashflowRequest 游戏获得免费旋转dashflow请求 - * @return {@link TableDataInfo } - */ - @PostMapping("/get/free/spin/dashflow") - public TableDataInfo getFreeSpinDashflow(@Validated @RequestBody GameGetFreeSpinDashflowRequest gameGetFreeSpinDashflowRequest) { - PageHelper.startPage(gameGetFreeSpinDashflowRequest.getPageNo(), gameGetFreeSpinDashflowRequest.getPageSize(), "free_update_time desc"); - GameFreeRecord gameFreeRecord = GameFreeRecord.builder() - .gameId(gameGetFreeSpinDashflowRequest.getGameId()) - .platformCode(gameGetFreeSpinDashflowRequest.getPlatformCode()) - .currencyCode(gameGetFreeSpinDashflowRequest.getCurrencyCode()) - .build(); - - Map params = gameFreeRecord.getParams(); - params.put("beginTime", gameGetFreeSpinDashflowRequest.getBeginTime()); - params.put("endTime", gameGetFreeSpinDashflowRequest.getEndTime()); - List gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(gameFreeRecord); - TableDataInfo dataTable = getDataTable(gameFreeRecords); - List result = new ArrayList<>(); - for (GameFreeRecord row : (List) dataTable.getRows()) { - GameFreeRecordResponse gameFreeRecordResponse = new GameFreeRecordResponse(); - BeanUtils.copyProperties(row, gameFreeRecordResponse); - Member member = memberService.selectMemberById(row.getMemberId()); - gameFreeRecordResponse.setMemberAccount(member.getMemberAccount()); - result.add(gameFreeRecordResponse); - } - dataTable.setRows(result); - return dataTable; - } - - - /** - * 取消自由旋转 - * - * @param request 游戏获得免费旋转dashflow请求 - * @return {@link TableDataInfo } - */ - @PostMapping("/cancel/free/spin") - public AjaxResult cancelFreeSpin(@Validated @RequestBody GameCancelFreeSpinRequest request) { -// GameSecretKeyCurrencyDTO gameSecretKey = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(gameGetFreeSpinDashflowRequest.getPlatformCode()) -// .systemCurrency(gameGetFreeSpinDashflowRequest.getCurrencyCode()).build()); -// ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - Platform platform = platformService.get(request.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(request.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - IGamesService iGamesService = gamesService.get(request.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - Boolean cancelFreeSpin = iGamesService.cancelFreeSpin(CancelFreeSpinRequestDTO.builder() - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .referenceId(request.getReferenceId()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(request.getCurrencyCode()) - .build()); - return AjaxResult.success(cancelFreeSpin); - } - - /** - * 信息全部 - * - * @param request 成员信息所有api请求 - * @return {@link AjaxResult } - *//* - @PostMapping("/exchange/balance/all") - public AjaxResult exchangeBalanceAll(@Validated @RequestBody GameExchangeBalanceAllRequest request) { - - TenantSecretKey tenantSecretKey = keyConfig.get(); - -// List gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList(GameSecretKeyCurrencyDTO.builder() -// .systemCurrency(gameExchangeBalanceAllRequest.getCurrencyCode()).build()); - - - List keys = new ArrayList<>(); - for (GamePlatforms platformEnum : GamePlatforms.values()) { - - Platform platform = platformService.get(platformEnum.getCode()); - String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode()); - if (StringUtils.isEmpty(targetCurrency)) { - continue; - } - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(request.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - if (null == keyInfo) { - continue; - } - - Key key = new Key(); - key.setPlatformCode(platform.getPlatformCode()); - key.setCode(keyInfo.getCode()); - key.setKey(keyInfo.getKey()); - key.setCurrency(targetCurrency); - key.setPlatform(platform); - key.setKeyInfo(keyInfo); - key.setSystemCurrency(request.getCurrencyCode()); - keys.add(key); - } - - // 创建线程池 - Map balanceMap = new LinkedHashMap<>(); - CountDownLatch latch = new CountDownLatch(keys.size()); - - // 使用List存储Future对象,用于获取异步执行的结果 - List> futures = new ArrayList<>(); - - // 提交异步任务到线程池 -// for (GameSecretKeyCurrencyDTO gameSecretKeyCurrencyDTO : gameSecretKeys) { - for (Key key : keys) { - futures.add(threadPoolTaskExecutor.submit(() -> { - try { - - IGamesService iGamesService = gamesService.get(key.getPlatformCode() + Constants.SERVICE); - - Member member = memberService.selectMemberByAccount(request.getAccount(), request.getCurrencyCode(), key.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - //操作第三方钱包 - ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder() - .agentId(key.getCode()) - .agentKey(key.getKey()) - .orderId(request.getOrderId()) - .amount(BigDecimal.ONE) - .currency(*//*gameSecretKeyCurrencyDTO.getCurrency()*//*key.currency) - .tenantKey(tenantSecretKey.getTenantKey()) - .account(member.getGameAccount()) - .vendor(key.getPlatform()) - .keyInfo(key.getKeyInfo()) - .systemCurrency(key.systemCurrency) - .transferType(TransferType.ALL.getCode()) - .build(); - return iGamesService.exchangeTransferByAgentId(exchangeTransferMoneyRequestDTO); - } catch (Exception e) { - return 0L; - } finally { - latch.countDown(); // 任务完成后减少计数 - } - })); - } - - - BigDecimal balanceAll = BigDecimal.ZERO; - - try { - // 等待所有线程执行完毕 - latch.await(); - // 获取每个Future的结果 - for (Future future : futures) { - // 汇总结果 - Long id = future.get(); - GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(id); - if (ObjectUtils.isEmpty(gameExchangeMoney)) { - continue; - } - Member member = memberService.selectMemberById(gameExchangeMoney.getMemberId()); - balanceMap.put(gameExchangeMoney.getPlatformCode(), gameExchangeMoney.getBalance()); - BigDecimal balance = gameExchangeMoney.getBalance(); - balanceAll = NumberUtil.add(balanceAll, balance); - - //操作租户额度 - tenantGameQuotaService.gameBalanceExchange(GameBalanceExchange.builder() - .platformCode(gameExchangeMoney.getPlatformCode()) - .currencyCode(gameExchangeMoney.getCurrencyCode()) - .sourceId(request.getOrderId()) - .transferType(TransferType.ALL.getCode()) - .amount(gameExchangeMoney.getBalance()) - .account(member.getMemberAccount()) - .tenantKey(tenantSecretKey.getTenantKey()) - .currency() - .systemCurrency(gameExchangeMoney.getCurrencyCode()) - .agentId() - .agentKey() - .build()); - - } - } catch (Exception e) { - log.error("拉回用户余额失败", e); - throw new BaseException("拉回用户余额失败"); - } - balanceMap.put("balanceAll", balanceAll); - - - return AjaxResult.success(balanceMap); - }*/ - - - /** - * 演示登录 - * - * @param request 游戏演示登录请求 - * @return {@link AjaxResult } - */ - @PostMapping("/demo/login") - public AjaxResult demoLogin(@Validated @RequestBody GameDemoLoginRequest request) { - - Game game = gameService.selectGameById(request.getGameId()); - ApiException.notNull(game, ErrorCode.GAME_NOT_EXIST.getCode()); - - //GamePlatform gamePlatform = gamePlatformService.selectGamePlatformById(game.getPlatformId()); - //ApiException.notNull(gamePlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - Platform platform = platformService.get(game.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - IGamesService iGamesService = gamesService.get(platform.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(request.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - String targetLang = platform.getLangInfo().get(request.getLangCode()); - ApiException.notNull(targetLang, ErrorCode.LANG_NOT_EXIST.getCode()); - -// GameSecretKeyLangDTO gameSecretKeyLangDTO = gameSecretKeyLangService.findGameSecretKeyLangDTO(GameSecretKeyLangDTO.builder() -// .platformCode(gamePlatform.getPlatformCode()) -// .systemLangCode(gameDemoLoginRequest.getLangCode()) -// .build()); -// ApiException.notNull(gameSecretKeyLangDTO, ErrorCode.LANG_NOT_EXIST.getCode()); - - - GameDemoLoginRequestDTO gamesLogin = GameDemoLoginRequestDTO.builder() - .gameId(game.getGameCode()) - .gameType(game.getGameSourceType()) - .lang(/*gameSecretKeyLangDTO.getLang()*/targetLang) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(request.getCurrencyCode()) - .build(); - - GameDemoLoginResponseDTO gameDemoLoginResponseDTO = iGamesService.gameDemoLogin(gamesLogin); - GameDemoLoginResponse gameDemoLoginResponse = new GameDemoLoginResponse(); - BeanUtils.copyProperties(gameDemoLoginResponseDTO, gameDemoLoginResponse); - return AjaxResult.success(gameDemoLoginResponse); - } - - @Data - class Key { - private String platformCode; - private String code; - private String currency; - private String key; - private Platform platform; - private KeyInfo keyInfo; - private String systemCurrency; - } -} diff --git a/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java b/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java deleted file mode 100644 index 56bd037..0000000 --- a/ff-game/src/main/java/com/ff/api/controller/ApiMemberController.java +++ /dev/null @@ -1,318 +0,0 @@ -package com.ff.api.controller; - - -import com.ff.annotation.CheckHeader; -import com.ff.api.request.MemberCreateApiRequest; -import com.ff.api.request.MemberInfoAllApiRequest; -import com.ff.api.request.MemberInfoApiRequest; -import com.ff.api.response.MemberInfoAllResponse; -import com.ff.api.response.MemberInfoResponse; -import com.ff.base.constant.Constants; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.ErrorCode; -import com.ff.base.enums.GamePlatforms; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.utils.StringUtils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.CreateMemberRequestDTO; -import com.ff.game.api.request.MemberInfoRequestDTO; -import com.ff.game.api.request.MemberInfoResponseDTO; -import com.ff.game.domain.KeyInfo; -import com.ff.game.domain.Platform; -import com.ff.game.service.IPlatformService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.Future; - -/** - * api控制器 - * - * @author shi - * @date 2025/02/10 - */ -@RestController -@CheckHeader -@RequestMapping("/api/member") -@Slf4j -public class ApiMemberController extends BaseController { - - @Autowired - private Map gamesService; - - @Resource - private KeyConfig keyConfig; - - @Resource - private IMemberService memberService; - - @Autowired - @Qualifier("threadPoolTaskExecutor") - private ThreadPoolTaskExecutor threadPoolTaskExecutor; - - @Resource - private IPlatformService platformService; - - /** - * 创建成员 - * - * @param memberCreateApiRequest 创建成员api请求 - * @return {@link AjaxResult } - */ - @PostMapping("/create") - @Transactional - public synchronized AjaxResult createMember(@Validated @RequestBody MemberCreateApiRequest memberCreateApiRequest) { - - IGamesService iGamesService = gamesService.get(memberCreateApiRequest.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - TenantSecretKey tenantSecretKey = keyConfig.get(); - - Platform platform = platformService.get(memberCreateApiRequest.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - String targetCurrency = platform.getCurrencyInfo().get(memberCreateApiRequest.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(memberCreateApiRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(memberCreateApiRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - String gameAccount =memberService.getMemberGameAccount(memberCreateApiRequest.getPlatformCode(), tenantSecretKey.getTenantSn()); - - - // 获取用户信息 - Member gameMember = memberService.selectMemberByAccount(memberCreateApiRequest.getAccount(), memberCreateApiRequest.getCurrencyCode(), memberCreateApiRequest.getPlatformCode()); - if (!ObjectUtils.isEmpty(gameMember)) { - throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - } - - - //注册本地账号 - Member member = Member.builder() - .tenantKey(tenantSecretKey.getTenantKey()) - .memberAccount(memberCreateApiRequest.getAccount()) - .gameAccount(gameAccount) - .platformCode(memberCreateApiRequest.getPlatformCode()) - .currencyCode(memberCreateApiRequest.getCurrencyCode()) - .build(); - int insertMember = memberService.insertMember(member); - Assert.isTrue(insertMember > 0, "建立游戏账号失败"); - - //向第三方注册账号 - CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder() - .account(gameAccount) - .agentId(keyInfo.getCode()) - .agentKey(keyInfo.getKey()) - .betLimit(memberCreateApiRequest.getBetLimit()) - .platformType(memberCreateApiRequest.getPlatformType()) - .currency(targetCurrency) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(memberCreateApiRequest.getCurrencyCode()) - .build(); - Boolean result = iGamesService.createMember(gamesBaseRequestDTO); - Assert.isTrue(result, "建立游戏账号失败"); - - - - - return toAjax(Boolean.TRUE); - - } - - - /** - * 获取会员信息 - * - * @param request 成员信息api请求 - * @return {@link AjaxResult } - */ - @PostMapping("/info") - public AjaxResult getMemberInfo(@Validated @RequestBody MemberInfoApiRequest request) { - IGamesService iGamesService = gamesService.get(request.getPlatformCode() + Constants.SERVICE); - ApiException.notNull(iGamesService, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - - Platform platform = platformService.get(request.getPlatformCode()); - ApiException.notNull(platform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - String targetCurrency = platform.getCurrencyInfo().get(request.getCurrencyCode()); - ApiException.notNull(targetCurrency, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(request.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(request.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - ApiException.notNull(keyInfo, ErrorCode.CURRENCY_NOT_EXIST.getCode()); - - // 获取用户信息 - Member member = memberService.selectMemberByAccount(request.getAccount(), request.getCurrencyCode(), request.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - - //向第三方查询账号 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(keyInfo.getCode()) - .currency(targetCurrency) - .agentKey(keyInfo.getKey()) - .vendor(platform) - .keyInfo(keyInfo) - .systemCurrency(request.getCurrencyCode()) - .build(); - MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO); - MemberInfoResponse memberInfoResponse = new MemberInfoResponse(); - BeanUtils.copyProperties(memberInfo, memberInfoResponse); - return AjaxResult.success(memberInfoResponse); - } - - - /** - * 信息全部 - * - * @param memberInfoAllApiRequest 成员信息所有api请求 - * @return {@link AjaxResult } - */ - @PostMapping("/info/all") - public AjaxResult infoAll(@Validated @RequestBody MemberInfoAllApiRequest memberInfoAllApiRequest) { - - -// List gameSecretKeys = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTOList( -// GameSecretKeyCurrencyDTO.builder() -// .systemCurrency(memberInfoAllApiRequest.getCurrencyCode()).build()); - List keys = new ArrayList<>(); - for (GamePlatforms platformEnum : GamePlatforms.values()) { - - Platform platform = platformService.get(platformEnum.getCode()); - String targetCurrency = platform.getCurrencyInfo().get(memberInfoAllApiRequest.getCurrencyCode()); - if (StringUtils.isEmpty(targetCurrency)) { - continue; - } - KeyInfo keyInfo = null; - for (KeyInfo keyData : platform.getKeyInfo()) { - if (StringUtils.isNotEmpty(memberInfoAllApiRequest.getCurrencyCode())) { - if (keyData.getCurrency().equalsIgnoreCase(memberInfoAllApiRequest.getCurrencyCode())) { - keyInfo = keyData; - break; - } - } - } - if (null == keyInfo) { - continue; - } - - Key key = new Key(); - key.setPlatformCode(platform.getPlatformCode()); - key.setCode(keyInfo.getCode()); - key.setKey(keyInfo.getKey()); - key.setCurrency(targetCurrency); - key.setSystemCurrency(memberInfoAllApiRequest.getCurrencyCode()); - keys.add(key); - } - // 创建线程池 - Map balanceMap = new LinkedHashMap<>(); - CountDownLatch latch = new CountDownLatch(keys.size()); - - // 使用List存储Future对象,用于获取异步执行的结果 - List> futures = new ArrayList<>(); - - // 提交异步任务到线程池 - for (Key gameSecretKey : keys) { - - futures.add(threadPoolTaskExecutor.submit(() -> { - - try { - IGamesService iGamesService = gamesService.get(gameSecretKey.getPlatformCode() + Constants.SERVICE); - - // 获取用户信息 - Member member = memberService.selectMemberByAccount(memberInfoAllApiRequest.getAccount(), memberInfoAllApiRequest.getCurrencyCode(), gameSecretKey.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(gameSecretKey.getCode()) - .currency(gameSecretKey.getCurrency()) - .systemCurrency(gameSecretKey.getSystemCurrency()) - .agentKey(gameSecretKey.getKey()) - .build(); - //查询余额 - MemberInfoResponseDTO memberInfo = iGamesService.getMemberInfo(gamesBaseRequestDTO); - return MemberInfoAllResponse.builder() - .account(member.getGameAccount()) - .balance(memberInfo.getBalance()) - .status(memberInfo.getStatus()) - .platformCode(gameSecretKey.getPlatformCode()) - .build(); - } finally { - latch.countDown(); // 任务完成后减少计数 - } - })); - } - - - // 等待所有线程执行完毕 - try { - latch.await(); - // 获取每个Future的结果 - for (Future future : futures) { - // 汇总结果 - MemberInfoAllResponse memberInfoAllResponse = future.get(); - balanceMap.put(memberInfoAllResponse.getPlatformCode(), memberInfoAllResponse.getBalance()); - } - } catch (Exception e) { - log.error("获取会员信息失败", e); - throw new BaseException("获取会员信息失败"); - } - - - return AjaxResult.success(balanceMap); - } - - @Data - class Key { - private String platformCode; - private String code; - private String currency; - private String key; - private String systemCurrency; - } - -} diff --git a/ff-game/src/main/java/com/ff/api/controller/ApiTenantController.java b/ff-game/src/main/java/com/ff/api/controller/ApiTenantController.java deleted file mode 100644 index c9d245c..0000000 --- a/ff-game/src/main/java/com/ff/api/controller/ApiTenantController.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.ff.api.controller; - - -import com.ff.annotation.CheckHeader; -import com.ff.api.response.TenantInfoResponse; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.QuotaType; -import com.ff.base.utils.bean.BeanUtils; -import com.ff.common.domain.TenantGameQuota; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.config.KeyConfig; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; - -/** - * api控制器 - * - * @author shi - * @date 2025/02/10 - */ -@RestController -@CheckHeader -@RequestMapping("/api/tenant") -@Slf4j -public class ApiTenantController extends BaseController { - - - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - @Resource - private KeyConfig keyConfig; - - /** - * 信息 - * - * @return {@link AjaxResult } - */ - @PostMapping("/info") - public AjaxResult info() { - TenantSecretKey tenantSecretKey = keyConfig.get(); - TenantGameQuota tenantGameQuota = tenantGameQuotaService.selectTenantGameQuotaByTenantKey(tenantSecretKey.getTenantKey(), QuotaType.BALANCE.getCode()); - TenantInfoResponse tenantInfoResponse= new TenantInfoResponse(); - BeanUtils.copyProperties(tenantGameQuota,tenantInfoResponse); - return AjaxResult.success(tenantInfoResponse); - } - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java b/ff-game/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java deleted file mode 100644 index 2d22ed6..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ff.api.request; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 游戏获得免费游戏游玩记录 - * - * @author shi - * @date 2025/02/13 - */ -@Data -public class GameCancelFreeSpinRequest implements Serializable { - private static final long serialVersionUID = 1871368632132480179L; - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 平台代码 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 取消免费赠送游戏id - */ - @NotBlank(message = "referenceId不能为空") - @Length(max = 40, message = "referenceId长度不能超过40个字符") - private String referenceId; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java b/ff-game/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java deleted file mode 100644 index c8ccaed..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.ff.api.request; - - -import com.ff.validation.ListSizeCheck; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - - -/** - * 游戏赠送免费的局数 - * - * @author shi - * @date 2025/02/12 - */ -@Data -public class GameCreateFreeSpinRequest implements Serializable { - private final static long serialVersionUID = -8079805496329012394L; - - /** - * 玩家账号 (JILI 新玩家则会自动创立账号) - */ - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** - * 玩家游戏平台 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 玩家使用货币 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 免费局数序号, 长度上限 40 - */ - @NotBlank(message = "referenceId不能为空") - @Length(min = 1, max = 40, message = "referenceId长度不能超过40") - private String referenceId; - - /** - * 有效期限 - * - * - */ - @NotNull(message = "freeSpinValidity不能为空") - @Min(value = 1, message = "freeSpinValidity最小值为1") - private Long freeSpinValidity; - - /** - * 局数 - */ - @NotNull(message = "numberOfRounds不能为空") - private Integer numberOfRounds; - - /** - * 可使用游戏 ID, - * 长度 上限 200 - */ - @NotNull(message = "gameIds不能为空") - @ListSizeCheck(message = "gameIds不得超过200", maxSize = 200) - private List gameIds; - - /** - * 指定投注额; - * 未指定时, 一律使用游戏中的最小投注额 - */ - private BigDecimal betValue; - - /** - * 免费游戏局数可使用的开始时间 - * 未带此参数时, 赠送后玩家可以立即使用 - */ - private Long startTime; -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameDemoLoginRequest.java b/ff-game/src/main/java/com/ff/api/request/GameDemoLoginRequest.java deleted file mode 100644 index e1c116c..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameDemoLoginRequest.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.ff.api.request; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.util.Map; - -/** - * 游戏登录请求 - * - * @author shi - * @date 2025/02/11 - */ -@Data -public class GameDemoLoginRequest implements Serializable { - private final static long serialVersionUID = 7699430372422335056L; - - - - - /** - * 语种id - */ - @NotBlank(message = "langCode不能为空") - @Length(max = 32, message = "langCode长度不能超过32个字符") - private String langCode; - - - /** - * 游戏id - */ - @NotNull(message = "gameId不能为空") - private Long gameId; - - - /** - * 游戏回主页功能导向位置 - */ - private String homeUrl; - /** - * 带入 web 或是 app - */ - private String platform; - /** - * 带入 1 即关闭全屏幕模式 - */ - private Integer disableFullScreen; - - /** - * 币种 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java b/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java deleted file mode 100644 index 5616718..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.api.request; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.math.BigDecimal; - - -/** - * 游戏兑换余额请求 - * - * @author shi - * @date 2025/02/11 - */ -@Data -public class GameExchangeBalanceAllRequest implements Serializable { - private final static long serialVersionUID = -881298930995538038L; - - - /** - * 账户 - */ - @NotBlank(message = "account不能为空") - private String account; - - - /** - * 订单id - */ - @NotBlank(message = "orderId不能为空") - private String orderId; - - - /** 币种编码 */ - @NotBlank(message = "currencyCode不能为空") - private String currencyCode; - - - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java b/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java deleted file mode 100644 index a00f911..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ff.api.request; - -import com.ff.base.annotation.Excel; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.*; -import java.io.Serializable; -import java.math.BigDecimal; - - -/** - * 游戏兑换余额请求 - * - * @author shi - * @date 2025/02/11 - */ -@Data -public class GameExchangeBalanceRequest implements Serializable { - private final static long serialVersionUID = -881298930995538038L; - - - /** - * 账户 - */ - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - - /** 平台编码 */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 订单id - */ - @NotBlank(message = "orderId不能为空") - @Length(max = 124, message = "orderId长度不能超过124个字符") - private String orderId; - /** - * 金额 - */ - @NotNull(message = "amount不能为空") - @Min(value = 1, message = "amount最小值为1") - @Max(value = 999999999, message = "amount最大值为999999999") - private BigDecimal amount; - - - /** 币种编码 */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 转账类型 - * 1: 从 游戏商 转移额度到 平台商 (不看 amount 值,全 - * 部转出) - * 2: 从 平台商 转移额度到 游戏商 - */ - @NotNull(message = "transferType不能为空") - @Min(value = 1, message = "transferType最小值为1") - @Max(value = 2, message = "transferType最大值为2") - private Integer transferType; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameExchangeStateRequest.java b/ff-game/src/main/java/com/ff/api/request/GameExchangeStateRequest.java deleted file mode 100644 index e58bd5c..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameExchangeStateRequest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ff.api.request; - - -import lombok.Data; - -import java.io.Serializable; - -/** - * 游戏交换状态请求 - * - * @author shi - * @date 2025/03/14 - */ -@Data -public class GameExchangeStateRequest implements Serializable { - private final static long serialVersionUID = 5862750025968209889L; - /** - * 交易编号 - */ - private String orderId; -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java b/ff-game/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java deleted file mode 100644 index 1ebc4ef..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.ff.api.request; - - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - - -/** - * 游戏获取投注记录请求 - * - * @author shi - * @date 2025/02/12 - */ -@Data -public class GameGetBetRecordRequest implements Serializable { - private final static long serialVersionUID = -8079805496329012394L; - - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 平台代码 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 开始时间 毫秒时间戳 - */ - @NotNull(message = "beginTime不能为空") - private Long beginTime; - - /** - * 结束时间 毫秒时间戳 - */ - @NotNull(message = "endTime不能为空") - private Long endTime; - - - /** - * 时间类型 1 按投注时间 2 按入库时间 - */ - private Integer timeType=1; - - - /** - * 页码,默认第1页,按订单更新时间正序返回数据 - */ - @Min(value = 1, message = "pageNo最小值为1") - private Integer pageNo=1; - - - - /** - * 页容量,默认200,最大2000 - */ - @Min(value = 1, message = "pageSize最小值为1") - @Max(value = 2000, message = "pageSize最大值为2000") - private Integer pageSize=200; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameGetDetailRequest.java b/ff-game/src/main/java/com/ff/api/request/GameGetDetailRequest.java deleted file mode 100644 index 678be05..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameGetDetailRequest.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.api.request; - - -import com.ff.validation.ListSizeCheck; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - - -/** - * 游戏赠送免费的局数 - * - * @author shi - * @date 2025/02/12 - */ -@Data -public class GameGetDetailRequest implements Serializable { - private final static long serialVersionUID = -8079805496329012394L; - - /** - * 平台代码 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 投注id - */ - @NotBlank(message = "wagersId不能为空") - private String wagersId; - - /** - * 语言代码 - */ - @NotBlank(message = "langCode不能为空") - private String langCode; - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java b/ff-game/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java deleted file mode 100644 index 8497bd8..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.api.request; - -import com.dtflys.forest.annotation.BaseRequest; -import com.ff.base.core.domain.BaseEntity; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - -/** - * 游戏获得免费游戏游玩记录 - * - * @author shi - * @date 2025/02/13 - */ -@Data -public class GameGetFreeSpinDashflowRequest implements Serializable { - private static final long serialVersionUID = 1871368632132480179L; - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 平台代码 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - - /** - * 游戏id - */ - private Long gameId; - - /** - * 开始时间 毫秒时间戳 - */ - @NotNull(message = "beginTime不能为空") - private Long beginTime; - - /** - * 结束时间 毫秒时间戳 - */ - @NotNull(message = "endTime不能为空") - private Long endTime; - - /** - * 页码,默认第1页,按订单更新时间正序返回数据 - */ - @Min(value = 1, message = "pageNo最小值为1") - private Integer pageNo=1; - - - - - /** - * 页容量,默认200,最大2000 - */ - @Min(value = 1, message = "pageSize最小值为1") - @Max(value = 2000, message = "pageSize最大值为2000") - private Integer pageSize=200; - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java b/ff-game/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java deleted file mode 100644 index 7a2b68d..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.api.request; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - -/** - * 游戏踢迷所有请求 - * - * @author shi - * @date 2025/02/12 - */ -@Data -public class GameKickMemeberAllRequest implements Serializable { - private static final long serialVersionUID = -5550133375734112801L; - - /** - * 玩家游戏平台 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 玩家使用货币 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 游戏id - */ - private Long gameId; -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameKickMemeberRequest.java b/ff-game/src/main/java/com/ff/api/request/GameKickMemeberRequest.java deleted file mode 100644 index 791dd50..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameKickMemeberRequest.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ff.api.request; - - -import com.ff.validation.ListSizeCheck; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - - -/** - * 游戏赠送免费的局数 - * - * @author shi - * @date 2025/02/12 - */ -@Data -public class GameKickMemeberRequest implements Serializable { - private final static long serialVersionUID = 7977843394391031014L; - - /** - * 玩家账号 - */ - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** - * 玩家游戏平台 - */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** - * 玩家使用货币 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/GameLoginRequest.java b/ff-game/src/main/java/com/ff/api/request/GameLoginRequest.java deleted file mode 100644 index 9c2d5f4..0000000 --- a/ff-game/src/main/java/com/ff/api/request/GameLoginRequest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ff.api.request; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; -import java.util.Map; - -/** - * 游戏登录请求 - * - * @author shi - * @date 2025/02/11 - */ -@Data -public class GameLoginRequest implements Serializable { - private final static long serialVersionUID = 7699430372422335056L; - - - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 语种id - */ - @NotBlank(message = "langCode不能为空") - @Length(max = 32, message = "langCode长度不能超过32个字符") - private String langCode; - - /** - * 账户 - */ - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** - * 游戏id - */ - @NotBlank(message = "gameId不能为空") - private String gameId; - - - /** - * 游戏回主页功能导向位置 - */ - private String homeUrl; - /** - * 带入 web 或是 app - */ - private String platform; - /** - * 带入 1 即关闭全屏幕模式 - */ - private Integer disableFullScreen; - - /** - * ae 平台 投注限额 - */ - private Map>> betLimit; -} diff --git a/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java b/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java deleted file mode 100644 index 83af3f7..0000000 --- a/ff-game/src/main/java/com/ff/api/request/MemberCreateApiRequest.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ff.api.request; - - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; -import java.io.Serializable; -import java.util.Map; - -/** - * 创建成员请求 - * - * @author shi - * @date 2025/02/10 - */ -@Data -public class MemberCreateApiRequest implements Serializable{ - - private static final long serialVersionUID = 8071608271351542925L; - - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** 平台编码 */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** 币种编码 */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - - /** - * 投注限额 - */ - private Map>> betLimit; - - /** - * 平台类型 0 桌面 1 移动 - */ - private Integer platformType; -} diff --git a/ff-game/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java b/ff-game/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java deleted file mode 100644 index 4347009..0000000 --- a/ff-game/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ff.api.request; - - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; - -/** - * 创建成员请求 - * - * @author shi - * @date 2025/02/10 - */ -@Data -public class MemberInfoAllApiRequest implements Serializable{ - - private static final long serialVersionUID = 8071608271351542925L; - - /** - * 账户 - */ - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** - * 货币代码 - */ - @NotBlank(message = "currencyCode不能为空") - private String currencyCode; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/request/MemberInfoApiRequest.java b/ff-game/src/main/java/com/ff/api/request/MemberInfoApiRequest.java deleted file mode 100644 index 962420c..0000000 --- a/ff-game/src/main/java/com/ff/api/request/MemberInfoApiRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ff.api.request; - - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - -/** - * 创建成员请求 - * - * @author shi - * @date 2025/02/10 - */ -@Data -public class MemberInfoApiRequest implements Serializable{ - - private static final long serialVersionUID = 8071608271351542925L; - - @NotBlank(message = "account不能为空") - @Length(max = 64, message = "account长度不能超过64个字符") - private String account; - - /** 平台编码 */ - @NotBlank(message = "platformCode不能为空") - @Length(max = 64, message = "platformCode长度不能超过64个字符") - private String platformCode; - - /** 币种编码 */ - @NotBlank(message = "currencyCode不能为空") - @Length(max = 32, message = "currencyCode长度不能超过32个字符") - private String currencyCode; - -} diff --git a/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java b/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java deleted file mode 100644 index 8e6b3b5..0000000 --- a/ff-game/src/main/java/com/ff/api/response/GameBettingDetailsResponse.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ff.api.response; - -import com.ff.base.annotation.Excel; -import com.ff.base.core.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 会员投注细目对象 ff_game_betting_details - * - * @author shi - * @date 2025-02-10 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameBettingDetailsResponse implements Serializable -{ - private static final long serialVersionUID = -988976119749917266L; - - - /** - * 租户key - */ - private String tenantKey; - - - /** 币种编码 */ - private String currencyCode; - - - - /** 游戏id */ - private Long gameId; - - /** 游戏类型 ff_game_type 字典 */ - private Integer gameType; - - /** 游戏平台 */ - private String platformCode; - - /** 游戏名称 */ - private String gameName; - - /** 注单状态 1: 赢 2: 输 3: 平局 */ - private Integer gameStatus; - - /** 注单类型 */ - private Integer gameStatusType; - - /** 游戏币种类型 */ - private String gameCurrencyCode; - - /** 系统账号 */ - private String account; - - /** 游戏注单唯一值 */ - private String wagersId; - - /** 投注时间 (Unix 时间戳) */ - private Long wagersTime; - - /** 投注金额 */ - private BigDecimal betAmount; - - /** 派彩时间 (Unix 时间戳) */ - private Long payoffTime; - - /** 派彩金额 */ - private BigDecimal payoffAmount; - - /** 对帐时间 (Unix 时间戳) */ - private Long settlementTime; - - /** 有效投注金额 ※注 1 */ - private BigDecimal turnover; - - /** 订单id */ - private String orderNo; - - /** 结算状态 1 未结算 2已结算 3 已撤单 */ - private Integer settlementStatus; - - -} diff --git a/ff-game/src/main/java/com/ff/api/response/GameDemoLoginResponse.java b/ff-game/src/main/java/com/ff/api/response/GameDemoLoginResponse.java deleted file mode 100644 index 1978ee0..0000000 --- a/ff-game/src/main/java/com/ff/api/response/GameDemoLoginResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.api.response; - -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.io.Serializable; - - -/** - * 游戏演示登录响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class GameDemoLoginResponse implements Serializable { - private final static long serialVersionUID = 7699430372422335056L; - - - - /** - * 网址 - */ - private String url; - -} diff --git a/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java b/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java deleted file mode 100644 index 04bcd80..0000000 --- a/ff-game/src/main/java/com/ff/api/response/GameExchangeBalanceResponse.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.ff.api.response; - -import com.ff.base.annotation.Excel; -import com.ff.base.core.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 会员金额转移记录对象 ff_game_exchange_money - * - * @author shi - * @date 2025-02-12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameExchangeBalanceResponse implements Serializable -{ - private static final long serialVersionUID = 1L; - - - - /** 租户key */ - private String tenantKey; - - /** 币种编码 */ - private String currencyCode; - - /** 第三方交易id */ - private String transactionId; - - - /** 游戏平台 */ - private String platformCode; - - /** 操作金额 */ - private BigDecimal balance; - - - /** 转账前金额(游戏币) */ - private BigDecimal coinBefore; - - /** 转账后金额(游戏币) */ - private BigDecimal coinAfter; - - /** 转账前金额(指定货币) */ - private BigDecimal currencyBefore; - - /** 转账后金额(指定货币) */ - private BigDecimal currencyAfter; - - /** 系统订单id */ - private String orderId; - - /** 转出类型 1游戏商转入到用户全部转出 2 用户转移到游戏商 */ - private Integer exchangeType; - - /** 状态,0:进行中、1:成功、2:失败 */ - private Integer status; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java b/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java deleted file mode 100644 index 5bc2433..0000000 --- a/ff-game/src/main/java/com/ff/api/response/GameFreeRecordResponse.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.ff.api.response; - -import com.ff.base.annotation.Excel; -import com.ff.base.core.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; - -/** - * 免费赠送游戏记录对象 ff_game_free_record - * - * @author shi - * @date 2025-02-13 - */ -@Data -@AllArgsConstructor -@SuperBuilder -@NoArgsConstructor -public class GameFreeRecordResponse implements Serializable -{ - private static final long serialVersionUID = -6742890807638586336L; - - - - /** 币种编码 */ - private String currencyCode; - - /** 平台代码 */ - private String platformCode; - - /** 免费局数序号(唯一标识符) */ - private String referenceId; - - - /** 系统用户账号 */ - private String memberAccount; - - /** 游戏id */ - private Long gameId; - - /** 免费游戏局数可使用的开始时间 */ - private Long sendTime; - - /** 免费局数过期时间 */ - private Long expiredTime; - - /** 免费局数记录更新时间 */ - private Long freeUpdateTime; - - /** 免费局数赠送的游戏名称 */ - private String sendGame; - - /** 免费局数赠送的数量 */ - private Integer sendAmount; - - /** 已使用的免费局数数量 */ - private Integer usedAmount; - - /** 未使用的免费局数数量 */ - private Integer unusedAmount; - - /** 免费状态 1正常 0 取消 */ - private Integer freeStatus; - - -} diff --git a/ff-game/src/main/java/com/ff/api/response/GameResponse.java b/ff-game/src/main/java/com/ff/api/response/GameResponse.java deleted file mode 100644 index 4b24077..0000000 --- a/ff-game/src/main/java/com/ff/api/response/GameResponse.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ff.api.response; - -import com.ff.game.domain.NameInfo; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * 会员金额转移记录对象 ff_game_exchange_money - * - * @author shi - * @date 2025-02-12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameResponse implements Serializable { - private static final long serialVersionUID = 7932597077733961820L; - - - /** - * 游戏id - */ - private String id; - - /** - * 游戏名称 - */ - private String gameName; - /** - * 是否支持免费 - */ - private Boolean freeSpin; - /** - * 是否支持试玩 - */ - private Boolean demoStatus; - /** - * 平台代码 - */ - private String platformCode; - /** - * 平台类型 - */ - private Integer platformType; - - /** - * 支持的终端类型 1:电脑网页、2:手机网页、3:电脑/手机网页 - */ - private Integer ingress; - - - /** - * 支持货币代码 - */ - private List currencyCode; - /** - * 名称 - */ - private List nameInfo; -} diff --git a/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java b/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java deleted file mode 100644 index d2e34ed..0000000 --- a/ff-game/src/main/java/com/ff/api/response/MemberInfoAllResponse.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.api.response; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 会员金额转移记录对象 ff_game_exchange_money - * - * @author shi - * @date 2025-02-12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class MemberInfoAllResponse implements Serializable -{ - private static final long serialVersionUID = 1L; - - - - - /** - * 账户 - */ - private String account; - /** - * 余额 - */ - private BigDecimal balance; - /** - * 状态: - * 1: 在线 - * 2: 脱机 - * 3: 账号不存在 - */ - private Integer status; - - /** - * 平台代码 - */ - private String platformCode; - - -} diff --git a/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java b/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java deleted file mode 100644 index 96f5722..0000000 --- a/ff-game/src/main/java/com/ff/api/response/MemberInfoResponse.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ff.api.response; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 会员金额转移记录对象 ff_game_exchange_money - * - * @author shi - * @date 2025-02-12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class MemberInfoResponse implements Serializable -{ - private static final long serialVersionUID = 1L; - - - - - /** - * 余额 - */ - private BigDecimal balance; - /** - * 状态: - * 1: 在线 - * 2: 脱机 - * 3: 账号不存在 - */ - private Integer status; - - - -} diff --git a/ff-game/src/main/java/com/ff/api/response/TenantInfoResponse.java b/ff-game/src/main/java/com/ff/api/response/TenantInfoResponse.java deleted file mode 100644 index 20d4913..0000000 --- a/ff-game/src/main/java/com/ff/api/response/TenantInfoResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.api.response; - -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 租户信息 - * - * @author shi - * @date 2025/02/14 - */ -@Data -public class TenantInfoResponse implements Serializable { - - - /** - * 租户密钥 - */ - private String tenantKey; - - - /** - * 余额 - */ - private BigDecimal balance; - -} diff --git a/ff-game/src/main/java/com/ff/common/controller/CaptchaController.java b/ff-game/src/main/java/com/ff/common/controller/CaptchaController.java deleted file mode 100644 index e56be31..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/CaptchaController.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.ff.common.controller; - -import com.ff.base.config.FFConfig; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.sign.Base64; -import com.ff.base.utils.uuid.IdUtils; -import com.google.code.kaptcha.Producer; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.FastByteArrayOutputStream; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.imageio.ImageIO; -import javax.servlet.http.HttpServletResponse; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.util.concurrent.TimeUnit; - -/** - * 验证码操作处理 - * - * @author ff - */ -@RestController -public class CaptchaController -{ - @Resource(name = "captchaProducer") - private Producer captchaProducer; - - @Resource(name = "captchaProducerMath") - private Producer captchaProducerMath; - - @Autowired - private RedisCache redisCache; - - @Autowired - private ISysConfigService configService; - /** - * 生成验证码 - */ - @GetMapping("/captchaImage") - public AjaxResult getCode(HttpServletResponse response) throws IOException - { - AjaxResult ajax = AjaxResult.success(); - boolean captchaEnabled = configService.selectCaptchaEnabled(); - ajax.put("captchaEnabled", captchaEnabled); - if (!captchaEnabled) - { - return ajax; - } - - // 保存验证码信息 - String uuid = IdUtils.simpleUUID(); - String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; - - String capStr = null, code = null; - BufferedImage image = null; - - // 生成验证码 - String captchaType = FFConfig.getCaptchaType(); - if ("math".equals(captchaType)) - { - String capText = captchaProducerMath.createText(); - capStr = capText.substring(0, capText.lastIndexOf("@")); - code = capText.substring(capText.lastIndexOf("@") + 1); - image = captchaProducerMath.createImage(capStr); - } - else if ("char".equals(captchaType)) - { - capStr = code = captchaProducer.createText(); - image = captchaProducer.createImage(capStr); - } - - redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - // 转换流信息写出 - FastByteArrayOutputStream os = new FastByteArrayOutputStream(); - try - { - ImageIO.write(image, "jpg", os); - } - catch (IOException e) - { - return AjaxResult.error(e.getMessage()); - } - - ajax.put("uuid", uuid); - ajax.put("img", Base64.encode(os.toByteArray())); - return ajax; - } -} diff --git a/ff-game/src/main/java/com/ff/common/controller/CurrencyController.java b/ff-game/src/main/java/com/ff/common/controller/CurrencyController.java deleted file mode 100644 index 2f4cbaf..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/CurrencyController.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.ff.common.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.common.domain.Currency; -import com.ff.common.service.ICurrencyService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 币种Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/common/currency") -public class CurrencyController extends BaseController -{ - @Autowired - private ICurrencyService currencyService; - - /** - * 查询币种列表 - */ - @PreAuthorize("@ss.hasPermi('common:currency:list')") - @GetMapping("/list") - public TableDataInfo list(Currency currency) - { - startPage(); - List list = currencyService.selectCurrencyList(currency); - return getDataTable(list); - } - - /** - * 选择 - * - * @param currency 货币 - * @return {@link AjaxResult } - */ - @GetMapping("/select") - public AjaxResult select(Currency currency) - { - List list = currencyService.selectCurrencyList(currency); - return AjaxResult.success(list); - } - /** - * 导出币种列表 - */ - @PreAuthorize("@ss.hasPermi('common:currency:export')") - @Log(title = "币种", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, Currency currency) - { - List list = currencyService.selectCurrencyList(currency); - ExcelUtil util = new ExcelUtil(Currency.class); - util.exportExcel(response, list, "币种数据"); - } - - /** - * 获取币种详细信息 - */ - @PreAuthorize("@ss.hasPermi('common:currency:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(currencyService.selectCurrencyById(id)); - } - - /** - * 新增币种 - */ - @PreAuthorize("@ss.hasPermi('common:currency:add')") - @Log(title = "币种", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody Currency currency) - { - return toAjax(currencyService.insertCurrency(currency)); - } - - /** - * 修改币种 - */ - @PreAuthorize("@ss.hasPermi('common:currency:edit')") - @Log(title = "币种", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody Currency currency) - { - return toAjax(currencyService.updateCurrency(currency)); - } - - /** - * 删除币种 - */ - @PreAuthorize("@ss.hasPermi('common:currency:remove')") - @Log(title = "币种", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(currencyService.deleteCurrencyByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/common/controller/LangController.java b/ff-game/src/main/java/com/ff/common/controller/LangController.java deleted file mode 100644 index a0a8fab..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/LangController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.common.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.common.domain.Lang; -import com.ff.common.service.ILangService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 系统语种管理 Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/common/lang") -public class LangController extends BaseController -{ - @Autowired - private ILangService langService; - - /** - * 查询系统语种管理 列表 - */ - @PreAuthorize("@ss.hasPermi('common:lang:list')") - @GetMapping("/list") - public TableDataInfo list(Lang lang) - { - startPage(); - List list = langService.selectLangList(lang); - return getDataTable(list); - } - - /** - * 导出系统语种管理 列表 - */ - @PreAuthorize("@ss.hasPermi('common:lang:export')") - @Log(title = "系统语种管理 ", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, Lang lang) - { - List list = langService.selectLangList(lang); - ExcelUtil util = new ExcelUtil(Lang.class); - util.exportExcel(response, list, "系统语种管理 数据"); - } - - /** - * 获取系统语种管理 详细信息 - */ - @PreAuthorize("@ss.hasPermi('common:lang:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(langService.selectLangById(id)); - } - - /** - * 新增系统语种管理 - */ - @PreAuthorize("@ss.hasPermi('common:lang:add')") - @Log(title = "系统语种管理 ", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody Lang lang) - { - return toAjax(langService.insertLang(lang)); - } - - /** - * 修改系统语种管理 - */ - @PreAuthorize("@ss.hasPermi('common:lang:edit')") - @Log(title = "系统语种管理 ", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody Lang lang) - { - return toAjax(langService.updateLang(lang)); - } - - /** - * 删除系统语种管理 - */ - @PreAuthorize("@ss.hasPermi('common:lang:remove')") - @Log(title = "系统语种管理 ", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(langService.deleteLangByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaController.java b/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaController.java deleted file mode 100644 index efed705..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.common.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.common.domain.TenantGameQuota; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 租户游戏配额Controller - * - * @author shi - * @date 2025-02-12 - */ -@RestController -@RequestMapping("/common/quota") -public class TenantGameQuotaController extends BaseController -{ - @Autowired - private ITenantGameQuotaService tenantGameQuotaService; - - /** - * 查询租户游戏配额列表 - */ - @PreAuthorize("@ss.hasPermi('common:quota:list')") - @GetMapping("/list") - public TableDataInfo list(TenantGameQuota tenantGameQuota) - { - startPage(); - List list = tenantGameQuotaService.selectTenantGameQuotaList(tenantGameQuota); - return getDataTable(list); - } - - /** - * 导出租户游戏配额列表 - */ - @PreAuthorize("@ss.hasPermi('common:quota:export')") - @Log(title = "租户游戏配额", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, TenantGameQuota tenantGameQuota) - { - List list = tenantGameQuotaService.selectTenantGameQuotaList(tenantGameQuota); - ExcelUtil util = new ExcelUtil(TenantGameQuota.class); - util.exportExcel(response, list, "租户游戏配额数据"); - } - - /** - * 获取租户游戏配额详细信息 - */ - @PreAuthorize("@ss.hasPermi('common:quota:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(tenantGameQuotaService.selectTenantGameQuotaById(id)); - } - - /** - * 新增租户游戏配额 - */ - @PreAuthorize("@ss.hasPermi('common:quota:add')") - @Log(title = "租户游戏配额", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TenantGameQuota tenantGameQuota) - { - return toAjax(tenantGameQuotaService.insertTenantGameQuota(tenantGameQuota)); - } - - /** - * 修改租户游戏配额 - */ - @PreAuthorize("@ss.hasPermi('common:quota:edit')") - @Log(title = "租户游戏配额", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TenantGameQuota tenantGameQuota) - { - return toAjax(tenantGameQuotaService.updateTenantGameQuota(tenantGameQuota)); - } - - /** - * 删除租户游戏配额 - */ - @PreAuthorize("@ss.hasPermi('common:quota:remove')") - @Log(title = "租户游戏配额", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(tenantGameQuotaService.deleteTenantGameQuotaByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaFlowController.java b/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaFlowController.java deleted file mode 100644 index b2ac893..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/TenantGameQuotaFlowController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.common.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.common.domain.TenantGameQuotaFlow; -import com.ff.common.service.ITenantGameQuotaFlowService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 租户游戏额度流水Controller - * - * @author shi - * @date 2025-02-12 - */ -@RestController -@RequestMapping("/common/flow") -public class TenantGameQuotaFlowController extends BaseController -{ - @Autowired - private ITenantGameQuotaFlowService tenantGameQuotaFlowService; - - /** - * 查询租户游戏额度流水列表 - */ - @PreAuthorize("@ss.hasPermi('common:flow:list')") - @GetMapping("/list") - public TableDataInfo list(TenantGameQuotaFlow tenantGameQuotaFlow) - { - startPage(); - List list = tenantGameQuotaFlowService.selectTenantGameQuotaFlowList(tenantGameQuotaFlow); - return getDataTable(list); - } - - /** - * 导出租户游戏额度流水列表 - */ - @PreAuthorize("@ss.hasPermi('common:flow:export')") - @Log(title = "租户游戏额度流水", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, TenantGameQuotaFlow tenantGameQuotaFlow) - { - List list = tenantGameQuotaFlowService.selectTenantGameQuotaFlowList(tenantGameQuotaFlow); - ExcelUtil util = new ExcelUtil(TenantGameQuotaFlow.class); - util.exportExcel(response, list, "租户游戏额度流水数据"); - } - - /** - * 获取租户游戏额度流水详细信息 - */ - @PreAuthorize("@ss.hasPermi('common:flow:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(tenantGameQuotaFlowService.selectTenantGameQuotaFlowById(id)); - } - - /** - * 新增租户游戏额度流水 - */ - @PreAuthorize("@ss.hasPermi('common:flow:add')") - @Log(title = "租户游戏额度流水", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TenantGameQuotaFlow tenantGameQuotaFlow) - { - return toAjax(tenantGameQuotaFlowService.insertTenantGameQuotaFlow(tenantGameQuotaFlow)); - } - - /** - * 修改租户游戏额度流水 - */ - @PreAuthorize("@ss.hasPermi('common:flow:edit')") - @Log(title = "租户游戏额度流水", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TenantGameQuotaFlow tenantGameQuotaFlow) - { - return toAjax(tenantGameQuotaFlowService.updateTenantGameQuotaFlow(tenantGameQuotaFlow)); - } - - /** - * 删除租户游戏额度流水 - */ - @PreAuthorize("@ss.hasPermi('common:flow:remove')") - @Log(title = "租户游戏额度流水", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(tenantGameQuotaFlowService.deleteTenantGameQuotaFlowByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java b/ff-game/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java deleted file mode 100644 index 662b270..0000000 --- a/ff-game/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.common.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.common.domain.TenantQuotaExchange; -import com.ff.common.service.ITenantQuotaExchangeService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 币种汇率Controller - * - * @author shi - * @date 2025-02-21 - */ -@RestController -@RequestMapping("/common/exchange") -public class TenantQuotaExchangeController extends BaseController -{ - @Autowired - private ITenantQuotaExchangeService tenantQuotaExchangeService; - - /** - * 查询币种汇率列表 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:list')") - @GetMapping("/list") - public TableDataInfo list(TenantQuotaExchange tenantQuotaExchange) - { - startPage(); - List list = tenantQuotaExchangeService.selectTenantQuotaExchangeList(tenantQuotaExchange); - return getDataTable(list); - } - - /** - * 导出币种汇率列表 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:export')") - @Log(title = "币种汇率", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, TenantQuotaExchange tenantQuotaExchange) - { - List list = tenantQuotaExchangeService.selectTenantQuotaExchangeList(tenantQuotaExchange); - ExcelUtil util = new ExcelUtil(TenantQuotaExchange.class); - util.exportExcel(response, list, "币种汇率数据"); - } - - /** - * 获取币种汇率详细信息 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(tenantQuotaExchangeService.selectTenantQuotaExchangeById(id)); - } - - /** - * 新增币种汇率 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:add')") - @Log(title = "币种汇率", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TenantQuotaExchange tenantQuotaExchange) - { - return toAjax(tenantQuotaExchangeService.insertTenantQuotaExchange(tenantQuotaExchange)); - } - - /** - * 修改币种汇率 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:edit')") - @Log(title = "币种汇率", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TenantQuotaExchange tenantQuotaExchange) - { - return toAjax(tenantQuotaExchangeService.updateTenantQuotaExchange(tenantQuotaExchange)); - } - - /** - * 删除币种汇率 - */ - @PreAuthorize("@ss.hasPermi('common:exchange:remove')") - @Log(title = "币种汇率", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(tenantQuotaExchangeService.deleteTenantQuotaExchangeByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java b/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java deleted file mode 100644 index ebe4214..0000000 --- a/ff-game/src/main/java/com/ff/common/dto/BalanceChangesDTO.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.ff.common.dto; - - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.ff.base.annotation.Excel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 余额更改为 - * - * @author shi - * @date 2025/02/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class BalanceChangesDTO implements Serializable { - private static final long serialVersionUID = -7479292236485670076L; - - /** 充值类型 false 扣除 true 充值 */ - private Boolean isOut; - - /** - * 配额类型 - */ - private String quotaType; - - /** 租户key */ - private String tenantKey; - - /** 游戏额度 */ - private BigDecimal balance; - - /** 备注 */ - private String remark; - - /** - * 成员id - */ - @JsonSerialize(using = ToStringSerializer.class) - private Long memberId; - - - /** 操作类型 OperationType枚举 */ - private Integer operationType; - - /** - * 汇率 传值计算 - */ - private BigDecimal actualBalance; - - /** 平台 */ - private String platformCode; - - /** 币种代码 */ - private String currencyCode; - - /** - * 源ID - */ - private String sourceId; -} diff --git a/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java b/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java deleted file mode 100644 index b0b52d4..0000000 --- a/ff-game/src/main/java/com/ff/common/dto/BalanceRealChangesDTO.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.ff.common.dto; - - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 余额更改为 - * - * @author shi - * @date 2025/02/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class BalanceRealChangesDTO implements Serializable { - private static final long serialVersionUID = -4864053711644163092L; - - /** 充值类型 false 扣除 true 充值 */ - private Boolean isOut; - - - /** 租户key */ - private String tenantKey; - - /** 游戏额度 */ - private BigDecimal balance; - - /** 备注 */ - private String remark; - - - - - /** 操作类型 OperationType枚举 */ - private Integer operationType; - - /** - * 汇率 传值计算 - */ - private BigDecimal actualBalance; - - /** 币种代码 */ - private String currencyCode; - -} diff --git a/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java b/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java deleted file mode 100644 index 38253f3..0000000 --- a/ff-game/src/main/java/com/ff/common/dto/GameBalanceExchange.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ff.common.dto; - -import com.ff.game.api.request.GamesBaseRequestDTO; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * 游戏余额兑换 - * - * @author shi - * @date 2025/02/21 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameBalanceExchange extends GamesBaseRequestDTO implements Serializable { - private final static long serialVersionUID = 3452954102791311247L; - - - /** - * 平台代码 - */ - private String platformCode; - - /** - * 货币代码 - */ - private String currencyCode; - - /** - * 交易类型 TransferType - */ - private Integer transferType; - - /** - * 游戏币数量 - */ - private BigDecimal amount; - - - /** - * - */ - private BigDecimal amountActual; - - /** - * 账户 - */ - private String account; - - - /** - * 租户key - */ - private String tenantKey; - - /** - * 来源ID - */ - private String sourceId; - -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/CurrencyMapper.java b/ff-game/src/main/java/com/ff/common/mapper/CurrencyMapper.java deleted file mode 100644 index 5aaf2f4..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/CurrencyMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.mapper; - -import java.util.List; -import com.ff.common.domain.Currency; - -/** - * 币种Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface CurrencyMapper -{ - /** - * 查询币种 - * - * @param id 币种主键 - * @return 币种 - */ - Currency selectCurrencyById(Long id); - - /** - * 查询币种列表 - * - * @param currency 币种 - * @return 币种集合 - */ - List selectCurrencyList(Currency currency); - - /** - * 新增币种 - * - * @param currency 币种 - * @return 结果 - */ - int insertCurrency(Currency currency); - - /** - * 修改币种 - * - * @param currency 币种 - * @return 结果 - */ - int updateCurrency(Currency currency); - - /** - * 删除币种 - * - * @param id 币种主键 - * @return 结果 - */ - int deleteCurrencyById(Long id); - - /** - * 批量删除币种 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteCurrencyByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/LangMapper.java b/ff-game/src/main/java/com/ff/common/mapper/LangMapper.java deleted file mode 100644 index 0e7eb31..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/LangMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.mapper; - -import java.util.List; -import com.ff.common.domain.Lang; - -/** - * 系统语种管理 Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface LangMapper -{ - /** - * 查询系统语种管理 - * - * @param id 系统语种管理 主键 - * @return 系统语种管理 - */ - Lang selectLangById(Long id); - - /** - * 查询系统语种管理 列表 - * - * @param lang 系统语种管理 - * @return 系统语种管理 集合 - */ - List selectLangList(Lang lang); - - /** - * 新增系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - int insertLang(Lang lang); - - /** - * 修改系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - int updateLang(Lang lang); - - /** - * 删除系统语种管理 - * - * @param id 系统语种管理 主键 - * @return 结果 - */ - int deleteLangById(Long id); - - /** - * 批量删除系统语种管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteLangByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/TenantAgentPlatformMapper.java b/ff-game/src/main/java/com/ff/common/mapper/TenantAgentPlatformMapper.java deleted file mode 100644 index 6132429..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/TenantAgentPlatformMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.mapper; - -import java.util.List; -import com.ff.common.domain.TenantAgentPlatform; - -/** - * 平台利润成本管理Mapper接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface TenantAgentPlatformMapper -{ - /** - * 查询平台利润成本管理 - * - * @param id 平台利润成本管理主键 - * @return 平台利润成本管理 - */ - TenantAgentPlatform selectTenantAgentPlatformById(Long id); - - /** - * 查询平台利润成本管理列表 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 平台利润成本管理集合 - */ - List selectTenantAgentPlatformList(TenantAgentPlatform tenantAgentPlatform); - - /** - * 新增平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - int insertTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform); - - /** - * 修改平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - int updateTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform); - - /** - * 删除平台利润成本管理 - * - * @param id 平台利润成本管理主键 - * @return 结果 - */ - int deleteTenantAgentPlatformById(Long id); - - /** - * 批量删除平台利润成本管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantAgentPlatformByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java b/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java deleted file mode 100644 index 7999131..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ff.common.mapper; - -import java.math.BigDecimal; -import java.util.List; -import com.ff.common.domain.TenantGameQuotaFlow; -import org.apache.ibatis.annotations.Param; - -/** - * 租户游戏额度流水Mapper接口 - * - * @author shi - * @date 2025-02-12 - */ -public interface TenantGameQuotaFlowMapper -{ - /** - * 查询租户游戏额度流水 - * - * @param id 租户游戏额度流水主键 - * @return 租户游戏额度流水 - */ - TenantGameQuotaFlow selectTenantGameQuotaFlowById(Long id); - - /** - * 查询租户游戏额度流水列表 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 租户游戏额度流水集合 - */ - List selectTenantGameQuotaFlowList(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 新增租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - int insertTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 修改租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - int updateTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 删除租户游戏额度流水 - * - * @param id 租户游戏额度流水主键 - * @return 结果 - */ - int deleteTenantGameQuotaFlowById(Long id); - - /** - * 批量删除租户游戏额度流水 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantGameQuotaFlowByIds(Long[] ids); - - - /** - * 通过会员id获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link BigDecimal } - */ - BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); - - - /** - * 通过租户密钥获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link List }<{@link TenantGameQuotaFlow }> - */ - List getBalanceByTenantKey(TenantGameQuotaFlow tenantGameQuotaFlow); - - -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaMapper.java b/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaMapper.java deleted file mode 100644 index aa1873c..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/TenantGameQuotaMapper.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ff.common.mapper; - -import java.util.List; - -import com.ff.common.domain.TenantGameQuota; -import org.apache.ibatis.annotations.Param; - -/** - * 租户游戏配额Mapper接口 - * - * @author shi - * @date 2025-02-12 - */ -public interface TenantGameQuotaMapper { - /** - * 查询租户游戏配额 - * - * @param id 租户游戏配额主键 - * @return 租户游戏配额 - */ - TenantGameQuota selectTenantGameQuotaById(Long id); - - - /** - * 查询租户游戏配额 - * - * @param tenantKey 租户游戏配额主键 - * @return 租户游戏配额 - */ - TenantGameQuota selectTenantGameQuotaByTenantKey(@Param("tenantKey") String tenantKey,@Param("quotaType") String quotaType); - - /** - * 查询租户游戏配额列表 - * - * @param tenantGameQuota 租户游戏配额 - * @return 租户游戏配额集合 - */ - List selectTenantGameQuotaList(TenantGameQuota tenantGameQuota); - - /** - * 新增租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - int insertTenantGameQuota(TenantGameQuota tenantGameQuota); - - /** - * 修改租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - int updateTenantGameQuota(TenantGameQuota tenantGameQuota); - - - /** - * 改变余额 - * - * @param tenantGameQuota sys游戏配额 - * @return {@link Boolean } - */ - Boolean changeBalance(TenantGameQuota tenantGameQuota); - - /** - * 删除租户游戏配额 - * - * @param id 租户游戏配额主键 - * @return 结果 - */ - int deleteTenantGameQuotaById(Long id); - - /** - * 批量删除租户游戏配额 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantGameQuotaByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java b/ff-game/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java deleted file mode 100644 index a2f373e..0000000 --- a/ff-game/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.common.mapper; - -import java.util.List; -import com.ff.common.domain.TenantQuotaExchange; -import org.apache.ibatis.annotations.Param; - -/** - * 币种汇率Mapper接口 - * - * @author shi - * @date 2025-02-21 - */ -public interface TenantQuotaExchangeMapper -{ - /** - * 查询币种汇率 - * - * @param id 币种汇率主键 - * @return 币种汇率 - */ - TenantQuotaExchange selectTenantQuotaExchangeById(Long id); - - /** - * 查询币种汇率列表 - * - * @param tenantQuotaExchange 币种汇率 - * @return 币种汇率集合 - */ - List selectTenantQuotaExchangeList(TenantQuotaExchange tenantQuotaExchange); - - /** - * 新增币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - int insertTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange); - - /** - * 修改币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - int updateTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange); - - /** - * 删除币种汇率 - * - * @param id 币种汇率主键 - * @return 结果 - */ - int deleteTenantQuotaExchangeById(Long id); - - /** - * 批量删除币种汇率 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteTenantQuotaExchangeByIds(Long[] ids); - - /** - * 获取租户配额交换 - * - * @param currencyCode 货币代码 - * @param exchangeCurrencyCode 兑换货币代码 - * @return {@link TenantQuotaExchange } - */ - TenantQuotaExchange getTenantQuotaExchange(@Param("currencyCode") String currencyCode, @Param("exchangeCurrencyCode") String exchangeCurrencyCode); - -} diff --git a/ff-game/src/main/java/com/ff/common/service/ICurrencyService.java b/ff-game/src/main/java/com/ff/common/service/ICurrencyService.java deleted file mode 100644 index b8c94f4..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ICurrencyService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.service; - -import java.util.List; -import com.ff.common.domain.Currency; - -/** - * 币种Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface ICurrencyService -{ - /** - * 查询币种 - * - * @param id 币种主键 - * @return 币种 - */ - Currency selectCurrencyById(Long id); - - /** - * 查询币种列表 - * - * @param currency 币种 - * @return 币种集合 - */ - List selectCurrencyList(Currency currency); - - /** - * 新增币种 - * - * @param currency 币种 - * @return 结果 - */ - int insertCurrency(Currency currency); - - /** - * 修改币种 - * - * @param currency 币种 - * @return 结果 - */ - int updateCurrency(Currency currency); - - /** - * 批量删除币种 - * - * @param ids 需要删除的币种主键集合 - * @return 结果 - */ - int deleteCurrencyByIds(Long[] ids); - - /** - * 删除币种信息 - * - * @param id 币种主键 - * @return 结果 - */ - int deleteCurrencyById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/common/service/ILangService.java b/ff-game/src/main/java/com/ff/common/service/ILangService.java deleted file mode 100644 index d28a5d2..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ILangService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.service; - -import java.util.List; -import com.ff.common.domain.Lang; - -/** - * 系统语种管理 Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface ILangService -{ - /** - * 查询系统语种管理 - * - * @param id 系统语种管理 主键 - * @return 系统语种管理 - */ - Lang selectLangById(Long id); - - /** - * 查询系统语种管理 列表 - * - * @param lang 系统语种管理 - * @return 系统语种管理 集合 - */ - List selectLangList(Lang lang); - - /** - * 新增系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - int insertLang(Lang lang); - - /** - * 修改系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - int updateLang(Lang lang); - - /** - * 批量删除系统语种管理 - * - * @param ids 需要删除的系统语种管理 主键集合 - * @return 结果 - */ - int deleteLangByIds(Long[] ids); - - /** - * 删除系统语种管理 信息 - * - * @param id 系统语种管理 主键 - * @return 结果 - */ - int deleteLangById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/common/service/ITenantAgentPlatformService.java b/ff-game/src/main/java/com/ff/common/service/ITenantAgentPlatformService.java deleted file mode 100644 index 4306d71..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ITenantAgentPlatformService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.common.service; - -import java.util.List; -import com.ff.common.domain.TenantAgentPlatform; - -/** - * 平台利润成本管理Service接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface ITenantAgentPlatformService -{ - /** - * 查询平台利润成本管理 - * - * @param id 平台利润成本管理主键 - * @return 平台利润成本管理 - */ - TenantAgentPlatform selectTenantAgentPlatformById(Long id); - - /** - * 查询平台利润成本管理列表 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 平台利润成本管理集合 - */ - List selectTenantAgentPlatformList(TenantAgentPlatform tenantAgentPlatform); - - /** - * 新增平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - int insertTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform); - - /** - * 修改平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - int updateTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform); - - /** - * 批量删除平台利润成本管理 - * - * @param ids 需要删除的平台利润成本管理主键集合 - * @return 结果 - */ - int deleteTenantAgentPlatformByIds(Long[] ids); - - /** - * 删除平台利润成本管理信息 - * - * @param id 平台利润成本管理主键 - * @return 结果 - */ - int deleteTenantAgentPlatformById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java b/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java deleted file mode 100644 index bc19039..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.ff.common.service; - -import java.math.BigDecimal; -import java.util.List; -import com.ff.common.domain.TenantGameQuotaFlow; - -/** - * 租户游戏额度流水Service接口 - * - * @author shi - * @date 2025-02-12 - */ -public interface ITenantGameQuotaFlowService -{ - /** - * 查询租户游戏额度流水 - * - * @param id 租户游戏额度流水主键 - * @return 租户游戏额度流水 - */ - TenantGameQuotaFlow selectTenantGameQuotaFlowById(Long id); - - /** - * 查询租户游戏额度流水列表 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 租户游戏额度流水集合 - */ - List selectTenantGameQuotaFlowList(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 新增租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - int insertTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 修改租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - int updateTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow); - - /** - * 批量删除租户游戏额度流水 - * - * @param ids 需要删除的租户游戏额度流水主键集合 - * @return 结果 - */ - int deleteTenantGameQuotaFlowByIds(Long[] ids); - - /** - * 删除租户游戏额度流水信息 - * - * @param id 租户游戏额度流水主键 - * @return 结果 - */ - int deleteTenantGameQuotaFlowById(Long id); - - /** - * 通过会员id获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link BigDecimal } - */ - BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); - - - /** - * 通过租户密钥获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link List }<{@link TenantGameQuotaFlow }> - */ - List getBalanceByTenantKey(TenantGameQuotaFlow tenantGameQuotaFlow); -} diff --git a/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaService.java b/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaService.java deleted file mode 100644 index a043dd2..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ITenantGameQuotaService.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.common.service; - -import java.math.BigDecimal; -import java.util.List; - -import com.ff.agent.dto.AgentCreateTenantDTO; -import com.ff.common.domain.TenantGameQuota; -import com.ff.common.dto.BalanceChangesDTO; -import com.ff.common.dto.BalanceRealChangesDTO; -import com.ff.common.dto.GameBalanceExchange; -import org.apache.ibatis.annotations.Param; - -/** - * 租户游戏配额Service接口 - * - * @author shi - * @date 2025-02-12 - */ -public interface ITenantGameQuotaService -{ - /** - * 查询租户游戏配额 - * - * @param id 租户游戏配额主键 - * @return 租户游戏配额 - */ - TenantGameQuota selectTenantGameQuotaById(Long id); - - - - /** - * 查询租户游戏配额列表 - * - * @param tenantGameQuota 租户游戏配额 - * @return 租户游戏配额集合 - */ - List selectTenantGameQuotaList(TenantGameQuota tenantGameQuota); - - /** - * 新增租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - int insertTenantGameQuota(TenantGameQuota tenantGameQuota); - - /** - * 修改租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - int updateTenantGameQuota(TenantGameQuota tenantGameQuota); - - /** - * 批量删除租户游戏配额 - * - * @param ids 需要删除的租户游戏配额主键集合 - * @return 结果 - */ - int deleteTenantGameQuotaByIds(Long[] ids); - - /** - * 删除租户游戏配额信息 - * - * @param id 租户游戏配额主键 - * @return 结果 - */ - int deleteTenantGameQuotaById(Long id); - - /** - * 余额变化 - * - * @param balanceChangesDTO 余额更改为 - * @return {@link Boolean } - */ - Boolean balanceChanges(BalanceChangesDTO balanceChangesDTO); - - - - /** - * 真实余额变化 - * - * @param balanceRealChangesDTO 余额更改为 - * @return {@link Boolean } - */ - Boolean balanceRealChanges(BalanceRealChangesDTO balanceRealChangesDTO); - - /** - * 游戏余额兑换 - * - * @param gameBalanceExchange 游戏余额兑换 - * @return {@link BigDecimal } - */ - BigDecimal gameBalanceExchange(GameBalanceExchange gameBalanceExchange); - - /** - * 查询租户游戏配额 - * - * @param tenantKey 租户游戏配额主键 - * @return 租户游戏配额 - */ - TenantGameQuota selectTenantGameQuotaByTenantKey(String tenantKey, String quotaType); -} diff --git a/ff-game/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java b/ff-game/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java deleted file mode 100644 index 38e70b5..0000000 --- a/ff-game/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.common.service; - -import java.util.List; -import com.ff.common.domain.TenantQuotaExchange; -import org.apache.poi.ss.formula.functions.T; - -/** - * 币种汇率Service接口 - * - * @author shi - * @date 2025-02-21 - */ -public interface ITenantQuotaExchangeService -{ - /** - * 查询币种汇率 - * - * @param id 币种汇率主键 - * @return 币种汇率 - */ - TenantQuotaExchange selectTenantQuotaExchangeById(Long id); - - /** - * 查询币种汇率列表 - * - * @param tenantQuotaExchange 币种汇率 - * @return 币种汇率集合 - */ - List selectTenantQuotaExchangeList(TenantQuotaExchange tenantQuotaExchange); - - - /** - * 获取租户配额交换 - * - * @param currencyCode 货币代码 - * @param exchangeCurrencyCode 兑换货币代码 - * @return {@link TenantQuotaExchange } - */ - TenantQuotaExchange getTenantQuotaExchange(String currencyCode,String exchangeCurrencyCode); - - /** - * 新增币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - int insertTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange); - - /** - * 修改币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - int updateTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange); - - /** - * 批量删除币种汇率 - * - * @param ids 需要删除的币种汇率主键集合 - * @return 结果 - */ - int deleteTenantQuotaExchangeByIds(Long[] ids); - - /** - * 删除币种汇率信息 - * - * @param id 币种汇率主键 - * @return 结果 - */ - int deleteTenantQuotaExchangeById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/CurrencyServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/CurrencyServiceImpl.java deleted file mode 100644 index 545bf81..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/CurrencyServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.common.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.common.mapper.CurrencyMapper; -import com.ff.common.domain.Currency; -import com.ff.common.service.ICurrencyService; - -/** - * 币种Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class CurrencyServiceImpl implements ICurrencyService -{ - @Autowired - private CurrencyMapper currencyMapper; - - /** - * 查询币种 - * - * @param id 币种主键 - * @return 币种 - */ - @Override - public Currency selectCurrencyById(Long id) - { - return currencyMapper.selectCurrencyById(id); - } - - /** - * 查询币种列表 - * - * @param currency 币种 - * @return 币种 - */ - @Override - public List selectCurrencyList(Currency currency) - { - return currencyMapper.selectCurrencyList(currency); - } - - /** - * 新增币种 - * - * @param currency 币种 - * @return 结果 - */ - @Override - public int insertCurrency(Currency currency) - { - currency.setId(IdUtil.getSnowflakeNextId()); - currency.setCreateTime(DateUtils.getNowDate()); - return currencyMapper.insertCurrency(currency); - } - - /** - * 修改币种 - * - * @param currency 币种 - * @return 结果 - */ - @Override - public int updateCurrency(Currency currency) - { - currency.setUpdateTime(DateUtils.getNowDate()); - return currencyMapper.updateCurrency(currency); - } - - /** - * 批量删除币种 - * - * @param ids 需要删除的币种主键 - * @return 结果 - */ - @Override - public int deleteCurrencyByIds(Long[] ids) - { - return currencyMapper.deleteCurrencyByIds(ids); - } - - /** - * 删除币种信息 - * - * @param id 币种主键 - * @return 结果 - */ - @Override - public int deleteCurrencyById(Long id) - { - return currencyMapper.deleteCurrencyById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/LangServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/LangServiceImpl.java deleted file mode 100644 index 3e78305..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/LangServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.common.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.common.mapper.LangMapper; -import com.ff.common.domain.Lang; -import com.ff.common.service.ILangService; - -/** - * 系统语种管理 Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class LangServiceImpl implements ILangService -{ - @Autowired - private LangMapper langMapper; - - /** - * 查询系统语种管理 - * - * @param id 系统语种管理 主键 - * @return 系统语种管理 - */ - @Override - public Lang selectLangById(Long id) - { - return langMapper.selectLangById(id); - } - - /** - * 查询系统语种管理 列表 - * - * @param lang 系统语种管理 - * @return 系统语种管理 - */ - @Override - public List selectLangList(Lang lang) - { - return langMapper.selectLangList(lang); - } - - /** - * 新增系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - @Override - public int insertLang(Lang lang) - { - lang.setId(IdUtil.getSnowflakeNextId()); - lang.setCreateTime(DateUtils.getNowDate()); - return langMapper.insertLang(lang); - } - - /** - * 修改系统语种管理 - * - * @param lang 系统语种管理 - * @return 结果 - */ - @Override - public int updateLang(Lang lang) - { - lang.setUpdateTime(DateUtils.getNowDate()); - return langMapper.updateLang(lang); - } - - /** - * 批量删除系统语种管理 - * - * @param ids 需要删除的系统语种管理 主键 - * @return 结果 - */ - @Override - public int deleteLangByIds(Long[] ids) - { - return langMapper.deleteLangByIds(ids); - } - - /** - * 删除系统语种管理 信息 - * - * @param id 系统语种管理 主键 - * @return 结果 - */ - @Override - public int deleteLangById(Long id) - { - return langMapper.deleteLangById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/TenantAgentPlatformServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/TenantAgentPlatformServiceImpl.java deleted file mode 100644 index 1c45aa6..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/TenantAgentPlatformServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.common.service.impl; - -import java.util.List; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.common.mapper.TenantAgentPlatformMapper; -import com.ff.common.domain.TenantAgentPlatform; -import com.ff.common.service.ITenantAgentPlatformService; -import cn.hutool.core.util.IdUtil; - - -/** - * 平台利润成本管理Service业务层处理 - * - * @author shi - * @date 2025-02-27 - */ -@Service -public class TenantAgentPlatformServiceImpl implements ITenantAgentPlatformService -{ - @Autowired - private TenantAgentPlatformMapper tenantAgentPlatformMapper; - - /** - * 查询平台利润成本管理 - * - * @param id 平台利润成本管理主键 - * @return 平台利润成本管理 - */ - @Override - public TenantAgentPlatform selectTenantAgentPlatformById(Long id) - { - return tenantAgentPlatformMapper.selectTenantAgentPlatformById(id); - } - - /** - * 查询平台利润成本管理列表 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 平台利润成本管理 - */ - @Override - public List selectTenantAgentPlatformList(TenantAgentPlatform tenantAgentPlatform) - { - return tenantAgentPlatformMapper.selectTenantAgentPlatformList(tenantAgentPlatform); - } - - /** - * 新增平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - @Override - public int insertTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform) - { - tenantAgentPlatform.setId(IdUtil.getSnowflakeNextId()); - tenantAgentPlatform.setCreateTime(DateUtils.getNowDate()); - return tenantAgentPlatformMapper.insertTenantAgentPlatform(tenantAgentPlatform); - } - - /** - * 修改平台利润成本管理 - * - * @param tenantAgentPlatform 平台利润成本管理 - * @return 结果 - */ - @Override - public int updateTenantAgentPlatform(TenantAgentPlatform tenantAgentPlatform) - { - tenantAgentPlatform.setUpdateTime(DateUtils.getNowDate()); - return tenantAgentPlatformMapper.updateTenantAgentPlatform(tenantAgentPlatform); - } - - /** - * 批量删除平台利润成本管理 - * - * @param ids 需要删除的平台利润成本管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentPlatformByIds(Long[] ids) - { - return tenantAgentPlatformMapper.deleteTenantAgentPlatformByIds(ids); - } - - /** - * 删除平台利润成本管理信息 - * - * @param id 平台利润成本管理主键 - * @return 结果 - */ - @Override - public int deleteTenantAgentPlatformById(Long id) - { - return tenantAgentPlatformMapper.deleteTenantAgentPlatformById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java deleted file mode 100644 index 4c4f790..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.ff.common.service.impl; - -import java.math.BigDecimal; -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.common.mapper.TenantGameQuotaFlowMapper; -import com.ff.common.domain.TenantGameQuotaFlow; -import com.ff.common.service.ITenantGameQuotaFlowService; - -/** - * 租户游戏额度流水Service业务层处理 - * - * @author shi - * @date 2025-02-12 - */ -@Service -public class TenantGameQuotaFlowServiceImpl implements ITenantGameQuotaFlowService { - @Autowired - private TenantGameQuotaFlowMapper tenantGameQuotaFlowMapper; - - /** - * 查询租户游戏额度流水 - * - * @param id 租户游戏额度流水主键 - * @return 租户游戏额度流水 - */ - @Override - public TenantGameQuotaFlow selectTenantGameQuotaFlowById(Long id) { - return tenantGameQuotaFlowMapper.selectTenantGameQuotaFlowById(id); - } - - /** - * 查询租户游戏额度流水列表 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 租户游戏额度流水 - */ - @Override - public List selectTenantGameQuotaFlowList(TenantGameQuotaFlow tenantGameQuotaFlow) { - return tenantGameQuotaFlowMapper.selectTenantGameQuotaFlowList(tenantGameQuotaFlow); - } - - /** - * 新增租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - @Override - public int insertTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow) { - tenantGameQuotaFlow.setId(IdUtil.getSnowflakeNextId()); - tenantGameQuotaFlow.setCreateTime(DateUtils.getNowDate()); - return tenantGameQuotaFlowMapper.insertTenantGameQuotaFlow(tenantGameQuotaFlow); - } - - /** - * 修改租户游戏额度流水 - * - * @param tenantGameQuotaFlow 租户游戏额度流水 - * @return 结果 - */ - @Override - public int updateTenantGameQuotaFlow(TenantGameQuotaFlow tenantGameQuotaFlow) { - tenantGameQuotaFlow.setUpdateTime(DateUtils.getNowDate()); - return tenantGameQuotaFlowMapper.updateTenantGameQuotaFlow(tenantGameQuotaFlow); - } - - /** - * 批量删除租户游戏额度流水 - * - * @param ids 需要删除的租户游戏额度流水主键 - * @return 结果 - */ - @Override - public int deleteTenantGameQuotaFlowByIds(Long[] ids) { - return tenantGameQuotaFlowMapper.deleteTenantGameQuotaFlowByIds(ids); - } - - /** - * 删除租户游戏额度流水信息 - * - * @param id 租户游戏额度流水主键 - * @return 结果 - */ - @Override - public int deleteTenantGameQuotaFlowById(Long id) { - return tenantGameQuotaFlowMapper.deleteTenantGameQuotaFlowById(id); - } - - /** - * 通过会员id获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link BigDecimal } - */ - @Override - public BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow) { - return tenantGameQuotaFlowMapper.getExchangeMoneyByMemberId(tenantGameQuotaFlow); - } - - - /** - * 通过租户密钥获取余额 - * - * @param tenantGameQuotaFlow 租户游戏配额流 - * @return {@link List }<{@link TenantGameQuotaFlow }> - */ - @Override - public List getBalanceByTenantKey(TenantGameQuotaFlow tenantGameQuotaFlow) { - return tenantGameQuotaFlowMapper.getBalanceByTenantKey(tenantGameQuotaFlow); - } -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java deleted file mode 100644 index ed79abd..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java +++ /dev/null @@ -1,473 +0,0 @@ -package com.ff.common.service.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.Constants; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.service.ITenantPlatformService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.QuotaUtils; -import com.ff.common.domain.TenantGameQuota; -import com.ff.common.domain.TenantGameQuotaFlow; -import com.ff.common.domain.TenantQuotaExchange; -import com.ff.common.dto.BalanceChangesDTO; -import com.ff.common.dto.BalanceRealChangesDTO; -import com.ff.common.dto.GameBalanceExchange; -import com.ff.common.mapper.TenantGameQuotaMapper; -import com.ff.common.service.ITenantGameQuotaFlowService; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.common.service.ITenantQuotaExchangeService; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.MemberInfoRequestDTO; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.List; -import java.util.Map; - -/** - * 租户游戏配额Service业务层处理 - * - * @author shi - * @date 2025-02-12 - */ -@Service -public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { - @Autowired - private TenantGameQuotaMapper tenantGameQuotaMapper; - - - @Resource - private ITenantGameQuotaFlowService tenantGameQuotaFlowService; - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private IMemberService memberService; - - @Autowired - private Map gamesService; - - @Resource - private ITenantQuotaExchangeService tenantQuotaExchangeService; - - @Resource - private ITenantPlatformService tenantPlatformService; - - /** - * 查询租户游戏配额 - * - * @param id 租户游戏配额主键 - * @return 租户游戏配额 - */ - @Override - public TenantGameQuota selectTenantGameQuotaById(Long id) { - return tenantGameQuotaMapper.selectTenantGameQuotaById(id); - } - - - /** - * 查询租户游戏配额列表 - * - * @param tenantGameQuota 租户游戏配额 - * @return 租户游戏配额 - */ - @Override - public List selectTenantGameQuotaList(TenantGameQuota tenantGameQuota) { - return tenantGameQuotaMapper.selectTenantGameQuotaList(tenantGameQuota); - } - - /** - * 新增租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - @Override - public int insertTenantGameQuota(TenantGameQuota tenantGameQuota) { - tenantGameQuota.setId(IdUtil.getSnowflakeNextId()); - tenantGameQuota.setCreateTime(DateUtils.getNowDate()); - return tenantGameQuotaMapper.insertTenantGameQuota(tenantGameQuota); - } - - /** - * 修改租户游戏配额 - * - * @param tenantGameQuota 租户游戏配额 - * @return 结果 - */ - @Override - public int updateTenantGameQuota(TenantGameQuota tenantGameQuota) { - tenantGameQuota.setUpdateTime(DateUtils.getNowDate()); - return tenantGameQuotaMapper.updateTenantGameQuota(tenantGameQuota); - } - - /** - * 批量删除租户游戏配额 - * - * @param ids 需要删除的租户游戏配额主键 - * @return 结果 - */ - @Override - public int deleteTenantGameQuotaByIds(Long[] ids) { - return tenantGameQuotaMapper.deleteTenantGameQuotaByIds(ids); - } - - /** - * 删除租户游戏配额信息 - * - * @param id 租户游戏配额主键 - * @return 结果 - */ - @Override - public int deleteTenantGameQuotaById(Long id) { - return tenantGameQuotaMapper.deleteTenantGameQuotaById(id); - } - - /** - * 平衡变化 - * - * @param balanceChangesDTO 余额更改为 - * @return {@link Boolean } - */ - @Override - public Boolean balanceChanges(BalanceChangesDTO balanceChangesDTO) { - - TenantGameQuota tenantGameQuota = this.selectTenantGameQuotaByTenantKey(balanceChangesDTO.getTenantKey(), balanceChangesDTO.getQuotaType()); - BigDecimal balanceBefore = tenantGameQuota.getBalance(); - BigDecimal balance = balanceChangesDTO.getBalance(); - //如果有汇率 则需要计算真实扣除额度 - if (!ObjectUtils.isEmpty(balanceChangesDTO.getActualBalance())) { - balance = NumberUtil.div(balance, balanceChangesDTO.getActualBalance(), 2, RoundingMode.FLOOR); - } - - if (BigDecimal.ZERO.compareTo(balance) >= 0) { - return Boolean.TRUE; - } - BigDecimal balanceAfter; - //判断是充值还是扣除 - if (balanceChangesDTO.getIsOut()) { - balanceAfter = NumberUtil.add(balanceBefore, balance); - } else { - balanceAfter = NumberUtil.sub(balanceBefore, balance); - } - //判断剩余额度是否大于0 - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(balanceChangesDTO.getTenantKey()); - if (TenantType.DEPOSIT.getCode().equals(tenantSecretKey.getTenantType()) && balanceAfter.compareTo(BigDecimal.ZERO) < 0) { - TenantGameQuota depositQuota = this.selectTenantGameQuotaByTenantKey(balanceChangesDTO.getTenantKey(), QuotaUtils.getReputationQuota(balanceChangesDTO.getQuotaType())); - //判断剩余额度是否大于0 - Assert.isTrue(balanceAfter.compareTo(depositQuota.getBalance().negate()) >= 0, "余额额度不足"); - } else { - //判断剩余额度是否大于0 - Assert.isTrue(balanceAfter.compareTo(BigDecimal.ZERO) >= 0, "余额额度不足"); - } - - - //修改余额 - Boolean changedBalanceResult = tenantGameQuotaMapper.changeBalance(TenantGameQuota.builder() - .tenantKey(balanceChangesDTO.getTenantKey()) - .balance(balanceAfter) - .quotaType(balanceChangesDTO.getQuotaType()) - .version(tenantGameQuota.getVersion()) - .build()); - Assert.isTrue(changedBalanceResult, "租户游戏额度操作失败"); - - //插入流水 - TenantGameQuotaFlow tenantGameQuotaFlow = TenantGameQuotaFlow.builder() - .quotaType(balanceChangesDTO.getQuotaType()) - .tenantKey(balanceChangesDTO.getTenantKey()) - .sourceId(balanceChangesDTO.getSourceId()) - .isOut(balanceChangesDTO.getIsOut()) - .platformCode(balanceChangesDTO.getPlatformCode()) - .currencyCode(balanceChangesDTO.getCurrencyCode()) - .balanceAfter(balanceAfter) - .exchangeRatio(balanceChangesDTO.getActualBalance()) - .exchangeMoney(balanceChangesDTO.getBalance()) - .memberId(balanceChangesDTO.getMemberId()) - .balance(balance) - .balanceBefore(balanceBefore) - .operationType(balanceChangesDTO.getOperationType()) - .build(); - tenantGameQuotaFlow.setRemark(balanceChangesDTO.getRemark()); - tenantGameQuotaFlow.setCreateTime(DateUtils.getNowDate()); - tenantGameQuotaFlow.setCreateBy(Constants.SYSTEM); - tenantGameQuotaFlowService.insertTenantGameQuotaFlow(tenantGameQuotaFlow); - return changedBalanceResult; - } - - /** - * 真实余额变化 - * - * @param balanceRealChangesDTO 余额更改为 - * @return {@link Boolean } - */ - @Override - public Boolean balanceRealChanges(BalanceRealChangesDTO balanceRealChangesDTO) { - TenantGameQuota tenantGameQuota = this.selectTenantGameQuotaByTenantKey(balanceRealChangesDTO.getTenantKey(), QuotaType.REAL_BALANCE.getCode()); - BigDecimal balanceBefore = tenantGameQuota.getBalance(); - BigDecimal balance = balanceRealChangesDTO.getBalance(); - //如果有汇率 则需要计算真实扣除额度 - if (!ObjectUtils.isEmpty(balanceRealChangesDTO.getActualBalance())) { - balance = NumberUtil.div(balance, balanceRealChangesDTO.getActualBalance(), 2, RoundingMode.FLOOR); - } - - if (BigDecimal.ZERO.compareTo(balance) >= 0) { - return Boolean.TRUE; - } - BigDecimal balanceAfter; - //判断是充值还是扣除 - if (balanceRealChangesDTO.getIsOut()) { - balanceAfter = NumberUtil.add(balanceBefore, balance); - } else { - balanceAfter = NumberUtil.sub(balanceBefore, balance); - } - //修改余额 - Boolean changedBalanceResult = tenantGameQuotaMapper.changeBalance(TenantGameQuota.builder() - .tenantKey(balanceRealChangesDTO.getTenantKey()) - .balance(balanceAfter) - .quotaType(QuotaType.REAL_BALANCE.getCode()) - .version(tenantGameQuota.getVersion()) - .build()); - - //插入流水 - TenantGameQuotaFlow tenantGameQuotaFlow = TenantGameQuotaFlow.builder() - .quotaType(QuotaType.REAL_BALANCE.getCode()) - .tenantKey(balanceRealChangesDTO.getTenantKey()) - .isOut(balanceRealChangesDTO.getIsOut()) - .currencyCode(balanceRealChangesDTO.getCurrencyCode()) - .balanceAfter(balanceAfter) - .exchangeRatio(balanceRealChangesDTO.getActualBalance()) - .exchangeMoney(balanceRealChangesDTO.getBalance()) - .balance(balance) - .balanceBefore(balanceBefore) - .operationType(balanceRealChangesDTO.getOperationType()) - .build(); - tenantGameQuotaFlow.setRemark(balanceRealChangesDTO.getRemark()); - tenantGameQuotaFlow.setCreateTime(DateUtils.getNowDate()); - tenantGameQuotaFlow.setCreateBy(Constants.SYSTEM); - tenantGameQuotaFlowService.insertTenantGameQuotaFlow(tenantGameQuotaFlow); - return changedBalanceResult; - } - - /** - * 游戏余额兑换 - * - * @param gameBalanceExchange 游戏余额兑换 - * @return {@link BigDecimal } - */ - @Override - public BigDecimal gameBalanceExchange(GameBalanceExchange gameBalanceExchange) { - - TenantQuotaExchange tenantQuotaExchange = tenantQuotaExchangeService.getTenantQuotaExchange(Constants.USDT, gameBalanceExchange.getCurrencyCode()); - ApiException.notNull(tenantQuotaExchange, ErrorCode.CURRENCY_EXCHANGE.getCode()); - - // 获取租户信息 - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(gameBalanceExchange.getTenantKey()); - - - // 获取平台币种格外成本 - TenantPlatform tenantPlatform = tenantPlatformService.findTenantPlatform(TenantPlatform.builder() - .tenantId(tenantSecretKey.getId()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .platformCode(gameBalanceExchange.getPlatformCode()) - .build()); - // 检查获取平台币种格外成本是否存在,否则抛出异常 - ApiException.notNull(tenantPlatform, ErrorCode.PLATFORM_NOT_EXIST.getCode()); - - - // 获取用户信息 - Member member = memberService.selectMemberByAccount(gameBalanceExchange.getAccount(), gameBalanceExchange.getCurrencyCode(), gameBalanceExchange.getPlatformCode()); - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - - // 检查用户是否存在,否则抛出异常 - ApiException.notNull(member, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - - // 根据平台代码获取平台接口 - IGamesService iGamesService = gamesService.get(gameBalanceExchange.getPlatformCode() + Constants.SERVICE); - - // 初始化额度类型为余额 - String quotaType = QuotaType.BALANCE.getCode(); - // 根据租户额度类型调整额度类型 - if (TenantQuotaType.SINGLE.getCode().equals(tenantSecretKey.getQuotaType())) { - quotaType = QuotaUtils.getPlatformQuota(gameBalanceExchange.getPlatformCode(), gameBalanceExchange.getCurrencyCode()); - } - - // 判断操作类型(出账/入账) - boolean isOut = gameBalanceExchange.getTransferType().equals(TransferType.ALL.getCode()); - // 初始化操作金额 - BigDecimal balanceRequestAmount = gameBalanceExchange.getAmount(); - - // 如果是出账操作 - if (isOut) { - // 获取第三方钱包余额 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(gameBalanceExchange.getAgentId()) - .currency(gameBalanceExchange.getCurrency()) - .agentKey(gameBalanceExchange.getAgentKey()) - .build(); - balanceRequestAmount = iGamesService.getMemberInfo(gamesBaseRequestDTO).getBalance(); - - if (balanceRequestAmount.compareTo(BigDecimal.ZERO) <= 0) { - throw new ApiException(ErrorCode.INSUFFICIENT_PLAYER_BALANCE.getCode()); - } - - balanceRequestAmount = NumberUtil.add(balanceRequestAmount, NumberUtil.mul(balanceRequestAmount, NumberUtil.div(tenantPlatform.getUseCost(), Constants.HUNDRED))); - - // 计算累计转入和转出金额 - BigDecimal balanceInto = tenantGameQuotaFlowService.getExchangeMoneyByMemberId(TenantGameQuotaFlow.builder() - .isOut(Boolean.TRUE) - .quotaType(quotaType) - .tenantKey(gameBalanceExchange.getTenantKey()) - .memberId(member.getId()) - .build()); - BigDecimal balanceOut = NumberUtil.add(tenantGameQuotaFlowService.getExchangeMoneyByMemberId(TenantGameQuotaFlow.builder() - .isOut(Boolean.FALSE) - .quotaType(quotaType) - .tenantKey(gameBalanceExchange.getTenantKey()) - .memberId(member.getId()) - .build()), BigDecimal.ZERO); - - // 初始化平台额度 - BigDecimal platformBalance = BigDecimal.ZERO; - // 确保转入金额不超过转出额度 - if (NumberUtil.add(balanceInto, balanceRequestAmount).compareTo(balanceOut) > 0) { - BigDecimal difference = NumberUtil.sub(balanceOut, balanceInto); - platformBalance = NumberUtil.sub(balanceRequestAmount, difference); - balanceRequestAmount = difference; - } - - // 如果有平台额度变化,进行余额调整 - if (platformBalance.compareTo(BigDecimal.ZERO) > 0) { - this.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.TRUE) - .platformCode(gameBalanceExchange.getPlatformCode()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .tenantKey(gameBalanceExchange.getTenantKey()) - .balance(platformBalance) - .sourceId(gameBalanceExchange.getSourceId()) - .memberId(member.getId()) - .operationType(OperationType.API_BALANCE.getCode()) - .remark(OperationType.API_BALANCE.getDescription()) - .quotaType(QuotaUtils.getFalseTenantQuota(gameBalanceExchange.getPlatformCode(), gameBalanceExchange.getCurrencyCode())) - .build()); - } - - // 进行租户余额调整 - this.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.TRUE) - .sourceId(gameBalanceExchange.getSourceId()) - .platformCode(gameBalanceExchange.getPlatformCode()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .actualBalance(tenantQuotaExchange.getActualBalance()) - .tenantKey(gameBalanceExchange.getTenantKey()) - .balance(balanceRequestAmount) - .memberId(member.getId()) - .operationType(OperationType.API_BALANCE.getCode()) - .quotaType(quotaType) - .remark(OperationType.API_BALANCE.getDescription()) - .build()); - - } else { - - // 如果是扣账操作,首先处理假额度 - String falseTenantQuotaType = QuotaUtils.getFalseTenantQuota(gameBalanceExchange.getPlatformCode(), gameBalanceExchange.getCurrencyCode()); - TenantGameQuota falseTenantQuota = selectTenantGameQuotaByTenantKey(tenantSecretKey.getTenantKey(), falseTenantQuotaType); - balanceRequestAmount = NumberUtil.add(gameBalanceExchange.getAmount(), NumberUtil.mul(gameBalanceExchange.getAmount(), NumberUtil.div(tenantPlatform.getUseCost(), Constants.HUNDRED))); - if (falseTenantQuota.getBalance().compareTo(BigDecimal.ZERO) > 0) { - - - BigDecimal falseQuotaBalance = falseTenantQuota.getBalance(); - if (falseQuotaBalance.compareTo(balanceRequestAmount) >= 0) { - // 假额度足够扣除本次所需金额 - this.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.FALSE) - .sourceId(gameBalanceExchange.getSourceId()) - .platformCode(gameBalanceExchange.getPlatformCode()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .tenantKey(tenantSecretKey.getTenantKey()) - .balance(balanceRequestAmount) - .memberId(member.getId()) - .operationType(OperationType.API_BALANCE.getCode()) - .quotaType(falseTenantQuotaType) - .remark(OperationType.API_BALANCE.getDescription()) - .build()); - balanceRequestAmount = BigDecimal.ZERO; - } else { - // 假额度不足以扣除本次所需金额,扣除全部假额度 - balanceRequestAmount = balanceRequestAmount.subtract(falseQuotaBalance); - this.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.FALSE) - .sourceId(gameBalanceExchange.getSourceId()) - .platformCode(gameBalanceExchange.getPlatformCode()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .tenantKey(tenantSecretKey.getTenantKey()) - .balance(falseQuotaBalance) - .memberId(member.getId()) - .operationType(OperationType.API_BALANCE.getCode()) - .quotaType(falseTenantQuotaType) - .remark(OperationType.API_BALANCE.getDescription()) - .build()); - } - } - // 处理剩余的入账金额 - if (balanceRequestAmount.compareTo(BigDecimal.ZERO) > 0) { - this.balanceChanges(BalanceChangesDTO.builder() - .isOut(Boolean.FALSE) - .sourceId(gameBalanceExchange.getSourceId()) - .platformCode(gameBalanceExchange.getPlatformCode()) - .currencyCode(gameBalanceExchange.getCurrencyCode()) - .actualBalance(tenantQuotaExchange.getActualBalance()) - .tenantKey(tenantSecretKey.getTenantKey()) - .balance(balanceRequestAmount) - .memberId(member.getId()) - .operationType(OperationType.API_BALANCE.getCode()) - .quotaType(quotaType) - .remark(OperationType.API_BALANCE.getDescription()) - .build()); - } - } - - TenantGameQuota tenantGameQuota = this.selectTenantGameQuotaByTenantKey(gameBalanceExchange.getTenantKey(), QuotaType.BALANCE.getCode()); - return tenantGameQuota.getBalance(); - } - - - /** - * 按租户密钥选择租户游戏配额 - * - * @param tenantKey 租户密钥 - * @param quotaType 配额类型 - * @return {@link TenantGameQuota } - */ - @Override - public TenantGameQuota selectTenantGameQuotaByTenantKey(String tenantKey, String quotaType) { - TenantGameQuota tenantGameQuota = tenantGameQuotaMapper.selectTenantGameQuotaByTenantKey(tenantKey, quotaType); - - //如果当前钱包不存在 - if (ObjectUtils.isEmpty(tenantGameQuota)) { - tenantGameQuota = TenantGameQuota.builder() - .tenantKey(tenantKey) - .id(IdUtil.getSnowflakeNextId()) - .balance(BigDecimal.ZERO) - .quotaType(quotaType) - .version(0) - .build(); - tenantGameQuotaMapper.insertTenantGameQuota(tenantGameQuota); - } - return tenantGameQuota; - } -} diff --git a/ff-game/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java b/ff-game/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java deleted file mode 100644 index 9cf1743..0000000 --- a/ff-game/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.ff.common.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.common.mapper.TenantQuotaExchangeMapper; -import com.ff.common.domain.TenantQuotaExchange; -import com.ff.common.service.ITenantQuotaExchangeService; - -/** - * 币种汇率Service业务层处理 - * - * @author shi - * @date 2025-02-21 - */ -@Service -public class TenantQuotaExchangeServiceImpl implements ITenantQuotaExchangeService -{ - @Autowired - private TenantQuotaExchangeMapper tenantQuotaExchangeMapper; - - /** - * 查询币种汇率 - * - * @param id 币种汇率主键 - * @return 币种汇率 - */ - @Override - public TenantQuotaExchange selectTenantQuotaExchangeById(Long id) - { - return tenantQuotaExchangeMapper.selectTenantQuotaExchangeById(id); - } - - /** - * 查询币种汇率列表 - * - * @param tenantQuotaExchange 币种汇率 - * @return 币种汇率 - */ - @Override - public List selectTenantQuotaExchangeList(TenantQuotaExchange tenantQuotaExchange) - { - return tenantQuotaExchangeMapper.selectTenantQuotaExchangeList(tenantQuotaExchange); - } - - /** - * 获取租户配额交换 - * - * @param currencyCode 货币代码 - * @param exchangeCurrencyCode 兑换货币代码 - * @return {@link TenantQuotaExchange } - */ - @Override - public TenantQuotaExchange getTenantQuotaExchange(String currencyCode, String exchangeCurrencyCode) { - return tenantQuotaExchangeMapper.getTenantQuotaExchange(currencyCode, exchangeCurrencyCode); - } - - /** - * 新增币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - @Override - public int insertTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange) - { - tenantQuotaExchange.setId(IdUtil.getSnowflakeNextId()); - tenantQuotaExchange.setCreateTime(DateUtils.getNowDate()); - return tenantQuotaExchangeMapper.insertTenantQuotaExchange(tenantQuotaExchange); - } - - /** - * 修改币种汇率 - * - * @param tenantQuotaExchange 币种汇率 - * @return 结果 - */ - @Override - public int updateTenantQuotaExchange(TenantQuotaExchange tenantQuotaExchange) - { - tenantQuotaExchange.setUpdateTime(DateUtils.getNowDate()); - return tenantQuotaExchangeMapper.updateTenantQuotaExchange(tenantQuotaExchange); - } - - /** - * 批量删除币种汇率 - * - * @param ids 需要删除的币种汇率主键 - * @return 结果 - */ - @Override - public int deleteTenantQuotaExchangeByIds(Long[] ids) - { - return tenantQuotaExchangeMapper.deleteTenantQuotaExchangeByIds(ids); - } - - /** - * 删除币种汇率信息 - * - * @param id 币种汇率主键 - * @return 结果 - */ - @Override - public int deleteTenantQuotaExchangeById(Long id) - { - return tenantQuotaExchangeMapper.deleteTenantQuotaExchangeById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java b/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java deleted file mode 100644 index a1964ef..0000000 --- a/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ff.config; - -import com.ff.base.datasource.DynamicDataSource; -import com.ff.base.system.domain.SysDatasource; -import com.ff.base.system.mapper.SysDatasourceMapper; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.system.service.ISysDictTypeService; -import com.ff.game.service.IPlatformService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.List; - -/** - * 启动项目时加载多数据源 - * - * @author liukang - */ -@Slf4j -@Component -public class ContentRefreshedEventListener implements ApplicationListener { - - @Resource - private DynamicDataSource dynamicDataSource; - - @Resource - private SysDatasourceMapper dataSourceMapper; - - @Resource - private ISysConfigService sysConfigService; - - @Resource - private ISysDictTypeService sysDictTypeService; - - @Resource - private IPlatformService platformService; - /** - * 项目加载时运行 - * - * @param event - */ - @Override - public void onApplicationEvent(ContextRefreshedEvent event) { - // 创建所有数据源 - SysDatasource sysDatasource = new SysDatasource(); - sysDatasource.setStatus("1"); - List dataourceList = dataSourceMapper.selectSysDatasourceList(sysDatasource); - if (!CollectionUtils.isEmpty(dataourceList)) { - dynamicDataSource.createDataSource(dataourceList); - } - sysConfigService.loadingConfigCache(); - sysDictTypeService.loadingDictCache(); - - platformService.loadToCache(); - } -} diff --git a/ff-game/src/main/java/com/ff/config/KeyConfig.java b/ff-game/src/main/java/com/ff/config/KeyConfig.java deleted file mode 100644 index bdf7724..0000000 --- a/ff-game/src/main/java/com/ff/config/KeyConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ff.config; - -import com.ff.base.system.domain.TenantSecretKey; -import org.springframework.stereotype.Component; - -/** - * 关键 工具 - * - * @author shi - * @date 2025/02/11 - */ -@Component -public class KeyConfig { - - // 定义一个 ThreadLocal 变量,持有当前线程的全局变量 - private ThreadLocal threadLocalVariable = new ThreadLocal<>(); - - /** - * 设置 - * - * @param value 价值 - */ - public void set(TenantSecretKey value) { - threadLocalVariable.set(value); - } - - - /** - * 得到 - * - * @return {@link String } - */ - public TenantSecretKey get() { - return threadLocalVariable.get(); - } - - - /** - * 清楚 - */ - public void clear() { - threadLocalVariable.remove(); - } -} diff --git a/ff-game/src/main/java/com/ff/delay/DelayService.java b/ff-game/src/main/java/com/ff/delay/DelayService.java deleted file mode 100644 index c880667..0000000 --- a/ff-game/src/main/java/com/ff/delay/DelayService.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ff.delay; - -import com.ff.base.manager.AsyncManager; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import java.util.concurrent.DelayQueue; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; - -/** - * @author cengy - */ -@Service -@Slf4j -public class DelayService { - private DelayQueue delayQueue = new DelayQueue<>(); - - private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - - public void addTask(DelayTask delayTask) { - delayQueue.put(delayTask); - } - - // 启动延迟队列任务处理 - @PostConstruct - public void startProcessing() { - // 每 1 秒钟执行一次任务检查 - scheduler.scheduleAtFixedRate(this::processTasks, 10, 1, TimeUnit.SECONDS); - } - - // 处理过期任务 - private void processTasks() { - DelayTask task = null; // 阻塞,直到队列中有任务到期 - try { - task = delayQueue.take(); - } catch (InterruptedException e) { - log.error("获取过期任务失败", e); - } - if (null == task) { - return; - } - AsyncManager.me().execute(new DelayRunnable(task)); - } - - public static class DelayRunnable implements Runnable { - - DelayTask delayTask; - - public DelayRunnable(DelayTask delayTask) { - this.delayTask = delayTask; - } - - @Override - public void run() { - try { - delayTask.execute(); - } catch (Exception e) { - log.error("处理过期任务出错", e); - } - } - } -} diff --git a/ff-game/src/main/java/com/ff/delay/DelayTask.java b/ff-game/src/main/java/com/ff/delay/DelayTask.java deleted file mode 100644 index e32cc7d..0000000 --- a/ff-game/src/main/java/com/ff/delay/DelayTask.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ff.delay; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.concurrent.Delayed; -import java.util.concurrent.TimeUnit; - -/** - * @author cengy - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public abstract class DelayTask implements Delayed { - private long delayTime; - private long expireTime; - - public DelayTask(long delayTime) { - this.delayTime = delayTime; - this.expireTime = System.currentTimeMillis() + delayTime; // 设置过期时间 - } - - @Override - public long getDelay(TimeUnit unit) { - long diff = expireTime - System.currentTimeMillis(); - return unit.convert(diff, TimeUnit.MILLISECONDS); - } - - @Override - public int compareTo(Delayed o) { - if (this.expireTime < ((DelayTask) o).expireTime) { - return -1; - } - if (this.expireTime > ((DelayTask) o).expireTime) { - return 1; - } - return 0; - } - - abstract public void execute(); -} - diff --git a/ff-game/src/main/java/com/ff/file/controller/FileController.java b/ff-game/src/main/java/com/ff/file/controller/FileController.java deleted file mode 100644 index ba36f07..0000000 --- a/ff-game/src/main/java/com/ff/file/controller/FileController.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.ff.file.controller; - -import com.ff.base.annotation.Anonymous; -import com.ff.base.constant.Constants; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.MessageUtils; -import com.ff.file.service.ISysFileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import java.util.Map; - -/** - * 文件管理 - * - * @author ff - */ -@RestController -@RequestMapping("/file") -public class FileController { - - @Autowired - private Map fileServiceMap; - - /** - * 通用上传请求(单个) - */ - @PostMapping("/upload/{service}") - @Anonymous - public AjaxResult uploadFile(MultipartFile file, @PathVariable String service) { - - ISysFileService sysFileService = fileServiceMap.get(service + Constants.SERVICE); - if (sysFileService == null) { - throw new BaseException(MessageUtils.message("upload.file.server.not.exist")); - } - return sysFileService.uploadFile(file); - - } - -} diff --git a/ff-game/src/main/java/com/ff/file/service/ISysFileService.java b/ff-game/src/main/java/com/ff/file/service/ISysFileService.java deleted file mode 100644 index 485a87a..0000000 --- a/ff-game/src/main/java/com/ff/file/service/ISysFileService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ff.file.service; - -import com.ff.base.core.domain.AjaxResult; -import org.springframework.web.multipart.MultipartFile; - -/** - * 文件上传接口 - * - * @author ruoyi - */ -public interface ISysFileService -{ - /** - * 文件上传接口 - * - * @param file 上传的文件 - * @return 访问地址 - * @throws Exception - */ - public AjaxResult uploadFile(MultipartFile file) ; -} diff --git a/ff-game/src/main/java/com/ff/file/service/impl/LocalSysFileServiceImpl.java b/ff-game/src/main/java/com/ff/file/service/impl/LocalSysFileServiceImpl.java deleted file mode 100644 index 7001aa5..0000000 --- a/ff-game/src/main/java/com/ff/file/service/impl/LocalSysFileServiceImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ff.file.service.impl; - -import com.ff.base.config.FFConfig; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.MessageUtils; -import com.ff.base.utils.file.FileUploadUtils; -import com.ff.base.utils.file.FileUtils; -import com.ff.file.service.ISysFileService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; - -/** - * 本地文件存储 - * - * @author ruoyi - */ -@Service("localSysFileService") -@Slf4j -public class LocalSysFileServiceImpl implements ISysFileService { - /** - * 本地文件上传接口 - * - * @param file 上传的文件 - * @return 访问地址 - * @throws Exception - */ - @Override - public AjaxResult uploadFile(MultipartFile file) { - try { - // 上传文件路径 - String filePath = FFConfig.getUploadPath(); - // 上传并返回新文件名称 - String fileName = FileUploadUtils.upload(filePath, file); - AjaxResult ajax = AjaxResult.success(); - ajax.put("url", fileName); - ajax.put("fileName", FileUtils.getName(fileName)); - ajax.put("originalFilename", file.getOriginalFilename()); - return ajax; - } catch (IOException e) { - log.error("本地文件上传异常,{}", e); - throw new BaseException(MessageUtils.message("upload.file.exception"), e.getMessage()); - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/IGamesService.java b/ff-game/src/main/java/com/ff/game/api/IGamesService.java deleted file mode 100644 index d8ed023..0000000 --- a/ff-game/src/main/java/com/ff/game/api/IGamesService.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.ff.game.api; - - - -import com.ff.game.api.request.*; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.domain.GameFreeRecord; - -import java.util.List; - -/** - * 游戏数据解析服务 - * - * @author shi - * @date 2024/10/21 - */ -public interface IGamesService { - - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO); - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO); - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - String loginWithoutRedirect(GamesLogin gamesLogin); - - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO); - - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO); - - - /** - * 汇兑转移状态确认 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link ExchangeTransferStatusResponseDTO } - */ - ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO); - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO); - - - /** - * 按历史时间获取投注记录 部分平台需要两个接口同时跑投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO); - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest); - - - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO); - - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO); - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO); - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO); - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO); - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO); - - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO); - -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/address/MyAEAddressSource.java b/ff-game/src/main/java/com/ff/game/api/ae/address/MyAEAddressSource.java deleted file mode 100644 index 01a76ab..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/address/MyAEAddressSource.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.ae.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyAEAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.AE.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, ""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/ae/client/AEClient.java b/ff-game/src/main/java/com/ff/game/api/ae/client/AEClient.java deleted file mode 100644 index 032cc08..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/client/AEClient.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.ff.game.api.ae.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.ae.address.MyAEAddressSource; -import com.ff.game.api.ae.dto.*; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.xk.dto.XKKickMemberAllDTO; -import com.ff.game.api.xk.dto.XKKickMemberDTO; - -import java.util.Map; - -/** - * xk 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyAEAddressSource.class) -public interface AEClient { - /** - * 创建成员 - * - * @param params 参数 - * @return {@link String } - */ - @Post(url ="/wallet/createMember", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AEResponse createMember(@Body Map params); - - /** - * 获取会员信息 - * - * @param params 参数 - * @return {@link AEMemberInfo } - */ - @Post(url ="/wallet/getBalance", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AEMemberInfo getMemberInfo(@Body Map params); - - /** - * 无重定向登录 - * - * @param params 参数 - * @return {@link AELoginResponse } - */ - @Post("/wallet/login") - AELoginResponse loginWithoutRedirect(@Body Map params); - - - - /** - * 按代理id进行交换转账 - * - * @param params 参数 - * @return {@link JILIExchangeMoneyResponseDTO } - */ - @Post(url ="/wallet/deposit", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AETransactionResponse deposit(@Body Map params); - - - @Post(url ="/wallet/withdraw", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AETransactionResponse withdraw(@Body Map params); - - - /** - * 汇兑转移状态 - * - * @param params 参数 - * @return {@link AEExchangeTransferStatusResponse } - */ - @Post(url ="/wallet/checkTransferOperation", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AEExchangeTransferStatusResponse exchangeTransferStatus(@Body Map params); - - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link AEBetRecordResponse } - */ - @Post(url ="https://tttfetch.apihub55.com/fetch/gzip/getTransactionByUpdateDate", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AEBetRecordResponse getBetRecordByTime(@Body Map params); - - /** - * 按时间获取投注历史记录 - * - * @param params 参数 - * @return {@link AEBetRecordResponse } - */ - @Post(url ="https://tttfetch.apihub55.com/fetch/gzip/getTransactionByTxTime", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - AEBetRecordResponse getBetHistoryRecordByTime(@Body Map params); - /** - * 踢出队员 - * - * @param params 参数 - * @return {@link JILIKickMemberDTO } - */ - @Post(url ="/wallet/logout", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - XKKickMemberDTO kickMember(@Body Map params); - - /** - * 踢出所有队员 - * - * @param params 参数 - * @return {@link JILIKickMemberAllDTO } - */ - @Get("/kickMemberAll") - XKKickMemberAllDTO kickMemberAll(@JSONBody Map params); - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEBetRecordResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AEBetRecordResponse.java deleted file mode 100644 index a288b22..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEBetRecordResponse.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * aebet记录响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class AEBetRecordResponse { - - /** - * 状态代码 - */ - @JsonProperty("status") - private Integer status; - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; - /** - * 交易记录 - */ - @JsonProperty("transactions") - private List transactions; - - @Data - public static class Transaction { - - /** - * 游戏类型 - */ - @JsonProperty("gameType") - private String gameType; - - /** - * 返还金额(包含下注金额) - */ - @JsonProperty("winAmount") - private BigDecimal winAmount; - - /** - * 交易时间 - */ - @JsonProperty("txTime") - private Date txTime; - - /** - * 结算状态 - */ - @JsonProperty("settleStatus") - private Integer settleStatus; - - /** - * 游戏信息 - */ - @JsonProperty("gameInfo") - private String gameInfo; - - /** - * 真实返还金额 - */ - @JsonProperty("realWinAmount") - private BigDecimal realWinAmount; - - /** - * 更新时间 - */ - @JsonProperty("updateTime") - private String updateTime; - - /** - * 真实下注金额 - */ - @JsonProperty("realBetAmount") - private BigDecimal realBetAmount; - - /** - * 用户ID - */ - @JsonProperty("userId") - private String userId; - - /** - * 下注类型 - */ - @JsonProperty("betType") - private String betType; - - /** - * 平台名称 - */ - @JsonProperty("platform") - private String platform; - - /** - * 交易状态 - */ - @JsonProperty("txStatus") - private Integer txStatus; - - /** - * 下注金额 - */ - @JsonProperty("betAmount") - private BigDecimal betAmount; - - /** - * 游戏名称 - */ - @JsonProperty("gameName") - private String gameName; - - /** - * 平台注单号 - */ - @JsonProperty("platformTxId") - private String platformTxId; - - /** - * 下注时间 - */ - @JsonProperty("betTime") - private Date betTime; - - /** - * 平台游戏代码 - */ - @JsonProperty("gameCode") - private String gameCode; - - /** - * 玩家货币代码 - */ - @JsonProperty("currency") - private String currency; - - /** - * 累积奖金的获胜金额 - */ - @JsonProperty("jackpotWinAmount") - private BigDecimal jackpotWinAmount; - - /** - * 累积奖金贡献金额 - */ - @JsonProperty("jackpotBetAmount") - private BigDecimal jackpotBetAmount; - - /** - * 平台有效投注 - */ - @JsonProperty("turnover") - private BigDecimal turnover; - - /** - * 游戏商的回合识别码 - */ - @JsonProperty("roundId") - private String roundId; - - - - /** - * 子注单号 - */ - @JsonProperty("refPlatformTxId") - private String refPlatformTxId; - - /** - * 是否为特殊收费游戏 - */ - @JsonProperty("isPremium") - private Boolean isPremium; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEExchangeTransferStatusResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AEExchangeTransferStatusResponse.java deleted file mode 100644 index 8e68c0f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEExchangeTransferStatusResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - - -/** - * aeexchange传输状态响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class AEExchangeTransferStatusResponse { - - /** - * 响应状态 - */ - @JsonProperty("status") - private String status; - - /** - * 情境 1:响应 status = 0000 & txStatus = 1 表示存款/提款成功 - * 情境 2:响应 status = 0000 & txStatus = 0 表示存款/提款失败 - * 情境 3:响应 status = 0000 & txStatus = 2 表示存款/提款处理中,可 3 秒后调用 checkTransferOperation API 确认回覆直到 txStatus = 0 或 1 的回覆 - * 情境 4:响应 status = 1017 表示交易不存在 - */ - @JsonProperty("txStatus") - private String txStatus; - - /** - * 当前余额 - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 转账金额 - */ - @JsonProperty("transferAmount") - private BigDecimal transferAmount; - - /** - * 转账类型(如:DEPOSIT 或 WITHDRAW) - */ - @JsonProperty("transferType") - private String transferType; - - /** - * 交易代码 - */ - @JsonProperty("txCode") - private String txCode; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AELoginResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AELoginResponse.java deleted file mode 100644 index 76b33ed..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AELoginResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * aelogin回应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class AELoginResponse { - /** - * 响应状态 - */ - @JsonProperty("status") - private Integer status; - - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; - - /** - * 登录 URL - */ - @JsonProperty("url") - private String url; - - /** - * 扩展字段,类型为列表,可以存储多项数据 - */ - @JsonProperty("extension") - private List extension; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AELogoutUserResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AELogoutUserResponse.java deleted file mode 100644 index 7451bce..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AELogoutUserResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * 注销用户响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class AELogoutUserResponse { - /** - * 状态代码 - */ - @JsonProperty("status") - private String status; - - /** - * 已注销的用户列表 - */ - @JsonProperty("logoutUsers") - private List logoutUsers; - - /** - * 用户数量 - */ - @JsonProperty("count") - private Integer count; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEMemberInfo.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AEMemberInfo.java deleted file mode 100644 index 5b51159..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEMemberInfo.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.ZonedDateTime; -import java.util.Date; -import java.util.List; - -/** - * AEMEMBER信息 - * - * @author shi - * @date 2025/03/31 - */ -@Data -public class AEMemberInfo { - /** - * 响应结果列表,包含用户信息 - */ - @JsonProperty("results") - private List result; - - /** - * 记录数量 - */ - @JsonProperty("count") - private int count; - - /** - * 查询时间 - */ - @JsonProperty("querytime") - private Date queryTime; - - /** - * 响应状态 - */ - @JsonProperty("status") - private Integer status; - - @Data - public static class UserInfo { - - /** - * 用户ID - */ - @JsonProperty("userId") - private String userId; - - /** - * 用户余额 - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 最后修改时间 - */ - @JsonProperty("lastModified") - private Date lastModified; - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AEResponse.java deleted file mode 100644 index 499a484..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AEResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.ae.dto; - -import lombok.Data; - -/** - * 航空响应 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class AEResponse { - /** - * 状态码 (String类型) - * 0000 - 成功 - * 其他 - 错误状态码 - */ - private String status; - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/dto/AETransactionResponse.java b/ff-game/src/main/java/com/ff/game/api/ae/dto/AETransactionResponse.java deleted file mode 100644 index 397d5ea..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/dto/AETransactionResponse.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ff.game.api.ae.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.ZonedDateTime; - -/** - * 电子交易响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class AETransactionResponse { - - /** - * 响应状态 - */ - @JsonProperty("status") - private String status; - - - /** - * 金额 - */ - @JsonProperty("amount") - private BigDecimal amount; - - /** - * 交易方法(如:DEPOSIT, WITHDRAW) - */ - @JsonProperty("method") - private String method; - - /** - * 数据库ID - */ - @JsonProperty("databaseId") - private int databaseId; - - /** - * 当前余额 - */ - @JsonProperty("currentBalance") - private BigDecimal currentBalance; - - /** - * 最后修改时间 - */ - @JsonProperty("lastModified") - private ZonedDateTime lastModified; - - /** - * 交易代码 - */ - @JsonProperty("txCode") - private String txCode; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ae/impl/GamesAEServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/ae/impl/GamesAEServiceImpl.java deleted file mode 100644 index 9cc6c0b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ae/impl/GamesAEServiceImpl.java +++ /dev/null @@ -1,655 +0,0 @@ -package com.ff.game.api.ae.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.common.dto.GameBalanceExchange; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.config.KeyConfig; -import com.ff.delay.DelayService; -import com.ff.delay.DelayTask; -import com.ff.game.api.IGamesService; -import com.ff.game.api.ae.client.AEClient; -import com.ff.game.api.ae.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.api.sv388.impl.SV388GamesServiceImpl; -import com.ff.game.api.xk.dto.XKKickMemberDTO; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; - - -/** - * AE 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("AEService") -@Slf4j -public class GamesAEServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - - @Resource - private IGameService gameService; - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - - @Resource - private IMemberService memberService; - - @Resource - private AEClient AEClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Resource - private DelayService delayService; - - /** - * 游戏id - */ - private static final Long GAME_ID = 1904452832756013817L; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link Map }<{@link String }, {@link Object }> - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Map params = new LinkedHashMap<>(); - params.put("cert", gamesBaseRequestDTO.getAgentKey()); - params.put("agentId", gamesBaseRequestDTO.getAgentId()); - return params; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesAEServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = this.getKey(createMemberRequestDTO); - params.put("userId", createMemberRequestDTO.getAccount()); - params.put("currency", createMemberRequestDTO.getCurrency()); - params.put("betLimit", JsonUtil.objToString(createMemberRequestDTO.getBetLimit())); - AEResponse aeResponse = AEClient.createMember(params); - String errorCode = aeResponse.getStatus(); - if (this.getIsSuccess(Integer.valueOf(errorCode))) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesAEServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map params = this.getKey(memberInfoRequestDTO); - params.put("alluser", 0); - params.put("userIds", memberInfoRequestDTO.getAccounts()); - AEMemberInfo memberInfo = AEClient.getMemberInfo(params); - //判断是否获取成功 - if (this.getIsSuccess(memberInfo.getStatus())) { - AEMemberInfo.UserInfo userInfo = memberInfo.getResult().get(0); - return MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(userInfo.getBalance()) - .account(memberInfoRequestDTO.getAccounts()) - .build(); - } else { - throw new ApiException(ErrorCode.ERROR.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesAEServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - - Map params = this.getKey(gamesLogin); - params.put("userId", gamesLogin.getAccount()); - params.put("externalURL", gamesLogin.getHomeUrl()); - params.put("language", gamesLogin.getLang()); - params.put("betLimit", gamesLogin.getBetLimit()); - AELoginResponse aeLoginResponse = AEClient.loginWithoutRedirect(params); - //判断是否获取成功 - if (this.getIsSuccess(aeLoginResponse.getStatus())) { - return aeLoginResponse.getUrl(); - } else { - throw new BaseException(aeLoginResponse.getDesc()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - Platform platform = gamesBaseRequestDTO.getVendor(); - Game game = gameService.selectGameById(GAME_ID); - //不存在这个游戏 - if (ObjectUtils.isEmpty(game)) { - game = new Game(); - game.setId(GAME_ID); - game.setSortNo(gameService.selectMaxSortNo(PlatformType.GAME_HALL.getCode(), GamePlatforms.AE.getCode()) + 1); - game.setPlatformCode(platform.getPlatformCode()); - game.setPlatformType(PlatformType.GAME_HALL.getCode()); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName("AE大厅"); - game.setCreateBy(Constants.SYSTEM); - NameInfo nameInfo = new NameInfo(); - nameInfo.setLang("zh-CN"); - nameInfo.setName("AE大厅"); - game.setNameInfo(Collections.singletonList(nameInfo)); - game.setGameId(StringUtils.addSuffix(GamePlatforms.AE.getCode(), 1)); - gameService.insertGame(game); - } - return CacheConstants.AE_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesAEServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.AE.getCode() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.AE.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - Map params = this.getKey(exchangeTransferMoneyRequestDTO); - AETransactionResponse deposit = null; - try { - if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - - params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("txCode", transactionId); - params.put("transferAmount", exchangeTransferMoneyRequestDTO.getAmount()); - deposit = AEClient.deposit(params); - - } else { - params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("txCode", transactionId); - params.put("withdrawType", 1); - deposit = AEClient.withdraw(params); - } - }finally { - BigDecimal coinBefore; - if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - coinBefore = NumberUtil.sub(deposit.getCurrentBalance(), deposit.getAmount()); - } else { - coinBefore = NumberUtil.add(deposit.getCurrentBalance(), deposit.getAmount()); - } - //判断是否转移成功 - if ("0000".equals(deposit.getStatus())) { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.IN_PROGRESS.getCode()); - } - //更新数据 - exchangeMoney.setBalance(deposit.getAmount()); - exchangeMoney.setCoinBefore(coinBefore); - exchangeMoney.setCoinAfter(deposit.getCurrentBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - - - } - - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link ExchangeTransferStatusResponseDTO } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesAEServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - Map paramsMap = this.getKey(exchangeTransferMoneyRequestDTO); - paramsMap.put("txCode", exchangeTransferMoneyRequestDTO.getOrderId()); - - AEExchangeTransferStatusResponse exchangeTransferStatusResponse = AEClient.exchangeTransferStatus(paramsMap); - Integer status = StatusType.IN_PROGRESS.getValue(); - if ("0000".equals(exchangeTransferStatusResponse.getStatus()) && "1".equals(exchangeTransferStatusResponse.getTxStatus())) { - status = StatusType.SUCCESS.getValue(); - } else if ("0000".equals(exchangeTransferStatusResponse.getStatus()) && "0".equals(exchangeTransferStatusResponse.getTxStatus())) { - status = StatusType.FAILURE.getValue(); - } else if ("1017".equals(exchangeTransferStatusResponse.getStatus())) { - status = StatusType.FAILURE.getValue(); - } - GameExchangeMoney exchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeMoneyId()); - //更新 - BigDecimal coinBefore; - if (TransferType.GAMES.getCode().equals(exchangeMoney.getExchangeType())) { - coinBefore = NumberUtil.sub(exchangeTransferStatusResponse.getBalance(), exchangeTransferStatusResponse.getTransferAmount()); - } else { - coinBefore = NumberUtil.add(exchangeTransferStatusResponse.getBalance(), exchangeTransferStatusResponse.getTransferAmount()); - } - - - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(exchangeTransferStatusResponse.getTransferAmount()) - .coinBefore(coinBefore) - .coinAfter(exchangeTransferStatusResponse.getBalance()) - .build(); - } - - class GetRealtimeRecordTask extends DelayTask { - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetRealtimeRecordTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - getRealtimeRecord(betRecordByTimeDTO); - } - } - - void getRealtimeRecord(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - log.info("GamesAEServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map params = this.getKey(betRecordByTimeDTO); - - String timeFrom = redisCache.getCacheObject(CacheConstants.AE_TIME_FROM); - if (StringUtils.isEmpty(timeFrom)) { - timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - } - - - params.put("timeFrom", timeFrom); - params.put("platform", "SEXYBCRT"); - params.put("delayTime", 10000); - AEBetRecordResponse aeBetRecordResponse = AEClient.getBetRecordByTime(params); - - //判断是否获取成功 - if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { - //数据组装 - this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO); - if (aeBetRecordResponse.getTransactions().size() >= 20000) { - delayService.addTask(new GetRealtimeRecordTask(betRecordByTimeDTO)); - } - //return Boolean.TRUE; - } else { - redisCache.deleteObject(CacheConstants.AE_TIME_FROM); - log.error("GamesAEServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); - //throw new BaseException(aeBetRecordResponse.getDesc()); - } - - } - - class GetHistoryRecordTask extends DelayTask { - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetHistoryRecordTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - getHistoryRecord(betRecordByTimeDTO); - } - } - - void getHistoryRecord(BetRecordByTimeDTO betRecordByTimeDTO) { - log.info("GamesAEServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", betRecordByTimeDTO); - Map params = this.getKey(betRecordByTimeDTO); - String startTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - - - params.put("startTime", startTime); - params.put("endTime", endTime); - params.put("platform", "SEXYBCRT"); - AEBetRecordResponse aeBetRecordResponse = AEClient.getBetHistoryRecordByTime(params); - - //判断是否获取成功 - if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { - //数据组装 - this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO); - if (aeBetRecordResponse.getTransactions().size() >= 20000) { - delayService.addTask(new GetHistoryRecordTask(betRecordByTimeDTO)); - } -// return Boolean.TRUE; - } else { - log.error("GamesAEServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); -// throw new BaseException(aeBetRecordResponse.getDesc()); - } - } - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - delayService.addTask(new GetRealtimeRecordTask(betRecordByTimeDTO)); - return Boolean.TRUE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - delayService.addTask(new GetHistoryRecordTask(betRecordByTimeDTO)); - return Boolean.TRUE; - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesAEServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map params = this.getKey(kickMemberRequestDTO); - params.put("userIds", kickMemberRequestDTO.getAccount()); - XKKickMemberDTO xkKickMemberDTO = AEClient.kickMember(params); - //判断是否获取成功 - if (this.getIsSuccess(xkKickMemberDTO.getCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(xkKickMemberDTO.getMsg()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param aeBetRecordResponse ae下注记录响应dto - */ - private synchronized void batchInsert(AEBetRecordResponse aeBetRecordResponse, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List dataBean = aeBetRecordResponse.getTransactions(); - - String timeFrom = null; - //数据转化 - for (AEBetRecordResponse.Transaction bean : dataBean) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(bean.getPlatform() + bean.getPlatformTxId()); - timeFrom = bean.getUpdateTime(); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.AE.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - if (StringUtils.isEmpty(timeFrom)) { - timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8") + "+08:00"; - } - redisCache.setCacheObject(CacheConstants.AE_TIME_FROM, timeFrom); - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - AEBetRecordResponse.Transaction resultBean = (AEBetRecordResponse.Transaction) gamesDataBuildDTO.getData(); - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUserId()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - - - // 判断输赢 - Integer gameStatus = GameStatus.FLAT.getCode(); - BigDecimal payoffAmount = BigDecimal.ZERO; - if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) > 0) { - gameStatus = GameStatus.WIN.getCode(); - payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()); - } else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) { - gameStatus = GameStatus.FAIL.getCode(); - payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs(); - } - - //结算状态 - int settlementStatus = SettlementStatusEnum.REVOKED.getCode(); - if (resultBean.getTxStatus() == 1) { - settlementStatus = SettlementStatusEnum.COMPLETED.getCode(); - } - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency())) - .memberId(member.getId()) - .gameCode(resultBean.getGameCode()) - .gameType(PlatformType.GAME_HALL.getCode()) - .platformCode(GamePlatforms.AE.getCode()) - .gameId(/*GAME_ID*/ StringUtils.addSuffix(GamePlatforms.AE.getCode(), 1)) - .gameName(resultBean.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(resultBean.getSettleStatus()) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getUserId()) - .wagersId(resultBean.getPlatform() + resultBean.getPlatformTxId()) - .wagersTime(resultBean.getBetTime().getTime()) - .betAmount(resultBean.getRealBetAmount()) - .payoffTime(resultBean.getTxTime().getTime()) - .payoffAmount(payoffAmount) - .betContent(resultBean.getGameInfo()) - .settlementTime(resultBean.getTxTime().getTime()) - .turnover(resultBean.getTurnover()) - .orderNo(String.valueOf(resultBean.getRoundId())) - .settlementStatus(settlementStatus) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/dg/address/MyDGAddressSource.java b/ff-game/src/main/java/com/ff/game/api/dg/address/MyDGAddressSource.java deleted file mode 100644 index b98459f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/address/MyDGAddressSource.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.dg.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyDGAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.DG.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("http", apiBaseUrl, 80, ""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/client/DGClient.java b/ff-game/src/main/java/com/ff/game/api/dg/client/DGClient.java deleted file mode 100644 index 15679c4..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/client/DGClient.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.ff.game.api.dg.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.dg.address.MyDGAddressSource; -import com.ff.game.api.dg.dto.*; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.xk.address.MyXKAddressSource; -import com.ff.game.api.xk.dto.*; - -import java.util.Map; - -/** - * dg 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyDGAddressSource.class) -public interface DGClient { - /** - * 创建成员 - * - * @param params 参数 - * @param header 头球 - * @return {@link DGResponse } - */ - @Post("/v2/api/signup") - DGResponse createMember(@JSONBody Map params, @Header Map header); - - /** - * 获取会员信息 - * - * @param params 参数 - */ - @Post("/v2/api/balance") - DGUserAccountResponse getMemberInfo(@JSONBody Map params, @Header Map header); - - /** - * 无重定向登录 - * - * @param params 参数 - * @param header 头球 - * @return {@link DGLoginWithoutRedirectResponse } - */ - @Post("/v2/api/login") - DGLoginWithoutRedirectResponse loginWithoutRedirect(@JSONBody Map params, @Header Map header); - - - /** - * 按代理id进行交换转账 - * - * @param params 参数 - * @return {@link DGTransactionResponseDTO } - */ - @Post(url = "/v2/api/transfer") - DGTransactionResponseDTO exchangeTransferByAgentId(@JSONBody Map params, @Header Map header); - - - /** - * 汇兑转移状态 - * - * @param params 参数 - * @param header 头球 - * @return {@link DGTransactionResponseDTO } - */ - @Post(url = "/v2/api/checkTransfer") - DGTransactionResponseDTO exchangeTransferStatus(@JSONBody Map params, @Header Map header); - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link XKBetRecordResponseDTO } - */ - @Post(url ="/v2/api/report", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - DGBetRecordResponseDTO getBetRecordByTime(@Header Map params); - - /** - * 标记报告 - * - * @param params 参数 - * @return {@link DGResponse } - */ - @Post(url = "/v2/api/markReport") - DGResponse markReport(@JSONBody Map params, @Header Map header); - /** - * 踢出队员 - * - * @param params 参数 - * @return {@link DGResponse } - */ - @Post("/v2/api/offline") - DGResponse kickMember(@JSONBody Map params, @Header Map header); - - - @Post("/v2/api/offlineAll") - DGResponse kickMemberAll(@JSONBody Map params, @Header Map header); - - /** - * 会员在线 - * - * @param params 参数 - * @return {@link DGUserListResponseDTO } - */ - @Post(url ="/v2/api/online", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - DGUserListResponseDTO memberOnlines(@Header Map params); - - - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGBetRecordResponseDTO.java deleted file mode 100644 index b6d06fc..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGBetRecordResponseDTO.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * dgbet记录响应数据 - * - * @author shi - * @date 2025/03/27 - */ -@Data -public class DGBetRecordResponseDTO { - - /** 错误码 (参考文档定义) */ - @JsonProperty("codeId") - private Integer codeId; - - /** 错误信息 */ - @JsonProperty("msg") - private String msg; - - /** 注单报告 */ - @JsonProperty("list") - private List list; - - /** - * 注单报告类 - */ - @Data - public static class ReportDTO { - - /** 注单ID(唯一) */ - @JsonProperty("id") - private Long id; - - /** 游戏桌号(红包小费记录没有) */ - @JsonProperty("tableId") - private Integer tableId; - - /** 游戏靴号(红包小费记录没有) */ - @JsonProperty("shoeId") - private Long shoeId; - - /** 当靴局号(红包小费记录没有) */ - @JsonProperty("playId") - private Long playId; - - /** 游戏厅号(1:旗舰厅;2:亚洲厅;3,4:现场厅;5:性感厅;8,9:区块链厅) */ - @JsonProperty("lobbyId") - private Integer lobbyId; - - /** 注单类型(1:注单,2:红包小费) */ - @JsonProperty("gameType") - private Integer gameType; - - /** 游戏类型(百家乐,龙虎等) */ - @JsonProperty("gameId") - private Integer gameId; - - /** 下注时间 */ - @JsonProperty("betTime") - private Date betTime; - - /** 结算时间 */ - @JsonProperty("calTime") - private Date calTime; - - /** 派彩金额(含本金) */ - @JsonProperty("winOrLoss") - private BigDecimal winOrLoss; - - /** 下注前余额(仅作参考) */ - @JsonProperty("balanceBefore") - private BigDecimal balanceBefore; - - /** 下注金额(下注扣款金额) */ - @JsonProperty("betPoints") - private BigDecimal betPoints; - - /** 洗码金额(用于计算佣金) */ - @JsonProperty("availableBet") - private BigDecimal availableBet; - - /** 会员账号 */ - @JsonProperty("userName") - private String userName; - - /** 游戏结果 */ - @JsonProperty("result") - private String result; - - /** 注单详情 */ - @JsonProperty("betDetail") - private String betDetail; - - /** 客户端IP */ - @JsonProperty("ip") - private String ip; - - /** 游戏唯一局号 */ - @JsonProperty("ext") - private String ext; - - /** 结算状态(0:未结算,1:已结算,2:已撤销,3:冻结) */ - @JsonProperty("isRevocation") - private Integer isRevocation; - - /** 更改单时对应的注单记录 */ - @JsonProperty("parentBetId") - private Long parentBetId; - - /** 币种ID(请参考对应关系说明) */ - @JsonProperty("currencyId") - private Integer currencyId; - - /** 客户端平台ID(1: PC 2: 安卓 3: 苹果 5: H5) */ - @JsonProperty("deviceType") - private Integer deviceType; - - /** 钱包扣款记录(转账模式API没有) */ - @JsonProperty("transfers") - private String transfers; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGLoginWithoutRedirectResponse.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGLoginWithoutRedirectResponse.java deleted file mode 100644 index 6b71ace..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGLoginWithoutRedirectResponse.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * 响应结果类 - */ -@Data -public class DGLoginWithoutRedirectResponse { - - /** - * 响应的代码ID - */ - @JsonProperty("codeId") - private int codeId; - - /** - * 响应的消息 - */ - @JsonProperty("msg") - private String msg; - - /** - * 响应的 token - */ - @JsonProperty("token") - private String token; - - /** - * 响应的域名信息 - */ - @JsonProperty("domains") - private String domains; - - /** - * 列表数据 - */ - @JsonProperty("list") - private List list; - - /** - * 限制组 - */ - @JsonProperty("limitGroup") - private String limitGroup; - - /** - * 限制区间 - */ - @JsonProperty("limits") - private List limits; - - /** - * 限制区间内部类 - */ - @Data - public static class Limit { - - /** - * 最小值 - */ - @JsonProperty("min") - private int min; - - /** - * 最大值 - */ - @JsonProperty("max") - private int max; - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGResponse.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGResponse.java deleted file mode 100644 index 814e55d..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 响应类,用于返回基本的状态信息。 - * - * @author shi - * @date 2025/03/26 - */ -@Data -public class DGResponse { - - /** - * 响应的代码ID。 - */ - @JsonProperty("codeId") - private int codeId; - - /** - * 响应的消息。 - */ - @JsonProperty("msg") - private String msg; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGTransactionResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGTransactionResponseDTO.java deleted file mode 100644 index 7e57f80..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGTransactionResponseDTO.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 交易信息返回实体 - * - * @author shi - * @date 2025/03/27 - */ -@Data -public class DGTransactionResponseDTO { - - - /** 响应代码 */ - @JsonProperty("codeId") - private Integer codeId; - - /** 响应消息 */ - @JsonProperty("msg") - private String msg; - - /** 用户名 */ - @JsonProperty("username") - private String username; - - /** 交易金额 */ - @JsonProperty("amount") - private BigDecimal amount; - - /** 账户余额 */ - @JsonProperty("balance") - private BigDecimal balance; - - /** 交易流水号 */ - @JsonProperty("serial") - private String serial; - - /** 交易时间 */ - @JsonProperty("time") - private String time; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserAccountResponse.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserAccountResponse.java deleted file mode 100644 index 576beb2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserAccountResponse.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 用户账户信息响应类 - * - * @author shi - * @date 2025/03/26 - */ -@Data -public class DGUserAccountResponse { - - /** - * 响应的代码ID。 - */ - @JsonProperty("codeId") - private int codeId; - - /** - * 响应的消息。 - */ - @JsonProperty("msg") - private String msg; - - /** - * 用户名。 - */ - @JsonProperty("username") - private String username; - - /** - * 用户余额。 - */ - @JsonProperty("balance") - private BigDecimal balance; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserListResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserListResponseDTO.java deleted file mode 100644 index fc5fcd0..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/dto/DGUserListResponseDTO.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.ff.game.api.dg.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * 用户列表响应类 - * - * @author shi - * @date 2025/03/27 - */ -@Data -public class DGUserListResponseDTO { - - /** - * 响应的代码ID。 - */ - @JsonProperty("codeId") - private int codeId; - - /** - * 响应的消息。 - */ - @JsonProperty("msg") - private String msg; - /** 用户列表 */ - @JsonProperty("list") - private List list; - - /** - * 用户信息类 - */ - @Data - public static class UserDTO { - - /** 用户名 */ - @JsonProperty("username") - private String username; - - /** 昵称 */ - @JsonProperty("nickname") - private String nickname; - - /** 币种名称 */ - @JsonProperty("currencyName") - private String currencyName; - - /** 用户IP */ - @JsonProperty("ip") - private String ip; - - /** 用户设备 */ - @JsonProperty("device") - private String device; - - /** 登录时间 */ - @JsonProperty("login") - private String login; - - /** 会员ID */ - @JsonProperty("memberId") - private Long memberId; - - /** 用户余额 */ - @JsonProperty("balance") - private Double balance; - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/dg/service/impl/GamesDGServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/dg/service/impl/GamesDGServiceImpl.java deleted file mode 100644 index f7383c1..0000000 --- a/ff-game/src/main/java/com/ff/game/api/dg/service/impl/GamesDGServiceImpl.java +++ /dev/null @@ -1,602 +0,0 @@ -package com.ff.game.api.dg.service.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.SleepUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.ae.dto.AEExchangeTransferStatusResponse; -import com.ff.game.api.dg.client.DGClient; -import com.ff.game.api.dg.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; - - -/** - * DG 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("DGService") -@Slf4j -public class GamesDGServiceImpl implements IGamesService { - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private DGClient DGClient; - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 游戏id - */ - private static final Long GAME_ID = 1904452832756003817L; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - ApiException.isTrue(103 != errorCode, ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Long time = DateUtils.getNowDate(); - //取出对应的key跟密钥跟请求参数 - String agentKey = gamesBaseRequestDTO.getAgentKey(); - String agentId = gamesBaseRequestDTO.getAgentId(); - - String sign = Md5Utils.md5New(agentId + agentKey + time); - Map keyMap = new HashMap<>(); - keyMap.put("agent", agentId); - keyMap.put("sign", sign); - keyMap.put("time", time); - return keyMap; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesDGServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("username", createMemberRequestDTO.getAccount()); - params.put("currencyName", createMemberRequestDTO.getCurrency()); - params.put("winLimit", 0); - params.put("password", Md5Utils.md5New(createMemberRequestDTO.getAccount())); - - Map headerMap = this.getKey(createMemberRequestDTO); - DGResponse response = DGClient.createMember(params, headerMap); - if (this.getIsSuccess(response.getCodeId())) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("username", memberInfoRequestDTO.getAccounts()); - Map headerMap = this.getKey(memberInfoRequestDTO); - DGUserAccountResponse memberInfo = DGClient.getMemberInfo(paramsMap, headerMap); - int errorCode = memberInfo.getCodeId(); - if (this.getIsSuccess(errorCode)) { - return MemberInfoResponseDTO.builder().account(memberInfoRequestDTO.getAccounts()).balance(memberInfo.getBalance()).status(GameMemberStatus.UNKNOWN.getCode()).build(); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesDGServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - Map paramsMap = new HashMap<>(); - paramsMap.put("username", gamesLogin.getAccount()); - paramsMap.put("currencyName", gamesLogin.getCurrency()); - paramsMap.put("winLimit", 0); - paramsMap.put("language", gamesLogin.getLang()); - Map headerMap = this.getKey(gamesLogin); - DGLoginWithoutRedirectResponse loginWithoutRedirectResponse = DGClient.loginWithoutRedirect(paramsMap, headerMap); - if (this.getIsSuccess(loginWithoutRedirectResponse.getCodeId())) { - String url = loginWithoutRedirectResponse.getList().get(0) + "&showapp=off"; - if (!StringUtils.isEmpty(gamesLogin.getHomeUrl())) { - url += "&backUrl=" + gamesLogin.getHomeUrl(); - } - return url; - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - Game game = gameService.selectGameById(GAME_ID); - //不存在这个游戏 - if (ObjectUtils.isEmpty(game)) { - game = new Game(); - game.setId(GAME_ID); - game.setSortNo(1); - game.setPlatformCode(GamePlatforms.DG.getCode()); - game.setPlatformType(PlatformType.GAME_HALL.getCode()); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName("真人棋牌"); - game.setCreateBy(Constants.SYSTEM); - game.setNameInfo(Collections.singletonList(new NameInfo("真人棋牌", "zh-CN"))); - game.setGameId(StringUtils.addSuffix(GamePlatforms.DG.getCode(), 1)); - gameService.insertGame(game); - } - return CacheConstants.DG_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesDGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.DG.getInfo() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.DG.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - // 获取第三方钱包余额 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .build(); - - BigDecimal balance = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - amount = balance.compareTo(BigDecimal.ZERO) > 0 ? balance.negate() : balance; - } - - Map params = new LinkedHashMap<>(); - params.put("username", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("amount", amount); - params.put("serial", transactionId); - - Map headerMap = this.getKey(exchangeTransferMoneyRequestDTO); - DGTransactionResponseDTO dgTransactionResponseDTO = DGClient.exchangeTransferByAgentId(params, headerMap); - //判断是否转移成功 - if (this.getIsSuccess(dgTransactionResponseDTO.getCodeId())) { - - //更新数据 - exchangeMoney.setBalance(dgTransactionResponseDTO.getAmount().abs()); - exchangeMoney.setCoinBefore(NumberUtil.sub(dgTransactionResponseDTO.getBalance(), dgTransactionResponseDTO.getAmount().abs()).abs()); - exchangeMoney.setCoinAfter(dgTransactionResponseDTO.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesDGServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{},错误信息{}", dgTransactionResponseDTO.getCodeId(), dgTransactionResponseDTO.getMsg()); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link ExchangeTransferStatusResponseDTO } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesDGServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("serial", exchangeTransferMoneyRequestDTO.getOrderId()); - - Map headerMap = this.getKey(exchangeTransferMoneyRequestDTO); - - DGTransactionResponseDTO dgTransactionResponseDTO = DGClient.exchangeTransferStatus(params, headerMap); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(dgTransactionResponseDTO.getCodeId())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(dgTransactionResponseDTO.getAmount().abs()) - .coinBefore(NumberUtil.sub(dgTransactionResponseDTO.getBalance(), dgTransactionResponseDTO.getAmount().abs()).abs()) - .coinAfter(dgTransactionResponseDTO.getBalance()) - .build(); - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - SleepUtil.sleep(50000); - //请求参数 - log.info("GamesDGServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map key = this.getKey(betRecordByTimeDTO); - DGBetRecordResponseDTO betRecordByTime = DGClient.getBetRecordByTime(key); - - if (this.getIsSuccess(betRecordByTime.getCodeId())) { - this.batchInsert(betRecordByTime, betRecordByTimeDTO); - return Boolean.TRUE; - } else { - log.error("GamesDGServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCodeId(), betRecordByTime.getMsg()); - throw new BaseException(betRecordByTime.getMsg()); - } - - - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - return Boolean.FALSE; - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesDGServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map key = this.getKey(kickMemberRequestDTO); - DGUserListResponseDTO userListResponseDTO = DGClient.memberOnlines(key); - if (!this.getIsSuccess(userListResponseDTO.getCodeId())) { - throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); - } - if (CollectionUtils.isEmpty(userListResponseDTO.getList())) { - return Boolean.TRUE; - } - DGUserListResponseDTO.UserDTO userDTO = userListResponseDTO.getList().stream() - .filter(user -> user.getUsername().equals(kickMemberRequestDTO.getAccount())) - .findFirst() - .orElse(null); - if (Objects.isNull(userDTO)) { - return Boolean.TRUE; - } - - - List memberIds = new ArrayList<>(); - memberIds.add(userDTO.getMemberId()); - Map params = new LinkedHashMap<>(); - params.put("list", memberIds); - DGResponse dgResponse = DGClient.kickMember(params, key); - //判断是否获取成功 - if (this.getIsSuccess(dgResponse.getCodeId())) { - return Boolean.TRUE; - } else { - throw new BaseException(dgResponse.getMsg()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - log.info("GamesDGServiceImpl [kickMemberAll] 请求参数 {}", kickMemberAllDTO); - Map key = this.getKey(kickMemberAllDTO); - DGUserListResponseDTO userListResponseDTO = DGClient.memberOnlines(key); - if (!this.getIsSuccess(userListResponseDTO.getCodeId())) { - throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); - } - - if (CollectionUtils.isEmpty(userListResponseDTO.getList())) { - return Boolean.TRUE; - } - - List memberIds = userListResponseDTO.getList().stream().map(DGUserListResponseDTO.UserDTO::getMemberId).collect(Collectors.toList()); - - - Map params = new LinkedHashMap<>(); - params.put("list", memberIds); - DGResponse dgResponse = DGClient.kickMember(params, key); - //判断是否获取成功 - if (this.getIsSuccess(dgResponse.getCodeId())) { - return Boolean.TRUE; - } else { - throw new BaseException(dgResponse.getMsg()); - } - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param dgBetRecordResponseDTO dg投注记录响应dto - */ - private void batchInsert(DGBetRecordResponseDTO dgBetRecordResponseDTO, GamesBaseRequestDTO gamesBaseRequestDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List report = dgBetRecordResponseDTO.getList(); - //数据转化 - for (DGBetRecordResponseDTO.ReportDTO bean : report) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(gamesBaseRequestDTO.getVendor()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.DG.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - Map key = this.getKey(gamesBaseRequestDTO); - Map params = new HashMap<>(); - params.put("list", wagersIds); - DGClient.markReport(params, key); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - DGBetRecordResponseDTO.ReportDTO resultBean = (DGBetRecordResponseDTO.ReportDTO) gamesDataBuildDTO.getData(); - - -// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(GamePlatforms.DG.getInfo()) -// .currencyId(String.valueOf(resultBean.getCurrencyId())) -// .build()); - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUserName()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - //未结算的不要 - if (0 == resultBean.getIsRevocation()) { - return null; - } - - BigDecimal payoffAmount = BigDecimal.ZERO; - BigDecimal winOrLoss = resultBean.getWinOrLoss(); - //输赢状态 - Integer gameStatus = GameStatus.FLAT.getCode(); - if (winOrLoss.compareTo(resultBean.getBetPoints()) > 0) { - payoffAmount = NumberUtil.sub(winOrLoss, resultBean.getBetPoints()); - gameStatus = GameStatus.WIN.getCode(); - } else if (winOrLoss.compareTo(resultBean.getBetPoints()) < 0) { - payoffAmount = NumberUtil.sub(resultBean.getWinOrLoss(), resultBean.getBetPoints()).negate(); - gameStatus = GameStatus.FAIL.getCode(); - } - Game game = gameService.selectGameById(GAME_ID); - - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getPlatform().getExtInfo().getOurCurrency(String.valueOf(resultBean.getCurrencyId()))) - .memberId(member.getId()) - .gameCode(String.valueOf(resultBean.getGameId())) - .gameType(PlatformType.CARD_GAME.getCode()) - .platformCode(GamePlatforms.DG.getCode()) - //.gameId(GAME_ID) - .gameId(game.getGameId()) - .gameName(game.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(resultBean.getGameType()) - .gameCurrencyCode(/*gamesDataBuildDTO.getCurrencyCode()*/String.valueOf(resultBean.getCurrencyId())) - .account(String.valueOf(resultBean.getUserName())) - .wagersId(String.valueOf(resultBean.getId())) - .wagersTime(resultBean.getBetTime().getTime()) - .betAmount(resultBean.getBetPoints()) - .betContent(resultBean.getBetDetail()) - .payoffTime(resultBean.getCalTime().getTime()) - .payoffAmount(payoffAmount) - .settlementTime(resultBean.getCalTime().getTime()) - .turnover(resultBean.getAvailableBet()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/address/MyFCAddressSource.java b/ff-game/src/main/java/com/ff/game/api/fc/address/MyFCAddressSource.java deleted file mode 100644 index a7edbdf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/address/MyFCAddressSource.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.api.fc.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -@Component -public class MyFCAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.FC.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, ""); - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/client/FCClient.java b/ff-game/src/main/java/com/ff/game/api/fc/client/FCClient.java deleted file mode 100644 index 5c31ed9..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/client/FCClient.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.ff.game.api.fc.client; - - -import com.dtflys.forest.annotation.Address; -import com.dtflys.forest.annotation.JSONBody; -import com.dtflys.forest.annotation.Post; -import com.ff.game.api.fc.dto.*; -import com.ff.game.api.fc.address.MyFCAddressSource; -import com.ff.game.api.ng.dto.*; - -import java.util.Map; - -/** - * ng客户端 - * - * @author shi - * @date 2025/03/11 - */ -@Address(source = MyFCAddressSource.class) -public interface FCClient { - - - - - /** - * 创建成员 - * - * @param parameters 参数 - * @return {@link String } - */ - @Post("/AddMember") - ApiFCResult createMember(@JSONBody Map parameters); - - - /** - * 踢腿队员 - * - * @param parameters 范围 - * @return {@link ApiFCResult } - */ - @Post("/KickOut") - ApiFCResult kickMember(@JSONBody Map parameters); - - - /** - * 踢成员全部 - * - * @param parameters 范围 - * @return {@link ApiFCResult } - */ - @Post("/KickoutAll") - ApiFCResult kickMemberAll(@JSONBody Map parameters); - /** - * 获取会员信息 - * - * @param parameters 范围 - * @return {@link ApiNGResponseDTO }<{@link String }> - */ - @Post("/SearchMember") - ApiFCUserInfoResponseDTO getMemberInfo(@JSONBody Map parameters); - - - /** - * 获取游戏列表 - * - * @param parameters 范围 - * @return {@link ApiFCGameListResponseDTO } - */ - @Post("/GetGameIconList") - ApiFCGameListResponseDTO getGameList(@JSONBody Map parameters); - - - /** - * 无重定向登录 - * - * @param parameters 范围 - * @return {@link ApiFCLoginResponseDTO } - */ - @Post("/Login") - ApiFCLoginResponseDTO loginWithoutRedirect(@JSONBody Map parameters); - - - /** - * 按代理id进行交换转账 - * - * @param parameters 范围 - */ - @Post(url = "/SetPoints",connectTimeout = 70000) - ApiCFBalanceTransferResponseDTO exchangeTransferByAgentId(@JSONBody Map parameters); - - - @Post(url = "/GetSingleBill") - ApiCFBalanceTransferStatusResponseDTO exchangeTransferStatus(@JSONBody Map parameters); - - - - /** - * 按时间获取投注记录 - * - * @param parameters 范围 - */ - @Post(url = "/GetRecordList") - ApiFCBetRecordResponseDTO getBetRecordByTime(@JSONBody Map parameters); - - - /** - * 按历史时间获取投注记录 - * - * @param parameters 范围 - * @return {@link ApiFCBetRecordResponseDTO } - */ - @Post(url = "/GetHistoryRecordList") - ApiFCBetRecordResponseDTO getBetRecordByHistoryTime(@JSONBody Map parameters); - - - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferResponseDTO.java deleted file mode 100644 index be296f3..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferResponseDTO.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ff.game.api.fc.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - - -/** - * api余额传输响应dto - * - * @author shi - * @date 2025/03/25 - */ -@Data -public class ApiCFBalanceTransferResponseDTO { - - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int result; - - /** - * 银行ID - */ - @JsonProperty("BankID") - private int bankID; - - /** - * 交易ID - */ - @JsonProperty("TrsID") - private String trsID; - - /** - * 转账后余额 - */ - @JsonProperty("AfterPoint") - private BigDecimal afterPoint; - - /** - * 转账金额 - */ - @JsonProperty("Points") - private BigDecimal points; -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferStatusResponseDTO.java deleted file mode 100644 index ecae0ae..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiCFBalanceTransferStatusResponseDTO.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.ff.game.api.fc.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * api cfbalance传输状态响应dto - * - * @author shi - * @date 2025/04/08 - */ -@Data -public class ApiCFBalanceTransferStatusResponseDTO { - - /** - * 请求结果代码 - * 0 表示成功 - */ - @JsonProperty("Result") - private int result; - - /** - * 银行 ID - */ - @JsonProperty("bankID") - private int bankId; - - /** - * 交易 ID - */ - @JsonProperty("trsID") - private String trsId; - - /** - * 操作类型(如存款、取款等) - */ - @JsonProperty("action") - private String action; - - /** - * 交易的点数 - */ - @JsonProperty("points") - private BigDecimal points; - - /** - * 用户账号 - */ - @JsonProperty("account") - private String account; - - /** - * 交易状态 - * 1: 成功,其他值表示失败 - */ - @JsonProperty("status") - private int status; - - /** - * 交易前点数 - */ - @JsonProperty("beforepoints") - private BigDecimal beforePoints; - - /** - * 交易后点数 - */ - @JsonProperty("afterpoints") - private BigDecimal afterPoints; - - /** - * 创建日期 - */ - @JsonProperty("cdate") - private String createDate; - - /** - * 变更日期 - */ - @JsonProperty("bdate") - private String updateDate; - - /** - * 事件 ID - */ - @JsonProperty("eventID") - private String eventId; - - /** - * 货币类型 - */ - @JsonProperty("currency") - private String currency; -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCBetRecordResponseDTO.java deleted file mode 100644 index 42e6e6a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCBetRecordResponseDTO.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.ff.game.api.fc.dto; - -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; -import lombok.Data; -import com.fasterxml.jackson.annotation.JsonProperty; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -/** - * 投注记录返回实体类 - */ -@Data -public class ApiFCBetRecordResponseDTO { - - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int Result; - - /** - * 投注记录列表 - */ - @JsonProperty("Records") - private List Records; - - /** - * 投注记录实体类 - */ - @Data - public static class BetRecord { - - /** - * 下注点数 - */ - @JsonProperty("bet") - private BigDecimal bet; - - /** - * 有效投注 (除 Lucky9 游戏,其余游戏 Bet = validBet) - */ - @JsonProperty("validBet") - private BigDecimal validBet; - - /** - * 赢分点数 - */ - @JsonProperty("prize") - private BigDecimal prize; - - /** - * 退还金额 (除 Lucky9 游戏,其余游戏 refund = win) - */ - @JsonProperty("refund") - private BigDecimal refund; - - /** - * 净输赢点数,等于 prize - validBet - */ - @JsonProperty("winlose") - private BigDecimal winlose; - - /** - * 抽水金额 (除 Lucky9 游戏,其余游戏为 0) - */ - @JsonProperty("commission") - private BigDecimal commission; - - /** - * 游戏前点数 - */ - @JsonProperty("before") - private BigDecimal before; - - /** - * 游戏后点数 - */ - @JsonProperty("after") - private BigDecimal after; - - /** - * 彩金抽水 (支持到小数第六位) - */ - @JsonProperty("jptax") - private BigDecimal jptax; - - /** - * 彩金点数 - */ - @JsonProperty("jppoints") - private BigDecimal jppoints; - - /** - * 游戏内彩金贡献 - */ - @JsonProperty("inGameJptax") - private BigDecimal inGameJptax; - - /** - * 游戏内中奖彩金 - */ - @JsonProperty("inGameJppoints") - private BigDecimal inGameJppoints; - - /** - * 游戏记录编号 (唯一码),24 字符 - */ - @JsonProperty("recordID") - private String recordID; - - /** - * 玩家账号 - */ - @JsonProperty("account") - private String account; - - /** - * 游戏编号 - */ - @JsonProperty("gameID") - private String gameID; - - /** - * 游戏类型 - */ - @JsonProperty("gametype") - private String gametype; - - /** - * 彩金模式 - */ - @JsonProperty("jpmode") - private int jpmode; - - /** - * 游戏内彩金模式 - */ - @JsonProperty("inGameJpmode") - private int inGameJpmode; - - /** - * 下注时间 - */ - @JsonProperty("bdate") - private Date bdate; - - /** - * 是否购买免费游戏 - */ - @JsonProperty("isBuyFeature") - private boolean isBuyFeature; - - /** - * 用于确认此注单是否有获得免费游戏或其他红利游戏 - */ - @JsonProperty("gameMode") - private int gameMode; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCGameListResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCGameListResponseDTO.java deleted file mode 100644 index 879d51b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCGameListResponseDTO.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.ff.game.api.fc.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.Map; - -/** - * 游戏列表 API 响应 DTO - */ -@Data -public class ApiFCGameListResponseDTO { - - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int result; - - /** - * 获取游戏图标列表 - */ - @JsonProperty("GetGameIconList") - private Map> getGameIconList; - - /** - * 游戏详情 - */ - @Data - public static class GameDetails { - - /** - * 游戏状态 - */ - private String status; - - /** - * 系统游戏id - */ - private String systemGameId; - /** - * 游戏id - */ - private String gameId; - - - /** - * 中文游戏名称 - */ - private String gameNameOfChinese; - - /** - * 英文游戏名称 - */ - private String gameNameOfEnglish; - - /** - * 英文图标URL - */ - private String enUrl; - - /** - * 中文图标URL - */ - private String cnUrl; - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCLoginResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCLoginResponseDTO.java deleted file mode 100644 index ac447ff..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCLoginResponseDTO.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ff.game.api.fc.dto; - - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 登录返回信息 API 响应 DTO - */ -@Data -public class ApiFCLoginResponseDTO { - - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int result; - - /** - * 登录跳转 URL - */ - @JsonProperty("Url") - private String url; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCResult.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCResult.java deleted file mode 100644 index 646206b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCResult.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.game.api.fc.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 红蜜蜂 - * - * @author shi - * @date 2025/03/24 - */ -@Data -public class ApiFCResult { - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int result; -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCUserInfoResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCUserInfoResponseDTO.java deleted file mode 100644 index 423d7d7..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiFCUserInfoResponseDTO.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ff.game.api.fc.dto; - - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 用户信息 API 响应 DTO - * - * @author shi - * @date 2025/03/25 - */ -@Data -public class ApiFCUserInfoResponseDTO { - - /** - * 操作结果,0 表示成功,其他值表示失败 - */ - @JsonProperty("Result") - private int result; - - /** - * 在线类型 - */ - @JsonProperty("OnlineType") - private int onlineType; - - /** - * 积分 - */ - @JsonProperty("Points") - private BigDecimal points; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiKeyRequest.java b/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiKeyRequest.java deleted file mode 100644 index 9b96e39..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/dto/ApiKeyRequest.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.ff.game.api.fc.dto; - -import lombok.Data; -import java.util.List; - -/** - * 通用 API 请求对象 - */ -@Data -public class ApiKeyRequest { - - /** - * 加密参数 - */ - private String params; - - /** - * 请求参数对象,包含多个子字段 - */ - private ReParams reParams; - - /** - * 签名 - */ - private String sign; - - /** - * 内部类,表示嵌套的 ReParams 参数 - */ - @Data - public static class ReParams { - - /** - * 用户账户 - */ - private String memberAccount; - - /** - * 游戏ID - */ - private int gameID; - - /** - * 语言ID - */ - private int languageID; - - /** - * 首页链接 - */ - private String homeUrl; - - /** - * 奖池状态 - */ - private boolean jackpotStatus; - - /** - * 是否登录游戏大厅 - */ - private boolean loginGameHall; - - /** - * 游戏大厅的游戏类型列表 - */ - private List gameHallGameType; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/fc/impl/GamesFCServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/fc/impl/GamesFCServiceImpl.java deleted file mode 100644 index 2a20a3e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/fc/impl/GamesFCServiceImpl.java +++ /dev/null @@ -1,698 +0,0 @@ -package com.ff.game.api.fc.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.alibaba.druid.support.json.JSONUtils; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.dg.dto.DGTransactionResponseDTO; -import com.ff.game.api.fc.client.FCClient; -import com.ff.game.api.fc.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.game.service.IPlatformService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import javax.crypto.Cipher; -import javax.crypto.spec.SecretKeySpec; -import java.math.BigDecimal; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * 游戏数据解析服务 - * - * @author shi - * @date 2024/10/21 - */ -@Service("FCService") -@Slf4j -public class GamesFCServiceImpl implements IGamesService { - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private FCClient FCClient; - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Autowired - @Qualifier("threadPoolTaskExecutor") - private ThreadPoolTaskExecutor threadPoolTaskExecutor; - - @Autowired - private IPlatformService platformService; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - ApiException.isTrue(503 != errorCode, ErrorCode.PLAYERS_ARE_PLAYING.getCode()); - ApiException.isTrue(203 != errorCode, ErrorCode.INSUFFICIENT_PLAYER_BALANCE.getCode()); - ApiException.isTrue(504 != errorCode, ErrorCode.ACCOUNT_NOT_ONLINE.getCode()); - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param paramsMap 参数图 - * @param agentKey 代理密钥 - * @return {@link String } - */ - private static String getKey(Map paramsMap, String agentKey) { - try { - Base64.Encoder encoder = Base64.getEncoder(); - SecretKeySpec keySpec = new SecretKeySpec(agentKey.getBytes(StandardCharsets.UTF_8), "AES"); - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); - cipher.init(Cipher.ENCRYPT_MODE, keySpec); - return encoder.encodeToString(cipher.doFinal(JSONUtils.toJSONString(paramsMap).getBytes(StandardCharsets.UTF_8))); - } catch (Exception e) { - throw new BaseException("加密失败"); - } - - } - - - /** - * 获取密钥映射 - * - * @param paramsMap 参数图 - * @param agentKey 代理密钥 - * @param currency 货币 - * @return {@link Map }<{@link String },{@link Object }> - */ - private Map getKeyMap(Map paramsMap, String agentKey, String currency, String agentId) { - Map keyMap = new HashMap<>(); - String key = getKey(paramsMap, agentKey); - keyMap.put("Sign", Md5Utils.md5New(JSONUtils.toJSONString(paramsMap))); - keyMap.put("AgentCode", agentId); - keyMap.put("Currency", currency); - keyMap.put("Params", key); - return keyMap; - - } - - /** - * 解密密钥 - * - * @param gamesBaseRequestDTO 游戏基础请求dto - * @return {@link String } - */ - private String decryptKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - try { - String val = "SBF6G5gFvW5n4aFSFCar9Im0CHgBMyU7OxFTuuB6InmRkm6Qt4K2pfktU="; - Base64.Decoder decoder = Base64.getDecoder(); - SecretKeySpec keySpec = new SecretKeySpec("gamesBaseRequestDTO.getAgentKey()".getBytes(), "AES"); - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); - cipher.init(Cipher.DECRYPT_MODE, keySpec); - return new String(cipher.doFinal(decoder.decode(val))); - } catch (Exception e) { - throw new BaseException("解密失败"); - - } - - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesFCServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("MemberAccount", createMemberRequestDTO.getAccount()); - paramsMap.putAll(getKeyMap(paramsMap, createMemberRequestDTO.getAgentKey(), createMemberRequestDTO.getCurrency(), createMemberRequestDTO.getAgentId())); - ApiFCResult apiFCResult = FCClient.createMember(paramsMap); - int errorCode = apiFCResult.getResult(); - if (0 == errorCode) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesFCServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("MemberAccount", memberInfoRequestDTO.getAccounts()); - paramsMap.putAll(getKeyMap(paramsMap, memberInfoRequestDTO.getAgentKey(), memberInfoRequestDTO.getCurrency(), memberInfoRequestDTO.getAgentId())); - ApiFCUserInfoResponseDTO apiFCUserInfoResponseDTO = FCClient.getMemberInfo(paramsMap); - int errorCode = apiFCUserInfoResponseDTO.getResult(); - if (this.getIsSuccess(errorCode)) { - return MemberInfoResponseDTO.builder().account(memberInfoRequestDTO.getAccounts()) - .balance(apiFCUserInfoResponseDTO.getPoints()) - .status(apiFCUserInfoResponseDTO.getOnlineType() != 0 ? GameMemberStatus.ONLINE.getCode() : GameMemberStatus.OFFLINE.getCode()).build(); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesFCServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - Map paramsMap = new HashMap<>(); - paramsMap.put("MemberAccount", gamesLogin.getAccount()); - paramsMap.put("GameID", gamesLogin.getGameId()); - paramsMap.put("LanguageID", gamesLogin.getLang()); - paramsMap.put("HomeUrl", gamesLogin.getHomeUrl()); - paramsMap.putAll(getKeyMap(paramsMap, gamesLogin.getAgentKey(), gamesLogin.getCurrency(), gamesLogin.getAgentId())); - ApiFCLoginResponseDTO apiFCLoginResponseDTO = FCClient.loginWithoutRedirect(paramsMap); - if (this.getIsSuccess(apiFCLoginResponseDTO.getResult())) { - return apiFCLoginResponseDTO.getUrl(); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - List apiGameInfoResponseDTOS = redisCache.getCacheList(CacheConstants.FC_GAMES); - if (!CollectionUtils.isEmpty(apiGameInfoResponseDTOS)) { - return CacheConstants.FC_GAMES; - } - - gamesBaseRequestDTO.setCurrency("CNY"); - log.info("GamesFCServiceImpl [getGameList] 请求参数 {}", gamesBaseRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.putAll(getKeyMap(paramsMap, gamesBaseRequestDTO.getAgentKey(), gamesBaseRequestDTO.getCurrency(), gamesBaseRequestDTO.getAgentId())); - ApiFCGameListResponseDTO gameList = FCClient.getGameList(paramsMap); - if (this.getIsSuccess(gameList.getResult())) { - - List gameDetailsList = new ArrayList<>(); - - for (String gameTypeKey : gameList.getGetGameIconList().keySet()) { - Map integerGameDetailsMap = gameList.getGetGameIconList().get(gameTypeKey); - - //新增游戏 - for (String gameIdKey : integerGameDetailsMap.keySet()) { - - ApiFCGameListResponseDTO.GameDetails gameDetails = integerGameDetailsMap.get(gameIdKey); - Game game = Game.builder() - .platformCode(GamePlatforms.FC.getCode()) - .gameCode(gameIdKey) - .build(); - List games = gameService.selectGameList(game); - int platformType = FCGameType.findSystemByCode(gameTypeKey); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(String.valueOf(PlatformType.ELECTRONIC.getCode())); - game.setFreespin(Boolean.FALSE); - game.setDemoStatus(Boolean.TRUE); - - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.FC.getCode()) + 1); - game.setGameName(gameDetails.getGameNameOfChinese()); - game.setCreateBy(Constants.SYSTEM); - game.setPlatformCode(GamePlatforms.FC.getCode()); - game.setPlatformType(platformType); - List nameInfos = new ArrayList<>(); - nameInfos.add(NameInfo.builder().lang("zh-CN").name(gameDetails.getGameNameOfChinese()).build()); - nameInfos.add(NameInfo.builder().lang("en-US").name(gameDetails.getGameNameOfEnglish()).build()); - game.setNameInfo(nameInfos); - game.setGameId(StringUtils.addSuffix(GamePlatforms.FC.getCode(), gameIdKey)); - gameService.insertGame(game); - } else { - game = games.get(0); - - } - gameDetails.setSystemGameId(game.getGameId()); - gameDetails.setGameId(gameIdKey); - gameDetailsList.add(gameDetails); - } - - - } - redisCache.deleteObject(CacheConstants.FC_GAMES); - redisCache.setCacheList(CacheConstants.FC_GAMES, gameDetailsList); - redisCache.expire(CacheConstants.FC_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new ApiException(ErrorCode.ERROR.getCode()); - } - return CacheConstants.FC_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesFCServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.FC.getInfo(), 30); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.FC.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - //获取余额 - String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? FCTransferType.TRANSFER_OUT_ALL.getValue() : FCTransferType.TRANSFER_OUT.getValue(); - - - BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); - - - //获取当前游戏币 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .build(); - MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO); - //判断是不是转出 - if (NGTransferType.TRANSFER_OUT.getValue().equals(type)) { - exchangeTransferMoneyRequestDTO.setAmount(memberInfo.getBalance()); - } - - - Map paramsMap = new HashMap<>(); - paramsMap.put("MemberAccount", exchangeTransferMoneyRequestDTO.getAccount()); - paramsMap.put("TrsID", transactionId); - paramsMap.put("AllOut", type); - paramsMap.put("Points", amount); - paramsMap.putAll(getKeyMap(paramsMap, gamesBaseRequestDTO.getAgentKey(), gamesBaseRequestDTO.getCurrency(), gamesBaseRequestDTO.getAgentId())); - - - ApiCFBalanceTransferResponseDTO transferResponseDTO = FCClient.exchangeTransferByAgentId(paramsMap); - if (this.getIsSuccess(transferResponseDTO.getResult())) { - //更新数据 - exchangeMoney.setBalance(transferResponseDTO.getPoints().abs()); - exchangeMoney.setCoinBefore(NumberUtil.sub(transferResponseDTO.getAfterPoint(), exchangeMoney.getBalance()).abs()); - exchangeMoney.setCoinAfter(transferResponseDTO.getAfterPoint()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", transferResponseDTO.getResult()); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link ExchangeTransferStatusResponseDTO } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesDGServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("TrsID", exchangeTransferMoneyRequestDTO.getOrderId()); - paramsMap.putAll(getKeyMap(paramsMap, exchangeTransferMoneyRequestDTO.getAgentKey(), exchangeTransferMoneyRequestDTO.getCurrency(), exchangeTransferMoneyRequestDTO.getAgentId())); - - ApiCFBalanceTransferStatusResponseDTO apiCFBalanceTransferStatusResponseDTO = FCClient.exchangeTransferStatus(paramsMap); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(apiCFBalanceTransferStatusResponseDTO.getResult())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(apiCFBalanceTransferStatusResponseDTO.getPoints()) - .coinBefore(apiCFBalanceTransferStatusResponseDTO.getBeforePoints()) - .coinAfter(apiCFBalanceTransferStatusResponseDTO.getAfterPoints()) - .build(); - - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - - - Platform platform = betRecordByTimeDTO.getVendor(); - String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); - String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); - Map paramsMap = new HashMap<>(); - paramsMap.put("StartDate", startTime); - paramsMap.put("EndDate", endTime); - KeyInfo keyInfo = betRecordByTimeDTO.getKeyInfo(); - String currency = keyInfo.getCurrency(); - String targetCurrency = platform.getCurrencyInfo().get(currency); - if (StringUtils.isEmpty(targetCurrency)) { - log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency); - return Boolean.FALSE; - } - - paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), keyInfo.getCurrency(), betRecordByTimeDTO.getAgentId())); - - ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByTime(paramsMap); - - if (this.getIsSuccess(betRecordByTime.getResult())) { - //数据组装 - this.batchInsert(betRecordByTime, currency, targetCurrency); - } - return Boolean.TRUE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - - Platform platform = betRecordByTimeDTO.getVendor(); - for (KeyInfo keyInfo : platform.getKeyInfo()) { - - - //必须两个小时之前的数据 - long startTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getStartTime(), -120); - long endTimeLong = DateUtils.addOrSubtractMinutes(betRecordByTimeDTO.getEndTime(), -120); - String currency = keyInfo.getCurrency(); - String targetCurrency = platform.getCurrencyInfo().get(currency); - if (StringUtils.isEmpty(targetCurrency)) { - log.error("获取不到币种,platformCode:{},{}->{}", platform.getPlatformCode(), currency, targetCurrency); - continue; - } - //查询一个小时内的数据一次最多15分钟 - int timeWheel = 60; - while (timeWheel > 0) { - String startTime = DateUtils.convertTimeZone(startTimeLong, "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); - String endTime = DateUtils.convertTimeZone(endTimeLong, "America/New_York", DateUtils.YYYY_MM_DD_HH_MM_SS); - Map paramsMap = new HashMap<>(); - paramsMap.put("StartDate", startTime); - paramsMap.put("EndDate", endTime); - paramsMap.putAll(getKeyMap(paramsMap, betRecordByTimeDTO.getAgentKey(), targetCurrency, betRecordByTimeDTO.getAgentId())); - - ApiFCBetRecordResponseDTO betRecordByTime = FCClient.getBetRecordByHistoryTime(paramsMap); - - if (this.getIsSuccess(betRecordByTime.getResult())) { - //数据组装 - this.batchInsert(betRecordByTime, currency, targetCurrency); - } - timeWheel -= 15; - } - } - return Boolean.TRUE; - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesFCServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("MemberAccount", kickMemberRequestDTO.getAccount()); - paramsMap.putAll(getKeyMap(paramsMap, kickMemberRequestDTO.getAgentKey(), kickMemberRequestDTO.getCurrency(), kickMemberRequestDTO.getAgentId())); - ApiFCResult apiFCResult = FCClient.kickMember(paramsMap); - if (this.getIsSuccess(apiFCResult.getResult())) { - return Boolean.TRUE; - } else { - throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - log.info("GamesFCServiceImpl [kickMemberAll] 请求参数 {}", kickMemberAllDTO); - Map paramsMap = new HashMap<>(); - paramsMap.putAll(getKeyMap(paramsMap, kickMemberAllDTO.getAgentKey(), kickMemberAllDTO.getCurrency(), kickMemberAllDTO.getAgentId())); - ApiFCResult apiFCResult = FCClient.kickMemberAll(paramsMap); - if (this.getIsSuccess(apiFCResult.getResult())) { - return Boolean.TRUE; - } else { - throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); - } - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - ApiFCBetRecordResponseDTO.BetRecord resultBean = (ApiFCBetRecordResponseDTO.BetRecord) gamesDataBuildDTO.getData(); - - - Member member = memberService.selectMemberByGameAccount(resultBean.getAccount()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.FC_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(ApiFCGameListResponseDTO.GameDetails::getGameId, e -> e)); - ApiFCGameListResponseDTO.GameDetails gamesDataDTO = dataDTOMap.get(resultBean.getGameID()); - - // 判断输赢 - Integer gameStatus = GameStatus.FLAT.getCode(); - if (BigDecimal.ZERO.compareTo(resultBean.getWinlose()) > 0) { - gameStatus = GameStatus.FAIL.getCode(); - } else if (BigDecimal.ZERO.compareTo(resultBean.getWinlose()) < 0) { - gameStatus = GameStatus.WIN.getCode(); - } - - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getSystemCurrencyCode()) - .memberId(member.getId()) - .gameCode(resultBean.getGameID()) - .gameType(FCGameType.findSystemByCode(resultBean.getGametype())) - .platformCode(GamePlatforms.FC.getCode()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getGameNameOfChinese()) - .gameStatus(gameStatus) - .gameStatusType(1) - .gameCurrencyCode(gamesDataBuildDTO.getCurrencyCode()) - .account(resultBean.getAccount()) - .wagersId(resultBean.getRecordID()) - .wagersTime(resultBean.getBdate().getTime()) - .betAmount(resultBean.getBet()) - .payoffTime(resultBean.getBdate().getTime()) - .payoffAmount(resultBean.getWinlose().abs()) - .settlementTime(resultBean.getBdate().getTime()) - .turnover(resultBean.getValidBet()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - - } - - - /** - * 批量插入 - * - * @param data 数据 - * @param systemCurrencyCode 系统货币代码 - */ - private synchronized void batchInsert(ApiFCBetRecordResponseDTO data, String systemCurrencyCode, String currencyCode) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据转化 - for (ApiFCBetRecordResponseDTO.BetRecord bean : data.getRecords()) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().data(bean) - .currencyCode(currencyCode) - .systemCurrencyCode(systemCurrencyCode).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(bean.getRecordID()); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.FC.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/address/MyJILIAddressSource.java b/ff-game/src/main/java/com/ff/game/api/jili/address/MyJILIAddressSource.java deleted file mode 100644 index 592bae2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/address/MyJILIAddressSource.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.jili.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyJILIAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.JILI.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "api1"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/jili/client/JILIClient.java b/ff-game/src/main/java/com/ff/game/api/jili/client/JILIClient.java deleted file mode 100644 index 7f38bac..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/client/JILIClient.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.ff.game.api.jili.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.jili.address.MyJILIAddressSource; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.request.GamesBaseRequestDTO; - -/** - * jili 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyJILIAddressSource.class) -public interface JILIClient { - /** - * 创建成员 - * - * @param parameters 参数 - * @return {@link String } - */ - @Get("/CreateMember?${parameters}") - JILICreateMemberResponseDTO createMember(@Var("parameters") String parameters); - - /** - * 获取会员信息 - * - * @param parameters 参数 - * @return {@link JILIMemberInfoDTO } - */ - @Get("/GetMemberInfo?${parameters}") - JILIMemberInfoDTO getMemberInfo(@Var("parameters") String parameters); - - /** - * 无重定向登录 - * - * @param parameters 参数 - * @return {@link JILILoginWithoutRedirectResponseDTO } - */ - @Get("/LoginWithoutRedirect?${parameters}") - JILILoginWithoutRedirectResponseDTO loginWithoutRedirect(@Var("parameters") String parameters); - - /** - * 获取游戏列表 - * - * @param parameters 参数 - * @return {@link JILIGamesDTO } - */ - @Get("/GetGameList?${parameters}") - JILIGamesDTO getGameList(@Var("parameters") String parameters); - - /** - * 按代理id进行交换转账 - * - * @param parameters 参数 - * @return {@link JILIExchangeMoneyResponseDTO } - */ - @Post( - url = "/ExchangeTransferByAgentId?${parameters}", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - JILIExchangeMoneyResponseDTO exchangeTransferByAgentId(@Var("parameters") String parameters,@Body("AgentId") String agentId); - - /** - * 按交易id检查转账 - * - * @param parameters 范围 - * @param agentId 代理id - * @return {@link JILITransferStatusResponseDTO } - */ - @Post( - url = "/CheckTransferByTransactionId?${parameters}", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - JILITransferStatusResponseDTO checkTransferByTransactionId(@Var("parameters") String parameters,@Body("AgentId") String agentId); - - - /** - * 按时间获取投注记录 - * - * @param parameters 参数 - * @param agentId 代理id - * @return {@link JILIBetRecordResponseDTO } - */ - @Post( - url = "/GetBetRecordByTime?${parameters}", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - JILIBetRecordResponseDTO getBetRecordByTime(@Var("parameters") String parameters,@Body("AgentId") String agentId); - - /** - * 赠送免费局数 - * - * @param parameters 参数 - * @return {@link JILICreateFreeSpinResponseDTO } - */ - @Post( - url = "/CreateFreeSpin?${parameters}", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - JILICreateFreeSpinResponseDTO createFreeSpin(@Var("parameters") String parameters,@Body("AgentId") String agentId); - - /** - * 获取游戏详细信息 - * - * @param parameters 参数 - * @return {@link JILIGetGameDetailResponseDTO } - */ - @Get("/GetGameDetail?${parameters}") - JILIGetGameDetailResponseDTO getGameDetail(@Var("parameters") String parameters); - - /** - * 踢出队员 - * - * @param parameters 参数 - * @return {@link JILIKickMemberDTO } - */ - @Get("/KickMember?${parameters}") - JILIKickMemberDTO kickMember(@Var("parameters") String parameters); - - /** - * 踢出所有队员 - * - * @param parameters 参数 - * @return {@link JILIKickMemberAllDTO } - */ - @Get("/KickMemberAll?${parameters}") - JILIKickMemberAllDTO kickMemberAll(@Var("parameters") String parameters); - - /** - * 免费游戏玩家使用的纪录 - * - * @param parameters 参数 - * @return {@link JILIGetFreeSpinDashflowResponseDTO } - */ - @Post( - url = "/GetFreeSpinDashflow?${parameters}" - ) - JILIGetFreeSpinDashflowResponseDTO getFreeSpinDashflow(@Var("parameters") String parameters); - - @Post( - url = "/CancelFreeSpin?${parameters}" - ) - JILICancelFreeSpinResponseDTO cancelFreeSpin(@Var("parameters") String parameters); -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java deleted file mode 100644 index 56cd4ce..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordDataResponseDTO.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - - -/** - * JiLi游戏纪录查询返回数据类型 - * - * @author shi - * @date 2024/10/21 - */ -@NoArgsConstructor -@Data -public class JILIBetRecordDataResponseDTO { - /** - * 账户 - */ - @JsonProperty("Account") - private String account; - /** - * 投注id - */ - @JsonProperty("WagersId") - private String wagersId; - /** - * 游戏id - */ - @JsonProperty("GameId") - private String gameId; - /** - * 下注时间 - */ - @JsonProperty("WagersTime") - private Long wagersTime; - /** - * 投注金额 - */ - @JsonProperty("BetAmount") - private BigDecimal betAmount; - /** - * 回报时间 - */ - @JsonProperty("PayoffTime") - private Long payoffTime; - /** - * 支付金额 - */ - @JsonProperty("PayoffAmount") - private BigDecimal payoffAmount; - /** - * 注单状态 1: 赢 2: 输 3: 平局 - */ - @JsonProperty("Status") - private int status; - /** - * 结算时间 - */ - @JsonProperty("SettlementTime") - private Long settlementTime; - /** - * 游戏类别id - */ - @JsonProperty("GameCategoryId") - private int gameCategoryId; - /** - * 类型 - */ - @JsonProperty("Type") - private int type; - /** - * 代理id - */ - @JsonProperty("AgentId") - private String agentId; - /** - * 有效投注金额 - */ - @JsonProperty("Turnover") - private BigDecimal turnover; - /** - * 圆形指数 - */ - @JsonProperty("RoundIndex") - private long roundIndex; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordResponseDTO.java deleted file mode 100644 index 11c4567..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIBetRecordResponseDTO.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * JiLi游戏纪录查询返回值 - * - * @author shi - * @date 2024/10/21 - */ -@NoArgsConstructor -@Data -public class JILIBetRecordResponseDTO { - - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; - @JsonProperty("Data") - private DataBean data; - - @NoArgsConstructor - @Data - public static class DataBean { - @JsonProperty("Result") - private List result; - @JsonProperty("Pagination") - private PaginationBean pagination; - - @NoArgsConstructor - @Data - public static class PaginationBean { - /** - * 当前页面 - */ - @JsonProperty("CurrentPage") - private int currentPage; - /** - * 总页数 - */ - @JsonProperty("TotalPages") - private int totalPages; - /** - * 页数限制 - */ - @JsonProperty("PageLimit") - private int pageLimit; - /** - * 总数 - */ - @JsonProperty("TotalNumber") - private int totalNumber; - } - - - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICancelFreeSpinResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICancelFreeSpinResponseDTO.java deleted file mode 100644 index 8723ddb..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICancelFreeSpinResponseDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * jilicancel自由自旋响应 - * - * @author shi - * @date 2024/11/11 - */ -@NoArgsConstructor -@Data -public class JILICancelFreeSpinResponseDTO { - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; - @JsonProperty("CancelTime") - private int cancelTime; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateFreeSpinResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateFreeSpinResponseDTO.java deleted file mode 100644 index 80f25f8..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateFreeSpinResponseDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * jilicreate自由旋转响应dto - * - * @author shi - * @date 2024/11/11 - */ -@NoArgsConstructor -@Data -public class JILICreateFreeSpinResponseDTO { - /** - * 错误代码 - */ - @JsonProperty("ErrorCode") - private Integer errorCode; - /** - * 消息 - */ - @JsonProperty("Message") - private String message; - /** - * 创造时间 - */ - @JsonProperty("CreateTime") - private Integer createTime; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateMemberResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateMemberResponseDTO.java deleted file mode 100644 index db07ebf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILICreateMemberResponseDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.ff.game.api.request.GamesBaseRequestDTO; -import lombok.Data; - - -/** - * 创建成员响应dto - * - * @author shi - * @date 2024/10/22 - */ -@Data -public class JILICreateMemberResponseDTO extends GamesBaseRequestDTO { - - /** - * 错误代码 - */ - @JsonProperty("ErrorCode") - private int errorCode; - /** - * 消息 - */ - @JsonProperty("Message") - private String message; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIExchangeMoneyResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIExchangeMoneyResponseDTO.java deleted file mode 100644 index 2098f01..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIExchangeMoneyResponseDTO.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * jiliexchange货币回应 - * - * @author shi - * @date 2024/10/22 - */ -@Data -public class JILIExchangeMoneyResponseDTO { - - - /** - * 错误代码 - */ - @JsonProperty("ErrorCode") - private int errorCode; - /** - * 消息 - */ - @JsonProperty("Message") - private String message; - - - - @JsonProperty("Data") - private BeanData data; - - @Data - public class BeanData{ - /** - * 交易序号,额度转移纪录唯一值, 长度上限 50 - */ - @JsonProperty("TransactionId") - private String transactionId; - /** - * 转账前金额(游戏币) - */ - @JsonProperty("CoinBefore") - private BigDecimal coinBefore; - /** - * 转账后金额(游戏币) - */ - @JsonProperty("CoinAfter") - private BigDecimal coinAfter; - /** - * 转账前金额(指定货币) - */ - @JsonProperty("CurrencyBefore") - private BigDecimal currencyBefore; - /** - * 转账后金额(指定货币) - */ - @JsonProperty("CurrencyAfter") - private BigDecimal currencyAfter; - /** - * 状态: - * 1: 成功 - * 2: 失败 - */ - @JsonProperty("Status") - private Integer status; - } - - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDTO.java deleted file mode 100644 index e4707d1..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * 游戏 - * - * @author shi - * @date 2024/10/22 - */ - -@NoArgsConstructor -@Data -public class JILIGamesDTO { - - - /** - * 错误代码 - */ - @JsonProperty("ErrorCode") - private int errorCode; - /** - * 消息 - */ - @JsonProperty("Message") - private String message; - /** - * 数据 - */ - @JsonProperty("Data") - private List data; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java deleted file mode 100644 index f653ae0..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGamesDataDTO.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * jiligames数据dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -public class JILIGamesDataDTO { - /** - * 游戏id - */ - @JsonProperty("GameId") - private String gameId; - - /** - *自己系统游戏id - */ - private String systemGameId; - - /** - * 名称 - */ - private NameBean name; - /** - * 游戏类别id - */ - @JsonProperty("GameCategoryId") - private int gameCategoryId; - /** - * jp - */ - @JsonProperty("JP") - private boolean jP; - /** - * freespin - */ - @JsonProperty("Freespin") - private boolean freespin; - - @NoArgsConstructor - @Data - public static class NameBean { - /** - * en-us - */ - @JsonProperty("en-US") - private String enUS; - /** - * zh cn - */ - @JsonProperty("zh-CN") - private String zhCN; - /** - * zh-tw - */ - @JsonProperty("zh-TW") - private String zhTW; - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetFreeSpinDashflowResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetFreeSpinDashflowResponseDTO.java deleted file mode 100644 index 469cec7..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetFreeSpinDashflowResponseDTO.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * jiliget自由旋转气流响应dto - * - * @author shi - * @date 2024/11/11 - */ -@NoArgsConstructor -@Data -public class JILIGetFreeSpinDashflowResponseDTO { - /** 错误码 */ - @JsonProperty("ErrorCode") - private int errorCode; - - /** 错误信息 */ - @JsonProperty("Message") - private String message; - - /** 数据列表 */ - @JsonProperty("Data") - private List data; - - /** - * 内部类 DataBean - */ - @NoArgsConstructor - @Data - public static class DataBean { - - /** 用户账号 */ - @JsonProperty("Account") - private String account; - - /** 参考ID */ - @JsonProperty("ReferenceID") - private String referenceID; - - /** 发送时间 */ - @JsonProperty("SendTime") - private Long sendTime; - - /** 过期时间 */ - @JsonProperty("ExpiredTime") - private Long expiredTime; - - /** 更新时间 */ - @JsonProperty("UpdateTime") - private Long updateTime; - - /** 发送金额 */ - @JsonProperty("SendAmount") - private int sendAmount; - - /** 已使用金额 */ - @JsonProperty("UsedAmount") - private int usedAmount; - - /** 未使用金额 */ - @JsonProperty("UnusedAmount") - private int unusedAmount; - - /** 可领取的游戏 */ - @JsonProperty("ClaimGame") - private int claimGame; - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetGameDetailResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetGameDetailResponseDTO.java deleted file mode 100644 index 2dd7594..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIGetGameDetailResponseDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 获取游戏详细信息请求dto - * - * @author shi - * @date 2024/11/12 - */ -@NoArgsConstructor -@Data -public class JILIGetGameDetailResponseDTO { - - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; - @JsonProperty("Data") - private DataBean data; - - @NoArgsConstructor - @Data - public static class DataBean { - @JsonProperty("Url") - private String url; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberAllDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberAllDTO.java deleted file mode 100644 index fc7a3b6..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberAllDTO.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * jilikick会员全部dto - * - * @author shi - * @date 2024/11/12 - */ -@NoArgsConstructor -@Data -public class JILIKickMemberAllDTO { - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberDTO.java deleted file mode 100644 index 9f40b74..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIKickMemberDTO.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -@NoArgsConstructor -@Data -public class JILIKickMemberDTO { - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILILoginWithoutRedirectResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILILoginWithoutRedirectResponseDTO.java deleted file mode 100644 index 1d85aa9..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILILoginWithoutRedirectResponseDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 登录时不重定向响应dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -public class JILILoginWithoutRedirectResponseDTO { - - @JsonProperty("ErrorCode") - private int errorCode; - @JsonProperty("Message") - private String message; - @JsonProperty("Data") - private String data; -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIMemberInfoDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIMemberInfoDTO.java deleted file mode 100644 index 72465d2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILIMemberInfoDTO.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 会员信息dto - * - * @author shi - * @date 2024/10/30 - */ -@NoArgsConstructor -@Data -public class JILIMemberInfoDTO { - - - /** - * 错误代码 - */ - @JsonProperty("ErrorCode") - private int errorCode; - /** - * 消息 - */ - @JsonProperty("Message") - private String message; - /** - * 数据 - */ - @JsonProperty("Data") - private List data; - - /** - * 数据bean - * - * @author shi - * @date 2024/10/30 - */ - @NoArgsConstructor - @Data - public static class DataBean { - /** - * 账户 - */ - @JsonProperty("Account") - private String account; - /** - * 平衡 - */ - @JsonProperty("Balance") - private BigDecimal balance; - /** - * 地位 - */ - @JsonProperty("Status") - private Integer status; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILITransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/jili/dto/JILITransferStatusResponseDTO.java deleted file mode 100644 index ea53732..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/dto/JILITransferStatusResponseDTO.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ff.game.api.jili.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * jilitransfer状态响应数据 - * - * @author shi - * @date 2025/04/08 - */ -@Data -public class JILITransferStatusResponseDTO { - - - /** - * 错误代码,0 表示成功 - */ - @JsonProperty("ErrorCode") - private int errorCode; - - /** - * 错误或状态信息 - */ - @JsonProperty("Message") - private String message; - - /** - * 转账相关数据 - */ - @JsonProperty("Data") - private TransferData data; - - /** - * 转账详细数据结构 - */ - @Data - public static class TransferData { - - /** - * 用户账户名 - */ - @JsonProperty("Account") - private String account; - - /** - * 转账交易 ID - */ - @JsonProperty("TransactionId") - private String transactionId; - - /** - * 转账时间,格式为 ISO 8601,如:2023-03-13T01:13:59-04:00 - */ - @JsonProperty("TransferTime") - private String transferTime; - - /** - * 转账金额 - */ - @JsonProperty("Amount") - private BigDecimal amount; - - /** - * 转账状态,1 表示成功,其他值可表示失败等状态 - */ - @JsonProperty("Status") - private int status; - - /** - * 转账类型,例如 1 表示入账,2 表示出账(视接口定义而定) - */ - @JsonProperty("TransferType") - private int transferType; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java deleted file mode 100644 index f2c36d3..0000000 --- a/ff-game/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java +++ /dev/null @@ -1,836 +0,0 @@ -package com.ff.game.api.jili.service.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.fc.dto.ApiCFBalanceTransferStatusResponseDTO; -import com.ff.game.api.jili.client.JILIClient; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameFreeRecordService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * 游戏数据解析服务 - * - * @author shi - * @date 2024/10/21 - */ -@Service("JILIService") -@Slf4j -public class GamesJILIServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private IGameFreeRecordService gameFreeRecordService; - - - @Resource - private JILIClient jiliClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - private String getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Random random = new Random(); - //取出对应的key跟密钥跟请求参数 - String agentKey = gamesBaseRequestDTO.getAgentKey(); - String agentId = gamesBaseRequestDTO.getAgentId(); - String query = gamesBaseRequestDTO.getQuery(); - - String now = DateUtils.getFormattedDate(); - String keyG = Md5Utils.md5New(now + agentId + agentKey); - - String md5string = Md5Utils.md5New(query + keyG); - Integer randomText1 = 100000 + random.nextInt(900000); - Integer randomText2 = 100000 + random.nextInt(900000); - String key = randomText1 + md5string + randomText2; - return key; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - String query = "Account=" + createMemberRequestDTO.getAccount() + "&AgentId=" + createMemberRequestDTO.getAgentId(); - log.info("GamesJILIServiceImpl [createMember] 请求参数 {}", query); - createMemberRequestDTO.setQuery(query); - String key = this.getKey(createMemberRequestDTO); - JILICreateMemberResponseDTO createMemberResponseDTO = jiliClient.createMember(query + "&Key=" + key); - int errorCode = createMemberResponseDTO.getErrorCode(); - if (0 == errorCode) { - return Boolean.TRUE; - } - if (101 == errorCode) { - throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - String query = "Accounts=" + memberInfoRequestDTO.getAccounts() + "&AgentId=" + memberInfoRequestDTO.getAgentId(); - log.info("GamesJILIServiceImpl [getMemberInfo] 请求参数 {}", query); - memberInfoRequestDTO.setQuery(query); - String key = this.getKey(memberInfoRequestDTO); - JILIMemberInfoDTO jiliMemberInfoDTO = jiliClient.getMemberInfo(query + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(jiliMemberInfoDTO.getErrorCode())) { - List memberInfoResponseDTOS = new ArrayList<>(); - jiliMemberInfoDTO.getData().forEach(e -> { - memberInfoResponseDTOS.add(MemberInfoResponseDTO.builder() - .status(e.getStatus()) - .balance(e.getBalance()) - .account(e.getAccount()) - .build()); - }); - return memberInfoResponseDTOS.get(0); - } else { - throw new BaseException(jiliMemberInfoDTO.getMessage()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - String query = "Account=" + gamesLogin.getAccount() + "&GameId=" + gamesLogin.getGameId() + "&Lang=" + gamesLogin.getLang() + "&AgentId=" + gamesLogin.getAgentId(); - log.info("GamesJILIServiceImpl [loginWithoutRedirect] 请求参数 {}", query); - gamesLogin.setQuery(query); - String key = this.getKey(gamesLogin); - -// if (!StringUtils.isEmpty(gamesLogin.getHomeUrl())) { -// query += "&HomeUrl=" + gamesLogin.getHomeUrl(); -// } - if (!StringUtils.isEmpty(gamesLogin.getPlatform())) { - query += "&platform=" + gamesLogin.getPlatform(); - } - if (!ObjectUtils.isEmpty(gamesLogin.getDisableFullScreen())) { - query += "&disableFullScreen=" + gamesLogin.getDisableFullScreen(); - } - - JILILoginWithoutRedirectResponseDTO loginWithoutRedirectResponseDTO = jiliClient.loginWithoutRedirect(query + "&AgentId=" + gamesLogin.getAgentId() + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(loginWithoutRedirectResponseDTO.getErrorCode())) { - return loginWithoutRedirectResponseDTO.getData(); - } else { - throw new BaseException(loginWithoutRedirectResponseDTO.getMessage()); - } - - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - List gamesDatas = redisCache.getCacheList(CacheConstants.JILI_GAMES); - if (!CollectionUtils.isEmpty(gamesDatas)) { - return CacheConstants.JILI_GAMES; - } - - - gamesBaseRequestDTO.setQuery("AgentId=" + gamesBaseRequestDTO.getAgentId()); - String key = this.getKey(gamesBaseRequestDTO); - JILIGamesDTO jiliGames = jiliClient.getGameList("AgentId=" + gamesBaseRequestDTO.getAgentId() + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(jiliGames.getErrorCode())) { - - for (JILIGamesDataDTO gamesDataDTO : jiliGames.getData()) { - Integer platformType = JILIGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()); - Game game = Game.builder() - .platformCode(GamePlatforms.JILI.getCode()) - .platformType(platformType) - .gameCode(String.valueOf(gamesDataDTO.getGameId())) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); - game.setFreespin(gamesDataDTO.isFreespin()); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.JILI.getCode()) + 1); - game.setGameName(gamesDataDTO.getName().getZhCN()); - game.setCreateBy(Constants.SYSTEM); - game.setPlatformType(platformType); - game.setPlatformCode(GamePlatforms.JILI.getCode()); - game.setGameId(StringUtils.addSuffix(GamePlatforms.JILI.getCode(), gamesDataDTO.getGameId())); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(gamesDataDTO.getName().getZhCN(), "zh-CN")); - nameInfos.add(new NameInfo(gamesDataDTO.getName().getEnUS(), "en-US")); - game.setNameInfo(nameInfos); - - gameService.insertGame(game); - } else { - game = games.get(0); - } - gamesDataDTO.setSystemGameId(game.getGameId()); - - - } - - redisCache.deleteObject(CacheConstants.JILI_GAMES); - redisCache.setCacheList(CacheConstants.JILI_GAMES, jiliGames.getData()); - redisCache.expire(CacheConstants.JILI_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new BaseException(jiliGames.getMessage()); - - } - - return CacheConstants.JILI_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.JILI.getInfo() + IdUtils.simpleUUID(); - - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.JILI.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - String query = "Account=" + exchangeTransferMoneyRequestDTO.getAccount() - + "&TransactionId=" + exchangeMoney.getTransactionId() - + "&Amount=" + exchangeTransferMoneyRequestDTO.getAmount() - + "&TransferType=" + exchangeTransferMoneyRequestDTO.getTransferType() - + "&AgentId=" + exchangeTransferMoneyRequestDTO.getAgentId(); - log.info("GamesJILIServiceImpl [exchangeTransferByAgentId] 请求参数 {}", query); - exchangeTransferMoneyRequestDTO.setQuery(query); - - String key = this.getKey(exchangeTransferMoneyRequestDTO); - - JILIExchangeMoneyResponseDTO exchangeMoneyResponse = jiliClient.exchangeTransferByAgentId(query + "&Key=" + key, exchangeTransferMoneyRequestDTO.getAgentId()); - - //判断是否转移成功 - if (this.getIsSuccess(exchangeMoneyResponse.getErrorCode())) { - - - JILIExchangeMoneyResponseDTO.BeanData exchangeMoneyResponseData = exchangeMoneyResponse.getData(); - ApiException.isTrue(!StatusType.FAILURE.getValue().equals(exchangeMoneyResponseData.getStatus()), ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - - - //更新数据 - exchangeMoney.setBalance(NumberUtil.sub(exchangeMoneyResponseData.getCurrencyAfter(), exchangeMoneyResponseData.getCurrencyBefore()).abs()); - exchangeMoney.setCoinBefore(exchangeMoneyResponseData.getCoinBefore()); - exchangeMoney.setCoinAfter(exchangeMoneyResponseData.getCoinAfter()); - exchangeMoney.setCurrencyBefore(exchangeMoneyResponseData.getCurrencyBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoneyResponseData.getCurrencyAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - throw new BaseException(exchangeMoneyResponse.getMessage()); - } - - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesDGServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - String query = "TransactionId=" + exchangeTransferMoneyRequestDTO.getOrderId() - + "&AgentId=" + exchangeTransferMoneyRequestDTO.getAgentId(); - exchangeTransferMoneyRequestDTO.setQuery(query); - - String key = this.getKey(exchangeTransferMoneyRequestDTO); - - JILITransferStatusResponseDTO jiliTransferStatusResponseDTO = jiliClient.checkTransferByTransactionId(query + "&Key=" + key, exchangeTransferMoneyRequestDTO.getAgentId()); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(jiliTransferStatusResponseDTO.getErrorCode())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - JILITransferStatusResponseDTO.TransferData data = jiliTransferStatusResponseDTO.getData(); - ExchangeTransferStatusResponseDTO statusResponseDTO = ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .build(); - if (!ObjectUtils.isEmpty(data)) { - - statusResponseDTO.setBalance(data.getAmount()); - } - - return statusResponseDTO; - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - String startTime = DateUtils.formatDateToGMT4(new Date(betRecordByTimeDTO.getStartTime())); - String endTime = DateUtils.formatDateToGMT4(new Date(betRecordByTimeDTO.getEndTime())); - - //请求参数 - String query = "StartTime=" + startTime + "&EndTime=" + endTime + "&Page=" + betRecordByTimeDTO.getPage() + "&PageLimit=" + betRecordByTimeDTO.getPageLimit() + "&AgentId=" + betRecordByTimeDTO.getAgentId(); - log.info("GamesJILIServiceImpl [getBetRecordByTime] 请求参数 {}", query); - betRecordByTimeDTO.setQuery(query); - //获取key - String key = this.getKey(betRecordByTimeDTO); - JILIBetRecordResponseDTO betRecordJILIResponse = jiliClient.getBetRecordByTime(query + "&Key=" + key, betRecordByTimeDTO.getAgentId()); - - //判断是否获取成功 - if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { - - //数据插入 - this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO); - JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData(); - //获取下一页数据 - while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) { - betRecordByTimeDTO.setPage(dataBean.getPagination().getCurrentPage() + 1); - //请求参数 - query = "StartTime=" + startTime + "&EndTime=" + endTime + "&Page=" + betRecordByTimeDTO.getPage() + "&PageLimit=" + betRecordByTimeDTO.getPageLimit() + "&AgentId=" + betRecordByTimeDTO.getAgentId(); - log.info("GamesJILIServiceImpl [getBetRecordByTime] 请求参数 {}", query); - betRecordByTimeDTO.setQuery(query); - key = this.getKey(betRecordByTimeDTO); - betRecordJILIResponse = jiliClient.getBetRecordByTime(query + "&Key=" + key, betRecordByTimeDTO.getAgentId()); - dataBean = betRecordJILIResponse.getData(); - if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { - //数据插入 - this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO); - } else { - log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage()); - } - } - } else { - log.error("GameBettingDataJILIServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage()); - return Boolean.FALSE; - } - return Boolean.TRUE; - } - - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - String startTime = DateUtils.formatDateToGMT4(new Date(betRecordByTimeDTO.getStartTime())); - String endTime = DateUtils.formatDateToGMT4(new Date(betRecordByTimeDTO.getEndTime())); - - //请求参数 - String query = "StartTime=" + startTime + "&EndTime=" + endTime + "&Page=" + betRecordByTimeDTO.getPage() + "&PageLimit=" + betRecordByTimeDTO.getPageLimit() + "&AgentId=" + betRecordByTimeDTO.getAgentId(); - log.info("GamesJILIServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", query); - betRecordByTimeDTO.setQuery(query); - //获取key - String key = this.getKey(betRecordByTimeDTO); - JILIBetRecordResponseDTO betRecordJILIResponse = jiliClient.getBetRecordByTime(query + "&Key=" + key, betRecordByTimeDTO.getAgentId()); - - //判断是否获取成功 - if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { - - //数据插入 - this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO); - JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData(); - //获取下一页数据 - while (dataBean.getPagination().getCurrentPage() != dataBean.getPagination().getTotalPages() && dataBean.getPagination().getTotalPages() > 0) { - betRecordByTimeDTO.setPage(dataBean.getPagination().getCurrentPage() + 1); - //请求参数 - query = "StartTime=" + startTime + "&EndTime=" + endTime + "&Page=" + betRecordByTimeDTO.getPage() + "&PageLimit=" + betRecordByTimeDTO.getPageLimit() + "&AgentId=" + betRecordByTimeDTO.getAgentId(); - log.info("GamesJILIServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", query); - betRecordByTimeDTO.setQuery(query); - key = this.getKey(betRecordByTimeDTO); - betRecordJILIResponse = jiliClient.getBetRecordByTime(query + "&Key=" + key, betRecordByTimeDTO.getAgentId()); - dataBean = betRecordJILIResponse.getData(); - if (this.getIsSuccess(betRecordJILIResponse.getErrorCode())) { - //数据插入 - this.batchInsert(betRecordJILIResponse, betRecordByTimeDTO); - } else { - log.error("GameBettingDataJILIServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage()); - } - } - } else { - log.error("GameBettingDataJILIServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordJILIResponse.getErrorCode(), betRecordJILIResponse.getMessage()); - return Boolean.FALSE; - } - return Boolean.TRUE; - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - - String freeSpinValidity = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getFreeSpinValidity())); - - - List gameIds = createFreeSpinRequest.getGameIds(); - GameUniqueDTO gameUniqueDTO = new GameUniqueDTO(); - gameUniqueDTO.setGameIds(gameIds); - List gameList = gameService.selectGameUniqueList(gameUniqueDTO); - String gameCodes = gameList.stream() - .map(Game::getGameCode) - .map(String::valueOf) - .collect(Collectors.joining(",")); - String referenceId = GamePlatforms.JILI.getCode() + IdUtils.simpleUUID(); - //请求参数 - String query = "Account=" + createFreeSpinRequest.getAccount() - + "&Currency=" + createFreeSpinRequest.getCurrency() - + "&ReferenceId=" + referenceId - + "&FreeSpinValidity=" + freeSpinValidity - + "&NumberOfRounds=" + createFreeSpinRequest.getNumberOfRounds() - + "&GameIds=" + gameCodes; - - query += "&AgentId=" + createFreeSpinRequest.getAgentId(); - log.info("GamesJILIServiceImpl [createFreeSpin] 请求参数 {}", query); - createFreeSpinRequest.setQuery(query); - //获取key - String key = this.getKey(createFreeSpinRequest); - //判断是否有免费游戏局数可使用的开始时间 - if (!ObjectUtils.isEmpty(createFreeSpinRequest.getStartTime())) { - String startTime = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getStartTime())); - query += "&StartTime=" + startTime; - } - //判断是否有免费游戏局数可使用的开始时间 - if (!ObjectUtils.isEmpty(createFreeSpinRequest.getStartTime())) { - String startTime = DateUtils.formatDateToGMT4(new Date(createFreeSpinRequest.getStartTime())); - query += "&StartTime=" + startTime; - } - //指定投注额 - if (ObjectUtils.isEmpty(createFreeSpinRequest.getBetValue())) { - query += "&BetValue=" + createFreeSpinRequest.getBetValue(); - } - createFreeSpinRequest.setQuery(query); - JILICreateFreeSpinResponseDTO createFreeSpinResponseDTO = jiliClient.createFreeSpin(query + "&Key=" + key, createFreeSpinRequest.getAgentId()); - - //判断是否获取成功 - if (this.getIsSuccess(createFreeSpinResponseDTO.getErrorCode())) { - Member member = memberService.selectMemberByGameAccount(createFreeSpinRequest.getAccount()); - if (ObjectUtils.isEmpty(member)) { - member = new Member(); - } - for (Game game : gameList) { - - - GameFreeRecord gameFreeRecord = GameFreeRecord.builder() - .currencyCode(createFreeSpinRequest.getSystemCurrency()) - .referenceId(referenceId) - .platformCode(GamePlatforms.JILI.getInfo()) - .memberId(member.getId()) - .memberAccount(createFreeSpinRequest.getAccount()) - .gameId(game.getId()) - .sendTime(createFreeSpinRequest.getStartTime()) - .expiredTime(createFreeSpinRequest.getFreeSpinValidity()) - .freeUpdateTime(DateUtils.getNowDate()) - .sendGame(game.getGameName()) - .sendAmount(createFreeSpinRequest.getNumberOfRounds()) - .unusedAmount(createFreeSpinRequest.getNumberOfRounds()) - .build(); - gameFreeRecord.setCreateBy(Constants.SYSTEM); - gameFreeRecordService.insertGameFreeRecord(gameFreeRecord); - } - - return Boolean.TRUE; - } else { - log.error("GameBettingDataJILIServiceImpl [createFreeSpin] 赠送免费局数,错误代码{},错误信息{}", createFreeSpinResponseDTO.getErrorCode(), createFreeSpinResponseDTO.getMessage()); - throw new BaseException(createFreeSpinResponseDTO.getMessage()); - } - - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - String query = "WagersId=" + getGameDetailRequestDTO.getWagersId(); - - getGameDetailRequestDTO.setQuery(query + "&AgentId=" + getGameDetailRequestDTO.getAgentId()); - String key = this.getKey(getGameDetailRequestDTO); - if (StringUtils.hasText(getGameDetailRequestDTO.getLang())) { - query += "&Lang=" + getGameDetailRequestDTO.getLang(); - } - getGameDetailRequestDTO.setQuery(query); - log.info("GamesJILIServiceImpl [getGameDetail] 请求参数 {}", query); - JILIGetGameDetailResponseDTO jiliGetGameDetailResponseDTO = jiliClient.getGameDetail(query + "&AgentId=" + getGameDetailRequestDTO.getAgentId() + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(jiliGetGameDetailResponseDTO.getErrorCode())) { - GetGameDetailResponseDTO getGameDetailResponseDTO = new GetGameDetailResponseDTO(); - getGameDetailResponseDTO.setUrl(jiliGetGameDetailResponseDTO.getData().getUrl()); - return getGameDetailResponseDTO; - } else { - log.error("GameBettingDataJILIServiceImpl [getGameDetail] 获取游戏游玩详情失败,错误代码{},错误信息{}", jiliGetGameDetailResponseDTO.getErrorCode(), jiliGetGameDetailResponseDTO.getMessage()); - throw new BaseException(jiliGetGameDetailResponseDTO.getMessage()); - } - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - String query = "Account=" + kickMemberRequestDTO.getAccount(); - - kickMemberRequestDTO.setQuery(query + "&AgentId=" + kickMemberRequestDTO.getAgentId()); - String key = this.getKey(kickMemberRequestDTO); - log.info("GamesJILIServiceImpl [kickMember] 请求参数 {}", query); - - JILIKickMemberDTO jiliKickMemberDTO = jiliClient.kickMember(query + "&AgentId=" + kickMemberRequestDTO.getAgentId() + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(jiliKickMemberDTO.getErrorCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(jiliKickMemberDTO.getMessage()); - - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - String query = "AgentId=" + kickMemberAllDTO.getAgentId(); - if (!ObjectUtils.isEmpty(kickMemberAllDTO.getGameId())) { - query = "GameId=" + kickMemberAllDTO.getGameId() + "&" + query; - } - - - kickMemberAllDTO.setQuery(query); - String key = this.getKey(kickMemberAllDTO); - log.info("GamesJILIServiceImpl [kickMemberAll] 请求参数 {}", query); - JILIKickMemberAllDTO jiliKickMemberAllDTO = jiliClient.kickMemberAll(query + "&AgentId=" + kickMemberAllDTO.getAgentId() + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(jiliKickMemberAllDTO.getErrorCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(jiliKickMemberAllDTO.getMessage()); - } - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - List gameFreeRecordsResult = new ArrayList<>(); - //请求参数 - String query = "UpdateTime=" + DateUtils.formatDateToGMT4(new Date(getFreeSpinDashflowRequestDTO.getStartTime())) - + "&AgentId=" + getFreeSpinDashflowRequestDTO.getAgentId(); - - log.info("GamesJILIServiceImpl [getFreeSpinDashflow] 请求参数 {}", query); - getFreeSpinDashflowRequestDTO.setQuery(query); - //获取key - String key = this.getKey(getFreeSpinDashflowRequestDTO); - JILIGetFreeSpinDashflowResponseDTO getFreeSpinDashflowResponseDTO = jiliClient.getFreeSpinDashflow(query + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(getFreeSpinDashflowResponseDTO.getErrorCode())) { - for (JILIGetFreeSpinDashflowResponseDTO.DataBean data : getFreeSpinDashflowResponseDTO.getData()) { - List gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(GameFreeRecord.builder() - .referenceId(data.getReferenceID()) - .build()); - for (GameFreeRecord gameFreeRecord : gameFreeRecords) { - gameFreeRecord.setSendTime(data.getSendTime()); - gameFreeRecord.setExpiredTime(data.getExpiredTime()); - gameFreeRecord.setFreeUpdateTime(data.getUpdateTime()); - gameFreeRecord.setSendAmount(data.getSendAmount()); - gameFreeRecord.setUsedAmount(data.getUsedAmount()); - gameFreeRecord.setUnusedAmount(data.getUnusedAmount()); - gameFreeRecordService.updateGameFreeRecord(gameFreeRecord); - gameFreeRecordsResult.add(gameFreeRecord); - } - } - - return gameFreeRecordsResult; - } else { - throw new BaseException(getFreeSpinDashflowResponseDTO.getMessage()); - } - - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - //请求参数 - String query = "ReferenceId=" + cancelFreeSpinRequestDTO.getReferenceId() - + "&AgentId=" + cancelFreeSpinRequestDTO.getAgentId(); - log.info("GamesJILIServiceImpl [cancelFreeSpin] 请求参数 {}", query); - cancelFreeSpinRequestDTO.setQuery(query); - //获取key - String key = this.getKey(cancelFreeSpinRequestDTO); - JILICancelFreeSpinResponseDTO cancelFreeSpinResponseDTO = jiliClient.cancelFreeSpin(query + "&Key=" + key); - //判断是否获取成功 - if (this.getIsSuccess(cancelFreeSpinResponseDTO.getErrorCode())) { - List gameFreeRecords = gameFreeRecordService.selectGameFreeRecordList(GameFreeRecord.builder() - .referenceId(cancelFreeSpinRequestDTO.getReferenceId()) - .build()); - for (GameFreeRecord gameFreeRecord : gameFreeRecords) { - gameFreeRecord.setFreeStatus(FreeStatus.CANCEL.getCode()); - gameFreeRecordService.updateGameFreeRecord(gameFreeRecord); - } - return Boolean.TRUE; - } else { - throw new BaseException(cancelFreeSpinResponseDTO.getMessage()); - } - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param betRecordJILIResponse 投注记录jiliresponse - * @return {@link Integer } - */ - private synchronized void batchInsert(JILIBetRecordResponseDTO betRecordJILIResponse, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - JILIBetRecordResponseDTO.DataBean dataBean = betRecordJILIResponse.getData(); - //数据转化 - for (JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO : dataBean.getResult()) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .systemCurrencyCode(betRecordByTimeDTO.getSystemCurrency()) - .platform(betRecordByTimeDTO.getVendor()) - .currencyCode(betRecordByTimeDTO.getCurrency()) - .platform(betRecordByTimeDTO.getVendor()) - .data(jiliBetRecordDataResponseDTO).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(jiliBetRecordDataResponseDTO.getWagersId()); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.JILI.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - JILIBetRecordDataResponseDTO jiliBetRecordDataResponseDTO = (JILIBetRecordDataResponseDTO) gamesDataBuildDTO.getData(); - - Member member = memberService.selectMemberByGameAccount(jiliBetRecordDataResponseDTO.getAccount()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.JILI_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(JILIGamesDataDTO::getGameId, e -> e)); - JILIGamesDataDTO gamesDataDTO = dataDTOMap.get(jiliBetRecordDataResponseDTO.getGameId()); - BigDecimal payoffAmount = BigDecimal.ZERO; - if (GameStatus.WIN.getCode().equals(jiliBetRecordDataResponseDTO.getStatus())) { - payoffAmount = NumberUtil.sub(jiliBetRecordDataResponseDTO.getPayoffAmount(), jiliBetRecordDataResponseDTO.getTurnover()); - } else if (GameStatus.FAIL.getCode().equals(jiliBetRecordDataResponseDTO.getStatus())) { - payoffAmount = NumberUtil.sub(jiliBetRecordDataResponseDTO.getPayoffAmount(), jiliBetRecordDataResponseDTO.getTurnover()).negate(); - } - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(/*gameSecretKey.getSystemCurrency()*/gamesDataBuildDTO.getSystemCurrencyCode()) - .memberId(member.getId()) - .gameCode(jiliBetRecordDataResponseDTO.getGameId()) - .gameType(JILIGameType.findSystemByCode(jiliBetRecordDataResponseDTO.getGameCategoryId())) - .platformCode(GamePlatforms.JILI.getInfo()) - .gameId(/*gamesDataDTO.getSystemGameId()*/gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getName().getZhCN()) - .gameStatus(jiliBetRecordDataResponseDTO.getStatus()) - .gameStatusType(jiliBetRecordDataResponseDTO.getType()) - .gameCurrencyCode(jiliBetRecordDataResponseDTO.getAgentId()) - .account(String.valueOf(jiliBetRecordDataResponseDTO.getAccount())) - .wagersId(jiliBetRecordDataResponseDTO.getWagersId()) - .wagersTime(jiliBetRecordDataResponseDTO.getWagersTime()) - .betAmount(jiliBetRecordDataResponseDTO.getBetAmount().abs()) - .payoffTime(jiliBetRecordDataResponseDTO.getPayoffTime()) - .payoffAmount(payoffAmount) - .settlementTime(jiliBetRecordDataResponseDTO.getSettlementTime()) - .turnover(jiliBetRecordDataResponseDTO.getTurnover()) - .orderNo(String.valueOf(jiliBetRecordDataResponseDTO.getRoundIndex())) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/address/MyKMAddressSource.java b/ff-game/src/main/java/com/ff/game/api/km/address/MyKMAddressSource.java deleted file mode 100644 index c93baab..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/address/MyKMAddressSource.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.km.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyKMAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.KM.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "api"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/km/client/KMClient.java b/ff-game/src/main/java/com/ff/game/api/km/client/KMClient.java deleted file mode 100644 index 77009c2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/client/KMClient.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.ff.game.api.km.client; - - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.dg.dto.DGResponse; -import com.ff.game.api.fc.dto.ApiCFBalanceTransferStatusResponseDTO; -import com.ff.game.api.km.address.MyKMAddressSource; -import com.ff.game.api.km.dto.*; -import com.ff.game.api.success.MySuccessCondition; - -import java.util.Map; - -/** - * dg 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyKMAddressSource.class) -@Success(condition = MySuccessCondition.class) -public interface KMClient { - /** - * 创建成员 - * - * @param params 参数 - * @param header 头球 - * @return {@link DGResponse } - */ - @Post("/player/authorize") - KMAuthTokenResponse createMember(@JSONBody Map params, @Header Map header); - - /** - * 获取会员信息 - * - * @param params 参数 - */ - @Get("/player/balance?{params}") - KMBalanceResponse getMemberInfo(@Var("params") String params, @Header Map header); - - - /** - * 游戏 - * - * @param params 参数 - * @param header 头球 - * @return {@link KMGameResponse } - */ - @Get("/games?{params}") - KMGameResponse getGameList(@Var("params") String params, @Header Map header); - - - /** - * 加钱 - * - * @param params 参数 - * @param header 头球 - * @return {@link KMTransactionResponse } - */ - @Post(url = "/wallet/credit") - KMTransactionResponse credit(@JSONBody Map params, @Header Map header); - - - /** - * 扣钱 - * - * @param params 参数 - * @param header 头球 - * @return {@link KMTransactionResponse } - */ - @Post(url = "/wallet/debit") - KMTransactionResponse debit(@JSONBody Map params, @Header Map header); - - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link KMBetRecordResponse } - */ - @Get(url ="/v2/history/bets?{params}") - KMBetRecordResponse getBetRecordByTime(@Var("params")String params, @Header Map header); - - /** - * 汇兑转移状态 - * - * @param params 参数 - * @param parameters 范围 - * @return {@link KMBalanceTransferStatusResponseDTO } - */ - @Post(url = "/history/transfers/{params}") - KMBalanceTransferStatusResponseDTO exchangeTransferStatus(@Var("params")String params,@JSONBody Map parameters); - - - /** - * 踢腿队员 - * - * @param params 参数 - * @param header 头球 - * @return {@link KMKickMemberResponse } - */ - @Post(url = "/player/deauthorize") - KMKickMemberResponse kickMember(@JSONBody Map params, @Header Map header); - -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMAuthTokenResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMAuthTokenResponse.java deleted file mode 100644 index 46c55b5..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMAuthTokenResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ff.game.api.km.dto; - - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * kmaust令牌响应 - * - * @author shi - * @date 2025/04/02 - */ -@Data -public class KMAuthTokenResponse { - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - /** - * 身份验证令牌 - */ - @JsonProperty("authtoken") - private String authToken; - - /** - * 是否为新用户 - */ - @JsonProperty("isnew") - private Boolean isNew; -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceResponse.java deleted file mode 100644 index 4a32921..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.game.api.km.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * km平衡响应 - * - * @author shi - * @date 2025/04/02 - */ -@Data -public class KMBalanceResponse { - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - /** - * 余额 - */ - @JsonProperty("bal") - private BigDecimal balance; - - /** - * 货币代码 - */ - @JsonProperty("cur") - private String currency; -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceTransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceTransferStatusResponseDTO.java deleted file mode 100644 index 9a30d2d..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBalanceTransferStatusResponseDTO.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ff.game.api.km.dto; - - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * km平衡传输状态响应数据 - * - * @author shi - * @date 2025/04/08 - */ -@Data -public class KMBalanceTransferStatusResponseDTO { - - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - - /** - * 转账交易 ID - */ - @JsonProperty("txid") - private String txid; - - /** - * 转账时间戳,格式为 ISO 8601,如:2017-12-12T12:11:16+08:00 - */ - @JsonProperty("timestamp") - private String timestamp; - - /** - * 用户 ID - */ - @JsonProperty("userid") - private String userid; - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * 玩家类型,1 代表普通玩家(具体含义根据接口文档定义) - */ - @JsonProperty("playertype") - private int playertype; - - /** - * 转账金额 - */ - @JsonProperty("amt") - private BigDecimal amt; - - /** - * 转账后的余额 - */ - @JsonProperty("postbal") - private BigDecimal postbal; - - /** - * 货币类型,符合 ISO 4217 标准(如 THB) - */ - @JsonProperty("cur") - private String cur; -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBetRecordResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMBetRecordResponse.java deleted file mode 100644 index 9f36e9b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMBetRecordResponse.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.ff.game.api.km.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * kmbet记录响应 - * - * @author shi - * @date 2025/04/02 - */ -@Data -public class KMBetRecordResponse { - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - - /** - * bets 包含下列字段的对象数组容器。 - */ - @JsonProperty("bets") - private List bets; - - @Data - public static class Bet { - - /** - * KM内部投注辨识码。此字段是唯一的标识符。 - */ - @JsonProperty("id") - private String id; - - /** - * 记录在KM服务器的投注时间,采用ISO 8601格式。 - */ - @JsonProperty("beton") - private Date beton; // 使用 Date 类型来表示 ISO 8601 格式的时间 - - /** - * 投注关闭的时间,采用ISO 8601格式。如果回合尚未结束,则为null。 - */ - @JsonProperty("closedon") - private Date closedon; // 使用 Date 类型来表示 ISO 8601 格式的时间 - - /** - * 交易回合的唯一辨识代码。 - */ - @JsonProperty("roundid") - private String roundId; - - /** - * 游戏交易执行回合时的游戏供应商辨识码。 - */ - @JsonProperty("externalroundid") - private String externalRoundId; - - /** - * 游戏供应商代码,例如 "KMQM"。 - */ - @JsonProperty("gpcode") - private String gpCode; - - /** - * 游戏代码。 - */ - @JsonProperty("gcode") - private String gCode; - - /** - * 游戏平台的类型。 - */ - @JsonProperty("platformtype") - private Integer platformType; - - /** - * 玩家专属辨识代码。 - */ - @JsonProperty("userid") - private String userId; - - /** - * 玩家在KM系统使用的货币。 - */ - @JsonProperty("cur") - private String currency; - - /** - * 投注的总金额,为负数表示从账户扣款。 - */ - @JsonProperty("riskamt") - private BigDecimal riskAmount; - - /** - * 投注赢的金额,若玩家赢得金额则为正数,若没有输赢则为0。 - */ - @JsonProperty("winamt") - private BigDecimal winAmount; - - /** - * 回合中所有投注的有效投注总金额。 - */ - @JsonProperty("validbet") - private BigDecimal validBet; - - /** - * 下注玩家的佣金金额。 - */ - @JsonProperty("commission") - private BigDecimal commission; - - /** - * 累积奖金对象,包含贡献金额和中奖金额。若没有配置累积奖金,则为null。 - */ - @JsonProperty("jackpot") - private Jackpot jackpot; - - @Data - public static class Jackpot { - - /** - * 贡献到累积奖金的金额。 - */ - @JsonProperty("contrib") - private BigDecimal contrib; - - /** - * 本注的累积奖金赢取金额。 - */ - @JsonProperty("winamt") - private BigDecimal winAmount; - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMGameResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMGameResponse.java deleted file mode 100644 index 57eb949..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMGameResponse.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.ff.game.api.km.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.List; - -/** - * kmgame响应 - * - * @author shi - * @date 2025/04/02 - */ -@Data -public class KMGameResponse { - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - /** - * 游戏图标解析度 - */ - @JsonProperty("iconres") - private List iconResolutions; - - /** - * 游戏数组,包含具体的游戏信息 - */ - @JsonProperty("games") - private List games; - - @Data - public static class Game { - - /** - * 游戏供应商游戏专属辨识代码 - */ - @JsonProperty("externalid") - private String externalId; - - /** - * 游戏代码 - */ - @JsonProperty("code") - private String code; - - /** - * 游戏名称 - */ - @JsonProperty("name") - private String name; - - /** - * 游戏说明 - */ - @JsonProperty("description") - private String description; - - /** - * 游戏供应商代码 - */ - @JsonProperty("providercode") - private String providerCode; - - /** - * 游戏的状态 - */ - @JsonProperty("isactive") - private Boolean isActive; - - /** - * 游戏种类代码 - */ - @JsonProperty("type") - private Integer type; - - /** - * 游戏图标 URL(此字段不可用) - */ - @JsonProperty("iconurl") - private String iconUrl; - - /** - * 系统游戏id - */ - private String systemGameId; - - /** - * 游戏是否提供试玩 - */ - @JsonProperty("supportdemourl") - private Boolean supportDemoUrl; - - /** - * 投注限额数组(如果有的话) - */ - @JsonProperty("betlimits") - private List betLimits; - - @Data - public static class BetLimit { - - /** - * 游戏供应商的投注限制辨识码 - */ - @JsonProperty("id") - private String id; - - /** - * 最小投注金额 - */ - @JsonProperty("min") - private BigDecimal min; - - /** - * 最大投注金额 - */ - @JsonProperty("max") - private BigDecimal max; - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMKickMemberResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMKickMemberResponse.java deleted file mode 100644 index cf782dd..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMKickMemberResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ff.game.api.km.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * kmkick成员响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class KMKickMemberResponse { - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - - /** - * 成功标志,true 表示操作成功,false 表示操作失败 - */ - @JsonProperty("success") - private boolean success; - - /** - * 描述信息 - */ - @JsonProperty("desc") - private String description; -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/dto/KMTransactionResponse.java b/ff-game/src/main/java/com/ff/game/api/km/dto/KMTransactionResponse.java deleted file mode 100644 index 66112ef..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/dto/KMTransactionResponse.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.ff.game.api.km.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * km事务响应 - * - * @author shi - * @date 2025/04/02 - */ -@Data -public class KMTransactionResponse { - - /** - * 错误代码 - */ - @JsonProperty("err") - private Integer errorCode; - - /** - * 错误描述 - */ - @JsonProperty("errdesc") - private String errorDescription; - - /** - * 余额 - */ - @JsonProperty("bal") - private BigDecimal balance; - - /** - * 货币类型 - */ - @JsonProperty("cur") - private String currency; - - /** - * 交易 ID - */ - @JsonProperty("txid") - private String txId; - - /** - * 平台交易 ID - */ - @JsonProperty("ptxid") - private String ptxId; - - /** - * 是否为重复交易 - */ - @JsonProperty("dup") - private Boolean isDuplicate; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/km/impl/GamesKMServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/km/impl/GamesKMServiceImpl.java deleted file mode 100644 index 189ca02..0000000 --- a/ff-game/src/main/java/com/ff/game/api/km/impl/GamesKMServiceImpl.java +++ /dev/null @@ -1,712 +0,0 @@ -package com.ff.game.api.km.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.ip.IpUtils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.fc.dto.ApiCFBalanceTransferStatusResponseDTO; -import com.ff.game.api.jili.dto.JILITransferStatusResponseDTO; -import com.ff.game.api.km.client.KMClient; -import com.ff.game.api.km.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.api.xk.dto.XKGamesDTO; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.game.service.IPlatformService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.net.URLEncoder; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * DG 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("KMService") -@Slf4j -public class GamesKMServiceImpl implements IGamesService { - - @Resource - private IPlatformService platformService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private KMClient KMClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - return 200 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - - //取出对应的key跟密钥跟请求参数 - String agentKey = gamesBaseRequestDTO.getAgentKey(); - String agentId = gamesBaseRequestDTO.getAgentId(); - - Map keyMap = new HashMap<>(); - keyMap.put("X-QM-ClientId", agentId); - keyMap.put("X-QM-ClientSecret", agentKey); - return keyMap; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesKMServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("ipaddress", IpUtils.getHostIp()); - params.put("username", createMemberRequestDTO.getAccount()); - params.put("userid", createMemberRequestDTO.getAccount()); - params.put("lang", "en-US"); - params.put("cur", createMemberRequestDTO.getCurrency()); - /* 1 青铜-基本额度 - 2 白银-升级额度 - 3 黄金-高级额度 - 4 白金-贵宾额度*/ - params.put("betlimitid", 4); - //TODO 后面去掉 - params.put("istestplayer", Boolean.TRUE); - params.put("platformtype", ObjectUtils.isEmpty(createMemberRequestDTO.getPlatformType()) ? 1 : createMemberRequestDTO.getPlatformType()); - - Map headerMap = this.getKey(createMemberRequestDTO); - KMAuthTokenResponse member = KMClient.createMember(params, headerMap); - if (ObjectUtils.isEmpty(member.getErrorCode()) || this.getIsSuccess(member.getErrorCode())) { - redisCache.setCacheObject(CacheConstants.KM_USER_TOKEN + createMemberRequestDTO.getAccount(), member.getAuthToken()); - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesDGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map paramsMap = new HashMap<>(); - - - paramsMap.put("userid", memberInfoRequestDTO.getAccounts()); - paramsMap.put("cur", memberInfoRequestDTO.getCurrency()); - Map headerMap = this.getKey(memberInfoRequestDTO); - KMBalanceResponse memberInfo = KMClient.getMemberInfo(JsonUtil.mapToQueryString(paramsMap), headerMap); - if (ObjectUtils.isEmpty(memberInfo.getErrorCode()) || this.getIsSuccess(memberInfo.getErrorCode())) { - return MemberInfoResponseDTO.builder().account(memberInfoRequestDTO.getAccounts()).balance(memberInfo.getBalance()).status(GameMemberStatus.UNKNOWN.getCode()).build(); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesKMServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - String kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount()); - if (StringUtils.isEmpty(kmUserToken)) { - - - CreateMemberRequestDTO gamesBaseRequestDTO = CreateMemberRequestDTO.builder() - .account(gamesLogin.getAccount()) - .agentId(gamesLogin.getAgentId()) - .agentKey(gamesLogin.getAgentKey()) - .currency(gamesLogin.getCurrency()) - .build(); - this.createMember(gamesBaseRequestDTO); - kmUserToken = redisCache.getCacheObject(CacheConstants.KM_USER_TOKEN + gamesLogin.getAccount()); - } - - String loginUrl = platformService.get(GamePlatforms.KM.getCode()).getUrlInfo().getLoginUrl(); - - return loginUrl + "/gamelauncher?gpcode=" + gamesLogin.getGameType() - + "&gcode=" + gamesLogin.getGameId() - + "&token=" + kmUserToken - + "&lang=" + gamesLogin.getLang(); - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - List gamesDatas = redisCache.getCacheList(CacheConstants.KM_GAMES); - if (!CollectionUtils.isEmpty(gamesDatas)) { - return CacheConstants.KM_GAMES; - } - - - Map params = new LinkedHashMap<>(); - params.put("lang", "zh-CN"); - params.put("platformtype", 1); - Map headerMap = this.getKey(gamesBaseRequestDTO); - KMGameResponse gameMobiles = KMClient.getGameList(JsonUtil.mapToQueryString(params), headerMap); - //判断是否获取成功 - List gameListData = new ArrayList<>(); - if (ObjectUtils.isEmpty(gameMobiles.getErrorCode()) || this.getIsSuccess(gameMobiles.getErrorCode())) { - gameListData.addAll(this.gameList(gameMobiles, IngressType.MOBILE_WEB.getValue())); - - } else { - throw new BaseException(gameMobiles.getErrorDescription()); - - } - params = new LinkedHashMap<>(); - params.put("lang", "zh-CN"); - params.put("platformtype", 0); - KMGameResponse gamePCs = KMClient.getGameList(JsonUtil.mapToQueryString(params), headerMap); - //判断是否获取成功 - if (ObjectUtils.isEmpty(gamePCs.getErrorCode()) || this.getIsSuccess(gamePCs.getErrorCode())) { - gameListData.addAll(this.gameList(gamePCs, IngressType.PC_WEB.getValue())); - - } else { - throw new BaseException(gamePCs.getErrorDescription()); - } - // 使用集合操作来找出相同 code 的对象 - List games = gameMobiles.getGames().stream() - .filter(mobile -> gamePCs.getGames().stream() - .anyMatch(pc -> pc.getCode().equals(mobile.getCode()))) - .collect(Collectors.toList()); - for (KMGameResponse.Game game : games) { - - Integer platformType = KMGameType.findSystemByCode(game.getProviderCode()); - Game gameOne = Game.builder() - .platformCode(GamePlatforms.KM.getCode()) - .platformType(platformType) - .gameCode(game.getCode()) - .build(); - List gameOnes = gameService.selectGameList(gameOne); - for (Game one : gameOnes) { - one.setIngress(IngressType.PC_AND_MOBILE_WEB.getValue()); - gameService.updateGame(one); - } - } - - redisCache.deleteObject(CacheConstants.KM_GAMES); - redisCache.setCacheList(CacheConstants.KM_GAMES, gameListData); - redisCache.expire(CacheConstants.KM_GAMES, 5L, TimeUnit.HOURS); - return CacheConstants.KM_GAMES; - } - - /** - * 游戏列表 - * - * @param gameList 游戏列表 - * @param ingress 进入 - * @return {@link List }<{@link KMGameResponse.Game }> - */ - private List gameList(KMGameResponse gameList, Integer ingress) { - for (KMGameResponse.Game gamesDataDTO : gameList.getGames()) { - Integer platformType = KMGameType.findSystemByCode(gamesDataDTO.getProviderCode()); - Game game = Game.builder() - .platformCode(GamePlatforms.KM.getCode()) - .platformType(platformType) - .gameCode(gamesDataDTO.getCode()) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(gamesDataDTO.getProviderCode()); - game.setFreespin(Boolean.FALSE); - game.setDemoStatus(gamesDataDTO.getSupportDemoUrl()); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.KM.getCode()) + 1); - game.setGameName(gamesDataDTO.getName()); - game.setCreateBy(Constants.SYSTEM); - game.setIngress(ingress); - game.setPlatformCode(GamePlatforms.KM.getCode()); - game.setPlatformType(platformType); - game.setGameId(StringUtils.addSuffix(GamePlatforms.KM.getCode(), gamesDataDTO.getCode())); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(gamesDataDTO.getName(), "zh-CN")); - game.setNameInfo(nameInfos); - gameService.insertGame(game); - } else { - game = games.get(0); - } - gamesDataDTO.setSystemGameId(game.getGameId()); - } - return gameList.getGames(); - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesKMServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.KM.getInfo() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.KM.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - // 获取第三方钱包余额 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .build(); - - amount = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - } - - Map params = new LinkedHashMap<>(); - params.put("userid", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("amt", amount); - params.put("cur", exchangeTransferMoneyRequestDTO.getCurrency()); - params.put("txid", transactionId); - - Map headerMap = this.getKey(exchangeTransferMoneyRequestDTO); - KMTransactionResponse kmTransactionResponse; - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - kmTransactionResponse = KMClient.debit(params, headerMap); - } else { - kmTransactionResponse = KMClient.credit(params, headerMap); - } - - //判断是否转移成功 - if (ObjectUtils.isEmpty(kmTransactionResponse.getErrorCode()) || this.getIsSuccess(kmTransactionResponse.getErrorCode())) { - - //更新数据 - exchangeMoney.setBalance(amount); - exchangeMoney.setCoinBefore(NumberUtil.sub(amount, kmTransactionResponse.getBalance()).abs()); - exchangeMoney.setCoinAfter(kmTransactionResponse.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesDGServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{},错误信息{}", kmTransactionResponse.getErrorCode(), kmTransactionResponse.getErrorDescription()); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesKMServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Map headerMap = this.getKey(exchangeTransferMoneyRequestDTO); - - KMBalanceTransferStatusResponseDTO kmBalanceTransferStatusResponseDTO = KMClient.exchangeTransferStatus(exchangeTransferMoneyRequestDTO.getOrderId(), headerMap); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (ObjectUtils.isEmpty(kmBalanceTransferStatusResponseDTO.getErrorCode()) || this.getIsSuccess(kmBalanceTransferStatusResponseDTO.getErrorCode())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(kmBalanceTransferStatusResponseDTO.getAmt()) - .coinBefore(NumberUtil.sub(kmBalanceTransferStatusResponseDTO.getAmt(), kmBalanceTransferStatusResponseDTO.getPostbal()).abs()) - .coinAfter(kmBalanceTransferStatusResponseDTO.getPostbal()) - .build(); - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - - log.info("GamesKMServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map key = this.getKey(betRecordByTimeDTO); - String startTime = null; - String endTime = null; - try { - - - startTime = URLEncoder.encode(DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00", "UTF-8"); - endTime = URLEncoder.encode(DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00", "UTF-8"); - } catch (Exception e) { - throw new BaseException(e.getMessage()); - } - Map params = new LinkedHashMap<>(); - params.put("startdate", startTime); - params.put("enddate", endTime); - params.put("includetestplayers", Boolean.TRUE); - params.put("issettled", Boolean.TRUE); - - KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key); - - if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) { - this.batchInsert(betRecordByTime, betRecordByTimeDTO); - return Boolean.TRUE; - } else { - log.error("GamesKMServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription()); - throw new BaseException(betRecordByTime.getErrorDescription()); - } - - - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - - log.info("GamesKMServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", betRecordByTimeDTO); - Map key = this.getKey(betRecordByTimeDTO); - String startTime = null; - String endTime = null; - try { - - - startTime = URLEncoder.encode(DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00", "UTF-8"); - endTime = URLEncoder.encode(DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00", "UTF-8"); - } catch (Exception e) { - throw new BaseException(e.getMessage()); - } - Map params = new LinkedHashMap<>(); - params.put("startdate", startTime); - params.put("enddate", endTime); - params.put("includetestplayers", Boolean.TRUE); - params.put("issettled", Boolean.TRUE); - - KMBetRecordResponse betRecordByTime = KMClient.getBetRecordByTime(JsonUtil.mapToQueryString(params), key); - - if (ObjectUtils.isEmpty(betRecordByTime.getErrorCode()) || this.getIsSuccess(betRecordByTime.getErrorCode())) { - this.batchInsert(betRecordByTime, betRecordByTimeDTO); - return Boolean.TRUE; - } else { - log.error("GamesKMServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrorCode(), betRecordByTime.getErrorDescription()); - throw new BaseException(betRecordByTime.getErrorDescription()); - } - - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesKMServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map key = this.getKey(kickMemberRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("userid", kickMemberRequestDTO.getAccount()); - KMKickMemberResponse kickMember = KMClient.kickMember(params, key); - if (ObjectUtils.isEmpty(kickMember.getErrorCode()) || this.getIsSuccess(kickMember.getErrorCode())) { - redisCache.deleteObject(CacheConstants.KM_USER_TOKEN + kickMemberRequestDTO.getAccount()); - return kickMember.isSuccess(); - } else { - throw new BaseException(kickMember.getDescription()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - log.info("GamesKMServiceImpl [gameDemoLogin] 请求参数 {}", gameDemoLoginRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("lang", gameDemoLoginRequestDTO.getLang()); - String loginUrl = platformService.get(GamePlatforms.KM.getCode()).getUrlInfo().getLoginUrl(); - //String selectConfigByKey = configService.selectConfigByKey(Constants.KM_API_BASE_LOGIN_URL); - return GameDemoLoginResponseDTO.builder() - .url(loginUrl + "/demolauncher?gpcode=" + gameDemoLoginRequestDTO.getGameType() - + "&gcode=" + gameDemoLoginRequestDTO.getGameId() - + "&lang=" + gameDemoLoginRequestDTO.getLang()) - .build(); - } - - - /** - * 批量插入 - * - * @param betRecordByTime dg投注记录响应dto - */ - private void batchInsert(KMBetRecordResponse betRecordByTime, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List report = betRecordByTime.getBets(); - //数据转化 - for (KMBetRecordResponse.Bet bean : report) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - //.systemCurrencyCode(systemCurrency) - //.currencyCode(targetCurrency) - .platform(betRecordByTimeDTO.getVendor()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.KM.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - KMBetRecordResponse.Bet resultBean = (KMBetRecordResponse.Bet) gamesDataBuildDTO.getData(); - - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUserId()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.KM_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap( - KMGameResponse.Game::getCode, - e -> e, - (existing, replacement) -> existing - )); - KMGameResponse.Game gamesDataDTO = dataDTOMap.get(resultBean.getGCode()); - - //输赢状态 - Integer gameStatus = GameStatus.FLAT.getCode(); - BigDecimal payoffAmount = NumberUtil.sub(resultBean.getWinAmount(), resultBean.getRiskAmount().abs()); - if (payoffAmount.compareTo(BigDecimal.ZERO) > 0) { - gameStatus = GameStatus.WIN.getCode(); - } else if (payoffAmount.compareTo(BigDecimal.ZERO) < 0) { - gameStatus = GameStatus.FAIL.getCode(); - } - - - Platform platform = gamesDataBuildDTO.getPlatform(); - String systemCurrency = platform.getOurCurrency(resultBean.getCurrency()); - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(systemCurrency) - .memberId(member.getId()) - .gameCode(gamesDataDTO.getCode()) - .gameType(PlatformType.CARD_GAME.getCode()) - .platformCode(GamePlatforms.KM.getCode()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getName()) - .gameStatus(gameStatus) - .gameStatusType(1) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getUserId()) - .wagersId(resultBean.getId()) - .wagersTime(resultBean.getBeton().getTime()) - .betAmount(resultBean.getRiskAmount().abs()) - .payoffTime(resultBean.getClosedon().getTime()) - .payoffAmount(payoffAmount.abs()) - .settlementTime(resultBean.getClosedon().getTime()) - .turnover(resultBean.getValidBet()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .orderNo(resultBean.getExternalRoundId()) - .round(resultBean.getRoundId()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/address/MeiTianAddressSource.java b/ff-game/src/main/java/com/ff/game/api/meitian/address/MeiTianAddressSource.java deleted file mode 100644 index 299414b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/address/MeiTianAddressSource.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ff.game.api.meitian.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * @author shi - * @date 2025/02/10 - */ -@Component -public class MeiTianAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.MT.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "services"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/client/MeiTianClient.java b/ff-game/src/main/java/com/ff/game/api/meitian/client/MeiTianClient.java deleted file mode 100644 index 8f1fb3e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/client/MeiTianClient.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.ff.game.api.meitian.client; - -import com.dtflys.forest.annotation.Address; -import com.dtflys.forest.annotation.Post; -import com.dtflys.forest.annotation.Var; -import com.ff.game.api.km.dto.KMBalanceTransferStatusResponseDTO; -import com.ff.game.api.meitian.address.MeiTianAddressSource; -import com.ff.game.api.meitian.dto.*; - -/** - * jili 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MeiTianAddressSource.class) -public interface MeiTianClient { - - /** - * 创建会员 - * - * @param playerName - * @param merchantId - * @param pwd - * @return {@link MeiTianCreateMemberResponseDTO} - */ - @Post("/dg/player/playerCreate2/{playerName}/{merchantId}/{pwd}/{code}/{data}") - MeiTianCreateMemberResponseDTO createMember( - @Var("playerName") String playerName, - @Var("merchantId") String merchantId, - @Var("pwd") String pwd, - @Var("code") String code, - @Var("data") String data); - - /** - * 查询余额 - * - * @param playerName 用户名 - * @param merchantId 商户号 - * @return {@link MeiTianMemberInfoDTO} - */ - @Post("/dg/player/getPlayerBalance/{playerName}/{merchantId}") - MeiTianMemberInfoDTO getMemberInfo( - @Var("playerName") String playerName, - @Var("merchantId") String merchantId); - - /** - * 登录 - * - * @param merchantId 商户id - * @param playerName 玩家名 - * @return {@link MeiTianLoginResultDTO } - */ - @Post("/dg/player/playerPlatformUrl/{merchantId}/{playerName}/{pwd}/{code}/{data}") - MeiTianLoginResultDTO loginWithoutRedirect( - @Var("merchantId") String merchantId, - @Var("playerName") String playerName, - @Var("pwd") String pwd, - @Var("code") String code, - @Var("data") String data - ); - - - /** - * 转入 - * - * @param merchantId - * @param playerName - * @param coins - * @param extTransId - * @param code - * @param data - * @return {@link MeiTianExchangeMoneyResponseDTO} - */ - @Post("/dg/player/deposit2/{merchantId}/{playerName}/{coins}/{extTransId}/{code}/{data}") - MeiTianExchangeMoneyResponseDTO transferIn( - @Var("merchantId") String merchantId, - @Var("playerName") String playerName, - @Var("coins") String coins, - @Var("extTransId") String extTransId, - @Var("code") String code, - @Var("data") String data - ); - - - /** - * 转出 - * - * @param merchantId - * @param playerName - * @param coins - * @param extTransId - * @param code - * @param data - * @return {@link MeiTianExchangeMoneyResponseDTO} - */ - @Post("/dg/player/withdraw2/{merchantId}/{playerName}/{coins}/{extTransId}/{code}/{data}") - MeiTianExchangeMoneyResponseDTO transferOut( - @Var("merchantId") String merchantId, - @Var("playerName") String playerName, - @Var("coins") String coins, - @Var("extTransId") String extTransId, - @Var("code") String code, - @Var("data") String data - ); - - - /** - * 汇兑转移状态 - * - * @param merchantId 商户ID - * @param playerName 玩家姓名 - * @param coins 硬币 - * @return {@link MeiTianBalanceTransferStatusResponseDTO } - */ - @Post("dg/player/queryTransbyId/{playerName}/{merchantId}/{extTransId}") - MeiTianBalanceTransferStatusResponseDTO exchangeTransferStatus( - @Var("playerName") String merchantId, - @Var("merchantId") String playerName, - @Var("extTransId") String coins - ); - - /** - * 按recordId获取投注记录 - * - * @param merchantId 代理id - * @param data - * @return {@link MeiTianBetRecordResponseDTO } - */ - @Post(url = "/dg/player/queryMerchantGameRecord2/{merchantId}/{data}") - MeiTianBetRecordResponseDTO syncRecordByRecordID( - @Var("merchantId") String merchantId, - @Var("data") String data); - - /** - * 按照日期获取投注记录 - * - * @param merchantId - * @param data - * @return - */ - @Post(url = "/dg/player/queryMerchantGameRecord3/{merchantId}/{data}") - MeiTianBetRecordResponseDTO syncRecordByDate( - @Var("merchantId") String merchantId, - @Var("data") String data); - - /** - * 踢出 - * - * @param merchantId - * @param playerName - * @return {@link MeiTianLogoutDTO } - */ - @Post("/dg/player/logOutGame/{merchantId}/{playerName}") - MeiTianLogoutDTO kickMember( - @Var("merchantId") String merchantId, - @Var("playerName") String playerName - ); - - /** - * 获取游戏详情 - * - * @param merchantId - * @param code - * @param data - * @return {@link MeiTianGameRecordDetailDTO} - */ - @Post("/dg/player/playCheckUrl/{merchantId}/{code}/{data}") - MeiTianGameRecordDetailDTO getGameDetail( - @Var("merchantId") String merchantId, - @Var("code") String code, - @Var("data") String data - ); -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBalanceTransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBalanceTransferStatusResponseDTO.java deleted file mode 100644 index 4c95d1c..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBalanceTransferStatusResponseDTO.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 梅田余额转移状态响应dto - * - * @author shi - * @date 2025/04/08 - */ -@Data -public class MeiTianBalanceTransferStatusResponseDTO { - /** - * 响应结果代码 - */ - @JsonProperty("resultCode") - private Integer resultCode; - - /** - * 交易 ID - */ - @JsonProperty("transId") - private String transId; - - /** - * 交易时间,格式为 yyyy-MM-dd HH:mm:ss - */ - @JsonProperty("transTime") - private String transTime; - - /** - * 交易类型代码 - */ - @JsonProperty("transType") - private String transType; - - /** - * 交易金额 - */ - @JsonProperty("transCoins") - private BigDecimal transCoins; - - /** - * 当前余额 - */ - @JsonProperty("curBalance") - private BigDecimal curBalance; - - /** - * 时区信息,如:GMT+8 - */ - @JsonProperty("timeZone") - private String timeZone; - - /** - * 交易状态,1 表示成功 - */ - @JsonProperty("status") - private String status; - - /** - * 货币类型,如:CNY - */ - @JsonProperty("currency") - private String currency; -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBetRecordResponseDTO.java deleted file mode 100644 index bc50e57..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianBetRecordResponseDTO.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * 游戏纪录查询返回值 - * - * @author shi - * @date 2024/10/21 - */ -@NoArgsConstructor -@Data -public class MeiTianBetRecordResponseDTO { - - @JsonProperty("resultCode") - private int errorCode; - - @JsonProperty("transList") - private List dataList; - - @NoArgsConstructor - @Data - public static class DataBean { - @JsonProperty("rowID") - private String rowID; // 美天棋牌交易流水号 - @JsonProperty("playerName") - private String playerName; - @JsonProperty("gameDate") - private String gameDate; - @JsonProperty("gameCode") - private String gameCode; - @JsonProperty("period") - private String period; // 游戏局ID - @JsonProperty("betAmount") - private String betAmount; // 下注金额 - @JsonProperty("commissionable") - private String commissionable; // 有效投注量 - private String roomFee;// 房费 - private String income; // 赢得金额-下注金额-房费 - @JsonProperty("recordID") - private String recordID; // 游戏记录ID - private String gameType; // 游戏类型 1表示百人场,2表示对战,3表示捕鱼,4表示街机 - private String timeZone; // 时区 - private String currency; // 币种 - } - - @Getter - @AllArgsConstructor - public enum ResultMessage { - QueryException(0, "查询异常"), - QuerySuccess(1, "查询成功"), - MerchantNotExist(2, "商户不存在"), - MerchantInvalid(3, "商户无效"), - IPLimited(15, "IP被限制"), - OptionalParameterError(32, "可选参数错误"), - MaintenanceMode(40, "维护模式"), - Unknown(-1, "未知错误"), - ; - private final int code; - private final String message; - } - - public static ResultMessage get(int code) { - for (ResultMessage message : ResultMessage.values()) { - if (message.code == code) { - return message; - } - } - return ResultMessage.Unknown; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianCreateMemberResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianCreateMemberResponseDTO.java deleted file mode 100644 index 61a81df..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianCreateMemberResponseDTO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; - - -/** - * 创建成员响应dto - * - * @author shi - * @date 2024/10/22 - */ -@Data -public class MeiTianCreateMemberResponseDTO { - - /** - * 错误代码 - */ - @JsonProperty("resultCode") - private int resultCode; - - - @Getter - @AllArgsConstructor - public enum CreateMemberResultCode { - /** - * 成功 - */ - CreateException(0, "创建异常"), - CreateSuccess(1, "创建成功"), - MerchantNotExist(2, "商户不存在"), - MerchantInvalid(3, "商户无效"), - AlreadyRegistered(5, "商户用户已注册"), - IpLimit(15, "IP被限制"), - DecryptError(21, "解密错误"), - OptionalParameterError(32, "可选参数错误"), - Maintenance(40, "维护模式"), - ; - - private int code; - private String message; - - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianExchangeMoneyResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianExchangeMoneyResponseDTO.java deleted file mode 100644 index c3a47b3..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianExchangeMoneyResponseDTO.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; - -import java.math.BigDecimal; - -/** - * jiliexchange货币回应 - * - * @author shi - * @date 2024/10/22 - */ -@Data -public class MeiTianExchangeMoneyResponseDTO { - - - /** - * 错误代码 - */ - @JsonProperty("resultCode") - private int errorCode; - /** - * 交易序号,额度转移纪录唯一值, 长度上限 50 - */ - @JsonProperty("transId") - private String transactionId; - - /** - * 币种 - */ - @JsonProperty("currency") - private String currency; - - /** - * 余额 - */ - @JsonProperty("curBalance") - private BigDecimal balance; - - /** - * 时区(商户时区) GMT+8 - */ - @JsonProperty("timezone") - private String timezone; - - /** - * 交易时间 2018-08-08 12:23:44 - */ - @JsonProperty("date") - private String date; - - @Getter - @AllArgsConstructor - public enum TransferIn { - // 提现异常 - WITHDRAW_ERROR(0, "充值异常"), - // 提现成功 - WITHDRAW_SUCCESS(1, "充值成功"), - MERCHANT_NOT_EXIST(2, "商户不存在"), - MERCHANT_INVALID(3, "商户无效"), - MERCHANT_USER_NOT_EXIST(4, "商户用户不存在"), - MERCHANT_USER_SYSTEM_DISABLED(6, "商户用户系统禁用"), - MERCHANT_USER_GOLD_BALANCE_INSUFFICIENT(9, "商户用户金币余额不足"), - GAME_NOT_SETTLED(12, "游戏未结算"), - IP_LIMIT(15, "IP被限制"), - DECRYPT_ERROR(21, "解密错误"), - OPTIONAL_PARAMETER_ERROR(32, "可选参数错误"), - EXIST_UNPROCESSED_ORDER(36, "存在未处理订单"), - MAINTENANCE(40, "维护模式"), - Unknown(-1, "未知");; - private int code; - private String message; - - - public static TransferIn get(int code) { - for (TransferIn resultMessage : TransferIn.values()) { - if (resultMessage.code == code) { - return resultMessage; - } - } - return Unknown; - } - } - - @Getter - @AllArgsConstructor - public enum TransferOut { - WITHDRAW_ERROR(0, "提现异常"), - WITHDRAW_SUCCESS(1, "提现成功"), - MERCHANT_NOT_EXIST(2, "商户不存在"), - MERCHANT_INVALID(3, "商户无效"), - MERCHANT_USER_NOT_EXIST(4, "商户用户不存在"), - MERCHANT_USER_SYSTEM_DISABLED(6, "商户用户系统禁用"), - MERCHANT_USER_GOLD_BALANCE_INSUFFICIENT(9, "商户用户金币余额不足"), - GAME_NOT_SETTLED(12, "游戏未结算"), - IP_LIMIT(15, "IP被限制"), - DECRYPT_ERROR(21, "解密错误"), - OPTIONAL_PARAMETER_ERROR(32, "可选参数错误"), - EXIST_UNPROCESSED_ORDER(36, "存在未处理订单"), - MAINTENANCE(40, "维护模式"), - Unknown(-1, "未知");; - private int code; - private String message; - - - public static TransferOut get(int code) { - for (TransferOut resultMessage : TransferOut.values()) { - if (resultMessage.code == code) { - return resultMessage; - } - } - return Unknown; - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameDataDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameDataDTO.java deleted file mode 100644 index 45cccf1..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameDataDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * jiligames数据dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -@Builder -@AllArgsConstructor -public class MeiTianGameDataDTO { - - - /** - *自己系统游戏id - */ - private String systemGameId; - private String gameId; - private String cnName; - private String enName; - private Integer gameCategoryId; - -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameRecordDetailDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameRecordDetailDTO.java deleted file mode 100644 index c7d2bbd..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGameRecordDetailDTO.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; - -/** - * 获取游戏详细信息请求dto - * - * @author shi - * @date 2024/11/12 - */ -@NoArgsConstructor -@Data -public class MeiTianGameRecordDetailDTO { - - @JsonProperty("resultCode") - private int errorCode; - - private String url; - private String currency; - - @Getter - @AllArgsConstructor - public enum ResultMessage { - QueryException(0, "查询异常"), - QuerySuccess(1, "查询成功"), - MerchantNotExist(2, "商户不存在"), - MerchantInvalid(3, "商户无效"), - IPLimited(15, "IP被限制"), - DecryptError(21, "解密错误"), - OptionalParameterError(32, "可选参数错误"), - MaintenanceMode(40, "维护模式"), - Unknown(-1, "未知错误"), - ; - private int code; - private String message; - } - - public static ResultMessage get(int code) { - for (ResultMessage resultMessage : ResultMessage.values()) { - if (resultMessage.getCode() == code) { - return resultMessage; - } - } - return ResultMessage.Unknown; - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGamesDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGamesDTO.java deleted file mode 100644 index 606febf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianGamesDTO.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * 游戏 - * - * @author shi - * @date 2024/10/22 - */ - -@NoArgsConstructor -@Data -public class MeiTianGamesDTO { - - // 捕鱼:3棋牌:2街机:4百人:1全部:0或不传 - private List data; - - { - data = new java.util.ArrayList<>(); - // 捕鱼游戏数据列表 - String[][] buyu = { - {"PTG0056", "3D捕鱼", "3D Fishing", "3"}, - {"PTG0011", "李逵劈鱼", "Fishing Kui Lee", "3"}, - {"PTG0045", "金蟾捕鱼", "Golden Toad", "3"}, - {"PTG0100", "海王2", "Ocean King 2", "3"}, - {"PTG0094", "疯狂捕鱼", "Crazy Fishing", "3"}, - {"PTG0004", "捕鱼来了", "Fishing Joy", "3"}, - {"PTG0104", "疯狂魔鬼城", "Trick or Treat", "3"}, - {"PTG0125", "水果炸翻天", "Fruits Carnival", "3"}, - }; - - addGames(buyu, data); - - // 棋牌游戏数据列表 - String[][] qipai = { - {"PTG0042", "五人牛牛", "Beat Bullfight", "2"}, - {"PTG0022", "通比牛牛", "Mutual Bullfight", "2"}, - {"PTG0013", "二人牛牛", "Versus Niu-Niu", "2"}, - {"PTG0039", "十三水", "Winning Thirteen", "2"}, - {"PTG0062", "炸金花", "Fraud Jinhua", "2"}, - {"PTG0037", "德州扑克", "Texas Hold'em", "2"}, - {"PTG0006", "欢乐斗地主", "Fight the Landlord", "2"}, - {"PTG0023", "黑杰克", "Black Jack", "2"}, - {"PTG0017", "二人梭哈", "Show Hand", "2"}, - {"PTG0080", "抢庄牌九", "Pai Gow", "2"}, - {"PTG0082", "三公", "3-card poker", "2"}, - {"PTG0061", "明牌牛牛", "Spread Bullfight", "2"}, - {"PTG0084", "土豪百家乐", "Rich Baccarat", "2"}, - {"PTG0085", "推筒子", "versus 2-8 bar", "2"}, - {"PTG0086", "二人雀神", "Versus Mahjong", "2"}, - {"PTG0093", "血流成河", "Rivers of Blood", "2"}, - {"PTG0110", "看牌牛牛", "Royal Bull-fight", "2"}, - {"PTG0121", "越式13张", "TIEN LEN", "2"}, - {"PTG0127", "UNO", "UNO", "2"}, - {"PTG0122", "Dummy", "Dummy", "2"}, - {"PTG0123", "九鸡", "Jiu-Ji", "2"}, // 未分类 - {"PTG0124", "博丁", "Bo-Ding", "2"}, // 未分类 - {"PTG0126", "牌肯", "Card Ken", "2"}, - {"PTG0133", "泰式十三支", "Thai 13 Cards", "2"}, - {"PTG0134", "泰九牌", "Gao Gae Thai", "2"}, - {"PTG0136", "Dummy Speto", "Dummy Speto", "2"}, - {"PTG0137", "Gao Gae Sam Bai Thod", "Gao Gae Sam Bai Thod", "2"}, - {"PTG0138", "Slave Card", "Slave Card", "2"} - }; - addGames(qipai, data); - - // 百人场游戏数据列表 - String[][] bairenchang = { - {"PTG0058", "红黑大战", "King's Queen", "1"}, - {"PTG0044", "百人牛牛", "Hundred Niu-Niu", "1"}, - {"PTG0059", "百家乐", "Baccarat", "1"}, - {"PTG0008", "豪车漂移", "Drift Car Racing", "-1"}, // 未分类 - {"PTG0041", "龙虎斗", "The Chinese Boxer", "1"}, - {"PTG0007", "飞禽走兽", "Fowls and Beasts", "-1"}, // 未分类 - {"PTG0036", "五星宏辉", "Five Star Stud", "1"}, - {"PTG0064", "金鲨银鲨", "Golden Shark", "1"}, - {"PTG0020", "西游争霸", "Journey to the West", "1"}, - {"PTG0018", "港式赛马", "Horse Racing", "-1"}, // 未分类 - {"PTG0070", "二八杠", "2-8 Bar", "-1"}, // 未分类 - {"PTG0081", "骰宝", "Sic bo", "1"}, - {"PTG0067", "森林舞会", "Forest Party", "-1"}, // 未分类 - {"PTG0091", "鱼虾蟹", "Crab and Shrimp", "1"}, - {"PTG0092", "红包扫雷", "Minesweeping", "-1"}, // 未分类 - {"PTG0089", "动物跑跑跑", "Animal Running", "-1"}, // 未分类 - {"PTG0116", "越式鱼虾蟹", "Vietnamese Fish-Prawn-Crab", "-1"}, // 未分类 - {"PTG0102", "正版抢车位", "GA Car Parking", "-1"}, // 未分类 - {"PTG0120", "番摊", "FAN TAN", "1"}, - {"PTG2008", "西游争霸战无不胜", "Monkey King2 PLUS", "-1"}, // 未分类 - {"PTG0135", "泰式鱼虾蟹", "Thai Fish Prawn Crab", "-1"} // 未分类 - }; - addGames(bairenchang, data); - - // 街机游戏数据列表 - String[][] dianzi = { - {"PTG0060", "超级大亨", "Super Tycoon", "4"}, - {"PTG0069", "ATT金皇冠", "ATT Gold Crown", "4"}, - {"PTG0001", "水果机", "Super Frootz", "4"}, - {"PTG0010", "水浒传", "The Water Margin", "4"}, - {"PTG0066", "大满贯水果机", "Grand Slam Frootz", "4"}, - {"PTG0068", "泰山闯天关2", "Tarzan Adventure 2", "4"}, - {"PTG0083", "财神到", "Mammon", "4"}, - {"PTG0079", "不倒翁", "Happy tumbler", "4"}, - {"PTG0087", "醉西游", "Monkey King", "4"}, - {"PTG0090", "延禧攻略", "Story of Yanxi Palace", "4"}, - {"PTG0095", "连环夺宝", "Linking Jewels", "4"}, - {"PTG0098", "三只小猪", "Three Little Pigs", "4"}, - {"PTG0097", "招财猫", "Fortune Cat", "4"}, - {"PTG0099", "欲望魅影", "Sexy Succubus", "4"}, - {"PTG0096", "绝地求生", "Playerunknown's Battlegrounds", "4"}, - {"PTG0101", "埃及艳后", "Cleopatra's treasures", "4"}, - {"PTG0103", "年年有鱼", "Lucky boy", "4"}, - {"PTG0105", "天空之神", "God of Sky", "4"}, - {"PTG0107", "阿拉丁神灯", "PLUS ALADDIN'S GOLD", "4"}, - {"PTG0109", "武媚娘传奇", "Empress Wu Zetian", "4"}, - {"PTG0106", "亿万富翁", "Billionaire", "4"}, - {"PTG0115", "萝卜跳一跳", "Jump Hot", "4"}, - {"PTG0117", "宫心计", "Beyond The Realm Of Conscience", "4"}, - {"PTG2001", "恭喜发财", "Good Fortune", "4"}, - {"PTG2002", "新潘金莲", "Pan Jinlian", "4"}, - {"PTG2003", "宫本武藏", "Miyamoto Musashi", "4"}, - {"PTG2004", "武则天", "Empress of the Great Tang", "4"}, - {"PTG2005", "发发发", "Fa Fa Fa", "4"}, - {"PTG2007", "赏金船长", "Captain's Bounty", "4"}, - {"PTG2009", "爱尔兰精灵", "Leprechaun Riches", "4"}, - {"PTG2010", "水浒传豪华版", "Water Margin DELUXE", "4"}, - {"PTG2011", "金钱豹水果机", "Golden Jaguar", "4"}, - {"PTG0118", "疯狂猴子", "Crazy Monkey", "4"}, - {"PTG2015", "金刚", "King Kong", "4"}, - {"PTG2016", "福星献舞", "Dancing FU", "4"}, - {"PTG2017", "野蛮世界", "HUGA", "4"}, - {"PTG2018", "上海甜心", "Shanghai Honey", "4"}, - {"PTG2019", "美洲野牛", "Buffalo Gold", "4"}, - {"PTG2020", "白蛇传", "The Legend of White Snake", "4"}, - {"PTG2021", "笑弥勒", "Happys Prosperous", "4"}, - {"PTG2013", "招财推币机", "Fortune Coindozer", "4"}, - {"PTG2025", "东海之王", "Dragon Of The Eastern Ocean", "4"}, - {"PTG2028", "中国龙", "Dragon World", "4"}, - {"PTG2023", "秦皇传说", "Legend of Emperor Qin", "4"}, - {"PTG2026", "辣椒多多", "More Chilli", "4"}, - {"PTG2029", "财神驾到", "CHOY SUN DOA", "4"}, - {"PTG2030", "招财猫2", "Fortune Cat 2", "4"}, - {"PTG2031", "黄金城魅影", "Gold City Treasure Hunt", "4"}, - {"PTG2032", "亡灵宝藏", "WILD BANDITO", "4"}, - {"PTG2033", "麒麟献宝", "WAYS OF THE QILIN", "4"}, - {"PTG2034", "天将神兵", "Heavenly Warriors", "4"} - }; - - addGames(dianzi, data); - - } - - public void addGames(String[][] gameData, List dataList) { - // 添加数据到 List - for (String[] game : gameData) { - String gameId = game[0]; - String cnName = game[1]; - String enName = game[2]; - Integer categoryId = Integer.valueOf(game[3]); - dataList.add(MeiTianGameDataDTO.builder().gameId(gameId) - .cnName(cnName) - .enName(enName) - .gameCategoryId(categoryId) - .build()); - } - - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLoginResultDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLoginResultDTO.java deleted file mode 100644 index cea3089..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLoginResultDTO.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; - -/** - * 登录时不重定向响应dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -public class MeiTianLoginResultDTO { - - @JsonProperty("resultCode") - private int errorCode; - @JsonProperty("url") - private String url; - - @Getter - @AllArgsConstructor - public enum ResultMessage { - LoginException(0, "登录异常"), - LoginSuccess(1, "登录成功"), - MerchantNotExist(2, "商户不存在"), - MerchantInvalid(3, "商户无效"), - MerchantUserNotExist(4, "商户用户不存在"), - MerchantUserSystemDisabled(6, "商户用户系统禁用"), - PasswordError(7, "密码错误"), - IPLimited(15, "IP被限制"), - DecryptError(21, "解密错误"), - MerchantUserLoginDisabled(22, "商户用户登录禁用"), - OptionalParameterError(32, "可选参数错误"), - MaintenanceMode(40, "维护模式"), - Unknown(-1, "未知错误"); - private int code; - private String message; - } - - public static ResultMessage get(int errorCode) { - for (ResultMessage resultMessage : ResultMessage.values()) { - if (resultMessage.getCode() == errorCode) { - return resultMessage; - } - } - return ResultMessage.Unknown; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLogoutDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLogoutDTO.java deleted file mode 100644 index 103321c..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianLogoutDTO.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; - -@NoArgsConstructor -@Data -public class MeiTianLogoutDTO { - - @JsonProperty("resultCode") - private int errorCode; - - - @Getter - @AllArgsConstructor - public enum ResultMessage { - QueryException(0, "查询异常"), - QuerySuccess(1, "查询成功"), - MerchantNotExist(2, "商户不存在"), - MerchantInvalid(3, "商户无效"), - MerchantUserNotExist(4, "商户用户不存在"), - MerchantUserSystemDisabled(6, "商户用户系统禁用"), - MerchantUserGameOnline(12, "商户用户游戏在线"), - IPLimited(15, "IP被限制"), - MaintenanceMode(40, "维护模式"), - Unknown(-1, "未知错误") - ,; - private int code; - private String message; - } - - public static ResultMessage get(int errorCode) { - for (ResultMessage resultMessage : ResultMessage.values()) { - if (resultMessage.code == errorCode) { - return resultMessage; - } - } - return ResultMessage.Unknown; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianMemberInfoDTO.java b/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianMemberInfoDTO.java deleted file mode 100644 index c28eea2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/dto/MeiTianMemberInfoDTO.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ff.game.api.meitian.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -/** - * 会员信息dto - * - * @author shi - * @date 2024/10/30 - */ -@NoArgsConstructor -@Data -public class MeiTianMemberInfoDTO { - - /** - * 错误代码 - */ - @JsonProperty("resultCode") - private int errorCode; - /** - * 余额 - */ - @JsonProperty("coinBalance") - private BigDecimal balance; - - @JsonProperty("status") - private Integer status; - - @JsonProperty("currency") - private String currency; - - - @Getter - @AllArgsConstructor - public enum ResultMessage { - Excep(0,"查询异常"), - Success(1,"查询成功"), - // 商户不存在 - MerchantNotExist(2,"商户不存在"), - // 商户无效 - MerchantInvalid(3,"商户无效"), - // 商户用户不存在 - AccountNotExist(4,"商户用户不存在"), - // IP被限制 - IpLimit(15,"IP被限制"), - // 维护模式 - Maintenance(40,"维护模式"), - - Unknown(-1, "未知") - ,; - private int code; - private String message; - - public static ResultMessage getResultMessage(int code) { - for (ResultMessage resultMessage : ResultMessage.values()) { - if (resultMessage.code == code) { - return resultMessage; - } - } - return Unknown; - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/meitian/impl/MeiTianGameServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/meitian/impl/MeiTianGameServiceImpl.java deleted file mode 100644 index 25e3e91..0000000 --- a/ff-game/src/main/java/com/ff/game/api/meitian/impl/MeiTianGameServiceImpl.java +++ /dev/null @@ -1,840 +0,0 @@ -package com.ff.game.api.meitian.impl; - -import cn.hutool.core.codec.Base64; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.alibaba.fastjson2.JSON; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.impl.SysConfigServiceImpl; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.delay.DelayService; -import com.ff.delay.DelayTask; -import com.ff.game.api.IGamesService; -import com.ff.game.api.meitian.client.MeiTianClient; -import com.ff.game.api.meitian.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.nio.charset.StandardCharsets; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * 游戏数据解析服务 - * - * @author shi - * @date 2024/10/21 - */ -@Service("MTService") -@Slf4j -public class MeiTianGameServiceImpl implements IGamesService { - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private MeiTianClient meiTianClient; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Autowired - private SysConfigServiceImpl sysConfigServiceImpl; - - @Autowired - private DelayService delayService; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean isSuccess(Integer errorCode) { - return 1 == errorCode; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - - String playerName = createMemberRequestDTO.getAccount(); - String merchantId = createMemberRequestDTO.getAgentId(); - String md5Password = Md5Utils.md5New(createMemberRequestDTO.getKeyInfo().getPassword()); - Map rawMap = new LinkedHashMap<>(); - rawMap.put("nickname", createMemberRequestDTO.getAccount()); - rawMap.put("playerLevel", "0"); - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] encode rawData failure", e); - throw new ApiException(ErrorCode.ERROR.getCode()); - } - String md5Code = Md5Utils.md5New(createMemberRequestDTO.getKeyInfo().getKey() + rawData);//MD5(key+rawData); - MeiTianCreateMemberResponseDTO createMemberResponseDTO = - meiTianClient.createMember( - playerName, - merchantId, - md5Password, - md5Code, - data); - int errorCode = createMemberResponseDTO.getResultCode(); - log.info("[MeiTian]创建会员失败返回结果:{}", errorCode); - if (1 == errorCode) { - return Boolean.TRUE; - } - if (5 == errorCode) { - throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - - String playerName = memberInfoRequestDTO.getAccounts(); - String merchantId = memberInfoRequestDTO.getAgentId(); - MeiTianMemberInfoDTO memberInfoDTO = meiTianClient.getMemberInfo(playerName, merchantId); - //判断是否获取成功 - if (this.isSuccess(memberInfoDTO.getErrorCode())) { - return MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(memberInfoDTO.getBalance()) - .account(playerName) - .build(); - } else { - throw new BaseException(MeiTianMemberInfoDTO.ResultMessage.getResultMessage(memberInfoDTO.getErrorCode()).getMessage()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - - String merchantId = gamesLogin.getAgentId(); - String playerName = gamesLogin.getAccount(); - String md5Password = Md5Utils.md5New(gamesLogin.getKeyInfo().getPassword()); - Map rawMap = new LinkedHashMap<>(); - /*rawMap.put("gameHall ", gamesLogin.getGameType());*/ - rawMap.put("gameCode", gamesLogin.getGameId()); - rawMap.put("lang", gamesLogin.getLang()); - rawMap.put("roomID", "0"); - - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] encode rawData failure", e); - throw new ApiException(ErrorCode.ERROR.getCode()); - } - String code = Md5Utils.md5New(gamesLogin.getKeyInfo().getKey() + rawData); - MeiTianLoginResultDTO loginWithoutRedirectResponseDTO = - meiTianClient.loginWithoutRedirect( - merchantId, - playerName, - md5Password, - code, - data - ); - //判断是否获取成功 - if (this.isSuccess(loginWithoutRedirectResponseDTO.getErrorCode())) { - return loginWithoutRedirectResponseDTO.getUrl(); - } else { - throw new BaseException(MeiTianLoginResultDTO.get(loginWithoutRedirectResponseDTO.getErrorCode()).getMessage()); - } - - } - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - List gamesDatas = redisCache.getCacheList(CacheConstants.MeiTian_GAMES); - if (!CollectionUtils.isEmpty(gamesDatas)) { - return CacheConstants.MeiTian_GAMES; - } - - MeiTianGamesDTO gameList = new MeiTianGamesDTO(); - - for (MeiTianGameDataDTO gamesDataDTO : gameList.getData()) { - Integer platformType = MeiTianGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()); - Game game = Game.builder() - .platformCode(GamePlatforms.MT.getCode()) - .platformType(platformType) - .gameCode(String.valueOf(gamesDataDTO.getGameId())) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); - game.setFreespin(false); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.MT.getCode()) + 1); - game.setGameName(gamesDataDTO.getCnName()); - game.setCreateBy(Constants.SYSTEM); - game.setPlatformType(platformType); - game.setPlatformCode(GamePlatforms.MT.getCode()); - game.setGameId(StringUtils.addSuffix(GamePlatforms.MT.getCode(), gamesDataDTO.getGameId())); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(gamesDataDTO.getCnName(), "zh-CN")); - nameInfos.add(new NameInfo(gamesDataDTO.getEnName(), "en-US")); - game.setNameInfo(nameInfos); - gameService.insertGame(game); - } else { - game = games.get(0); - } - gamesDataDTO.setSystemGameId(game.getGameId()); - } - - redisCache.deleteObject(CacheConstants.MeiTian_GAMES); - redisCache.setCacheList(CacheConstants.MeiTian_GAMES, gameList.getData()); - redisCache.expire(CacheConstants.MeiTian_GAMES, 5L, TimeUnit.HOURS); - - return CacheConstants.MeiTian_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.MT.getCode() + IdUtils.simpleUUID(); - - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.MT.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - String key = exchangeTransferMoneyRequestDTO.getAgentKey(); - String merchantId = exchangeTransferMoneyRequestDTO.getAgentId(); - String playerName = exchangeTransferMoneyRequestDTO.getAccount(); - String coins = exchangeTransferMoneyRequestDTO.getAmount().setScale(4, RoundingMode.DOWN).toString(); - if (exchangeTransferMoneyRequestDTO.getTransferType().equals(TransferType.ALL.getCode())) { - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .build(); - coins = this.getMemberInfo(gamesBaseRequestDTO).getBalance().setScale(4, RoundingMode.DOWN).toString(); - } - - Map rawMap = new LinkedHashMap<>(); - rawMap.put("merchantId", merchantId); - rawMap.put("playerName", playerName); - rawMap.put("extTransId", transactionId); - rawMap.put("coins", coins); - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] base64 rawData failure", e); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - String md5Code = Md5Utils.md5New(key + rawData); - // 转入到游戏商 type == 2 - if (exchangeTransferMoneyRequestDTO.getTransferType().equals(TransferType.GAMES.getCode())) { - - MeiTianExchangeMoneyResponseDTO exchangeMoneyResponse = meiTianClient - .transferIn( - merchantId, - playerName, - coins, - transactionId, - md5Code, - data - ); - - //判断是否转移成功 - if (this.isSuccess(exchangeMoneyResponse.getErrorCode())) { - //更新数据 - BigDecimal transAmount = new BigDecimal(coins); - exchangeMoney.setBalance(transAmount); - - exchangeMoney.setCoinBefore(exchangeMoneyResponse.getBalance().subtract(transAmount)); - exchangeMoney.setCoinAfter(exchangeMoneyResponse.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoneyResponse.getBalance().subtract(transAmount)); - exchangeMoney.setCurrencyAfter(exchangeMoneyResponse.getBalance()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - throw new BaseException(MeiTianExchangeMoneyResponseDTO.TransferIn.get(exchangeMoneyResponse.getErrorCode()).getMessage()); - } - - } else { - - MeiTianExchangeMoneyResponseDTO exchangeMoneyResponse = meiTianClient - .transferOut( - merchantId, - playerName, - coins, - transactionId, - md5Code, - data - ); - - //判断是否转移成功 - if (this.isSuccess(exchangeMoneyResponse.getErrorCode())) { - //更新数据 - BigDecimal transAmount = new BigDecimal(coins); - exchangeMoney.setBalance(transAmount); - - exchangeMoney.setCoinBefore(exchangeMoneyResponse.getBalance().add(transAmount)); - exchangeMoney.setCoinAfter(exchangeMoneyResponse.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoneyResponse.getBalance().add(transAmount)); - exchangeMoney.setCurrencyAfter(exchangeMoneyResponse.getBalance()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - throw new BaseException(MeiTianExchangeMoneyResponseDTO.TransferOut.get(exchangeMoneyResponse.getErrorCode()).getMessage()); - } - } - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("MeiTianGameServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - String merchantId = exchangeTransferMoneyRequestDTO.getAgentId(); - String playerName = exchangeTransferMoneyRequestDTO.getAccount(); - - MeiTianBalanceTransferStatusResponseDTO meiTianBalanceTransferStatusResponseDTO = meiTianClient.exchangeTransferStatus( - playerName, - merchantId, - exchangeTransferMoneyRequestDTO.getOrderId() - ); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.isSuccess(meiTianBalanceTransferStatusResponseDTO.getResultCode()) && "1".equals(meiTianBalanceTransferStatusResponseDTO.getStatus())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(meiTianBalanceTransferStatusResponseDTO.getTransCoins()) - .coinBefore(NumberUtil.sub(meiTianBalanceTransferStatusResponseDTO.getTransCoins(), meiTianBalanceTransferStatusResponseDTO.getCurBalance()).abs()) - .coinAfter(meiTianBalanceTransferStatusResponseDTO.getCurBalance()) - .build(); - } - - - class GetRecordByTimeTask extends DelayTask { - - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetRecordByTimeTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - doSyncRecordByRecordID(betRecordByTimeDTO); - } - } - - class GetRecordByHistoryTimeTask extends DelayTask { - - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetRecordByHistoryTimeTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - doSyncRecordByDate(betRecordByTimeDTO, 1); - } - } - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - delayService.addTask(new GetRecordByTimeTask(betRecordByTimeDTO)); - return Boolean.TRUE; - //return doSyncRecordByRecordID(betRecordByTimeDTO); - } - - boolean doSyncRecordByRecordID(BetRecordByTimeDTO betRecordByTimeDTO) { - String configKey = GamePlatforms.MT.getCode() + ":lastSyncRecordID"; - long recordID = redisCache.getCacheObject(configKey); - - //String lastRecordID = sysConfigServiceImpl.selectConfigByKey(configKey); - /*if (lastRecordID == null || lastRecordID.isEmpty()) { - - } else { - recordID = Long.parseLong(lastRecordID); - }*/ - String merchantId = betRecordByTimeDTO.getAgentId(); - Map rawMap = new LinkedHashMap<>(); - rawMap.put("recordID", recordID); - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] base64 rawData failure", e); - throw new ApiException(ErrorCode.ERROR.getCode()); - } - - //获取key - MeiTianBetRecordResponseDTO recordResponse = - meiTianClient.syncRecordByRecordID(merchantId, data); - - //判断是否获取成功 - if (this.isSuccess(recordResponse.getErrorCode())) { - List dataList = recordResponse.getDataList(); - if (CollectionUtils.isEmpty(dataList)) { - return Boolean.TRUE; - } - //数据插入 - this.batchInsert(recordResponse, betRecordByTimeDTO); - MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1); - redisCache.setCacheObject(configKey, Long.parseLong(dataBean.getRowID())); - - /*SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey); - if (config == null) { - config = new SysConfig(); - config.setConfigKey(configKey); - config.setConfigValue(dataBean.getRecordID()); - sysConfigServiceImpl.insertConfig(config); - } else { - config.setConfigValue(dataBean.getRecordID()); - sysConfigServiceImpl.updateConfig(config); - }*/ - // 它每次返回25000条,所以需要判断,如果大于25000条,则继续拉取 - if (dataList.size() >= 25000) { - doSyncRecordByRecordID(betRecordByTimeDTO); - } - } else { - log.error("[MeiTian] syncRecordByRecordID failure, errorCode:{}", recordResponse.getErrorCode()); - return Boolean.FALSE; - } - return Boolean.TRUE; - } - - boolean doSyncRecordByDate(BetRecordByTimeDTO betRecordByTimeDTO, int daysToSubtract) { - - String date = getDateStr(daysToSubtract); - String configKey = GamePlatforms.MT.getCode() + ":lastSyncDate"; - long recordID = redisCache.getCacheObject(configKey); - String merchantId = betRecordByTimeDTO.getAgentId(); - Map rawMap = new LinkedHashMap<>(); - rawMap.put("rowID", recordID); - rawMap.put("startTime", date); - rawMap.put("endTime", date); - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] base64 rawData failure", e); - throw new ApiException(ErrorCode.ERROR.getCode()); - } - - //获取key - MeiTianBetRecordResponseDTO recordResponse = - meiTianClient.syncRecordByDate(merchantId, data); - - //判断是否获取成功 - if (this.isSuccess(recordResponse.getErrorCode())) { - List dataList = recordResponse.getDataList(); - if (CollectionUtils.isEmpty(dataList)) { - return Boolean.TRUE; - } - //数据插入 - this.batchInsert(recordResponse, betRecordByTimeDTO); - MeiTianBetRecordResponseDTO.DataBean dataBean = dataList.get(dataList.size() - 1); - //syncDateMap.put(date, Long.parseLong(dataBean.getRowID())); - redisCache.setCacheObject(configKey, Long.parseLong(dataBean.getRowID())); - /*SysConfig config = sysConfigServiceImpl.getByConfigKey(configKey); - if (null == config) { - config = new SysConfig(); - config.setConfigKey(configKey); - config.setConfigValue(JSON.toJSONString(syncDateMap)); - sysConfigServiceImpl.insertConfig(config); - } else { - config.setConfigValue(JSON.toJSONString(syncDateMap)); - sysConfigServiceImpl.updateConfig(config); - }*/ - - // 它每次返回25000条,所以需要判断,如果大于25000条,则继续拉取 - if (dataList.size() >= 25000) { - doSyncRecordByDate(betRecordByTimeDTO, daysToSubtract); - } - } else { - log.error("[MeiTian] syncRecordByDate error, errorCode:{}", recordResponse.getErrorCode()); - return Boolean.FALSE; - } - return Boolean.TRUE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //doSyncRecordByDate(betRecordByTimeDTO, 0); - //doSyncRecordByDate(betRecordByTimeDTO, 1); // yesterday - - delayService.addTask(new GetRecordByHistoryTimeTask(betRecordByTimeDTO)); - return true; - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new BaseException("暂不支持免费局数"); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - - String key = getGameDetailRequestDTO.getKeyInfo().getKey(); - String merchantId = getGameDetailRequestDTO.getAgentId(); - Map rawMap = new LinkedHashMap<>(); - rawMap.put("rowID", getGameDetailRequestDTO.getWagersId()); - rawMap.put("lang", getGameDetailRequestDTO.getLang()); - - String rawData = JSON.toJSONString(rawMap); - String data = null; - try { - data = Base64.encode(rawData.getBytes(StandardCharsets.UTF_8)); - } catch (Exception e) { - log.error("[MeiTian] encode rawData failure", e); - throw new ApiException(ErrorCode.ERROR.getCode()); - } - String code = Md5Utils.md5New(key + rawData); - MeiTianGameRecordDetailDTO responseDTO = meiTianClient.getGameDetail(merchantId, code, data); - - //判断是否获取成功 - if (this.isSuccess(responseDTO.getErrorCode())) { - GetGameDetailResponseDTO getGameDetailResponseDTO = new GetGameDetailResponseDTO(); - getGameDetailResponseDTO.setUrl(responseDTO.getUrl()); - return getGameDetailResponseDTO; - } else { - throw new BaseException(MeiTianGameRecordDetailDTO.get(responseDTO.getErrorCode()).getMessage()); - } - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - - String merchantId = kickMemberRequestDTO.getAgentId(); - String playerName = kickMemberRequestDTO.getAccount(); - - MeiTianLogoutDTO jiliKickMemberDTO = meiTianClient.kickMember( - merchantId, - playerName); - //判断是否获取成功 - if (this.isSuccess(jiliKickMemberDTO.getErrorCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(MeiTianLogoutDTO.get(jiliKickMemberDTO.getErrorCode()).getMessage()); - - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param recordResponse 投注记录 - */ - private void batchInsert(MeiTianBetRecordResponseDTO recordResponse, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List dataList = recordResponse.getDataList(); - if (CollectionUtils.isEmpty(dataList)) { - return; - } - - //数据转化 - for (MeiTianBetRecordResponseDTO.DataBean dataBean : dataList) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(dataBean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(dataBean.getRowID()); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.MT.getCode()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - MeiTianBetRecordResponseDTO.DataBean dataBean = (MeiTianBetRecordResponseDTO.DataBean) gamesDataBuildDTO.getData(); -// GameSecretKeyCurrencyDTO gameSecretKey = -// gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .currency(dataBean.getCurrency()) -// .platformCode(GamePlatforms.MT.getCode()).build()); - - - Member member = memberService.selectMemberByGameAccount(dataBean.getPlayerName()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gameDatas = redisCache.getCacheList(CacheConstants.MeiTian_GAMES); - Map dataDTOMap = gameDatas.stream().collect(Collectors.toMap(MeiTianGameDataDTO::getGameId, e -> e)); - MeiTianGameDataDTO gamesDataDTO = dataDTOMap.get(dataBean.getGameCode()); - BigDecimal originPayoffAmount = new BigDecimal(dataBean.getIncome()); // 这个值是到手的 - - int compareResult = originPayoffAmount.compareTo(BigDecimal.ZERO); - long gameTime = getTime(dataBean.getGameDate()); - Platform platform = gamesDataBuildDTO.getPlatform(); - String systemCurrency = platform.getOurCurrency(dataBean.getCurrency()); - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(systemCurrency) - .memberId(member.getId()) - .gameCode(dataBean.getGameCode()) - .gameType(MeiTianGameType.findSystemByCode(Integer.parseInt(dataBean.getGameType()))) - .platformCode(GamePlatforms.MT.getCode()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getCnName()) - .gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode()) - .gameStatusType(1) // 一般下注 - .gameCurrencyCode(dataBean.getCurrency()) - .account(dataBean.getPlayerName()) - .wagersId(dataBean.getRowID()) - .wagersTime(gameTime) - .betAmount(new BigDecimal(dataBean.getBetAmount())) - .payoffTime(gameTime) - .payoffAmount(originPayoffAmount.abs()) - .settlementTime(gameTime) - .turnover(new BigDecimal(dataBean.getCommissionable())) - .orderNo(dataBean.getRowID()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } - - public long getTime(String date) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - Date parse = simpleDateFormat.parse(date); - return parse.getTime(); - } catch (ParseException e) { - return System.currentTimeMillis(); - } - } - - public String getDateStr(int daysToSubtract) { - // 获取当前日期减去指定天数 - LocalDate date = LocalDate.now().minusDays(daysToSubtract); - - // 定义日期格式 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - - // 返回格式化日期字符串 - return date.format(formatter); - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/address/MyNGAddressSource.java b/ff-game/src/main/java/com/ff/game/api/ng/address/MyNGAddressSource.java deleted file mode 100644 index 3a6b35a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/address/MyNGAddressSource.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.api.ng.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -@Component -public class MyNGAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.PG.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "api"); - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java b/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java deleted file mode 100644 index 13296fd..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/client/NGClient.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.ff.game.api.ng.client; - - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.jili.address.MyJILIAddressSource; -import com.ff.game.api.jili.dto.JILICreateMemberResponseDTO; -import com.ff.game.api.jili.dto.JILIExchangeMoneyResponseDTO; -import com.ff.game.api.ng.address.MyNGAddressSource; -import com.ff.game.api.ng.dto.*; -import com.ff.game.api.xk.dto.XKExchangeMoneyResponseDTO; -import com.ff.game.api.xk.dto.XKLoginWithoutRedirectResponseDTO; - -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -/** - * ng客户端 - * - * @author shi - * @date 2025/03/11 - */ -@Address(source = MyNGAddressSource.class) -public interface NGClient { - - /** - * 创建成员 - * - * @param parameters 参数 - * @return {@link String } - */ - @Post("/server/create") - ApiNGResponseDTO createMember(@JSONBody Map parameters, @Header Map headerMap); - - /** - * 获取会员信息 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link String }> - */ - @Post("/server/balance") - ApiNGResponseDTO getMemberInfo(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 获取游戏列表 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link List }> - */ - @Post("/server/gameCode") - ApiNGResponseDTO> getGameList(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 无重定向登录 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiLoginResponseDTO }> - */ - @Post("/server/gameUrl") - ApiNGResponseDTO loginWithoutRedirect(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 按代理id进行交换转账 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiLoginResponseDTO }> - */ - @Post(url = "/server/transfer",connectTimeout = 70000) - ApiNGResponseDTO exchangeTransferByAgentId(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 汇兑转移状态 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }> - */ - @Post(url = "/server/transferStatus") - ApiNGResponseDTO exchangeTransferStatus(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 按时间获取投注记录 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiGameBetRecordPageResponseDTO }> - */ - @Post(url = "server/recordAll") - ApiNGResponseDTO getBetRecordByTime(@JSONBody Map parameters, @Header Map headerMap); - - /** - * 按历史时间获取投注记录 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiGameBetRecordPageResponseDTO }> - */ - @Post(url = "server/recordHistory") - ApiNGResponseDTO getBetRecordByHistoryTime(@JSONBody Map parameters, @Header Map headerMap); - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiExchangeTransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiExchangeTransferStatusResponseDTO.java deleted file mode 100644 index 1bf9196..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiExchangeTransferStatusResponseDTO.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ff.game.api.ng.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; - -/** - * api交换传输状态响应dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ApiExchangeTransferStatusResponseDTO { - /** - * 玩家账号 - */ - private String playerId; - - /** - * 订单号 - */ - private String orderId; - - /** - * 创建时间 - * 使用 LocalDateTime 类型来处理日期和时间 - */ - private Date createTime; - - /** - * 转换额度,正数转入、负数转出 - * 使用 BigDecimal 类型以便精确处理货币和财务相关数据 - */ - private BigDecimal amount; - - /** - * 转换后玩家剩余额度 - * 使用 BigDecimal 类型以便精确处理货币和财务相关数据 - */ - private BigDecimal afterBalance; - - /** - * 状态,0:进行中、1:成功、2:失败 - */ - private int status; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java deleted file mode 100644 index 713234f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameBetRecordPageResponseDTO.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.ff.game.api.ng.dto; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.Date; -import java.util.List; - -/** - * api游戏下注记录页面响应dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ApiGameBetRecordPageResponseDTO { - - /** - * 数据总计 - */ - private int total; - - /** - * 当前页码 - */ - private int pageNo; - - /** - * 每页条数 - */ - private int pageSize; - - /** - * 投注记录列表 - */ - private List list; - - /** - * 游戏投注记录 - */ - @Data - public static class GameBetRecord { - - /** - * 玩家账号 - */ - private String playerId; - - /** - * 游戏平台类型 - */ - private String platType; - - /** - * 游戏货币 - */ - private String currency; - - /** - * 游戏类型: - * 1:视讯、2:老虎机、3:彩票、4:体育、5:电竞、6:捕猎、7:棋牌 - */ - private int gameType; - - /** - * 游戏名称 - */ - private String gameName; - - /** - * 局号 - */ - private String round; - - /** - * 桌号 - */ - private String table; - - /** - * 座号 - */ - private String seat; - - - /** - * 投注金额 - */ - private BigDecimal betAmount; - - /** - * 有效投注金额 - */ - private BigDecimal validAmount; - - /** - * 输赢金额 - */ - private BigDecimal settledAmount; - - /** - * 投注内容,部分游戏字段内容较长,建议数据库字段类型为 text - */ - private String betContent; - - /** - * 订单状态: - * 0:未完成、1:已完成、2:已取消、3:已撤单 - */ - private int status; - - /** - * 游戏订单号 - */ - private Long gameOrderId; - - /** - * 订单创建时间 (UTC +8) - */ - private Date betTime; - - /** - * 订单更新时间 (UTC +8) - */ - private Date lastUpdateTime; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameInfoResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameInfoResponseDTO.java deleted file mode 100644 index b4e75db..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiGameInfoResponseDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.game.api.ng.dto; - -import lombok.Data; - -import java.util.Map; - -/** - * api游戏信息响应dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ApiGameInfoResponseDTO { - - /** - * 游戏平台 - */ - private String platType; - /** - * 游戏类型 - */ - private Integer gameType; - /** - * 游戏代码 - */ - private String gameCode; - /** - * 支持终端类型 - */ - private String ingress; - /** - * 游戏名称(多语言) - */ - private Map gameName; - - /** - * 系统游戏id - */ - private Long systemGameId; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiLoginResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiLoginResponseDTO.java deleted file mode 100644 index 208e37e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiLoginResponseDTO.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ff.game.api.ng.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * api成员信息响应dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ApiLoginResponseDTO { - - /** - * 游戏链接 - */ - private String url; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiMemberInfoResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiMemberInfoResponseDTO.java deleted file mode 100644 index ff63bd0..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiMemberInfoResponseDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.game.api.ng.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * api成员信息响应dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ApiMemberInfoResponseDTO { - /** - * 余额 - */ - private BigDecimal balance; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiNGResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiNGResponseDTO.java deleted file mode 100644 index e48042f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/dto/ApiNGResponseDTO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.ng.dto; - -import lombok.Data; -import org.apache.poi.ss.formula.functions.T; - -/** - * api对应于 - * - * @author shi - * @date 2025/03/11 - */ -@Data -public class ApiNGResponseDTO { - /** - * 状态码,10000 成功,其他失败 - */ - private int code; - /** - * 消息 - */ - private String msg; - /** - * 数据 - */ - private T data; -} diff --git a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java deleted file mode 100644 index 6f04a19..0000000 --- a/ff-game/src/main/java/com/ff/game/api/ng/service/impl/GamesPGServiceImpl.java +++ /dev/null @@ -1,776 +0,0 @@ -package com.ff.game.api.ng.service.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.SleepUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.ng.client.NGClient; -import com.ff.game.api.ng.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.dto.GameBettingDetailsDTO; -import com.ff.game.dto.GameDTO; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.security.SecureRandom; -import java.time.Instant; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; - - -/** - * 游戏数据解析服务 - * - * @author shi - * @date 2024/10/21 - */ -@Service("PGService") -@Slf4j -public class GamesPGServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private NGClient ngClient; - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Autowired - @Qualifier("threadPoolTaskExecutor") - private ThreadPoolTaskExecutor threadPoolTaskExecutor; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - ApiException.isTrue(10009 != errorCode, ErrorCode.FREQUENT_INTERFACE_REQUESTS.getCode()); - - return 10000 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏基础请求dto - * @return {@link Map }<{@link String }, {@link String }> - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Map headerMap = new HashMap<>(); - - String characters = "abcdefghijklmnopqrstuvwxyz0123456789"; - SecureRandom random = new SecureRandom(); - // 生成 16-32 之间的随机长度 - int length = 16 + random.nextInt(17); - StringBuilder sb = new StringBuilder(length); - for (int i = 0; i < length; i++) { - sb.append(characters.charAt(random.nextInt(characters.length()))); - } - - //取出对应的key跟密钥跟请求参数 - String agentKey = gamesBaseRequestDTO.getAgentKey(); - String agentId = gamesBaseRequestDTO.getAgentId(); - String key = Md5Utils.md5New(sb + agentId + agentKey); - headerMap.put("sign", key); - headerMap.put("random", String.valueOf(sb)); - headerMap.put("sn", agentId); - headerMap.put("Content-Type", "application/json"); - return headerMap; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesNGServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("playerId", createMemberRequestDTO.getAccount()); - paramsMap.put("platType", NGPlatforms.PG.getCode()); - paramsMap.put("currency", createMemberRequestDTO.getCurrency()); - Map headerMap = this.getKey(createMemberRequestDTO); - ApiNGResponseDTO apiNGResponseDTO = ngClient.createMember(paramsMap, headerMap); - int errorCode = apiNGResponseDTO.getCode(); - if (10000 == errorCode) { - return Boolean.TRUE; - } - if (10002 == errorCode) { - throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesNGServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("playerId", memberInfoRequestDTO.getAccounts()); - paramsMap.put("platType", NGPlatforms.PG.getCode()); - paramsMap.put("currency", memberInfoRequestDTO.getCurrency()); - Map headerMap = this.getKey(memberInfoRequestDTO); - //这个接口请求稍微重复一次就报错 - SleepUtil.sleep(500); - ApiNGResponseDTO apiNGResponseDTO = ngClient.getMemberInfo(paramsMap, headerMap); - int errorCode = apiNGResponseDTO.getCode(); - if (this.getIsSuccess(errorCode)) { - return MemberInfoResponseDTO.builder().account(memberInfoRequestDTO.getAccounts()).balance(apiNGResponseDTO.getData().getBalance()).status(GameMemberStatus.UNKNOWN.getCode()).build(); - } else { - throw new BaseException(apiNGResponseDTO.getMsg()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesNGServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - Map paramsMap = new HashMap<>(); - paramsMap.put("playerId", gamesLogin.getAccount()); - paramsMap.put("platType", NGPlatforms.PG.getCode()); - paramsMap.put("currency", gamesLogin.getCurrency()); - paramsMap.put("gameType", gamesLogin.getGameType()); - paramsMap.put("lang", gamesLogin.getLang()); - paramsMap.put("gameCode", gamesLogin.getGameId()); - paramsMap.put("returnUrl", gamesLogin.getHomeUrl()); - paramsMap.put("ingress", PlatformHomeType.WEB.getValue().equals(gamesLogin.getVendor()) ? IngressType.PC_WEB.getValue() : IngressType.MOBILE_WEB.getValue()); - Map headerMap = this.getKey(gamesLogin); - ApiNGResponseDTO apiLoginResponseDTOApiNGResponseDTO = ngClient.loginWithoutRedirect(paramsMap, headerMap); - if (this.getIsSuccess(apiLoginResponseDTOApiNGResponseDTO.getCode())) { - return apiLoginResponseDTOApiNGResponseDTO.getData().getUrl(); - } else { - throw new BaseException(apiLoginResponseDTOApiNGResponseDTO.getMsg()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - List apiGameInfoResponseDTOS = redisCache.getCacheList(CacheConstants.PG_GAMES); - if (!CollectionUtils.isEmpty(apiGameInfoResponseDTOS)) { - return CacheConstants.PG_GAMES; - } - - - log.info("GamesNGServiceImpl [getGameList] 请求参数 {}", gamesBaseRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("platType", NGPlatforms.PG.getCode()); - Map headerMap = this.getKey(gamesBaseRequestDTO); - ApiNGResponseDTO> gameList = ngClient.getGameList(paramsMap, headerMap); - if (this.getIsSuccess(gameList.getCode())) { - for (ApiGameInfoResponseDTO apiGameInfoResponseDTO : gameList.getData()) { - Integer platformType = NGGameType.findSystemByCode(apiGameInfoResponseDTO.getGameType()); - Game game = Game.builder() - .platformCode(GamePlatforms.PG.getCode()) - .platformType(platformType) - .gameCode(apiGameInfoResponseDTO.getGameCode()) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(String.valueOf(apiGameInfoResponseDTO.getGameType())); - game.setFreespin(Boolean.FALSE); - game.setDemoStatus(Boolean.TRUE); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PG.getCode()) + 1); - game.setGameName(apiGameInfoResponseDTO.getGameName().get("zh-hans")); - game.setCreateBy(Constants.SYSTEM); - game.setPlatformCode(GamePlatforms.PG.getCode()); - game.setPlatformType(platformType); - game.setGameId(StringUtils.addSuffix(GamePlatforms.PG.getCode(), apiGameInfoResponseDTO.getGameCode())); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hans"), "zh-CN")); - nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("zh-hant"), "zh-TW")); - nameInfos.add(new NameInfo(apiGameInfoResponseDTO.getGameName().get("en"), "en-US")); - game.setNameInfo(nameInfos); - gameService.insertGame(game); - } else { - game = games.get(0); - } - apiGameInfoResponseDTO.setSystemGameId(game.getId()); - - - } - - redisCache.deleteObject(CacheConstants.PG_GAMES); - redisCache.setCacheList(CacheConstants.PG_GAMES, gameList.getData()); - redisCache.expire(CacheConstants.PG_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new BaseException(gameList.getMsg()); - } - return CacheConstants.PG_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesNGServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PG.getCode(), 32); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.PG.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - //获取余额 - String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? NGTransferType.TRANSFER_OUT.getValue() : NGTransferType.TRANSFER_IN.getValue(); - //获取当前游戏币 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .build(); - MemberInfoResponseDTO memberInfo = this.getMemberInfo(gamesBaseRequestDTO); - //判断是不是转出 - if (NGTransferType.TRANSFER_OUT.getValue().equals(type)) { - exchangeTransferMoneyRequestDTO.setAmount(memberInfo.getBalance()); - } - - - Map paramsMap = new HashMap<>(); - paramsMap.put("platType", NGPlatforms.PG.getCode()); - paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount()); - paramsMap.put("currency", exchangeTransferMoneyRequestDTO.getCurrency()); - paramsMap.put("type", type); - paramsMap.put("amount", exchangeTransferMoneyRequestDTO.getAmount()); - paramsMap.put("orderId", transactionId); - - - Map key = this.getKey(exchangeTransferMoneyRequestDTO); - ApiNGResponseDTO apiNGResponseDTO = ngClient.exchangeTransferByAgentId(paramsMap, key); - if (this.getIsSuccess(apiNGResponseDTO.getCode())) { - //更新数据 - exchangeMoney.setBalance(exchangeTransferMoneyRequestDTO.getAmount()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesPGServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{},错误信息{}", apiNGResponseDTO.getCode(), apiNGResponseDTO.getMsg()); - throw new BaseException(apiNGResponseDTO.getMsg()); - } - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - - - Map paramsMap = new HashMap<>(); - paramsMap.put("playerId", exchangeTransferMoneyRequestDTO.getAccount()); - paramsMap.put("currency", exchangeTransferMoneyRequestDTO.getCurrency()); - paramsMap.put("orderId", exchangeTransferMoneyRequestDTO.getOrderId()); - Map key = this.getKey(exchangeTransferMoneyRequestDTO); - ApiNGResponseDTO apiNGResponseDTO = ngClient.exchangeTransferStatus(paramsMap, key); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(apiNGResponseDTO.getCode())) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - ExchangeTransferStatusResponseDTO transferStatusResponseDTO = ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .build(); - ApiExchangeTransferStatusResponseDTO apiNGResponseDTOData = apiNGResponseDTO.getData(); - if (!ObjectUtils.isEmpty(apiNGResponseDTOData)) { - transferStatusResponseDTO.setBalance(apiNGResponseDTOData.getAmount()); - transferStatusResponseDTO.setCoinBefore(NumberUtil.sub(apiNGResponseDTOData.getAmount(), apiNGResponseDTOData.getAfterBalance()).abs()); - transferStatusResponseDTO.setCoinAfter(apiNGResponseDTOData.getAfterBalance()); - } - - - return transferStatusResponseDTO; - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - - - Platform platform = betRecordByTimeDTO.getVendor(); - Set cacheSet = redisCache.getCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY); - if (CollectionUtils.isEmpty(cacheSet)) { - cacheSet = new HashSet<>(); - } - List currencys = new ArrayList<>(platform.getCurrencyInfo().values()); - //如果长度一致则清空缓存循环币种 - if (cacheSet.size() >= currencys.size()) { - cacheSet = new HashSet<>(); - redisCache.deleteObject(CacheConstants.PG_GAMES_BET_CURRENCY); - } - //去掉重复的 - currencys.removeAll(cacheSet); - - String firstCurrency = currencys.get(0); - - - int pageNo = 1; - int pageSize = 2000; - Map paramsMap = new HashMap<>(); - paramsMap.put("currency", /*currencyDTO.getCurrency()*/ firstCurrency); - paramsMap.put("pageNo", pageNo); - paramsMap.put("pageSize", pageSize); - Map key = this.getKey(betRecordByTimeDTO); - - String systemCurrency = platform.getOurCurrency(firstCurrency); - - - ApiNGResponseDTO betRecordByTime = ngClient.getBetRecordByTime(paramsMap, key); - - if (this.getIsSuccess(betRecordByTime.getCode())) { - cacheSet.add(firstCurrency); - redisCache.setCacheSet(CacheConstants.PG_GAMES_BET_CURRENCY, cacheSet); - - ApiNGResponseDTO result = betRecordByTime; - AtomicInteger pageNoAtomic = new AtomicInteger(pageNo); - - - ApiGameBetRecordPageResponseDTO data = result.getData(); - //数据组装 - this.batchInsert(data, systemCurrency, firstCurrency); - - //总页数 - // 计算总页数,确保不会遗漏 - int totalPage = (int) Math.ceil((double) data.getTotal() / pageSize); - - // 获取下一页数据 - while (pageNoAtomic.get() < totalPage && data.getTotal() > 0) { - pageNoAtomic.incrementAndGet(); - //请求参数 - Map paramMap = new HashMap<>(); - paramMap.put("currency", /*currencyDTO.getCurrency()*/firstCurrency); - paramMap.put("pageNo", pageNoAtomic.get()); - paramMap.put("pageSize", pageSize); - SleepUtil.sleep(10000); - ApiNGResponseDTO betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key); - data = betRecordByTimePage.getData(); - //数据组装 - this.batchInsert(data, systemCurrency, firstCurrency); - } - - - } - getBetRecordByHistoryTime(betRecordByTimeDTO, systemCurrency, firstCurrency); - return Boolean.TRUE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @param currency 货币 - */ - private void getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO, String systemCurrency, String currency /*GameSecretKeyCurrencyDTO currencyDTO*/) { - - //捞取指定30分钟前的数据 - Long startTimes = DateUtils.addOrSubtractMinutes(DateUtils.getNowDate(), -30); - Long endTimes = DateUtils.getNowDate(); - betRecordByTimeDTO.setStartTime(startTimes); - betRecordByTimeDTO.setEndTime(endTimes); - - - int currentMinute = java.time.LocalTime.now().getMinute(); - // 判断当前分钟是否是 20 分、40 分或 0 分,如果不是,跳过当前执行 - if (currentMinute != 20 && currentMinute != 40 && currentMinute != 0) { - // 当前时间不是 20 分、40 分、0 分,跳过执行 - return; - } - - - String startTime = DateTimeFormatter - .ofPattern("yyyy-MM-dd HH:mm:ss") - .withZone(ZoneId.of("Asia/Shanghai")) - .format(Instant.ofEpochMilli(betRecordByTimeDTO.getStartTime())); - - String endTime = DateTimeFormatter - .ofPattern("yyyy-MM-dd HH:mm:ss") - .withZone(ZoneId.of("Asia/Shanghai")) - .format(Instant.ofEpochMilli(betRecordByTimeDTO.getEndTime())); - - - //betRecordByTimeDTO.setAgentId(currencyDTO.getCode()); - //betRecordByTimeDTO.setAgentKey(currencyDTO.getKey()); - int pageNo = 1; - int pageSize = 2000; - Map paramsMap = new HashMap<>(); - paramsMap.put("currency", /*currencyDTO.getCurrency()*/ currency); - paramsMap.put("pageNo", pageNo); - paramsMap.put("pageSize", pageSize); - paramsMap.put("startTime", startTime); - paramsMap.put("endTime", endTime); - Map key = this.getKey(betRecordByTimeDTO); - - - ApiNGResponseDTO betRecordByTime = ngClient.getBetRecordByHistoryTime(paramsMap, key); - - if (this.getIsSuccess(betRecordByTime.getCode())) { - ApiNGResponseDTO result = betRecordByTime; - AtomicInteger pageNoAtomic = new AtomicInteger(pageNo); - - threadPoolTaskExecutor.execute(() -> { - - ApiGameBetRecordPageResponseDTO data = result.getData(); - //数据组装 - this.batchInsert(data, systemCurrency, currency); - - //总页数 - // 计算总页数,确保不会遗漏 - int totalPage = (int) Math.ceil((double) data.getTotal() / pageSize); - - // 获取下一页数据 - while (pageNoAtomic.get() < totalPage && data.getTotal() > 0) { - pageNoAtomic.incrementAndGet(); - //请求参数 - Map paramMap = new HashMap<>(); - paramMap.put("currency", /*currencyDTO.getCurrency()*/ currency); - paramMap.put("pageNo", pageNoAtomic.get()); - paramMap.put("pageSize", pageSize); - paramMap.put("startTime", startTime); - paramMap.put("endTime", endTime); - SleepUtil.sleep(10000); - ApiNGResponseDTO betRecordByTimePage = ngClient.getBetRecordByTime(paramMap, key); - data = betRecordByTimePage.getData(); - //数据组装 - this.batchInsert(data, systemCurrency, currency); - } - }); - - - } - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - - - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - - List gameBettingDetails = gameBettingDetailsService.selectGameBettingDetailsList(GameBettingDetailsDTO.builder().wagersId(getGameDetailRequestDTO.getWagersId()).build()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - GetGameDetailResponseDTO getGameDetailResponseDTO = new GetGameDetailResponseDTO(); - getGameDetailResponseDTO.setUrl(gameBettingDetails.get(0).getBetContent()); - return getGameDetailResponseDTO; - } - return null; - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - - - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - ApiGameBetRecordPageResponseDTO.GameBetRecord resultBean = (ApiGameBetRecordPageResponseDTO.GameBetRecord) gamesDataBuildDTO.getData(); - - NGPlatforms ngPlatforms = NGPlatforms.getByCode(resultBean.getPlatType()); - if (ObjectUtils.isEmpty(ngPlatforms)) { - return null; - } - - String platform = ngPlatforms.getPlatform(); - List games = gameService.selectGameDTOList(GameDTO.builder() - .gameName(resultBean.getGameName()) - .platformCode(platform) - .build()); - if (CollectionUtils.isEmpty(games)) { - return null; - } - Game gamesDataDTO = games.get(0); - - Member member = memberService.selectMemberByGameAccount(resultBean.getPlayerId()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - GameDTO gameDTO = new GameDTO(); - gameDTO.setPlatformCodes(NGPlatforms.getAllPlatforms()); - - int gameStatus = GameStatus.FLAT.getCode(); - if (BigDecimal.ZERO.compareTo(resultBean.getSettledAmount()) > 0) { - gameStatus = GameStatus.FAIL.getCode(); - } else if (BigDecimal.ZERO.compareTo(resultBean.getSettledAmount()) < 0) { - gameStatus = GameStatus.WIN.getCode(); - } - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getSystemCurrencyCode()) - .memberId(member.getId()) - .gameCode(gamesDataDTO.getGameCode()) - .gameType(NGGameType.findSystemByCode(resultBean.getGameType())) - .platformCode(NGPlatforms.getByCode(resultBean.getPlatType()).getPlatform()) - .gameId(gamesDataDTO.getGameId()) - .gameName(gamesDataDTO.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(1) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getPlayerId()) - .wagersId(String.valueOf(resultBean.getGameOrderId())) - .wagersTime(resultBean.getBetTime().getTime()) - .betAmount(resultBean.getBetAmount().abs()) - .payoffTime(resultBean.getLastUpdateTime().getTime()) - .payoffAmount(resultBean.getSettledAmount().abs()) - .settlementTime(resultBean.getLastUpdateTime().getTime()) - .turnover(resultBean.getValidAmount()) - .orderNo(StringUtils.isNotEmpty(resultBean.getRound()) ? String.valueOf(resultBean.getRound()) : null) - .settlementStatus(NGSettlementStatusEnum.fromStatus(resultBean.getStatus()).getCode()) - .round(resultBean.getRound()) - .table(resultBean.getTable()) - .seat(resultBean.getSeat()) - .betContent(resultBean.getBetContent()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - - } - - /** - * 批量插入 - * - * @param data 数据 - */ - private synchronized void batchInsert(ApiGameBetRecordPageResponseDTO data, String systemCurrency, String currency) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据转化 - for (ApiGameBetRecordPageResponseDTO.GameBetRecord bean : data.getList()) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .systemCurrencyCode(systemCurrency) - .currencyCode(currency) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getGameOrderId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, NGPlatforms.PG.getPlatform()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - List wagersId = gameBettingDetails.stream().map(GameBettingDetails::getWagersId).collect(Collectors.toList()); - gameBettingDetailsService.deleteGameBettingDetailsByWagersId(wagersId); - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/address/MyPGTAddressSource.java b/ff-game/src/main/java/com/ff/game/api/pgt/address/MyPGTAddressSource.java deleted file mode 100644 index f8e4654..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/address/MyPGTAddressSource.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ff.game.api.pgt.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.constant.Constants; -import com.ff.base.enums.GamePlatforms; -import com.ff.base.system.service.ISysConfigService; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我 pt 泰国来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyPGTAddressSource implements AddressSource { - @Resource - private IPlatformService platformService; - @Resource - private ISysConfigService configService; - - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.PGT.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https",apiBaseUrl, 443,""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java b/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java deleted file mode 100644 index 14952d5..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/client/PGTClient.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.ff.game.api.pgt.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.dg.dto.DGResponse; -import com.ff.game.api.fc.dto.ApiFCGameListResponseDTO; -import com.ff.game.api.jili.dto.JILIKickMemberAllDTO; -import com.ff.game.api.jili.dto.JILIKickMemberDTO; -import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO; -import com.ff.game.api.ng.dto.ApiNGResponseDTO; -import com.ff.game.api.pgt.address.MyPGTAddressSource; -import com.ff.game.api.pgt.dto.*; -import com.ff.game.api.pgx.dto.PGXPlayerStatusResponse; -import com.ff.game.api.success.MySuccessCondition; -import com.ff.game.api.xk.dto.XKKickMemberAllDTO; - -import java.util.Map; - -/** - * pt 泰国 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyPGTAddressSource.class) -@Success(condition = MySuccessCondition.class) -public interface PGTClient { - /** - * 创建成员 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link String } - */ - @Post("/member") - PGTCreateMemberResponse createMember(@JSONBody Map parameters, @Header Map headerMap); - - /** - * 获取会员信息 - * - * @param parameters 范围 - * @return {@link PGTBalanceResponse } - */ - @Get("/balance?${parameters}") - PGTBalanceResponse getMemberInfo(@Var("parameters") String parameters, @Header Map headerMap); - - - - - - /** - * 无重定向登录 - * - * @param parameters 范围 - * @return {@link PGTLoginResponse } - */ - @Post("/logIn") - PGTLoginResponse loginWithoutRedirect(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 获取游戏列表 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTGameListResponse } - */ - @Get("/games?${parameters}") - PGTGameListResponse getGameList(@Var("parameters") String parameters, @Header Map headerMap); - - - /** - * 押金 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTExchangeTransferResponse } - */ - @Post(url = "/deposit") - PGTExchangeTransferResponse deposit(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 收回 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTExchangeTransferResponse } - */ - @Post(url = "/withdraw") - PGTExchangeTransferResponse withdraw(@JSONBody Map parameters, @Header Map headerMap); - - /** - * 汇兑转移状态 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }> - */ - @Post(url = "/verifyDepositWithdraw") - PGTTransactionResponse exchangeTransferStatus(@JSONBody Map parameters, @Header Map headerMap); - - - /** - * 按时间获取投注记录 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTTransactionDetailsResponse } - */ - @Get(url = "/betTransactionsV2?{parameters}") - PGTTransactionDetailsResponse getBetRecordByTime(@Var("parameters") String parameters, @Header Map headerMap); - - - /** - * 投注交易回放 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTReplayUrlResponseDTO } - */ - @Get(url = "/betTransactionReplay?{parameters}") - PGTReplayUrlResponseDTO betTransactionReplay(@Var("parameters") String parameters, @Header Map headerMap); - - - - /** - * 踢出队员 - * - * @param parameters 范围 - * @param headerMap 标题映射 - * @return {@link PGTKickMemberResponse } - */ - @Post("/seamless/kickOutPlayer") - PGTKickMemberResponse kickMember(@JSONBody Map parameters, @Header Map headerMap); - - - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTBalanceResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTBalanceResponse.java deleted file mode 100644 index d60c33e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTBalanceResponse.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * PG平衡响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class PGTBalanceResponse { - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,通常为 0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 关于响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 获取余额数据 - */ - @JsonProperty("data") - private BalanceData data; - - @Data - public static class BalanceData { - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * 每个 productId 的当前余额 - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 响应状态 - */ - @JsonProperty("status") - private String status; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTCreateMemberResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTCreateMemberResponse.java deleted file mode 100644 index 8f7537a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTCreateMemberResponse.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * pgtcreate成员响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class PGTCreateMemberResponse { - - /** - * 请求的唯一标识符 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 状态码,0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 响应消息,通常用于提供请求处理的结果 - */ - @JsonProperty("message") - private String message; - - /** - * 响应的实际数据 - */ - @JsonProperty("data") - private ResponseData data; - - @Data - public static class ResponseData { - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * 货币类型 - */ - @JsonProperty("currency") - private String currency; - - /** - * 操作状态 - */ - @JsonProperty("status") - private String status; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java deleted file mode 100644 index 9bb67a7..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTExchangeTransferResponse.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * pgtexchange传输响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class PGTExchangeTransferResponse { - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,通常为 0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 关于响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 包含余额相关的数据 - */ - @JsonProperty("data") - private BalanceData data; - - @Data - public static class BalanceData { - - /** - * 响应状态,成功/失败 - */ - @JsonProperty("status") - private String status; - - /** - * 存款金额(十进制 2 位数字) - */ - @JsonProperty("amount") - private BigDecimal amount; - - /** - * 存款后每个 productId 的余额(十进制 2 位数字) - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 交易 ID - */ - @JsonProperty("txId") - private String txId; - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * 存款前每个 productId 的余额(十进制 2 位数字 - */ - @JsonProperty("beforeBalance") - private BigDecimal beforeBalance; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTGameListResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTGameListResponse.java deleted file mode 100644 index 717680e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTGameListResponse.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * pgtgame列表响应 - * - * @author shi - * @date 2025/04/07 - */ -@Data -public class PGTGameListResponse { - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 有关响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 包含游戏数据的对象 - */ - @JsonProperty("data") - private GameData data; - - @Data - public static class GameData { - - /** - * 游戏列表 - */ - @JsonProperty("games") - private List games; - } - - @Data - public static class Game { - - /** - * 游戏名称 - */ - @JsonProperty("name") - private String name; - - /** - * 游戏类别 - */ - @JsonProperty("category") - private String category; - - /** - * 游戏类型 - */ - @JsonProperty("type") - private String type; - - /** - * 游戏代码 - */ - @JsonProperty("code") - private String code; - - /** - * 游戏图片链接 - */ - @JsonProperty("img") - private String img; - - /** - * 系统游戏id - */ - private String systemGameId; - - /** - * 游戏排名 - */ - @JsonProperty("rank") - private int rank; - - /** - * 游戏提供者代码 - */ - @JsonProperty("providerCode") - private String providerCode; - - - /** - * 场所 - */ - @JsonProperty("locale") - private Locale locale; - } - - /** - * 场所 - * - * @author shi - * @date 2025/04/07 - */ - @Data - public class Locale { - /** - * 泰文 - */ - @JsonProperty("TH") - private String th; - /** - * 英语 - */ - @JsonProperty("EN") - private String en; - /** - * 中国 - */ - @JsonProperty("CN") - private String cn; - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTKickMemberResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTKickMemberResponse.java deleted file mode 100644 index 2735bf7..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTKickMemberResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * pgtkick成员响应 - * - * @author shi - * @date 2025/04/07 - */ -@Data -public class PGTKickMemberResponse { - - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态代码 - * 0:成功,其他代码表示失败 - */ - @JsonProperty("code") - private int code; - - /** - * 消息描述 - */ - @JsonProperty("message") - private String message; - - /** - * 交易数据 - */ - @JsonProperty("data") - private TransactionData data; - - @Data - public static class TransactionData { - - /** - * 交易成功的状态描述 - */ - @JsonProperty("status") - private String status; - - /** - * 玩家用户名 - */ - @JsonProperty("username") - private String username; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java deleted file mode 100644 index 57590a7..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTLoginResponse.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * pgtlogin响应 - * - * @author shi - * @date 2025/04/03 - */ -@Data -public class PGTLoginResponse { - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,通常为 0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 关于响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 包含登录相关数据 - */ - @JsonProperty("data") - private LoginData data; - - @Data - public static class LoginData { - - /** - * 登录 URL 链接 - */ - @JsonProperty("url") - private String url; - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTReplayUrlResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTReplayUrlResponseDTO.java deleted file mode 100644 index 1389e4f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTReplayUrlResponseDTO.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * pgtreplay url响应dto - * - * @author shi - * @date 2025/04/08 - */ -@Data -public class PGTReplayUrlResponseDTO { - /** - * 请求 ID - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应代码,0 表示成功 - */ - @JsonProperty("code") - private int code; - - /** - * 响应消息,描述请求的状态 - */ - @JsonProperty("message") - private String message; - - /** - * 数据,包含重播 URL 信息 - */ - @JsonProperty("data") - private Datas data; - - /** - * 内部数据类,包含重播 URL - */ - @Data - public static class Datas { - - /** - * 重播链接 - */ - @JsonProperty("url") - private String url; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java deleted file mode 100644 index 096183e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionDetailsResponse.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * pgtt交易详情响应 - * - * @author shi - * @date 2025/04/07 - */ -@Data -public class PGTTransactionDetailsResponse { - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,通常为 0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 关于响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 包含交易数据的对象 - */ - @JsonProperty("data") - private TransactionData data; - - @Data - public static class TransactionData { - - /** - * 下一批数据的 ID - */ - @JsonProperty("nextId") - private String nextId; - - /** - * 交易列表 - */ - @JsonProperty("txns") - private List txns; - } - - @Data - public static class Transaction { - - /** - * 交易 ID - */ - @JsonProperty("id") - private String id; - - /** - * 用户投注 ID - */ - @JsonProperty("betId") - private String betId; - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * ISO 4217 货币代码 - */ - @JsonProperty("currency") - private String currency; - - /** - * 结算时间 - */ - @JsonProperty("accountingDate") - private Date accountingDate; - - /** - * 最新更新时间 - */ - @JsonProperty("updatedDate") - private Date updatedDate; - - /** - * 质押金额 - */ - @JsonProperty("stake") - private BigDecimal stake; - - /** - * 支付金额(包括本金) - */ - @JsonProperty("payout") - private BigDecimal payout; - - /** - * 产品 ID - */ - @JsonProperty("productId") - private String productId; - - /** - * 游戏代码 - */ - @JsonProperty("gameCode") - private String gameCode; - - /** - * 游戏名称 - */ - @JsonProperty("gameName") - private String gameName; - - /** - * 轮次 ID - */ - @JsonProperty("roundId") - private String roundId; - - /** - * 投注状态(未结、已结算、未结算、无效) - * OPEN, SETTLED, UNSETTLED, VOID - */ - @JsonProperty("betStatus") - private String betStatus; - - /** - * 支付状态(LOSE、WIN、DRAW、UNKNOWN) - */ - @JsonProperty("payoutStatus") - private String payoutStatus; - - /** - * 佣金 - */ - @JsonProperty("commission") - private double commission; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java b/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java deleted file mode 100644 index d794122..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/dto/PGTTransactionResponse.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ff.game.api.pgt.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * pgtt交易响应 - * - * @author shi - * @date 2025/04/07 - */ -@Data -public class PGTTransactionResponse { - - /** - * 每个请求的唯一引用 - */ - @JsonProperty("reqId") - private String reqId; - - /** - * 响应状态,通常为 0 表示成功,其他值表示错误 - */ - @JsonProperty("code") - private int code; - - /** - * 关于响应状态的其他信息 - */ - @JsonProperty("message") - private String message; - - /** - * 包含交易相关的数据 - */ - @JsonProperty("data") - private TransactionData data; - - @Data - public static class TransactionData { - - /** - * 交易是否成功 - */ - @JsonProperty("success") - private boolean success; - - /** - * 用户名 - */ - @JsonProperty("username") - private String username; - - /** - * 产品ID,例如 "SEXY" 等 - */ - @JsonProperty("productId") - private String productId; - - /** - * 货币类型,如 "THB" - */ - @JsonProperty("currency") - private String currency; - - /** - * 交易参考号 - */ - @JsonProperty("transactionRef") - private String transactionRef; - - /** - * 当前交易的金额 - */ - @JsonProperty("amount") - private BigDecimal amount; - - /** - * 交易前的余额 - */ - @JsonProperty("beforeBalance") - private BigDecimal beforeBalance; - - /** - * 交易后的余额 - */ - @JsonProperty("afterBalance") - private BigDecimal afterBalance; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java deleted file mode 100644 index 48c42cf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgt/impl/GamesPGTServiceImpl.java +++ /dev/null @@ -1,671 +0,0 @@ -package com.ff.game.api.pgt.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.alibaba.fastjson2.JSON; -import com.ff.base.config.RedisConfig; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Base64; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.fc.dto.ApiFCGameListResponseDTO; -import com.ff.game.api.fc.dto.ApiFCResult; -import com.ff.game.api.pgt.client.PGTClient; -import com.ff.game.api.pgt.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.api.xk.dto.XKBetRecordResponseDTO; -import com.ff.game.api.xk.dto.XKGamesDTO; -import com.ff.game.domain.*; -import com.ff.game.dto.GameBettingDetailsDTO; -import com.ff.game.service.*; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.Base64Utils; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * pg泰 - * - * @author shi - * @date 2025/03/27 - */ -@Service("PGTService") -@Slf4j -public class GamesPGTServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private IGameFreeRecordService gameFreeRecordService; - - - @Resource - private PGTClient pgtClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - String productId = "PGSOFT"; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @return {@link String } - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Map headerMap = new LinkedHashMap<>(); - String auth = gamesBaseRequestDTO.getAgentId() + ":" + gamesBaseRequestDTO.getAgentKey(); - String encodedAuth = Base64Utils.encodeToString(auth.getBytes()); - headerMap.put("Authorization", "Basic " + encodedAuth); - - return headerMap; - } - - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesPGTServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - Map headerMap = this.getKey(createMemberRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("username", createMemberRequestDTO.getAccount()); - params.put("productId", productId); - - PGTCreateMemberResponse member = pgtClient.createMember(params, headerMap); - if (this.getIsSuccess(member.getCode())) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesPGTServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("username", memberInfoRequestDTO.getAccounts()); - params.put("productId", productId); - Map headerMap = this.getKey(memberInfoRequestDTO); - PGTBalanceResponse memberInfo = pgtClient.getMemberInfo(JsonUtil.mapToQueryString(params), headerMap); - //判断是否获取成功 - if (this.getIsSuccess(memberInfo.getCode())) { - MemberInfoResponseDTO memberInfoResponseDTO = MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(memberInfo.getData().getBalance()) - .account(memberInfoRequestDTO.getAccounts()) - .build(); - return memberInfoResponseDTO; - } else { - throw new BaseException(memberInfo.getMessage()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesPGTServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - Map params = new LinkedHashMap<>(); - params.put("username", gamesLogin.getAccount()); - params.put("productId", productId); - params.put("gameCode", gamesLogin.getGameId()); - params.put("isMobileLogin", PlatformHomeType.APP.getValue().equals(gamesLogin.getPlatform())); - params.put("language", gamesLogin.getLang()); - Map key = this.getKey(gamesLogin); - PGTLoginResponse pgtLoginResponse = pgtClient.loginWithoutRedirect(params, key); - //判断是否获取成功 - if (this.getIsSuccess(pgtLoginResponse.getCode())) { - return pgtLoginResponse.getData().getUrl(); - } else { - throw new BaseException(pgtLoginResponse.getMessage()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - List apiGameInfoResponseDTOS = redisCache.getCacheList(CacheConstants.PGT_GAMES); - if (!CollectionUtils.isEmpty(apiGameInfoResponseDTOS)) { - return CacheConstants.PGT_GAMES; - } - - - log.info("GamesPGTServiceImpl [getGameList] 请求参数 {}", gamesBaseRequestDTO); - Map paramsMap = new HashMap<>(); - paramsMap.put("productId", productId); - PGTGameListResponse gameList = pgtClient.getGameList(JsonUtil.mapToQueryString(paramsMap), this.getKey(gamesBaseRequestDTO)); - if (this.getIsSuccess(gameList.getCode())) { - - - //新增游戏 - for (PGTGameListResponse.Game gameIdKey : gameList.getData().getGames()) { - - Game game = Game.builder() - .platformCode(GamePlatforms.PGT.getCode()) - .gameCode(gameIdKey.getCode()) - .build(); - List games = gameService.selectGameList(game); - int platformType = PGTGameType.findSystemByCode(gameIdKey.getCategory()); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - - game.setGameSourceType(gameIdKey.getCategory()); - game.setFreespin(Boolean.FALSE); - game.setDemoStatus(Boolean.FALSE); - game.setPlatformCode(GamePlatforms.PGT.getCode()); - game.setPlatformType(platformType); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.PGT.getCode()) + 1); - game.setGameName(gameIdKey.getName()); - game.setCreateBy(Constants.SYSTEM); - game.setGameId(StringUtils.addSuffix(GamePlatforms.PGT.getCode(), gameIdKey.getCode())); - List nameInfos = new ArrayList<>(); - nameInfos.add(NameInfo.builder().lang("en-US").name(gameIdKey.getName()).build()); - game.setNameInfo(nameInfos); - gameService.insertGame(game); - } else { - game = games.get(0); - } - gameIdKey.setSystemGameId(game.getGameId()); - } - - - redisCache.deleteObject(CacheConstants.PGT_GAMES); - redisCache.setCacheList(CacheConstants.PGT_GAMES, gameList.getData().getGames()); - redisCache.expire(CacheConstants.PGT_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new ApiException(ErrorCode.ERROR.getCode()); - } - return CacheConstants.PGT_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGTServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - String currency = exchangeTransferMoneyRequestDTO.getCurrency(); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(currency) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.PGT.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); - BigDecimal amountBefore = BigDecimal.ZERO; - - // 获取第三方钱包余额 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(exchangeTransferMoneyRequestDTO.getAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .build(); - - - //判断是不是提出 - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - amountBefore = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - amount = amountBefore; - } - - - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); - paramsMap.put("amount", amount.setScale(2, RoundingMode.DOWN).toString()); - paramsMap.put("transactionRef", transactionId); - paramsMap.put("productId", productId); - Map key = this.getKey(exchangeTransferMoneyRequestDTO); - PGTExchangeTransferResponse errorResponse; - //判断是不是提出 - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - errorResponse = pgtClient.withdraw(paramsMap, key); - } else { - errorResponse = pgtClient.deposit(paramsMap, key); - } - - if (this.getIsSuccess(errorResponse.getCode())) { - PGTExchangeTransferResponse.BalanceData data = errorResponse.getData(); - //更新数据 - exchangeMoney.setBalance(data.getAmount()); - exchangeMoney.setCoinBefore(data.getBeforeBalance()); - exchangeMoney.setCoinAfter(data.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesPGTServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getCode()); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGTServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeMoneyId()); - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); - paramsMap.put("transactionRef", exchangeTransferMoneyRequestDTO.getOrderId()); - paramsMap.put("productId", productId); - if (TransferType.ALL.getCode().equals(gameExchangeMoney.getExchangeType())) { - paramsMap.put("type", "WITHDRAW"); - } else { - paramsMap.put("type", "DEPOSIT"); - } - Map key = this.getKey(exchangeTransferMoneyRequestDTO); - PGTTransactionResponse transactionResponse = pgtClient.exchangeTransferStatus(paramsMap, key); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(transactionResponse.getCode())) { - status = transactionResponse.getData().isSuccess() ? StatusType.SUCCESS.getValue() : StatusType.FAILURE.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - ExchangeTransferStatusResponseDTO transferStatusResponseDTO = ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .build(); - if (!ObjectUtils.isEmpty(transactionResponse.getData())) { - transferStatusResponseDTO.setBalance(transactionResponse.getData().getAmount()); - transferStatusResponseDTO.setCoinBefore(transactionResponse.getData().getBeforeBalance()); - transferStatusResponseDTO.setCoinAfter(transactionResponse.getData().getAfterBalance()); - } - return transferStatusResponseDTO; - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - log.info("GamesPGTServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - - String startTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+0"); - String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+0"); - - String nextId = redisCache.getCacheObject(CacheConstants.PGT_NEXT_ID); - - - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("productId", productId); - paramsMap.put("startTime", startTime); - paramsMap.put("endTime", endTime); - paramsMap.put("nextId", nextId); - Map key = this.getKey(betRecordByTimeDTO); - - PGTTransactionDetailsResponse betRecordByTime = pgtClient.getBetRecordByTime(JsonUtil.mapToQueryString(paramsMap), key); - - if (this.getIsSuccess(betRecordByTime.getCode())) { - List txns = betRecordByTime.getData().getTxns(); - this.batchInsert(txns, betRecordByTimeDTO); - //保存本次请求的id - redisCache.setCacheObject(CacheConstants.PGT_NEXT_ID, betRecordByTime.getData().getNextId()); - return Boolean.TRUE; - } else { - log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCode(), betRecordByTime.getMessage()); - throw new BaseException(betRecordByTime.getMessage()); - } - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - log.info("GamesPGTServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - - String startTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+0"); - String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getEndTime(), DateUtils.ISO_8601_FORMAT_Z, "GMT+0"); - - String nextId = redisCache.getCacheObject(CacheConstants.PGT_NEXT_ID); - - - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("productId", productId); - paramsMap.put("startTime", startTime); - paramsMap.put("endTime", endTime); - paramsMap.put("nextId", nextId); - Map key = this.getKey(betRecordByTimeDTO); - - PGTTransactionDetailsResponse betRecordByTime = pgtClient.getBetRecordByTime(JsonUtil.mapToQueryString(paramsMap), key); - - if (this.getIsSuccess(betRecordByTime.getCode())) { - List txns = betRecordByTime.getData().getTxns(); - this.batchInsert(txns, betRecordByTimeDTO); - //保存本次请求的id - redisCache.setCacheObject(CacheConstants.PGT_NEXT_ID, betRecordByTime.getData().getNextId()); - return Boolean.TRUE; - } else { - log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getCode(), betRecordByTime.getMessage()); - throw new BaseException(betRecordByTime.getMessage()); - } - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - //请求参数 - log.info("GamesPGTServiceImpl [getGameDetail] 请求参数 {}", getGameDetailRequestDTO); - - List gameBettingDetails = gameBettingDetailsService.selectGameBettingDetailsList(GameBettingDetailsDTO.builder() - .wagersId(getGameDetailRequestDTO.getWagersId()) - .platformCode(GamePlatforms.PGT.getCode()) - .build()); - if (CollectionUtils.isEmpty(gameBettingDetails)) { - return null; - } - GameBettingDetails bettingDetails = gameBettingDetails.get(0); - - - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("productId", productId); - paramsMap.put("betId", getGameDetailRequestDTO.getWagersId()); - paramsMap.put("username", bettingDetails.getAccount()); - Map key = this.getKey(getGameDetailRequestDTO); - - PGTReplayUrlResponseDTO pgtReplayUrlResponseDTO = pgtClient.betTransactionReplay(JsonUtil.mapToQueryString(paramsMap), key); - - if (this.getIsSuccess(pgtReplayUrlResponseDTO.getCode())) { - return GetGameDetailResponseDTO.builder() - .url(pgtReplayUrlResponseDTO.getData().getUrl()) - .build(); - } else { - return null; - } - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param dataBean 数据bean - */ - private synchronized void batchInsert(List dataBean, GamesBaseRequestDTO gamesBaseRequestDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - - //数据转化 - for (PGTTransactionDetailsResponse.Transaction bean : dataBean) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder().agentId(gamesBaseRequestDTO.getAgentId()) - .platform(gamesBaseRequestDTO.getVendor()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.PGX.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - - - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - PGTTransactionDetailsResponse.Transaction resultBean = (PGTTransactionDetailsResponse.Transaction) gamesDataBuildDTO.getData(); - - - //只要结算的数据 - if (!PGTBetStatus.SETTLED.getType().equals(resultBean.getBetStatus())) { - return null; - } - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUsername()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.PGT_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(PGTGameListResponse.Game::getCode, e -> e)); - PGTGameListResponse.Game gamesDataDTO = dataDTOMap.get(resultBean.getGameCode()); - - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency())) - .memberId(member.getId()) - .gameCode(resultBean.getGameCode()) - .gameType(PGTGameType.findSystemByCode(gamesDataDTO.getCategory())) - .platformCode(GamePlatforms.PGT.getCode()) - //.gameId(gamesDataDTO.getSystemGameId()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getName()) - .gameStatus(PGTPayoutStatus.getByCode(resultBean.getPayoutStatus()).getSystemCode()) - .gameStatusType(1) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getUsername()) - .wagersId(resultBean.getBetId()) - .wagersTime(resultBean.getAccountingDate().getTime()) - .betAmount(resultBean.getStake()) - .payoffTime(resultBean.getAccountingDate().getTime()) - .payoffAmount(resultBean.getPayout()) - .settlementTime(resultBean.getAccountingDate().getTime()) - .turnover(resultBean.getStake()) - .orderNo(resultBean.getRoundId()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/address/MyPGXAddressSource.java b/ff-game/src/main/java/com/ff/game/api/pgx/address/MyPGXAddressSource.java deleted file mode 100644 index e3349d0..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/address/MyPGXAddressSource.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ff.game.api.pgx.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyPGXAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { -// String apiBaseUrl = configService.selectConfigByKey(Constants.PGX_API_BASE_URL); - String apiBaseUrl = platformService.get(GamePlatforms.PGX.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("http", apiBaseUrl, 80, ""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/client/PGXClient.java b/ff-game/src/main/java/com/ff/game/api/pgx/client/PGXClient.java deleted file mode 100644 index d85909f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/client/PGXClient.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.ff.game.api.pgx.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.dg.dto.DGResponse; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.ng.dto.ApiExchangeTransferStatusResponseDTO; -import com.ff.game.api.ng.dto.ApiNGResponseDTO; -import com.ff.game.api.pgx.address.MyPGXAddressSource; -import com.ff.game.api.pgx.dto.*; -import com.ff.game.api.xk.dto.XKBetRecordResponseDTO; -import com.ff.game.api.xk.dto.XKKickMemberAllDTO; -import com.ff.game.api.xk.dto.XKKickMemberDTO; - -import java.util.Map; - -/** - * pg 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyPGXAddressSource.class) -public interface PGXClient { - /** - * 创建成员 - * - * @param parameters 范围 - * @return {@link String } - */ - @Get("/createMember.aspx?${parameters}") - PGXErrorResponse createMember(@Var("parameters") String parameters); - - /** - * 获取会员信息 - * - * @param parameters 范围 - * @return {@link PGXMemberResponse } - */ - @Get("/getBalance.aspx?${parameters}") - PGXMemberResponse getMemberInfo(@Var("parameters") String parameters); - - - /** - * 获取会员游戏信息 目前仅支持供应商代号JD. - * - * @param parameters 范围 - * @return {@link PGXPlayerStatusResponse } - */ - @Get("/isPlayerIngame.ashx?${parameters}") - PGXPlayerStatusResponse getMemberPlayInfo(@Var("parameters") String parameters); - - - /** - * 无重定向登录 - * - * @param parameters 范围 - * @return {@link PGXGameLoginResponse } - */ - @Post("/launchGames.aspx?${parameters}") - PGXGameLoginResponse loginWithoutRedirect(@Var("parameters") String parameters); - - /** - * 获取游戏列表 - * - * @param parameters 范围 - * @return {@link PGXGameListResponse } - */ - @Get("/getGameList.aspx?${parameters}") - PGXGameListResponse getGameList(@Var("parameters") String parameters); - - /** - * 按代理id进行交换转账 - * - * @param parameters 参数 - * @return {@link PGXErrorResponse } - */ - @Post(url = "/makeTransfer.aspx?{parameters}") - PGXErrorResponse exchangeTransferByAgentId(@Var("parameters") String parameters); - - /** - * 标记报告 - * - * @return {@link DGResponse } - */ - @Post(url = "markbyjson.aspx") - DGResponse markReport(@JSONBody Map params); - - - - - /** - * 汇兑转移状态 - * - * @param parameters 范围 - * @return {@link ApiNGResponseDTO }<{@link ApiExchangeTransferStatusResponseDTO }> - */ - @Post(url = "/checkTransaction.ashx?{parameters}") - PGXExchangeTransferStatusResponse exchangeTransferStatus(@Var("parameters") String parameters); - - - - - - /** - * 按时间获取投注记录 - * - * @return {@link PGXBetHistoryResponse } - */ - @Get(url = "{url}/fetchbykey.aspx?{parameters}") - PGXBetHistoryResponse getBetRecordByTime(@Var("url") String url,@Var("parameters") String parameters); - - - - @Get(url = "{url}/fetchArchieve.aspx?{parameters}") - PGXBetHistoryResponse getBetRecordByHistoryTime(@Var("url") String url,@Var("parameters") String parameters); - - - /** - * 踢出队员 - * - * @param parameters 范围 - * @return {@link JILIKickMemberDTO } - */ - @Post("/kickPlayerFromProduct.ashx?{parameters}") - PGXErrorResponse kickMember(@Var("parameters") String parameters); - - /** - * 踢出所有队员 - * - * @param params 参数 - * @return {@link JILIKickMemberAllDTO } - */ - @Get("/kickMemberAll") - XKKickMemberAllDTO kickMemberAll(@JSONBody Map params); - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXBetHistoryResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXBetHistoryResponse.java deleted file mode 100644 index 3dc564e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXBetHistoryResponse.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; - -/** - * 错误信息与投注历史记录返回结果对象 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class PGXBetHistoryResponse { - - /** - * 错误码 - */ - @JsonProperty("errCode") - private Integer errCode; - - /** - * 投注历史记录的JSON字符串 (String类型) - */ - @JsonProperty("result") - private String result; - - /** - * 错误信息 (String类型) - */ - @JsonProperty("errMsg") - private String errMsg; - - /** - * AIO投注记录对象 - */ - @Data - public class Result { - - /** - * AIO注单号 (唯一值) (Long类型) - */ - @JsonProperty("id") - private Long id; - - /** - * 供应商注单号 (Long类型) - */ - @JsonProperty("ref_no") - private Long refNo; - - /** - * 供应商代号 (String类型) - */ - @JsonProperty("site") - private String site; - - /** - * 游戏类型代号 (String类型) - */ - @JsonProperty("product") - private String product; - - /** - * 玩家帐号 (String类型) - */ - @JsonProperty("member") - private String member; - - /** - * 游戏代号 (String类型) - */ - @JsonProperty("game_id") - private String gameId; - - /** - * 下注时间 (玩家实际的投注时间) 依据 GMT/UTC +0 时区 - */ - @JsonProperty("start_time") - private Date startTime; - - /** - * 结算时间 (String类型) 依据 GMT/UTC +0 时区 - */ - @JsonProperty("end_time") - private Date endTime; - - /** - * 开赛时间 (String类型) 依据 GMT/UTC +0 时区 - */ - @JsonProperty("match_time") - private String matchTime; - - /** - * 投注明细 (String类型) - */ - @JsonProperty("bet_detail") - private String betDetail; - - /** - * 有效投注金额 (Double类型) - */ - @JsonProperty("turnover") - private BigDecimal turnover; - - /** - * 投注金额 (Double类型) - */ - @JsonProperty("bet") - private BigDecimal bet; - - /** - * 派彩金额 (Double类型) - */ - @JsonProperty("payout") - private BigDecimal payout; - - /** - * 佣金 (Double类型) - */ - @JsonProperty("commission") - private BigDecimal commission; - - /** - * 彩池投注金额 (Double类型) - */ - @JsonProperty("p_share") - private BigDecimal pShare; - - /** - * 彩池派彩金额 (Double类型) - */ - @JsonProperty("p_win") - private BigDecimal pWin; - - /** - * 注单状态 (Int类型) - * 1 (valid bet record 有效注单) - * 0 (running/ongoing match 赛事进行中) - * -1 (invalid bet record 无效注单 e.g. voided 作废, canceled 取消) - */ - @JsonProperty("status") - private int status; - - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXErrorResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXErrorResponse.java deleted file mode 100644 index 1fc0aca..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXErrorResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 错误响应类 - * - * @author shi - * @date 2025/03/27 - */ -@Data -public class PGXErrorResponse { - - /** 错误码 */ - @JsonProperty("errCode") - private Integer errCode; - - /** 内部参考代码 (字符串类型) */ - @JsonProperty("innerCode") - private String innerCode; - - /** 错误信息 (字符串类型) */ - @JsonProperty("errMsg") - private String errMsg; -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXExchangeTransferStatusResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXExchangeTransferStatusResponse.java deleted file mode 100644 index 30881ba..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXExchangeTransferStatusResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * pgxexchange传输状态响应 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class PGXExchangeTransferStatusResponse { - - /** 错误码 */ - @JsonProperty("errCode") - private Integer errCode; - - - - /** 错误信息 (字符串类型) */ - @JsonProperty("errMsg") - private String errMsg; - - - /** GSC生成的转账ID (String类型) */ - @JsonProperty("trans_id") - private String transId; - - /** 交易时间,GMT+0 (String类型) */ - @JsonProperty("trans_time") - private String transTime; - - /** 玩家姓名 (String类型) */ - @JsonProperty("username") - private String username; - - /** 交易类型 (String类型),0为存款,1为取款 */ - @JsonProperty("type") - private String type; - - /** 提供商 (String类型) */ - @JsonProperty("provider") - private String provider; - - /** 交易金额 (double类型) */ - @JsonProperty("amount") - private BigDecimal amount; - - /** 运营商的参考ID (String类型) */ - @JsonProperty("ref_id") - private String refId; - - /** 交易状态 (String类型),SUCCESS 成功 - PROCESSING 进行中,请稍后再确认 - FAILED 失败 */ - @JsonProperty("status") - private String status; - - /** GSC操作员代码 (String类型) */ - @JsonProperty("operator") - private String operator; - - /** 交易备注 (String类型) */ - @JsonProperty("remark") - private String remark; -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameListResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameListResponse.java deleted file mode 100644 index 500a792..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameListResponse.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * pgx游戏列表响应 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class PGXGameListResponse { - - /** 错误码 (字符串类型) */ - @JsonProperty("errCode") - private Integer errCode; - - /** 游戏列表 (包含多个游戏的详细信息) */ - @JsonProperty("gamelist") - private String gamelist; - - /** 错误信息 (字符串类型) */ - @JsonProperty("errMsg") - private String errMsg; - - /** 数据生成时间 (字符串类型) */ - @JsonProperty("generatedAt") - private Date generatedAt; - - /** - * 游戏信息类 - */ - @Data - public static class Game { - - /** 游戏ID (字符串类型) */ - @JsonProperty("gameId") - private String gameId; - - /** 游戏名称 (字符串类型) */ - @JsonProperty("gameName") - private String gameName; - - /** - * 系统游戏id - */ - private String systemGameId; - - /** 游戏代码 (字符串类型) */ - @JsonProperty("gameCode") - private String gameCode; - - /** 游戏状态 (整数类型) */ - @JsonProperty("status") - private int status; - - /** 发布状态 (整数类型) */ - @JsonProperty("releaseStatus") - private int releaseStatus; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameLoginResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameLoginResponse.java deleted file mode 100644 index db85e06..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXGameLoginResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 游戏响应对象 - */ -@Data -public class PGXGameLoginResponse { - - /** - * 错误码 (String类型) - */ - @JsonProperty("errCode") - private Integer errCode; - - /** - * 启动游戏链接 (String类型) - */ - @JsonProperty("gameUrl") - private String gameUrl; - - /** - * 错误信息 (String类型) - */ - @JsonProperty("errMsg") - private String errMsg; - -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXMemberResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXMemberResponse.java deleted file mode 100644 index 0fea6fa..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXMemberResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.pgx.dto; - - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 响应类,包含错误码、余额和错误信息 - */ -@Data -public class PGXMemberResponse { - - /** 错误码 */ - @JsonProperty("errCode") - private Integer errCode; - - /** 账户余额 (小数类型) */ - @JsonProperty("balance") - private BigDecimal balance; - - /** 错误信息 (字符串类型) */ - @JsonProperty("errMsg") - private String errMsg; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXPlayerStatusResponse.java b/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXPlayerStatusResponse.java deleted file mode 100644 index a5698af..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/dto/PGXPlayerStatusResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.pgx.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * 响应类,包含错误码、玩家是否在游戏中状态和错误信息 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class PGXPlayerStatusResponse { - - /** 错误码 (字符串类型) */ - @JsonProperty("errCode") - private Integer errCode; - - /** 玩家是否在游戏中 (字符串类型) "true" 表示在游戏中,"false" 表示不在游戏中 */ - @JsonProperty("result") - private Boolean result; - - /** 错误信息 (字符串类型) */ - @JsonProperty("errMsg") - private String errMsg; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/pgx/impl/GamesPGXServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/pgx/impl/GamesPGXServiceImpl.java deleted file mode 100644 index ed72b4a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/pgx/impl/GamesPGXServiceImpl.java +++ /dev/null @@ -1,643 +0,0 @@ -package com.ff.game.api.pgx.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.alibaba.fastjson2.JSON; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.pgx.client.PGXClient; -import com.ff.game.api.pgx.dto.*; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * 游戏pgxservice impl - * - * @author shi - * @date 2025/03/27 - */ -@Service("PGXService") -@Slf4j -public class GamesPGXServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private PGXClient PGXClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - ApiException.isTrue(101 != errorCode, ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @return {@link String } - */ - private String getKey(Map paramsMap, GamesBaseRequestDTO gamesBaseRequestDTO) { - String result = paramsMap.values().stream() - .map(Object::toString) - .collect(Collectors.joining()); - - return Md5Utils.md5New(result + gamesBaseRequestDTO.getAgentKey()).toUpperCase(); - } - - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesXKServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("operatorcode", createMemberRequestDTO.getAgentId()); - params.put("username", createMemberRequestDTO.getAccount()); - String key = this.getKey(params, createMemberRequestDTO); - params.put("signature", key); - - PGXErrorResponse pgxClientMember = PGXClient.createMember(JsonUtil.mapToQueryString(params)); - Integer errCode = pgxClientMember.getErrCode(); - if (this.getIsSuccess(errCode)) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesPGXServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("operatorcode", memberInfoRequestDTO.getAgentId()); - KeyInfo keyInfo = memberInfoRequestDTO.getKeyInfo(); - params.put("password", keyInfo.getPassword()); - params.put("providercode", keyInfo.getProviderCode()); - params.put("username", memberInfoRequestDTO.getAccounts()); - String key = this.getKey(params, memberInfoRequestDTO); - params.put("signature", key); - PGXMemberResponse memberInfo = PGXClient.getMemberInfo(JsonUtil.mapToQueryString(params)); - //判断是否获取成功 - if (this.getIsSuccess(memberInfo.getErrCode())) { - MemberInfoResponseDTO memberInfoResponseDTO = MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(memberInfo.getBalance()) - .account(memberInfoRequestDTO.getAccounts()) - .build(); - return memberInfoResponseDTO; - } else { - throw new BaseException(memberInfo.getErrMsg()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesPGXServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - KeyInfo keyInfo = gamesLogin.getKeyInfo(); - - Map params = new LinkedHashMap<>(); - params.put("operatorcode", gamesLogin.getAgentId()); - params.put("password", keyInfo.getPassword()); - params.put("providercode", keyInfo.getProviderCode()); - params.put("type", gamesLogin.getGameType()); - params.put("username", gamesLogin.getAccount()); - String key = this.getKey(params, gamesLogin); - params.put("gameid", gamesLogin.getGameId()); - params.put("lang", gamesLogin.getLang()); - params.put("html5", 1); - params.put("signature", key); - PGXGameLoginResponse PGXGameLoginResponse = PGXClient.loginWithoutRedirect(JsonUtil.mapToQueryString(params)); - //判断是否获取成功 - if (this.getIsSuccess(PGXGameLoginResponse.getErrCode())) { - return PGXGameLoginResponse.getGameUrl(); - } else { - throw new BaseException(PGXGameLoginResponse.getErrMsg()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - List gamesDatas = redisCache.getCacheList(CacheConstants.PGX_GAMES); - if (!CollectionUtils.isEmpty(gamesDatas)) { - return CacheConstants.PGX_GAMES; - } - - KeyInfo keyInfo = gamesBaseRequestDTO.getKeyInfo(); - Map params = new LinkedHashMap<>(); - params.put("operatorcode", gamesBaseRequestDTO.getAgentId()); - params.put("providercode", keyInfo.getProviderCode()); - String key = this.getKey(params, gamesBaseRequestDTO); - //没有中文 - params.put("html5", 1); - params.put("signature", key); - - PGXGameListResponse gameList = PGXClient.getGameList(JsonUtil.mapToQueryString(params)); - - //判断是否获取成功 - if (this.getIsSuccess(gameList.getErrCode())) { - - List gameLists = JSON.parseArray(gameList.getGamelist(), PGXGameListResponse.Game.class); - for (PGXGameListResponse.Game gamesDataDTO : gameLists) { - - Game game = Game.builder() - .gameCode(gamesDataDTO.getGameId()) - .platformCode(GamePlatforms.PGX.getCode()) - .platformType(GPXGameType.SL.getSystemCode()) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(GPXGameType.SL.getCode()); - game.setFreespin(Boolean.FALSE); - game.setSortNo(gameService.selectMaxSortNo(GPXGameType.SL.getSystemCode(), GamePlatforms.PGX.getCode()) + 1); - game.setGameName(gamesDataDTO.getGameName()); - game.setCreateBy(Constants.SYSTEM); - game.setPlatformCode(GamePlatforms.PGX.getCode()); - game.setPlatformType(GPXGameType.SL.getSystemCode()); - game.setGameId(StringUtils.addSuffix(GamePlatforms.PGX.getCode(), gamesDataDTO.getGameId())); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(gamesDataDTO.getGameName(), "en-US")); - game.setNameInfo(nameInfos); - gameService.insertGame(game); - } else { - game = games.get(0); - } - gamesDataDTO.setSystemGameId(game.getGameId()); - - } - - redisCache.deleteObject(CacheConstants.PGX_GAMES); - redisCache.setCacheList(CacheConstants.PGX_GAMES, gameLists); - redisCache.expire(CacheConstants.PGX_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new BaseException(gameList.getErrMsg()); - - } - return CacheConstants.PGX_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGXServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = gameExchangeMoneyService.getTransactionId(GamePlatforms.PGX.getInfo(), 17); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.PGX.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - //获取余额 - String type = TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType()) ? PGXTransferType.WITHDRAW.getCode() : PGXTransferType.DEPOSIT.getCode(); - - BigDecimal amount = exchangeTransferMoneyRequestDTO.getAmount(); - BigDecimal amountBefore = BigDecimal.ZERO; - - // 获取第三方钱包余额 - MemberInfoRequestDTO gamesBaseRequestDTO = MemberInfoRequestDTO.builder() - .accounts(exchangeTransferMoneyRequestDTO.getAccount()) - .agentId(exchangeTransferMoneyRequestDTO.getAgentId()) - .vendor(exchangeTransferMoneyRequestDTO.getVendor()) - .keyInfo(exchangeTransferMoneyRequestDTO.getKeyInfo()) - .systemCurrency(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .currency(exchangeTransferMoneyRequestDTO.getCurrency()) - .agentKey(exchangeTransferMoneyRequestDTO.getAgentKey()) - .build(); - - //判断是不是提出 - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - - amountBefore = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - amount = amountBefore; - - } - - - KeyInfo keyInfo = exchangeTransferMoneyRequestDTO.getKeyInfo(); - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("amount", amount); - paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); - paramsMap.put("password", keyInfo.getPassword()); - paramsMap.put("providercode", keyInfo.getProviderCode()); - paramsMap.put("referenceid", transactionId); - paramsMap.put("type", type); - paramsMap.put("username", exchangeTransferMoneyRequestDTO.getAccount()); - String key = this.getKey(paramsMap, exchangeTransferMoneyRequestDTO); - paramsMap.put("signature", key); - - PGXErrorResponse errorResponse = PGXClient.exchangeTransferByAgentId(JsonUtil.mapToQueryString(paramsMap)); - if (this.getIsSuccess(errorResponse.getErrCode())) { - - //更新数据 - exchangeMoney.setBalance(amount); - exchangeMoney.setCoinBefore(amountBefore); - //转后的余额 - BigDecimal coinAfter = this.getMemberInfo(gamesBaseRequestDTO).getBalance(); - - exchangeMoney.setCoinAfter(coinAfter); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesFCServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorResponse.getErrCode()); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesPGXServiceImpl [exchangeTransferStatus] 请求参数 {}", exchangeTransferMoneyRequestDTO); - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", exchangeTransferMoneyRequestDTO.getAgentId()); - paramsMap.put("referenceid", exchangeTransferMoneyRequestDTO.getOrderId()); - String key = this.getKey(paramsMap, exchangeTransferMoneyRequestDTO); - paramsMap.put("signature", key); - - PGXExchangeTransferStatusResponse exchangeTransferStatusResponse = PGXClient.exchangeTransferStatus(JsonUtil.mapToQueryString(paramsMap)); - Integer status = StatusType.IN_PROGRESS.getValue(); - if (this.getIsSuccess(exchangeTransferStatusResponse.getErrCode())) { - status= PGXTransactionStatus.findValueByCode(exchangeTransferStatusResponse.getStatus()); - } else { - status = StatusType.FAILURE.getValue(); - } - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(exchangeTransferStatusResponse.getAmount()) - .build(); - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - log.info("GamesPGXServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", betRecordByTimeDTO.getAgentId()); - String key = this.getKey(paramsMap, betRecordByTimeDTO); - paramsMap.put("versionkey", 0); - paramsMap.put("signature", key); - String betUrl = betRecordByTimeDTO.getVendor().getUrlInfo().getBetUrl(); - PGXBetHistoryResponse betRecordByTime = PGXClient.getBetRecordByTime(betUrl,JsonUtil.mapToQueryString(paramsMap)); - - if (this.getIsSuccess(betRecordByTime.getErrCode())) { - List results = JSON.parseArray(betRecordByTime.getResult(), PGXBetHistoryResponse.Result.class); - this.batchInsert(results, betRecordByTimeDTO); - return Boolean.TRUE; - } else { - log.error("GamesPGXServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrCode(), betRecordByTime.getErrMsg()); - throw new BaseException(betRecordByTime.getErrMsg()); - } - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - log.info("GamesPGXServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", betRecordByTimeDTO); - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", betRecordByTimeDTO.getAgentId()); - String key = this.getKey(paramsMap, betRecordByTimeDTO); - paramsMap.put("versionkey", 0); - paramsMap.put("signature", key); - String betUrl = betRecordByTimeDTO.getVendor().getUrlInfo().getBetUrl(); - PGXBetHistoryResponse betRecordByTime = PGXClient.getBetRecordByHistoryTime(betUrl,JsonUtil.mapToQueryString(paramsMap)); - - if (this.getIsSuccess(betRecordByTime.getErrCode())) { - List results = JSON.parseArray(betRecordByTime.getResult(), PGXBetHistoryResponse.Result.class); - this.batchInsert(results, betRecordByTimeDTO); - return Boolean.TRUE; - } else { - log.error("GamesPGXServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{},错误信息{}", betRecordByTime.getErrCode(), betRecordByTime.getErrMsg()); - throw new BaseException(betRecordByTime.getErrMsg()); - } - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param dataBean 数据bean - */ - private void batchInsert(List dataBean, BetRecordByTimeDTO gamesBaseRequestDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - - //数据转化 - for (PGXBetHistoryResponse.Result bean : dataBean) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .currencyCode(gamesBaseRequestDTO.getCurrency()) - .systemCurrencyCode(gamesBaseRequestDTO.getSystemCurrency()) - .agentId(gamesBaseRequestDTO.getAgentId()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.PGX.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - - //标记报告 - Map paramsMap = new LinkedHashMap<>(); - paramsMap.put("operatorcode", gamesBaseRequestDTO.getAgentId()); - String key = this.getKey(paramsMap, gamesBaseRequestDTO); - paramsMap.put("ticket", String.join(",", wagersIds)); - paramsMap.put("signature", key); - PGXClient.markReport(paramsMap); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - PGXBetHistoryResponse.Result resultBean = (PGXBetHistoryResponse.Result) gamesDataBuildDTO.getData(); - - - - Member member = memberService.selectMemberByGameAccount(resultBean.getMember()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.PGX_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(PGXGameListResponse.Game::getGameId, e -> e)); - PGXGameListResponse.Game gamesDataDTO = dataDTOMap.get(resultBean.getGameId()); - - - BigDecimal payoffAmount = BigDecimal.ZERO; - BigDecimal payout = resultBean.getPayout(); - //输赢状态 - Integer gameStatus = GameStatus.FLAT.getCode(); - if (payout.compareTo(resultBean.getBet()) > 0) { - payoffAmount = NumberUtil.sub(payout, resultBean.getBet()); - gameStatus = GameStatus.WIN.getCode(); - } else if (payout.compareTo(resultBean.getBet()) < 0) { - payoffAmount = NumberUtil.sub(payout, resultBean.getBet()).negate(); - gameStatus = GameStatus.FAIL.getCode(); - } - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(/*currencyDTO.getSystemCurrency()*/gamesDataBuildDTO.getSystemCurrencyCode()) - .memberId(member.getId()) - .gameCode(resultBean.getGameId()) - .gameType(GPXGameType.SL.getSystemCode()) - .platformCode(GamePlatforms.PGX.getCode()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(1) - .betContent(resultBean.getBetDetail()) - .gameCurrencyCode(/*currencyDTO.getCurrency()*/gamesDataBuildDTO.getCurrencyCode()) - .account(resultBean.getMember()) - .wagersId(String.valueOf(resultBean.getId())) - .wagersTime(resultBean.getStartTime().getTime()) - .betAmount(resultBean.getBet()) - .payoffTime(resultBean.getEndTime().getTime()) - .payoffAmount(payoffAmount) - .settlementTime(resultBean.getEndTime().getTime()) - .turnover(resultBean.getTurnover()) - .settlementStatus(PGXBetRecordStatus.findSystemCodeByCode(resultBean.getStatus())) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java b/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java deleted file mode 100644 index 61dccb9..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/BetRecordByTimeDTO.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.ff.game.api.request; - -import lombok.Data; - -/** - * 按时间dto投注记录 - * - * @author shi - * @date 2024/10/22 - */ -@Data -public class BetRecordByTimeDTO extends GamesBaseRequestDTO { - /** - * 开始时间 - */ - private Long startTime; - /** - * 结束时间 - */ - private Long endTime; - /** - * 页数 - */ - private Integer page; - /** - * 每页资料笔数 - */ - private Integer pageLimit; - /** - * 游戏id - */ - private Integer gameId; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/CancelFreeSpinRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/CancelFreeSpinRequestDTO.java deleted file mode 100644 index d6cef1a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/CancelFreeSpinRequestDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * 取消免费旋转请求 - * - * @author shi - * @date 2024/11/11 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class CancelFreeSpinRequestDTO extends GamesBaseRequestDTO { - /** - * 取消免费赠送游戏id - */ - private String referenceId; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/CreateFreeSpinRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/CreateFreeSpinRequestDTO.java deleted file mode 100644 index c9b5587..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/CreateFreeSpinRequestDTO.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 创建自由旋转请求dto - * - * @author shi - * @date 2024/11/11 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class CreateFreeSpinRequestDTO extends GamesBaseRequestDTO { - - /** - * 玩家账号 (JILI 新玩家则会自动创立账号) - */ - private String account; - - /** - * 玩家使用货币。转账钱包这项请填空字符串。 - */ - private String currency; - - /** - * 免费局数序号, 长度上限 50 - */ - private String referenceId; - - /** - * 有效期限 - * - * - */ - private Long freeSpinValidity; - - /** - * 局数 - */ - private Integer numberOfRounds; - - /** - * 可使用游戏 ID, 超过一笔时以逗号分隔; 系统内游戏id - * 长度 上限 200 - */ - private List gameIds; - - /** - * 指定投注额; - * 未指定时, 一律使用游戏中的最小投注额 - */ - private BigDecimal betValue; - - /** - * 免费游戏局数可使用的开始时间 - * 未带此参数时, 赠送后玩家可以立即使用 - */ - private Long startTime; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/CreateMemberRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/CreateMemberRequestDTO.java deleted file mode 100644 index b6d1dac..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/CreateMemberRequestDTO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.util.Map; - -/** - * 创建成员请求dto - * - * @author shi - * @date 2024/10/22 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class CreateMemberRequestDTO extends GamesBaseRequestDTO { - /** - * 账户 - */ - private String account; - - /** - * ae 平台 投注限额 - */ - private Map>> betLimit; - - /** - * 平台类型 0 桌面 1 移动 - */ - private Integer platformType; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java deleted file mode 100644 index b9b1dfa..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ff.game.api.request; - -import com.ff.base.annotation.Excel; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; - -/** - * 外汇转账 - * - * @author shi - * @date 2024/10/22 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@SuperBuilder -public class ExchangeTransferMoneyRequestDTO extends GamesBaseRequestDTO { - - - /** - * 账户 - */ - private String account; - - /** - * 租户密钥 - */ - private String tenantKey; - - /** - * 订单id - */ - private String orderId; - /** - * 金额 - */ - private BigDecimal amount; - - - /** - * 租户额度 - */ - private BigDecimal quota; - - - /** - * 转账类型 - * 1: 从 游戏商 转移额度到 平台商 (不看 amount 值,全 - * 部转出) - * 2: 从 平台商 转移额度到 游戏商 - * 3: 从 游戏商 转移额度到 平台商 - */ - private Integer transferType; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusRequestDTO.java deleted file mode 100644 index 8739091..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusRequestDTO.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ff.game.api.request; - -import lombok.Data; - -/** - * 兑换转账状态请求dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -public class ExchangeTransferStatusRequestDTO extends GamesBaseRequestDTO { - - - - - /** - * 账户 - */ - private String account; - - /** - * 货币 - */ - private String currency; - - /** - * 订单ID - */ - private String orderId; - - /** - * 游戏兑换货币id - */ - private Long gameExchangeMoneyId; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusResponseDTO.java deleted file mode 100644 index 7f4a698..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/ExchangeTransferStatusResponseDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.game.api.request; - -import com.ff.base.annotation.Excel; -import com.ff.base.enums.StatusType; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -/** - * 交易所转账状态响应数据 - * - * @author shi - * @date 2025/04/08 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class ExchangeTransferStatusResponseDTO { - - - /** - * 状态类型 StatusType 枚举 - */ - private Integer statusType; - - - /** 操作金额 */ - private BigDecimal balance; - - /** 转账前金额(游戏币) */ - private BigDecimal coinBefore; - - /** 转账后金额(游戏币) */ - private BigDecimal coinAfter; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginRequestDTO.java deleted file mode 100644 index 31d095c..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginRequestDTO.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * 游戏演示登录请求dto - * - * @author shi - * @date 2025/04/03 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameDemoLoginRequestDTO extends GamesBaseRequestDTO{ - /** - * 语言 - */ - private String lang; - - - /** - * 游戏类型 - */ - private String gameType; - - /** - * 游戏id - */ - private String gameId; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginResponseDTO.java deleted file mode 100644 index 6f9a2aa..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GameDemoLoginResponseDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 游戏演示登录响应dto - * - * @author shi - * @date 2025/04/03 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class GameDemoLoginResponseDTO { - /** - * 网址 - */ - private String url; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GameUniqueDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GameUniqueDTO.java deleted file mode 100644 index dc1de1d..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GameUniqueDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.game.api.request; - - -import com.ff.game.domain.Game; -import lombok.Data; - -import java.util.List; - -/** - * 游戏独有dto - * - * @author shi - * @date 2024/11/11 - */ -@Data -public class GameUniqueDTO extends Game { - - private List gameIds; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java deleted file mode 100644 index e55b059..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GamesBaseRequestDTO.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.game.api.request; - -import com.ff.game.domain.KeyInfo; -import com.ff.game.domain.Platform; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.io.Serializable; - -/** - * 游戏请求dto - * - * @author shi - * @date 2024/10/22 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GamesBaseRequestDTO implements Serializable { - private static final long serialVersionUID = 5139311242800113436L; - /** - * 代理id - */ - private String agentId; - - /** - * 代理密钥 - */ - private String agentKey; - - /** - * 查询 - */ - private String query; - - - /** - * 货币 - */ - private String currency; - - private Platform vendor; - - private KeyInfo keyInfo; - - private String systemCurrency; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java deleted file mode 100644 index 23cb419..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GamesDataBuildDTO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.game.api.request; - -import com.ff.game.domain.Platform; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * 游戏数据构建dto - * - * @author shi - * @date 2024/10/22 - */ -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -@Data -public class GamesDataBuildDTO -{ - - /** - * 数据 - */ - private Object data; - - /** - * 系统货币代码 - */ - private String systemCurrencyCode; - - /** - * 货币代码 - */ - private String currencyCode; - - /** - * 代理id - */ - private String agentId; - - private Platform platform; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GamesLogin.java b/ff-game/src/main/java/com/ff/game/api/request/GamesLogin.java deleted file mode 100644 index e73320c..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GamesLogin.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.util.Map; - -/** - * 游戏登录 - * - * @author shi - * @date 2024/10/22 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GamesLogin extends GamesBaseRequestDTO{ - /** - * 账户 - */ - private String account; - /** - * 游戏唯一识别值(同等 GameList 各游戏的 GameId) - */ - private String gameId; - /** - * UI 语系, 请参考 附录 – 语系参数 - */ - private String lang; - /** - * 不列入 md5 加密,游戏回主页功能导向位置 - */ - private String homeUrl; - /** - * 不列入 md5 加密,带入 web 或是 app - */ - private String platform; - /** - * 不列入 md5 加密, 带入 1 即关闭全屏幕模式 - */ - private Integer disableFullScreen; - - /** - * 游戏类型 - */ - private String gameType; - - - /** - * ae 平台 投注限额 - */ - private Map>> betLimit; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GetFreeSpinDashflowRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GetFreeSpinDashflowRequestDTO.java deleted file mode 100644 index d0418ac..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GetFreeSpinDashflowRequestDTO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.game.api.request; - -import lombok.Data; - -/** - * 获取自由旋转dashflow请求dto - * - * @author shi - * @date 2024/11/11 - */ -@Data -public class GetFreeSpinDashflowRequestDTO extends GamesBaseRequestDTO { - - /** - * 开始时间 - */ - private Long startTime; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailRequestDTO.java deleted file mode 100644 index 214fd5e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailRequestDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.request; - -import com.alibaba.druid.filter.AutoLoad; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import javax.validation.constraints.NotNull; - -/** - * 获取游戏详细信息请求dto - * - * @author shi - * @date 2024/11/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GetGameDetailRequestDTO extends GamesBaseRequestDTO { - - /** - * 投注id - */ - private String wagersId; - /** - * 郎 - */ - private String lang; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailResponseDTO.java deleted file mode 100644 index b3debb2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/GetGameDetailResponseDTO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 获取游戏详细信息请求dto - * - * @author shi - * @date 2024/11/12 - */ -@NoArgsConstructor -@Data -@AllArgsConstructor -@Builder -public class GetGameDetailResponseDTO { - - - /** - * url - */ - private String url; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/KickMemberAllDTO.java b/ff-game/src/main/java/com/ff/game/api/request/KickMemberAllDTO.java deleted file mode 100644 index 6a0ee14..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/KickMemberAllDTO.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import javax.validation.constraints.NotNull; - -/** - * 踢成员全部dto - * - * @author shi - * @date 2024/11/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class KickMemberAllDTO extends GamesBaseRequestDTO { - - /** - * 游戏id - */ - private String gameId; - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/KickMemberRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/KickMemberRequestDTO.java deleted file mode 100644 index 8b8d015..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/KickMemberRequestDTO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * 踢会员请求dto - * - * @author shi - * @date 2024/11/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class KickMemberRequestDTO extends GamesBaseRequestDTO { - - /** - * 账户 - */ - private String account; -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoRequestDTO.java b/ff-game/src/main/java/com/ff/game/api/request/MemberInfoRequestDTO.java deleted file mode 100644 index 78c20cd..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoRequestDTO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -/** - * 查询用户信息 - * - * @author shi - * @date 2024/10/22 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class MemberInfoRequestDTO extends GamesBaseRequestDTO { - /** - * 账户 - */ - private String accounts; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java deleted file mode 100644 index 613c5db..0000000 --- a/ff-game/src/main/java/com/ff/game/api/request/MemberInfoResponseDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.game.api.request; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.math.BigDecimal; - - -/** - * 成员信息响应dto - * - * @author shi - * @date 2024/10/30 - */ -@NoArgsConstructor -@Data -@AllArgsConstructor -@SuperBuilder -public class MemberInfoResponseDTO { - - - /** - * 账户 - */ - private String account; - /** - * 余额 - */ - private BigDecimal balance; - /** - * 状态: - * 1: 在线 - * 2: 脱机 - * 3: 账号不存在 - * 4:未知 - */ - private Integer status; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sa/address/MySAAddressSource.java b/ff-game/src/main/java/com/ff/game/api/sa/address/MySAAddressSource.java deleted file mode 100644 index de51edf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/address/MySAAddressSource.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ff.game.api.sa.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MySAAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - - @Override - public ForestAddress getAddress(ForestRequest request) { -// String apiBaseUrl = configService.selectConfigByKey(Constants.SA_API_BASE_URL); - String apiBaseUrl = platformService.get(GamePlatforms.SA.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "api"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sa/client/SAClient.java b/ff-game/src/main/java/com/ff/game/api/sa/client/SAClient.java deleted file mode 100644 index 8631f0d..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/client/SAClient.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.ff.game.api.sa.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.sa.address.MySAAddressSource; -import com.ff.game.api.xk.dto.*; - -import java.util.Map; - -/** - * xk 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MySAAddressSource.class) -public interface SAClient { - /** - * 创建成员 - * - * @param parameters 参数 - * @return {@link String } - */ - @Post( url ="/api.aspx/RegUserInfo", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String createMember(@Body String parameters); - - /** - * 获取会员信息 - * - * @return {@link String } - */ - @Post( url ="/api.aspx/GetUserStatusDV", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String getMemberInfo(@Body String params); - - /** - * 无重定向登录 - * - * @param params 参数 - */ - @Post( url ="/api.aspx/LoginRequest", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String loginWithoutRedirect(@Body String params); - - - - - /** - * 兑换转入 - * - * @param params 参数 - * @return {@link String } - */ - @Post( url ="/api.aspx/CreditBalanceDV", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String exchangeTransferByInto(@Body String params); - - - /** - * 外汇转出 - * - * @param params 参数 - * @return {@link String } - */ - @Post( url ="/api.aspx/DebitAllBalanceDV", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String exchangeTransferByOut(@Body String params); - - - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link String } - */ - @Post( url ="/api.aspx/GetAllBetDetailsForTimeIntervalDV", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String getBetRecordByTime( @Body String params); - - - /** - * 踢出队员 - * - * @param params 参数 - * @return {@link String } - */ - @Post( url ="/api.aspx/KickUser", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - String kickMember( @Body String params); - - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SACreditBalanceResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SACreditBalanceResponse.java deleted file mode 100644 index a2d5635..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SACreditBalanceResponse.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.ff.game.api.sa.dto; - - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.math.BigDecimal; - - -/** - * 信贷余额响应 - * - * @author shi - * @date 2025/03/26 - */ -@Data -@XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "CreditBalanceResponse") -public class SACreditBalanceResponse { - - /** - * 错误消息 ID - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误消息 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - /** - * 用户名 - */ - @XmlElement(name = "Username") - private String username; - - /** - * 余额 - */ - @XmlElement(name = "Balance") - private BigDecimal balance; - - /** - * 信用额度 - */ - @XmlElement(name = "CreditAmount") - private BigDecimal creditAmount; - - /** - * 订单号 - */ - @XmlElement(name = "OrderId") - private String orderId; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SADebitAllBalanceResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SADebitAllBalanceResponse.java deleted file mode 100644 index 220641d..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SADebitAllBalanceResponse.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.game.api.sa.dto; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.math.BigDecimal; - -/** - * sadebit全平衡反应 - * - * @author shi - * @date 2025/03/26 - */ -@Data -@XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "DebitAllBalanceResponse") -public class SADebitAllBalanceResponse { - - /** - * 错误消息 ID - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误消息 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - /** - * 用户名 - */ - @XmlElement(name = "Username") - private String username; - - /** - * 借记金额 - */ - @XmlElement(name = "DebitAmount") - private BigDecimal debitAmount; - - /** - * 订单号 - */ - @XmlElement(name = "OrderId") - private String orderId; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetAllBetDetailsResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetAllBetDetailsResponse.java deleted file mode 100644 index bd7b44e..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetAllBetDetailsResponse.java +++ /dev/null @@ -1,430 +0,0 @@ -package com.ff.game.api.sa.dto; - -import lombok.Data; - -import javax.xml.bind.annotation.*; -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * GetAllBetDetailsResponse 类表示获取所有投注详情的响应数据。 - */ -@Data -@XmlRootElement(name = "GetAllBetDetailsForTimeIntervalResponse") -@XmlAccessorType(XmlAccessType.FIELD) -public class SAGetAllBetDetailsResponse { - - /** - * 返回的记录数。 - */ - @XmlElement(name = "NumOfRecord") - private int numOfRecord; - - /** - * 包含投注详情的列表。 - */ - @XmlElementWrapper(name = "BetDetailList") - @XmlElement(name = "BetDetail") - private List betDetailList; - - /** - * 错误信息的 ID。 - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误信息描述。 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - /** - * BetDetail 类表示单个投注的详细信息。 - */ - @XmlAccessorType(XmlAccessType.FIELD) - @Data - public static class BetDetail { - - /** - * 投注时间。 - */ - @XmlElement(name = "BetTime") - private Date betTime; - - /** - * 结算时间。 - */ - @XmlElement(name = "PayoutTime") - private Date payoutTime; - - /** - * 用户名。 - */ - @XmlElement(name = "Username") - private String username; - - /** - * 桌台 ID。 - */ - @XmlElement(name = "HostID") - private int hostID; - - /** - * 保留字段。 - */ - @XmlElement(name = "Detail") - private String detail; - - /** - * 游戏编号。 - */ - @XmlElement(name = "GameID") - private String gameID; - - /** - * 局编号。 - */ - @XmlElement(name = "Round") - private int round; - - /** - * 靴编号。 - */ - @XmlElement(name = "Set") - private int set; - - /** - * 投注编号。 - */ - @XmlElement(name = "BetID") - private long betID; - - /** - * 币种。 - */ - @XmlElement(name = "Currency") - private String currency; - - /** - * 投注金额。 - */ - @XmlElement(name = "BetAmount") - private BigDecimal betAmount; - - /** - * 有效投注额或洗码量。 - */ - @XmlElement(name = "Rolling") - private BigDecimal rolling; - - /** - * 输赢金额。 - */ - @XmlElement(name = "ResultAmount") - private BigDecimal resultAmount; - - /** - * 投注后的余额。 - */ - @XmlElement(name = "Balance") - private BigDecimal balance; - - /** - * 游戏类型。 - */ - @XmlElement(name = "GameType") - private String gameType; - - /** - * 投注类型。 - */ - @XmlElement(name = "BetType") - private int betType; - - /** - * 投注来源。 - */ - @XmlElement(name = "BetSource") - private int betSource; - - /** - * 单一钱包下注交易编号。 - */ - @XmlElement(name = "TransactionID") - private long transactionID; - - /** - * 下注确认状态:0 - 手动,1 - 自动。 - */ - @XmlElement(name = "BetConfirmation") - private int betConfirmation; - - /** - * 游戏结果。 - */ - @XmlElement(name = "GameResult") - private GameResult gameResult; - - } - - /** - * GameResult 类表示游戏的结果。 - */ - @XmlAccessorType(XmlAccessType.FIELD) - @Data - public static class GameResult { - - /** - * 百家乐游戏的结果。 - */ - @XmlElement(name = "BaccaratResult") - private BaccaratResult baccaratResult; - - } - - /** - * BaccaratResult 类表示百家乐游戏的具体结果。 - */ - @XmlAccessorType(XmlAccessType.FIELD) - @Data - public static class BaccaratResult { - - /** - * 玩家卡1。 - */ - @XmlElement(name = "PlayerCard1") - private Card playerCard1; - - /** - * 玩家卡2。 - */ - @XmlElement(name = "PlayerCard2") - private Card playerCard2; - - /** - * 玩家卡3。 - */ - @XmlElement(name = "PlayerCard3") - private Card playerCard3; - - /** - * 庄家卡1。 - */ - @XmlElement(name = "BankerCard1") - private Card bankerCard1; - - /** - * 庄家卡2。 - */ - @XmlElement(name = "BankerCard2") - private Card bankerCard2; - - /** - * 游戏结果详情。 - */ - @XmlElement(name = "ResultDetail") - private ResultDetail resultDetail; - - } - - /** - * Card 类表示一张牌的基本信息,包括花色和点数。 - */ - @XmlAccessorType(XmlAccessType.FIELD) - @Data - public static class Card { - - /** - * 花色(例如:1 = 黑桃, 2 = 红心, 3 = 方块, 4 = 梅花)。 - */ - @XmlElement(name = "Suit") - private int suit; - - /** - * 点数(例如:2 - 10、J、Q、K、A)。 - */ - @XmlElement(name = "Rank") - private int rank; - - } - - /** - * ResultDetail 类表示游戏的详细结果,包括多个胜负状态和奖励信息。 - */ - @XmlAccessorType(XmlAccessType.FIELD) - @Data - public static class ResultDetail { - - /** - * 是否平局。 - */ - @XmlElement(name = "BRTie") - private boolean brTie; - - /** - * 是否玩家赢。 - */ - @XmlElement(name = "BRPlayerWin") - private boolean brPlayerWin; - - /** - * 是否庄家赢。 - */ - @XmlElement(name = "BRBankerWin") - private boolean brBankerWin; - - /** - * 是否玩家对子。 - */ - @XmlElement(name = "BRPlayerPair") - private boolean brPlayerPair; - - /** - * 是否庄家对子。 - */ - @XmlElement(name = "BRBankerPair") - private boolean brBankerPair; - - /** - * 是否两张牌幸运六。 - */ - @XmlElement(name = "BRS2CardsLuckySix") - private boolean brS2CardsLuckySix; - - /** - * 是否三张牌幸运六。 - */ - @XmlElement(name = "BRS3CardsLuckySix") - private boolean brS3CardsLuckySix; - - /** - * 是否三张牌幸运六(SS)。 - */ - @XmlElement(name = "BRSSS2CardsLuckySix") - private boolean brSSS2CardsLuckySix; - - /** - * 是否三张牌幸运六(SS)。 - */ - @XmlElement(name = "BRSSS3CardsLuckySix") - private boolean brSSS3CardsLuckySix; - - /** - * 是否玩家奖金(SS)。 - */ - @XmlElement(name = "BRSPlayerBonus") - private boolean brSPlayerBonus; - - /** - * 是否庄家奖金(SS)。 - */ - @XmlElement(name = "BRSBankerBonus") - private boolean brSBankerBonus; - - /** - * 是否和局(SS)。 - */ - @XmlElement(name = "BRSSTie") - private boolean brSSTie; - - /** - * 是否玩家胜(SS)。 - */ - @XmlElement(name = "BRSSPlayerWin") - private boolean brSSPlayerWin; - - /** - * 是否庄家胜(SS)。 - */ - @XmlElement(name = "BRSSBankerWin") - private boolean brSSBankerWin; - - /** - * 是否玩家对子(SS)。 - */ - @XmlElement(name = "BRSSPlayerPair") - private boolean brSSPlayerPair; - - /** - * 是否庄家对子(SS)。 - */ - @XmlElement(name = "BRSSBankerPair") - private boolean brSSBankerPair; - - /** - * 是否玩家自然。 - */ - @XmlElement(name = "BRPlayerNatural") - private boolean brPlayerNatural; - - /** - * 是否庄家自然。 - */ - @XmlElement(name = "BRBankerNatural") - private boolean brBankerNatural; - - /** - * 是否玩家自然(SS)。 - */ - @XmlElement(name = "BRSSPlayerNatural") - private boolean brSSPlayerNatural; - - /** - * 是否庄家自然(SS)。 - */ - @XmlElement(name = "BRSSBankerNatural") - private boolean brSSBankerNatural; - - /** - * 是否任意对子。 - */ - @XmlElement(name = "BRSAnyPair") - private boolean brSAnyPair; - - /** - * 是否三张对子。 - */ - @XmlElement(name = "BRSSSAnyPair") - private boolean brSSSAnyPair; - - /** - * 是否完美对子。 - */ - @XmlElement(name = "BRSPerfectPair") - private boolean brSPerfectPair; - - /** - * 是否完美三张对子。 - */ - @XmlElement(name = "BRSSSPerfectPair") - private boolean brSSSPerfectPair; - - /** - * 是否三张牌玩家奖金。 - */ - @XmlElement(name = "BRSSSPlayerBonus") - private boolean brSSSPlayerBonus; - - /** - * 是否三张牌庄家奖金。 - */ - @XmlElement(name = "BRSSSBankerBonus") - private boolean brSSSBankerBonus; - - /** - * 是否三张牌幸运六。 - */ - @XmlElement(name = "BRSSSLuckySix") - private boolean brSSSLuckySix; - - /** - * 是否两张牌幸运六。 - */ - @XmlElement(name = "BRSLuckySix") - private boolean brSLuckySix; - - } -} - diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetUserStatusResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetUserStatusResponse.java deleted file mode 100644 index e6425a2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAGetUserStatusResponse.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.ff.game.api.sa.dto; -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import java.math.BigDecimal; - -/** - * sa获取用户状态响应 - * - * @author shi - * @date 2025/03/26 - */ -@Data -@XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "GetUserStatusResponse") -public class SAGetUserStatusResponse { - - /** - * 错误消息ID - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误消息 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - /** - * 请求是否成功 - */ - @XmlElement(name = "IsSuccess") - private boolean isSuccess; - - /** - * 用户名 - */ - @XmlElement(name = "Username") - private String username; - - /** - * 余额 - */ - @XmlElement(name = "Balance") - private BigDecimal balance; - - /** - * 用户是否在线 - */ - @XmlElement(name = "Online") - private boolean online; - - /** - * 是否已经投注 - */ - @XmlElement(name = "Betted") - private boolean betted; - - /** - * 已投注金额 - */ - @XmlElement(name = "BettedAmount") - private double bettedAmount; - - /** - * 最大余额 - */ - @XmlElement(name = "MaxBalance") - private double maxBalance; - - /** - * 最大赢得金额 - */ - @XmlElement(name = "MaxWinning") - private double maxWinning; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAKickUserResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SAKickUserResponse.java deleted file mode 100644 index 835928c..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SAKickUserResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ff.game.api.sa.dto; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * 响应类,用于踢出用户的请求返回。 - * - * @author shi - * @date 2025/03/26 - */ -@XmlAccessorType(XmlAccessType.FIELD) -@Data -@XmlRootElement(name = "KickUserResponse") -public class SAKickUserResponse { - - /** - * 错误信息ID。 - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误信息描述。 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SALoginRequestResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SALoginRequestResponse.java deleted file mode 100644 index ec56a9a..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SALoginRequestResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.ff.game.api.sa.dto; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * salogin请求响应 - * - * @author shi - * @date 2025/03/26 - */ -@Data -@XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "LoginRequestResponse") -public class SALoginRequestResponse { - - /** - * 错误消息 ID - */ - @XmlElement(name = "ErrorMsgId") - private int errorMsgId; - - /** - * 错误消息 - */ - @XmlElement(name = "ErrorMsg") - private String errorMsg; - - /** - * 登录令牌 - */ - @XmlElement(name = "Token") - private String token; - - /** - * 显示名称 - */ - @XmlElement(name = "DisplayName") - private String displayName; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sa/dto/SARegUserInfoResponse.java b/ff-game/src/main/java/com/ff/game/api/sa/dto/SARegUserInfoResponse.java deleted file mode 100644 index 1ae4dbc..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/dto/SARegUserInfoResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.game.api.sa.dto; - -import lombok.Data; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - - -/** - * - * sa 创建用户返回类 - * @author shi - * @date 2025/03/25 - */ -@Data -@XmlAccessorType(XmlAccessType.FIELD) -@XmlRootElement(name = "RegUserInfoResponse") -public class SARegUserInfoResponse { - @XmlElement(name = "ErrorMsgId") - private Integer errorMsgId; - @XmlElement(name = "ErrorMsg") - private String errorMsg; - @XmlElement(name = "Username") - private String username; - - - -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sa/impl/GamesSAServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/sa/impl/GamesSAServiceImpl.java deleted file mode 100644 index 984a0ba..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sa/impl/GamesSAServiceImpl.java +++ /dev/null @@ -1,638 +0,0 @@ -package com.ff.game.api.sa.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.ConfigConstants; -import com.ff.base.constant.Constants; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.system.service.ISysConfigService; -import com.ff.base.utils.*; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.api.sa.client.SAClient; -import com.ff.game.api.sa.dto.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - - -/** - * SA 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("SAService") -@Slf4j -public class GamesSAServiceImpl implements IGamesService { - - - @Resource - private ISysConfigService configService; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private SAClient SAClient; - - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 游戏id - */ - private static final Long GAME_ID = 1904452832756002817L; - - /** - * 平台ID - */ - private static final Long PLATFORM_ID = 1904411420157108225L; - - /** - * 游戏名称id - */ - private static final Long GAME_NAME_ID = 1904452832756002817L; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - ApiException.isTrue(113 != errorCode, ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - ApiException.isTrue(116 != errorCode, ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - ApiException.isTrue(122 != errorCode, ErrorCode.FREQUENT_BALANCE_TRANSFER.getCode()); - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - private String getKey(GamesBaseRequestDTO gamesBaseRequestDTO, String method) { - String dateTimeNow = DateUtils.dateTimeNow(); - String query = "method=" + method + "&Key=" + gamesBaseRequestDTO.getAgentKey() + "&Time=" + dateTimeNow + "&" + gamesBaseRequestDTO.getQuery(); - String q = DESEncryptUtils.DESEncrypt(query, "g9G16nTs"); - String s = Md5Utils.md5New(query + gamesBaseRequestDTO.getAgentId() + dateTimeNow + gamesBaseRequestDTO.getAgentKey()); - return "q=" + q + "&s=" + s; - } - - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesSAServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("Username", createMemberRequestDTO.getAccount()); - params.put("CurrencyType", createMemberRequestDTO.getCurrency()); - String query = JsonUtil.mapToQueryString(params); - createMemberRequestDTO.setQuery(query); - String key = this.getKey(createMemberRequestDTO, "RegUserInfo"); - String result = SAClient.createMember(key); - SARegUserInfoResponse saRegUserInfoResponse = XmlUtils.xmlDecrypt(result, SARegUserInfoResponse.class); - Integer errorCode = saRegUserInfoResponse.getErrorMsgId(); - if (this.getIsSuccess(errorCode)) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesSAServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("Username", memberInfoRequestDTO.getAccounts()); - String query = JsonUtil.mapToQueryString(params); - memberInfoRequestDTO.setQuery(query); - String key = this.getKey(memberInfoRequestDTO, "GetUserStatusDV"); - String result = SAClient.getMemberInfo(key); - SAGetUserStatusResponse saGetUserStatusResponse = XmlUtils.xmlDecrypt(result, SAGetUserStatusResponse.class); - Integer errorCode = saGetUserStatusResponse.getErrorMsgId(); - if (this.getIsSuccess(errorCode)) { - - return MemberInfoResponseDTO.builder() - .account(memberInfoRequestDTO.getAccounts()) - .balance(saGetUserStatusResponse.getBalance()) - .status(saGetUserStatusResponse.isOnline() ? GameMemberStatus.ONLINE.getCode() : GameMemberStatus.OFFLINE.getCode()) - .build(); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesSAServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - - Map params = new LinkedHashMap<>(); - params.put("Username", gamesLogin.getAccount()); - params.put("CurrencyType", gamesLogin.getCurrency()); - String query = JsonUtil.mapToQueryString(params); - gamesLogin.setQuery(query); - String key = this.getKey(gamesLogin, "LoginRequest"); - String result = SAClient.loginWithoutRedirect(key); - SALoginRequestResponse saLoginRequestResponse = XmlUtils.xmlDecrypt(result, SALoginRequestResponse.class); - Integer errorCode = saLoginRequestResponse.getErrorMsgId(); - - - //判断是否获取成功 - if (this.getIsSuccess(errorCode)) { - - String loginUrl = configService.selectConfigByKey(ConfigConstants.SA_API_LOGIN_URL); - String hallCode = configService.selectConfigByKey(ConfigConstants.SA_API_HALL_CODE); - params = new LinkedHashMap<>(); - params.put("username", gamesLogin.getAccount()); - params.put("token", saLoginRequestResponse.getToken()); - params.put("lobby", hallCode); - params.put("lang", gamesLogin.getLang()); - if (StringUtils.isEmpty(gamesLogin.getHomeUrl())) { - params.put("returnurl", gamesLogin.getHomeUrl()); - } - return loginUrl + "?" + JsonUtil.mapToQueryString(params); - } else { - throw new ApiException(ErrorCode.ACCOUNT_NOT_EXIST.getCode()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - Game game = gameService.selectGameById(GAME_ID); - Integer platformType = PlatformType.CARD_GAME.getCode(); - //不存在这个游戏 - if (ObjectUtils.isEmpty(game)) { - game = new Game(); - game.setId(GAME_ID); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.SA.getCode()) + 1); - game.setPlatformCode(GamePlatforms.SA.getCode()); - game.setPlatformType(platformType); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName("真人棋牌"); - game.setCreateBy(Constants.SYSTEM); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo("真人棋牌", "zh-CN")); - game.setGameId(StringUtils.addSuffix(GamePlatforms.SA.getCode(), 1)); - game.setNameInfo(nameInfos); - gameService.updateGame(game); - } - - return CacheConstants.SA_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesSAServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - //判断是转入还是转出 - String transactionId = "OUT" + DateUtils.dateTimeNow() + exchangeTransferMoneyRequestDTO.getAccount(); - if (!TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - transactionId = "IN" + DateUtils.dateTimeNow() + exchangeTransferMoneyRequestDTO.getAccount(); - } - - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.SA.getInfo()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - if (TransferType.ALL.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - Map params = new LinkedHashMap<>(); - params.put("Username", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("OrderId", exchangeMoney.getTransactionId()); - String query = JsonUtil.mapToQueryString(params); - exchangeTransferMoneyRequestDTO.setQuery(query); - String key = this.getKey(exchangeTransferMoneyRequestDTO, "DebitAllBalanceDV"); - String result = SAClient.exchangeTransferByOut(key); - SADebitAllBalanceResponse saDebitAllBalanceResponse = XmlUtils.xmlDecrypt(result, SADebitAllBalanceResponse.class); - Integer errorCode = saDebitAllBalanceResponse.getErrorMsgId(); - //判断是否转移成功 - if (this.getIsSuccess(errorCode)) { - - - //更新数据 - exchangeMoney.setBalance(saDebitAllBalanceResponse.getDebitAmount()); - exchangeMoney.setCoinBefore(saDebitAllBalanceResponse.getDebitAmount()); - exchangeMoney.setCoinAfter(BigDecimal.ZERO); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCurrencyBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCurrencyAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesXKServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorCode); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - } else { - Map params = new LinkedHashMap<>(); - params.put("Username", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("OrderId", exchangeMoney.getTransactionId()); - params.put("CreditAmount", exchangeTransferMoneyRequestDTO.getAmount().stripTrailingZeros().toPlainString()); - params.put("CurrencyType", exchangeTransferMoneyRequestDTO.getCurrency()); - String query = JsonUtil.mapToQueryString(params); - exchangeTransferMoneyRequestDTO.setQuery(query); - String key = this.getKey(exchangeTransferMoneyRequestDTO, "CreditBalanceDV"); - String result = SAClient.exchangeTransferByInto(key); - SACreditBalanceResponse saCreditBalanceResponse = XmlUtils.xmlDecrypt(result, SACreditBalanceResponse.class); - Integer errorCode = saCreditBalanceResponse.getErrorMsgId(); - //判断是否转移成功 - if (this.getIsSuccess(errorCode)) { - - - //更新数据 - exchangeMoney.setBalance(saCreditBalanceResponse.getCreditAmount()); - exchangeMoney.setCoinBefore(NumberUtil.sub(saCreditBalanceResponse.getBalance(), saCreditBalanceResponse.getCreditAmount()).abs()); - exchangeMoney.setCoinAfter(saCreditBalanceResponse.getBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.FAILURE.getCode()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - log.error("GamesXKServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{}", errorCode); - throw new ApiException(ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - } - } - - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "Asia/Shanghai", DateUtils.YYYY_MM_DD_HH_MM_SS); - String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "Asia/Shanghai", DateUtils.YYYY_MM_DD_HH_MM_SS); - - //请求参数 - log.info("GamesSAServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map params = new LinkedHashMap<>(); - params.put("FromTime", startTime); - params.put("ToTime", endTime); - String query = JsonUtil.mapToQueryString(params); - betRecordByTimeDTO.setQuery(query); - String key = this.getKey(betRecordByTimeDTO, "GetAllBetDetailsForTimeIntervalDV"); - - String result = SAClient.getBetRecordByTime(key); - SAGetAllBetDetailsResponse saGetAllBetDetailsResponse = XmlUtils.xmlDecrypt(result, SAGetAllBetDetailsResponse.class); - Integer errorCode = saGetAllBetDetailsResponse.getErrorMsgId(); - - - //判断是否获取成功 - if (this.getIsSuccess(errorCode)) { - //数据组装 - this.batchInsert(saGetAllBetDetailsResponse, betRecordByTimeDTO); - - return Boolean.TRUE; - } else { - log.error("GamesSAServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{}", errorCode); - } - return Boolean.FALSE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - String startTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getStartTime(), "Asia/Shanghai", DateUtils.YYYY_MM_DD_HH_MM_SS); - String endTime = DateUtils.convertTimeZone(betRecordByTimeDTO.getEndTime(), "Asia/Shanghai", DateUtils.YYYY_MM_DD_HH_MM_SS); - - //请求参数 - log.info("GamesSAServiceImpl [getBetRecordByHistoryTime] 请求参数 {}", betRecordByTimeDTO); - Map params = new LinkedHashMap<>(); - params.put("FromTime", startTime); - params.put("ToTime", endTime); - String query = JsonUtil.mapToQueryString(params); - betRecordByTimeDTO.setQuery(query); - String key = this.getKey(betRecordByTimeDTO, "GetAllBetDetailsForTimeIntervalDV"); - - String result = SAClient.getBetRecordByTime(key); - SAGetAllBetDetailsResponse saGetAllBetDetailsResponse = XmlUtils.xmlDecrypt(result, SAGetAllBetDetailsResponse.class); - Integer errorCode = saGetAllBetDetailsResponse.getErrorMsgId(); - - - //判断是否获取成功 - if (this.getIsSuccess(errorCode)) { - //数据组装 - this.batchInsert(saGetAllBetDetailsResponse, betRecordByTimeDTO); - - return Boolean.TRUE; - } else { - log.error("GamesSAServiceImpl [getBetRecordByHistoryTime] 获取投注记录失败,错误代码{}", errorCode); - } - return Boolean.FALSE; - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesSAServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("Username", kickMemberRequestDTO.getAccount()); - String query = JsonUtil.mapToQueryString(params); - kickMemberRequestDTO.setQuery(query); - String key = this.getKey(kickMemberRequestDTO, "KickUser"); - String result = SAClient.kickMember(key); - SAKickUserResponse saKickUserResponse = XmlUtils.xmlDecrypt(result, SAKickUserResponse.class); - Integer errorCode = saKickUserResponse.getErrorMsgId(); - //判断是否获取成功 - if (this.getIsSuccess(errorCode)) { - return Boolean.TRUE; - } else { - throw new ApiException(ErrorCode.KICK_OUT_AILED.getCode()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param saGetAllBetDetailsResponse sa获取所有投注详细信息响应 - */ - private void batchInsert(SAGetAllBetDetailsResponse saGetAllBetDetailsResponse, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List result = saGetAllBetDetailsResponse.getBetDetailList(); - //数据转化 - for (SAGetAllBetDetailsResponse.BetDetail bean : result) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(bean) - .build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getBetID())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.SA.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - SAGetAllBetDetailsResponse.BetDetail resultBean = (SAGetAllBetDetailsResponse.BetDetail) gamesDataBuildDTO.getData(); - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUsername()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - - - Game game = gameService.selectGameById(GAME_ID); - - // 判断输赢 - Integer gameStatus = GameStatus.FLAT.getCode(); - if (BigDecimal.ZERO.compareTo(resultBean.getResultAmount()) > 0) { - gameStatus = GameStatus.FAIL.getCode(); - } else if (BigDecimal.ZERO.compareTo(resultBean.getResultAmount()) < 0) { - gameStatus = GameStatus.WIN.getCode(); - } - - - String systemCurrency = gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency()); - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(systemCurrency) - .memberId(member.getId()) - .gameCode(resultBean.getGameID()) - .gameType(PlatformType.CARD_GAME.getCode()) - .platformCode(GamePlatforms.SA.getInfo()) - .gameId(/*GAME_ID*/game.getGameId()) - .gameName(game.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(1) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getUsername()) - .wagersId(String.valueOf(resultBean.getBetID())) - .wagersTime(resultBean.getBetTime().getTime()) - .betAmount(resultBean.getBetAmount()) - .payoffTime(resultBean.getPayoutTime().getTime()) - .payoffAmount(resultBean.getResultAmount().abs()) - .settlementTime(resultBean.getPayoutTime().getTime()) - .turnover(resultBean.getRolling()) - .orderNo(null) - .round(String.valueOf(resultBean.getRound())) - .table(String.valueOf(resultBean.getHostID())) - .seat(String.valueOf(resultBean.getSet())) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/success/MySuccessCondition.java b/ff-game/src/main/java/com/ff/game/api/success/MySuccessCondition.java deleted file mode 100644 index f1c97d2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/success/MySuccessCondition.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.success; - - -import com.dtflys.forest.callback.SuccessWhen; -import com.dtflys.forest.http.ForestRequest; -import com.dtflys.forest.http.ForestResponse; - -/** - * 我kmsuccess状态 - * - * @author shi - * @date 2025/04/02 - */ -public class MySuccessCondition implements SuccessWhen { - - /** - * 请求成功条件 - * @param req Forest请求对象 - * @param res Forest响应对象 - * @return 是否成功,true: 请求成功,false: 请求失败 - */ - @Override - public boolean successWhen(ForestRequest req, ForestResponse res) { - // req 为Forest请求对象,即 ForestRequest 类实例 - // res 为Forest响应对象,即 ForestResponse 类实例 - // 返回值为 ture 则表示请求成功,false 表示请求失败 - return res.noException(); - // 当然在这里也可以写其它条件,比如 通过 res.getResult() 或 res.getContent() 获取业务数据 - // 再根据业务数据判断是否成功 - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/address/SV388Adrress.java b/ff-game/src/main/java/com/ff/game/api/sv388/address/SV388Adrress.java deleted file mode 100644 index 4474614..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/address/SV388Adrress.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.api.sv388.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class SV388Adrress implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.SV388.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, ""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/client/SV388Client.java b/ff-game/src/main/java/com/ff/game/api/sv388/client/SV388Client.java deleted file mode 100644 index 7f57520..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/client/SV388Client.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.ff.game.api.sv388.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.jili.dto.JILIExchangeMoneyResponseDTO; -import com.ff.game.api.jili.dto.JILIKickMemberAllDTO; -import com.ff.game.api.jili.dto.JILIKickMemberDTO; -import com.ff.game.api.sv388.address.SV388Adrress; -import com.ff.game.api.sv388.dto.*; -import com.ff.game.api.xk.dto.XKKickMemberAllDTO; -import com.ff.game.api.xk.dto.XKKickMemberDTO; - -import java.util.Map; - -/** - * xk 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = SV388Adrress.class) -public interface SV388Client { - /** - * 创建成员 - * - * @param params 参数 - * @return {@link String } - */ - @Post(url ="/wallet/createMember", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388Response createMember(@Body Map params); - - /** - * 获取会员信息 - * - * @param params 参数 - * @return {@link SV388MemberInfo } - */ - @Post(url ="/wallet/getBalance", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388MemberInfo getMemberInfo(@Body Map params); - - /** - * 无重定向登录 - * - * @param params 参数 - * @return {@link SV388LoginResponse } - */ - @Post("/wallet/login") - SV388LoginResponse loginWithoutRedirect(@Body Map params); - - - - /** - * 按代理id进行交换转账 - * - * @param params 参数 - * @return {@link JILIExchangeMoneyResponseDTO } - */ - @Post(url ="/wallet/deposit", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388AETransactionResponse deposit(@Body Map params); - - - @Post(url ="/wallet/withdraw", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388AETransactionResponse withdraw(@Body Map params); - - - /** - * 汇兑转移状态 - * - * @param params 参数 - * @return {@link SV388ExchangeTransferStatusResponse } - */ - @Post(url ="/wallet/checkTransferOperation", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388ExchangeTransferStatusResponse exchangeTransferStatus(@Body Map params); - - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link SV388BetRecordResponse } - */ - @Post(url ="{fetchUrl}/fetch/gzip/getTransactionByUpdateDate", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388BetRecordResponse getBetRecordByTime(@Body Map params, - @Var("fetchUrl") String fetchUrl); - - /** - * 按时间获取投注历史记录 - * - * @param params 参数 - * @return {@link SV388BetRecordResponse } - */ - @Post(url ="{fetchUrl}/fetch/gzip/getTransactionByTxTime", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - SV388BetRecordResponse getBetHistoryRecordByTime(@Body Map params, - @Var("fetchUrl") String fetchUrl); - /** - * 踢出队员 - * - * @param params 参数 - * @return {@link JILIKickMemberDTO } - */ - @Post(url ="/wallet/logout", - headers = { - "Content-type: application/x-www-form-urlencoded" - }) - XKKickMemberDTO kickMember(@Body Map params); - - /** - * 踢出所有队员 - * - * @param params 参数 - * @return {@link JILIKickMemberAllDTO } - */ - @Get("/kickMemberAll") - XKKickMemberAllDTO kickMemberAll(@JSONBody Map params); - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388AETransactionResponse.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388AETransactionResponse.java deleted file mode 100644 index 5e029e0..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388AETransactionResponse.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.ZonedDateTime; - -/** - * 电子交易响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class SV388AETransactionResponse { - - /** - * 响应状态 - */ - @JsonProperty("status") - private String status; - - - /** - * 金额 - */ - @JsonProperty("amount") - private BigDecimal amount; - - /** - * 交易方法(如:DEPOSIT, WITHDRAW) - */ - @JsonProperty("method") - private String method; - - /** - * 数据库ID - */ - @JsonProperty("databaseId") - private int databaseId; - - /** - * 当前余额 - */ - @JsonProperty("currentBalance") - private BigDecimal currentBalance; - - /** - * 最后修改时间 - */ - @JsonProperty("lastModified") - private ZonedDateTime lastModified; - - /** - * 交易代码 - */ - @JsonProperty("txCode") - private String txCode; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388BetRecordResponse.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388BetRecordResponse.java deleted file mode 100644 index 0303e08..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388BetRecordResponse.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * sv388记录响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class SV388BetRecordResponse { - - /** - * 状态代码 - */ - @JsonProperty("status") - private Integer status; - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; - /** - * 交易记录 - */ - @JsonProperty("transactions") - private List transactions; - - @Data - public static class Transaction { - - /** - * 游戏类型 - */ - @JsonProperty("gameType") - private String gameType; - - /** - * 返还金额(包含下注金额) - */ - @JsonProperty("winAmount") - private BigDecimal winAmount; - - /** - * 交易时间 - */ - @JsonProperty("txTime") - private Date txTime; - - /** - * 结算状态 - */ - @JsonProperty("settleStatus") - private Integer settleStatus; - - /** - * 游戏信息 - */ - @JsonProperty("gameInfo") - private String gameInfo; - - /** - * 真实返还金额 - */ - @JsonProperty("realWinAmount") - private BigDecimal realWinAmount; - - /** - * 更新时间 - */ - @JsonProperty("updateTime") - private String updateTime; - - /** - * 真实下注金额 - */ - @JsonProperty("realBetAmount") - private BigDecimal realBetAmount; - - /** - * 用户ID - */ - @JsonProperty("userId") - private String userId; - - /** - * 下注类型 - */ - @JsonProperty("betType") - private String betType; - - /** - * 平台名称 - */ - @JsonProperty("platform") - private String platform; - - /** - * 交易状态 - */ - @JsonProperty("txStatus") - private Integer txStatus; - - /** - * 下注金额 - */ - @JsonProperty("betAmount") - private BigDecimal betAmount; - - /** - * 游戏名称 - */ - @JsonProperty("gameName") - private String gameName; - - /** - * 平台注单号 - */ - @JsonProperty("platformTxId") - private String platformTxId; - - /** - * 下注时间 - */ - @JsonProperty("betTime") - private Date betTime; - - /** - * 平台游戏代码 - */ - @JsonProperty("gameCode") - private String gameCode; - - /** - * 玩家货币代码 - */ - @JsonProperty("currency") - private String currency; - - /** - * 累积奖金的获胜金额 - */ - @JsonProperty("jackpotWinAmount") - private BigDecimal jackpotWinAmount; - - /** - * 累积奖金贡献金额 - */ - @JsonProperty("jackpotBetAmount") - private BigDecimal jackpotBetAmount; - - /** - * 平台有效投注 - */ - @JsonProperty("turnover") - private BigDecimal turnover; - - /** - * 游戏商的回合识别码 - */ - @JsonProperty("roundId") - private String roundId; - - - - /** - * 子注单号 - */ - @JsonProperty("refPlatformTxId") - private String refPlatformTxId; - - /** - * 是否为特殊收费游戏 - */ - @JsonProperty("isPremium") - private Boolean isPremium; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388ExchangeTransferStatusResponse.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388ExchangeTransferStatusResponse.java deleted file mode 100644 index a773ad1..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388ExchangeTransferStatusResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; - - -/** - * aeexchange传输状态响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class SV388ExchangeTransferStatusResponse { - - /** - * 响应状态 - */ - @JsonProperty("status") - private String status; - - /** - * 情境 1:响应 status = 0000 & txStatus = 1 表示存款/提款成功 - * 情境 2:响应 status = 0000 & txStatus = 0 表示存款/提款失败 - * 情境 3:响应 status = 0000 & txStatus = 2 表示存款/提款处理中,可 3 秒后调用 checkTransferOperation API 确认回覆直到 txStatus = 0 或 1 的回覆 - * 情境 4:响应 status = 1017 表示交易不存在 - */ - @JsonProperty("txStatus") - private String txStatus; - - /** - * 当前余额 - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 转账金额 - */ - @JsonProperty("transferAmount") - private BigDecimal transferAmount; - - /** - * 转账类型(如:DEPOSIT 或 WITHDRAW) - */ - @JsonProperty("transferType") - private String transferType; - - /** - * 交易代码 - */ - @JsonProperty("txCode") - private String txCode; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LoginResponse.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LoginResponse.java deleted file mode 100644 index 033abbf..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LoginResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * aelogin回应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class SV388LoginResponse { - /** - * 响应状态 - */ - @JsonProperty("status") - private Integer status; - - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; - - /** - * 登录 URL - */ - @JsonProperty("url") - private String url; - - /** - * 扩展字段,类型为列表,可以存储多项数据 - */ - @JsonProperty("extension") - private List extension; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LogoutUserResponse.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LogoutUserResponse.java deleted file mode 100644 index b345034..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388LogoutUserResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.List; - -/** - * 注销用户响应 - * - * @author shi - * @date 2025/04/01 - */ -@Data -public class SV388LogoutUserResponse { - /** - * 状态代码 - */ - @JsonProperty("status") - private String status; - - /** - * 已注销的用户列表 - */ - @JsonProperty("logoutUsers") - private List logoutUsers; - - /** - * 用户数量 - */ - @JsonProperty("count") - private Integer count; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388MemberInfo.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388MemberInfo.java deleted file mode 100644 index f50c61f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388MemberInfo.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; - -/** - * AEMEMBER信息 - * - * @author shi - * @date 2025/03/31 - */ -@Data -public class SV388MemberInfo { - /** - * 响应结果列表,包含用户信息 - */ - @JsonProperty("results") - private List result; - - /** - * 记录数量 - */ - @JsonProperty("count") - private int count; - - /** - * 查询时间 - */ - @JsonProperty("querytime") - private Date queryTime; - - /** - * 响应状态 - */ - @JsonProperty("status") - private Integer status; - - @Data - public static class UserInfo { - - /** - * 用户ID - */ - @JsonProperty("userId") - private String userId; - - /** - * 用户余额 - */ - @JsonProperty("balance") - private BigDecimal balance; - - /** - * 最后修改时间 - */ - @JsonProperty("lastModified") - private Date lastModified; - } - -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388Response.java b/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388Response.java deleted file mode 100644 index 85bc006..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/dto/SV388Response.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.game.api.sv388.dto; - -import lombok.Data; - -/** - * 航空响应 - * - * @author shi - * @date 2025/03/28 - */ -@Data -public class SV388Response { - /** - * 状态码 (String类型) - * 0000 - 成功 - * 其他 - 错误状态码 - */ - private String status; - - /** - * 描述信息 (String类型) - * "Success" - 请求成功 - * 其他 - 错误信息 - */ - private String desc; -} diff --git a/ff-game/src/main/java/com/ff/game/api/sv388/impl/SV388GamesServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/sv388/impl/SV388GamesServiceImpl.java deleted file mode 100644 index b2ca059..0000000 --- a/ff-game/src/main/java/com/ff/game/api/sv388/impl/SV388GamesServiceImpl.java +++ /dev/null @@ -1,642 +0,0 @@ -package com.ff.game.api.sv388.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.delay.DelayService; -import com.ff.delay.DelayTask; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.api.sv388.client.SV388Client; -import com.ff.game.api.sv388.dto.*; -import com.ff.game.api.xk.dto.XKKickMemberDTO; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; - - -/** - * AE 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("SV388Service") -@Slf4j -public class SV388GamesServiceImpl implements IGamesService { - - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - @Resource - private IMemberService memberService; - - @Resource - private SV388Client sv388Client; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - @Resource - private DelayService delayService; - - /** - * 游戏id - */ - private static final Long GAME_ID = 1122L; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link Map }<{@link String }, {@link Object }> - */ - private Map getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Map params = new LinkedHashMap<>(); - params.put("cert", gamesBaseRequestDTO.getAgentKey()); - params.put("agentId", gamesBaseRequestDTO.getAgentId()); - return params; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - - Platform platform = createMemberRequestDTO.getVendor(); - Object o = platform.getExtInfo().getBetLimit().get(createMemberRequestDTO.getSystemCurrency()); - if (!(o instanceof Map)) { - throw new ApiException(ErrorCode.Miss_Config.getCode()); - } - Map betLimit = new HashMap<>(); - betLimit.put(GamePlatforms.SV388.getCode(), new HashMap() {{ - put("LIVE", new HashMap((Map) o) {{ - remove("@type"); - }}); - }} - ); - Map params = this.getKey(createMemberRequestDTO); - params.put("userId", createMemberRequestDTO.getAccount()); - params.put("currency", createMemberRequestDTO.getCurrency()); - params.put("betLimit", JsonUtil.objToString(betLimit)); - SV388Response aeResponse = sv388Client.createMember(params); - String errorCode = aeResponse.getStatus(); - if (this.getIsSuccess(Integer.valueOf(errorCode))) { - return Boolean.TRUE; - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - Map params = this.getKey(memberInfoRequestDTO); - params.put("alluser", 0); - params.put("userIds", memberInfoRequestDTO.getAccounts()); - SV388MemberInfo memberInfo = sv388Client.getMemberInfo(params); - //判断是否获取成功 - if (this.getIsSuccess(memberInfo.getStatus())) { - SV388MemberInfo.UserInfo userInfo = memberInfo.getResult().get(0); - return MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(userInfo.getBalance()) - .account(memberInfoRequestDTO.getAccounts()) - .build(); - } else { - throw new ApiException(ErrorCode.ERROR.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - Map params = this.getKey(gamesLogin); - params.put("userId", gamesLogin.getAccount()); - params.put("externalURL", gamesLogin.getHomeUrl()); - params.put("language", gamesLogin.getLang()); - params.put("betLimit", gamesLogin.getBetLimit()); - SV388LoginResponse aeLoginResponse = sv388Client.loginWithoutRedirect(params); - //判断是否获取成功 - if (this.getIsSuccess(aeLoginResponse.getStatus())) { - return aeLoginResponse.getUrl(); - } else { - throw new BaseException(aeLoginResponse.getDesc()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - int platformType = PlatformType.VIDEO.getCode(); - Game condition = new Game(); - condition.setPlatformCode(GamePlatforms.SV388.getCode()); - condition.setPlatformType(platformType); - List gameList = gameService.selectGameList(condition); - Platform platform = gamesBaseRequestDTO.getVendor(); - //不存在这个游戏 - if (ObjectUtils.isEmpty(gameList)) { - Game game = new Game(); - game.setId(IdUtil.getSnowflakeNextId()); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.SV388.getCode()) + 1); - game.setPlatformCode(platform.getPlatformCode()); - game.setPlatformType(platformType); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName("SV388真人"); - game.setCreateBy(Constants.SYSTEM); - NameInfo nameInfo = new NameInfo(); - nameInfo.setLang("zh-CN"); - nameInfo.setName("SV388真人"); - game.setNameInfo(Collections.singletonList(nameInfo)); - game.setGameId(StringUtils.addSuffix(GamePlatforms.SV388.getCode(), 1)); - gameService.insertGame(game); - } - return CacheConstants.SV388_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.SV388.getCode() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.SV388.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - exchangeMoney.setStatus(StatusType.IN_PROGRESS.getValue()); - exchangeMoney.setStep(GameExchangeStep.CREATE_ORDER.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - - - Map params = this.getKey(exchangeTransferMoneyRequestDTO); - SV388AETransactionResponse deposit = null; - try { - if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - - params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("txCode", transactionId); - params.put("transferAmount", exchangeTransferMoneyRequestDTO.getAmount()); - deposit = sv388Client.deposit(params); - - } else { - params.put("userId", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("txCode", transactionId); - params.put("withdrawType", 1); - deposit = sv388Client.withdraw(params); - } - } finally { - BigDecimal coinBefore; - if (TransferType.GAMES.getCode().equals(exchangeTransferMoneyRequestDTO.getTransferType())) { - coinBefore = NumberUtil.sub(deposit.getCurrentBalance(), deposit.getAmount()); - } else { - coinBefore = NumberUtil.add(deposit.getCurrentBalance(), deposit.getAmount()); - } - //判断是否转移成功 - if ("0000".equals(deposit.getStatus())) { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.SUCCESS.getCode()); - } else { - exchangeMoney.setStep(GameExchangeStep.PLATFORM_TRANSACTION.getCode()); - exchangeMoney.setStepStatus(GameExchangeStepStatus.IN_PROGRESS.getCode()); - } - //更新数据 - exchangeMoney.setBalance(deposit.getAmount()); - exchangeMoney.setCoinBefore(coinBefore); - exchangeMoney.setCoinAfter(deposit.getCurrentBalance()); - exchangeMoney.setCurrencyBefore(exchangeMoney.getCoinBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoney.getCoinAfter()); - gameExchangeMoneyService.updateGameExchangeMoney(exchangeMoney); - } - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link ExchangeTransferStatusResponseDTO } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - - Map paramsMap = this.getKey(exchangeTransferMoneyRequestDTO); - paramsMap.put("txCode", exchangeTransferMoneyRequestDTO.getOrderId()); - - SV388ExchangeTransferStatusResponse exchangeTransferStatusResponse = sv388Client.exchangeTransferStatus(paramsMap); - Integer status = StatusType.IN_PROGRESS.getValue(); - if ("0000".equals(exchangeTransferStatusResponse.getStatus()) && "1".equals(exchangeTransferStatusResponse.getTxStatus())) { - status = StatusType.SUCCESS.getValue(); - } else if ("0000".equals(exchangeTransferStatusResponse.getStatus()) && "0".equals(exchangeTransferStatusResponse.getTxStatus())) { - status = StatusType.FAILURE.getValue(); - } else if ("1017".equals(exchangeTransferStatusResponse.getStatus())) { - status = StatusType.FAILURE.getValue(); - } - GameExchangeMoney exchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(exchangeTransferMoneyRequestDTO.getGameExchangeMoneyId()); - //更新 - BigDecimal coinBefore; - if (TransferType.GAMES.getCode().equals(exchangeMoney.getExchangeType())) { - coinBefore = NumberUtil.sub(exchangeTransferStatusResponse.getBalance(), exchangeTransferStatusResponse.getTransferAmount()); - } else { - coinBefore = NumberUtil.add(exchangeTransferStatusResponse.getBalance(), exchangeTransferStatusResponse.getTransferAmount()); - } - - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(exchangeTransferStatusResponse.getTransferAmount()) - .coinBefore(coinBefore) - .coinAfter(exchangeTransferStatusResponse.getBalance()) - .build(); - } - - - class GetRealtimeRecordTask extends DelayTask { - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetRealtimeRecordTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - getRealtimeRecord(betRecordByTimeDTO); - } - } - - void getRealtimeRecord(BetRecordByTimeDTO betRecordByTimeDTO) { - //请求参数 - Map params = this.getKey(betRecordByTimeDTO); - - String timeFrom = redisCache.getCacheObject(CacheConstants.SV388_TIME_FROM); - if (StringUtils.isEmpty(timeFrom)) { - timeFrom = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - } - - params.put("timeFrom", timeFrom); - params.put("platform", GamePlatforms.SV388.getCode()); - params.put("delayTime", 10000); - SV388BetRecordResponse aeBetRecordResponse = sv388Client.getBetRecordByTime(params, betRecordByTimeDTO.getVendor().getUrlInfo().getBetUrl()); - - //判断是否获取成功 - if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { - //数据组装 - this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO); - if (aeBetRecordResponse.getTransactions().size() >= 20000) { - delayService.addTask(new GetRealtimeRecordTask(betRecordByTimeDTO)); - } - } else { - redisCache.deleteObject(CacheConstants.SV388_TIME_FROM); - log.error("获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); - } - } - - void getHistoryRecord(BetRecordByTimeDTO betRecordByTimeDTO) { - Map params = this.getKey(betRecordByTimeDTO); - String startTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - String endTime = DateUtils.convertTimestampToFormattedDate(betRecordByTimeDTO.getStartTime(), DateUtils.ISO_8601_FORMAT, "GMT+8") + "+08:00"; - - params.put("startTime", startTime); - params.put("endTime", endTime); - params.put("platform", /*"SEXYBCRT"*/ GamePlatforms.SV388.getCode()); - - SV388BetRecordResponse aeBetRecordResponse = sv388Client.getBetHistoryRecordByTime(params, betRecordByTimeDTO.getVendor().getUrlInfo().getBetUrl()); - - //判断是否获取成功 - if (this.getIsSuccess(aeBetRecordResponse.getStatus())) { - //数据组装 - this.batchInsert(aeBetRecordResponse, betRecordByTimeDTO); - if (aeBetRecordResponse.getTransactions().size() >= 20000) { - delayService.addTask(new GetHistoryRecordTask(betRecordByTimeDTO)); - } - } else { - log.error("获取投注记录失败,错误代码{},错误信息{}", aeBetRecordResponse.getStatus(), aeBetRecordResponse.getDesc()); - } - } - - class GetHistoryRecordTask extends DelayTask { - BetRecordByTimeDTO betRecordByTimeDTO; - - public GetHistoryRecordTask(BetRecordByTimeDTO betRecordByTimeDTO) { - this.betRecordByTimeDTO = betRecordByTimeDTO; - } - - @Override - public void execute() { - getHistoryRecord(betRecordByTimeDTO); - } - } - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { - delayService.addTask(new GetRealtimeRecordTask(betRecordByTimeDTO)); - return Boolean.TRUE; - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - delayService.addTask(new GetHistoryRecordTask(betRecordByTimeDTO)); - return Boolean.TRUE; - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - Map params = this.getKey(kickMemberRequestDTO); - params.put("userIds", kickMemberRequestDTO.getAccount()); - XKKickMemberDTO xkKickMemberDTO = sv388Client.kickMember(params); - //判断是否获取成功 - if (this.getIsSuccess(xkKickMemberDTO.getCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(xkKickMemberDTO.getMsg()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param aeBetRecordResponse ae下注记录响应dto - */ - private void batchInsert(SV388BetRecordResponse aeBetRecordResponse, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List dataBean = aeBetRecordResponse.getTransactions(); - - if (CollectionUtils.isEmpty(dataBean)) { - return; - } - - String timeFrom = null; - //数据转化 - for (SV388BetRecordResponse.Transaction bean : dataBean) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(bean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(bean.getPlatform() + bean.getPlatformTxId()); - timeFrom = bean.getUpdateTime(); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.SV388.getCode()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - if (StringUtils.isEmpty(timeFrom)) { - timeFrom = DateUtils.convertTimestampToFormattedDate(DateUtils.getNowDate(), DateUtils.ISO_8601_FORMAT, "UTC+8") + "+08:00"; - } - redisCache.setCacheObject(CacheConstants.SV388_TIME_FROM, timeFrom); - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - SV388BetRecordResponse.Transaction resultBean = (SV388BetRecordResponse.Transaction) gamesDataBuildDTO.getData(); - - - Member member = memberService.selectMemberByGameAccount(resultBean.getUserId()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - - - // 判断输赢 - Integer gameStatus = GameStatus.FLAT.getCode(); - BigDecimal payoffAmount = BigDecimal.ZERO; - if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) > 0) { - gameStatus = GameStatus.WIN.getCode(); - payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()); - } else if (resultBean.getRealWinAmount().compareTo(resultBean.getRealBetAmount()) < 0) { - gameStatus = GameStatus.FAIL.getCode(); - payoffAmount = resultBean.getRealWinAmount().subtract(resultBean.getRealBetAmount()).abs(); - } - - //结算状态 - int settlementStatus = SettlementStatusEnum.REVOKED.getCode(); - if (resultBean.getTxStatus() == 1) { - settlementStatus = SettlementStatusEnum.COMPLETED.getCode(); - } - - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getPlatform().getOurCurrency(resultBean.getCurrency())) - .memberId(member.getId()) - .gameCode(resultBean.getGameCode()) - .gameType(PlatformType.VIDEO.getCode()) - .platformCode(GamePlatforms.SV388.getCode()) - .gameId(/*GAME_ID*/GamePlatforms.SV388.getCode() + "_" + 1) - .gameName(resultBean.getGameName()) - .gameStatus(gameStatus) - .gameStatusType(resultBean.getSettleStatus()) - .gameCurrencyCode(resultBean.getCurrency()) - .account(resultBean.getUserId()) - .wagersId(resultBean.getPlatform() + resultBean.getPlatformTxId()) - .wagersTime(resultBean.getBetTime().getTime()) - .betAmount(resultBean.getRealBetAmount()) - .payoffTime(resultBean.getTxTime().getTime()) - .payoffAmount(payoffAmount) - .betContent(resultBean.getGameInfo()) - .settlementTime(resultBean.getTxTime().getTime()) - .turnover(resultBean.getTurnover()) - .orderNo(String.valueOf(resultBean.getRoundId())) - .settlementStatus(settlementStatus) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/address/MyXKAddressSource.java b/ff-game/src/main/java/com/ff/game/api/xk/address/MyXKAddressSource.java deleted file mode 100644 index 64144db..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/address/MyXKAddressSource.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ff.game.api.xk.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 我jili address来源 - * - * @author shi - * @date 2025/02/10 - */ -@Component -public class MyXKAddressSource implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { -// String apiBaseUrl = configService.selectConfigByKey(Constants.XK_API_BASE_URL); - String apiBaseUrl = platformService.get(GamePlatforms.XK.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "api"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/game/api/xk/client/XKClient.java b/ff-game/src/main/java/com/ff/game/api/xk/client/XKClient.java deleted file mode 100644 index af567fd..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/client/XKClient.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.ff.game.api.xk.client; - -import com.dtflys.forest.annotation.*; -import com.ff.game.api.jili.address.MyJILIAddressSource; -import com.ff.game.api.jili.dto.*; -import com.ff.game.api.xk.address.MyXKAddressSource; -import com.ff.game.api.xk.dto.*; - -import java.util.Map; - -/** - * xk 请求 - * - * @author shi - * @date 2025/02/10 - */ -@Address(source = MyXKAddressSource.class) -public interface XKClient { - /** - * 创建成员 - * - * @param params 参数 - * @return {@link String } - */ - @Post("/createMember") - XKCreateMemberResponseDTO createMember(@JSONBody Map params); - - /** - * 获取会员信息 - * - * @param params 参数 - * @return {@link XKMemberInfoDTO } - */ - @Post("/getMemberInfo") - XKMemberInfoDTO getMemberInfo(@JSONBody Map params); - - /** - * 无重定向登录 - * - * @param params 参数 - * @return {@link JILILoginWithoutRedirectResponseDTO } - */ - @Post("/loginWithoutRedirect") - XKLoginWithoutRedirectResponseDTO loginWithoutRedirect(@JSONBody Map params); - - /** - * 获取游戏列表 - * - * @param params 参数 - * @return {@link JILIGamesDTO } - */ - @Post("/getGameList") - XKGamesDTO getGameList(@JSONBody Map params); - - /** - * 按代理id进行交换转账 - * - * @param params 参数 - * @return {@link JILIExchangeMoneyResponseDTO } - */ - @Post(url = "/exchangeTransferByAgentId") - XKExchangeMoneyResponseDTO exchangeTransferByAgentId( @JSONBody Map params); - - /** - * 按时间获取投注记录 - * - * @param params 参数 - * @return {@link XKBetRecordResponseDTO } - */ - @Post(url = "/getGameRecordByTime") - XKBetRecordResponseDTO getBetRecordByTime( @JSONBody Map params); - - - /** - * 踢出队员 - * - * @param params 参数 - * @return {@link JILIKickMemberDTO } - */ - @Post("/kickMember") - XKKickMemberDTO kickMember(@JSONBody Map params); - - /** - * 踢出所有队员 - * - * @param params 参数 - * @return {@link JILIKickMemberAllDTO } - */ - @Get("/kickMemberAll") - XKKickMemberAllDTO kickMemberAll(@JSONBody Map params); - - -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java deleted file mode 100644 index 6ae70aa..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKBetRecordResponseDTO.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ff.game.api.xk.dto; - -import io.jsonwebtoken.lang.Collections; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -@NoArgsConstructor -@Data -public class XKBetRecordResponseDTO { - - private Integer code; - private String msg; - private DataBean data; - - @NoArgsConstructor - @Data - public static class DataBean { - private Integer currentPage; - private Integer totalPages; - private Integer pageLimit; - private Integer totalNumber; - private List result; - - public List getResult() { - if (Collections.isEmpty(result)) { - return new ArrayList<>(); - } - return result; - } - - @NoArgsConstructor - @Data - public static class ResultBean { - private String account; - private Long wagersId; - private String gameId; - private Long wagersTime; - private BigDecimal betAmount; - private Long payoffTime; - private BigDecimal payoffAmount; - private Integer status; - private Long settlementTime; - private Integer gameCategoryId; - private Integer type; - private String agentId; - private BigDecimal turnover; - private Long roundIndex; - } - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKCreateMemberResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKCreateMemberResponseDTO.java deleted file mode 100644 index f573bd2..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKCreateMemberResponseDTO.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ff.game.api.xk.dto; - - -import com.ff.game.api.request.GamesBaseRequestDTO; -import lombok.Data; -import lombok.NoArgsConstructor; - - -/** - * 创建成员响应dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -public class XKCreateMemberResponseDTO extends GamesBaseRequestDTO { - - - /** - * 代码 - */ - private int code; - /** - * 数据 - */ - private String data; - /** - * msg - */ - private String msg; -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKExchangeMoneyResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKExchangeMoneyResponseDTO.java deleted file mode 100644 index 47601d3..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKExchangeMoneyResponseDTO.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; - -@NoArgsConstructor -@Data -public class XKExchangeMoneyResponseDTO { - - private int code; - private String msg; - private DataBean data; - - @NoArgsConstructor - @Data - public static class DataBean { - /** - * 交易序号,额度转移纪录唯一值, 长度上限 50 - */ - private String transactionId; - /** - * 转账前金额(游戏币) - */ - private BigDecimal coinBefore; - /** - * 转账后金额(游戏币) - */ - private BigDecimal coinAfter; - /** - * 转账前金额(指定货币) - */ - private BigDecimal currencyBefore; - /** - * 转账后金额(指定货币) - */ - private BigDecimal currencyAfter; - /** - * 状态: - * 1: 成功 - * 2: 失败 - */ - private Integer status; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java deleted file mode 100644 index d430ae8..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKGamesDTO.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * xkgames数据 - * - * @author shi - * @date 2024/11/13 - */ -@NoArgsConstructor -@Data -public class XKGamesDTO { - - private int code; - /** - * msg - */ - private String msg; - /** - * 数据 - */ - private List data; - - @NoArgsConstructor - @Data - public static class DataBean { - /** - * 游戏id - */ - private String gameId; - /** - * 名称 - */ - private String name; - /** - * 游戏类别id - */ - private int gameCategoryId; - /** - *自己系统游戏id - */ - private String systemGameId; - /** - * jp - */ - private boolean jp; - /** - * 是否免费 - */ - private boolean freeSpin; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberAllDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberAllDTO.java deleted file mode 100644 index 227532b..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberAllDTO.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * xkkick会员全部dto - * - * @author shi - * @date 2024/11/13 - */ -@Data -@NoArgsConstructor -public class XKKickMemberAllDTO { - /** - * 代码 - */ - private int code; - /** - * 数据 - */ - private String data; - /** - * msg - */ - private String msg; -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberDTO.java deleted file mode 100644 index 24b7f2f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKKickMemberDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -@NoArgsConstructor -@Data -public class XKKickMemberDTO { - - private int code; - private String msg; - private Object data; -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKLoginWithoutRedirectResponseDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKLoginWithoutRedirectResponseDTO.java deleted file mode 100644 index c2254b5..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKLoginWithoutRedirectResponseDTO.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 登录时不重定向响应dto - * - * @author shi - * @date 2024/10/22 - */ -@NoArgsConstructor -@Data -public class XKLoginWithoutRedirectResponseDTO { - - - /** - * 代码 - */ - private int code; - /** - * 数据 - */ - private String data; - /** - * msg - */ - private String msg; -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKMemberInfoDTO.java b/ff-game/src/main/java/com/ff/game/api/xk/dto/XKMemberInfoDTO.java deleted file mode 100644 index 0199d0f..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/dto/XKMemberInfoDTO.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ff.game.api.xk.dto; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.math.BigDecimal; -import java.util.List; - -/** - * 会员信息dto - * - * @author shi - * @date 2024/10/30 - */ -@NoArgsConstructor -@Data -public class XKMemberInfoDTO { - - - /** - * 代码 - */ - private Integer code; - /** - * msg - */ - private String msg; - /** - * 数据 - */ - private List data; - - @NoArgsConstructor - @Data - public static class DataBean { - /** - * 账户 - */ - private String account; - /** - * 平衡 - */ - private BigDecimal balance; - /** - * 地位 - */ - private Integer status; - } -} diff --git a/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java b/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java deleted file mode 100644 index 70a4f36..0000000 --- a/ff-game/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java +++ /dev/null @@ -1,612 +0,0 @@ -package com.ff.game.api.xk.service.impl; - -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.NumberUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.JsonUtil; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.config.KeyConfig; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.api.xk.client.XKClient; -import com.ff.game.api.xk.dto.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - - -/** - * XK 游戏 impl - * - * @author shi - * @date 2024/11/12 - */ -@Service("XKService") -@Slf4j -public class GamesXKServiceImpl implements IGamesService { - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - @Resource - private IMemberService memberService; - - @Resource - private XKClient xkClient; - - @Resource - private KeyConfig keyConfig; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean getIsSuccess(Integer errorCode) { - return 0 == errorCode; - } - - - /** - * 获取密钥 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - private String getKey(GamesBaseRequestDTO gamesBaseRequestDTO) { - Random random = new Random(); - //取出对应的key跟密钥跟请求参数 - String agentKey = gamesBaseRequestDTO.getAgentKey(); - String agentId = gamesBaseRequestDTO.getAgentId(); - String query = gamesBaseRequestDTO.getQuery(); - - String now = DateUtils.getFormattedDate(); - String keyG = Md5Utils.md5New(now + agentId + agentKey); - - String md5string = Md5Utils.md5New(query + keyG); - Integer randomText1 = 100000 + random.nextInt(900000); - Integer randomText2 = 100000 + random.nextInt(900000); - String key = randomText1 + md5string + randomText2; - return key; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - log.info("GamesXKServiceImpl [createMember] 请求参数 {}", createMemberRequestDTO); - - Map params = new LinkedHashMap<>(); - params.put("account", createMemberRequestDTO.getAccount()); - params.put("agentId", createMemberRequestDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - createMemberRequestDTO.setQuery(query); - String key = this.getKey(createMemberRequestDTO); - params.put("key", key); - XKCreateMemberResponseDTO xkCreateMemberResponseDTO = xkClient.createMember(params); - int errorCode = xkCreateMemberResponseDTO.getCode(); - if (0 == errorCode) { - return Boolean.TRUE; - } - if (101 == errorCode) { - throw new ApiException(ErrorCode.GAME_ACCOUNT_CREATION_FAILED.getCode()); - } - //判断是否获取成功 - return Boolean.FALSE; - } - - - /** - * 获取会员信息 - * - * @param memberInfoRequestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO memberInfoRequestDTO) { - log.info("GamesXKServiceImpl [getMemberInfo] 请求参数 {}", memberInfoRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("accounts", memberInfoRequestDTO.getAccounts()); - params.put("agentId", memberInfoRequestDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - memberInfoRequestDTO.setQuery(query); - String key = this.getKey(memberInfoRequestDTO); - params.put("key", key); - XKMemberInfoDTO xkMemberInfoDTO = xkClient.getMemberInfo(params); - //判断是否获取成功 - if (this.getIsSuccess(xkMemberInfoDTO.getCode())) { - List memberInfoResponseDTOS = new ArrayList<>(); - xkMemberInfoDTO.getData().forEach(e -> { - memberInfoResponseDTOS.add(MemberInfoResponseDTO.builder() - .status(e.getStatus()) - .balance(e.getBalance()) - .account(e.getAccount()) - .build()); - }); - return memberInfoResponseDTOS.get(0); - } else { - throw new BaseException(xkMemberInfoDTO.getMsg()); - } - } - - /** - * 无重定向登录 - * - * @param gamesLogin 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin gamesLogin) { - log.info("GamesXKServiceImpl [loginWithoutRedirect] 请求参数 {}", gamesLogin); - - Map params = new LinkedHashMap<>(); - params.put("account", gamesLogin.getAccount()); - params.put("gameId", Integer.valueOf(gamesLogin.getGameId())); - params.put("lang", gamesLogin.getLang()); - params.put("agentId", gamesLogin.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - gamesLogin.setQuery(query); - String key = this.getKey(gamesLogin); - params.put("key", key); - params.put("disableFullScreen", gamesLogin.getDisableFullScreen()); - params.put("homeUrl", gamesLogin.getHomeUrl()); - params.put("platform", gamesLogin.getVendor()); - XKLoginWithoutRedirectResponseDTO xkLoginWithoutRedirectResponseDTO = xkClient.loginWithoutRedirect(params); - //判断是否获取成功 - if (this.getIsSuccess(xkLoginWithoutRedirectResponseDTO.getCode())) { - return xkLoginWithoutRedirectResponseDTO.getData(); - } else { - throw new BaseException(xkLoginWithoutRedirectResponseDTO.getMsg()); - } - } - - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - List gamesDatas = redisCache.getCacheList(CacheConstants.XK_GAMES); - if (!CollectionUtils.isEmpty(gamesDatas)) { - return CacheConstants.XK_GAMES; - } - - - Map params = new LinkedHashMap<>(); - params.put("agentId", gamesBaseRequestDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - gamesBaseRequestDTO.setQuery(query); - String key = this.getKey(gamesBaseRequestDTO); - params.put("key", key); - - XKGamesDTO xkGamesDTO = xkClient.getGameList(params); - //判断是否获取成功 - if (this.getIsSuccess(xkGamesDTO.getCode())) { - - for (XKGamesDTO.DataBean gamesDataDTO : xkGamesDTO.getData()) { - Integer platformType = XKGameType.findSystemByCode(gamesDataDTO.getGameCategoryId()); - Game game = Game.builder() - //.platformId(gamePlatform.getId()) - .platformCode(GamePlatforms.XK.getCode()) - .platformType(platformType) - .gameCode(String.valueOf(gamesDataDTO.getGameId())) - .build(); - List games = gameService.selectGameList(game); - //不存在这个游戏 - if (CollectionUtils.isEmpty(games)) { - game.setGameSourceType(String.valueOf(gamesDataDTO.getGameCategoryId())); - game.setFreespin(gamesDataDTO.isFreeSpin()); - game.setSortNo(gameService.selectMaxSortNo(platformType, GamePlatforms.XK.getCode()) + 1); - game.setPlatformCode(GamePlatforms.XK.getCode()); - game.setPlatformType(platformType); - game.setGameName(gamesDataDTO.getName()); - game.setCreateBy(Constants.SYSTEM); - game.setGameId(StringUtils.addSuffix(GamePlatforms.SA.getCode(), 1)); - List nameInfos = new ArrayList<>(); - nameInfos.add(new NameInfo(gamesDataDTO.getName(), "zh-CN")); - game.setNameInfo(nameInfos); - - gameService.insertGame(game); - } else { - game = games.get(0); - } - gamesDataDTO.setSystemGameId(game.getGameId()); - } - - redisCache.deleteObject(CacheConstants.XK_GAMES); - redisCache.setCacheList(CacheConstants.XK_GAMES, xkGamesDTO.getData()); - redisCache.expire(CacheConstants.XK_GAMES, 5L, TimeUnit.HOURS); - } else { - throw new BaseException(xkGamesDTO.getMsg()); - - } - - return CacheConstants.XK_GAMES; - } - - /** - * 按代理id进行交换转账 - * - * @param exchangeTransferMoneyRequestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO) { - log.info("GamesXKServiceImpl [exchangeTransferByAgentId] 请求参数 {}", exchangeTransferMoneyRequestDTO); -// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(GamePlatforms.XK.getInfo()) -// .code(exchangeTransferMoneyRequestDTO.getAgentId()) -// .build()); - - Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); - String transactionId = GamePlatforms.XK.getCode() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); - - //获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .tenantKey(exchangeTransferMoneyRequestDTO.getTenantKey()) - .orderId(exchangeTransferMoneyRequestDTO.getOrderId()) - .quota(exchangeTransferMoneyRequestDTO.getQuota()) - .balance(exchangeTransferMoneyRequestDTO.getAmount()) - .exchangeType(exchangeTransferMoneyRequestDTO.getTransferType()) - .currencyCode(exchangeTransferMoneyRequestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.XK.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - //接口限制限制50字符 - exchangeMoney.setTransactionId(GamePlatforms.XK.getCode() + IdUtils.simpleUUID()); - Map params = new LinkedHashMap<>(); - params.put("account", exchangeTransferMoneyRequestDTO.getAccount()); - params.put("transactionId", exchangeMoney.getTransactionId()); - params.put("amount", exchangeTransferMoneyRequestDTO.getAmount().stripTrailingZeros().toPlainString()); - params.put("transferType", exchangeTransferMoneyRequestDTO.getTransferType()); - params.put("agentId", exchangeTransferMoneyRequestDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - exchangeTransferMoneyRequestDTO.setQuery(query); - String key = this.getKey(exchangeTransferMoneyRequestDTO); - params.put("key", key); - XKExchangeMoneyResponseDTO exchangeMoneyResponse = xkClient.exchangeTransferByAgentId(params); - //判断是否转移成功 - if (this.getIsSuccess(exchangeMoneyResponse.getCode())) { - XKExchangeMoneyResponseDTO.DataBean exchangeMoneyResponseData = exchangeMoneyResponse.getData(); - ApiException.isTrue(!StatusType.FAILURE.getValue().equals(exchangeMoneyResponseData.getStatus()), ErrorCode.BALANCE_TRANSFER_FAILED.getCode()); - - //更新数据 - exchangeMoney.setBalance(NumberUtil.sub(exchangeMoneyResponseData.getCurrencyAfter(), exchangeMoneyResponseData.getCurrencyBefore()).abs()); - exchangeMoney.setCoinBefore(exchangeMoneyResponseData.getCoinBefore()); - exchangeMoney.setCoinAfter(exchangeMoneyResponseData.getCoinAfter()); - exchangeMoney.setCurrencyBefore(exchangeMoneyResponseData.getCurrencyBefore()); - exchangeMoney.setCurrencyAfter(exchangeMoneyResponseData.getCurrencyAfter()); - exchangeMoney.setStatus(exchangeMoneyResponseData.getStatus()); - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - } else { - log.error("GamesXKServiceImpl [exchangeTransferByAgentId] 金额转移失败,错误代码{},错误信息{}", exchangeMoneyResponse.getCode(), exchangeMoneyResponse.getMsg()); - throw new BaseException(exchangeMoneyResponse.getMsg()); - } - - return exchangeMoney.getId(); - } - - /** - * 汇兑转移状态 - * - * @param exchangeTransferMoneyRequestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO exchangeTransferMoneyRequestDTO) { - return new ExchangeTransferStatusResponseDTO(); - } - - - /** - * 按时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link List }<{@link GameBettingDetails }> - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO betRecordByTimeDTO) { -// List gameBettingDetails = new ArrayList<>(); - //请求参数 - log.info("GamesXKServiceImpl [getBetRecordByTime] 请求参数 {}", betRecordByTimeDTO); - Map params = new LinkedHashMap<>(); - params.put("startTime", betRecordByTimeDTO.getStartTime()); - params.put("endTime", betRecordByTimeDTO.getEndTime()); - params.put("page", betRecordByTimeDTO.getPage()); - params.put("pageLimit", betRecordByTimeDTO.getPageLimit()); - params.put("agentId", betRecordByTimeDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - betRecordByTimeDTO.setQuery(query); - String key = this.getKey(betRecordByTimeDTO); - params.put("key", key); - XKBetRecordResponseDTO xkBetRecordResponseDTO = xkClient.getBetRecordByTime(params); - - //判断是否获取成功 - if (this.getIsSuccess(xkBetRecordResponseDTO.getCode())) { - //数据组装 - XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData(); - this.batchInsert(xkBetRecordResponseDTO, betRecordByTimeDTO); - - //获取下一页数据 - while (!Objects.equals(dataBean.getCurrentPage(), dataBean.getTotalPages()) && dataBean.getTotalPages() > 0) { - betRecordByTimeDTO.setPage(dataBean.getCurrentPage() + 1); - //请求参数 - params = new LinkedHashMap<>(); - params.put("startTime", betRecordByTimeDTO.getStartTime()); - params.put("endTime", betRecordByTimeDTO.getEndTime()); - params.put("page", betRecordByTimeDTO.getPage()); - params.put("pageLimit", betRecordByTimeDTO.getPageLimit()); - params.put("agentId", betRecordByTimeDTO.getAgentId()); - query = JsonUtil.mapToQueryString(params); - betRecordByTimeDTO.setQuery(query); - key = this.getKey(betRecordByTimeDTO); - params.put("key", key); - xkBetRecordResponseDTO = xkClient.getBetRecordByTime(params); - dataBean = xkBetRecordResponseDTO.getData(); - this.batchInsert(xkBetRecordResponseDTO, betRecordByTimeDTO); - } - - - return Boolean.TRUE; - } else { - log.error("GamesXKServiceImpl [getBetRecordByTime] 获取投注记录失败,错误代码{},错误信息{}", xkBetRecordResponseDTO.getCode(), xkBetRecordResponseDTO.getMsg()); - throw new BaseException(xkBetRecordResponseDTO.getMsg()); - } - - } - - /** - * 按历史时间获取投注记录 - * - * @param betRecordByTimeDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO betRecordByTimeDTO) { - return null; - } - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - log.info("GamesXKServiceImpl [kickMember] 请求参数 {}", kickMemberRequestDTO); - Map params = new LinkedHashMap<>(); - params.put("account", kickMemberRequestDTO.getAccount()); - params.put("agentId", kickMemberRequestDTO.getAgentId()); - String query = JsonUtil.mapToQueryString(params); - kickMemberRequestDTO.setQuery(query); - String key = this.getKey(kickMemberRequestDTO); - params.put("key", key); - XKKickMemberDTO xkKickMemberDTO = xkClient.kickMember(params); - //判断是否获取成功 - if (this.getIsSuccess(xkKickMemberDTO.getCode())) { - return Boolean.TRUE; - } else { - throw new BaseException(xkKickMemberDTO.getMsg()); - } - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - - /** - * 批量插入 - * - * @param xkBetRecordResponseDTO xk下注记录响应dto - */ - private void batchInsert(XKBetRecordResponseDTO xkBetRecordResponseDTO, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - XKBetRecordResponseDTO.DataBean dataBean = xkBetRecordResponseDTO.getData(); - //数据转化 - for (XKBetRecordResponseDTO.DataBean.ResultBean bean : dataBean.getResult()) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .systemCurrencyCode(betRecordByTimeDTO.getSystemCurrency()) - .currencyCode(betRecordByTimeDTO.getCurrency()) - .data(bean) - .build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(String.valueOf(bean.getWagersId())); - } - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - //查询重复数据id - List removeWagersIds = gameBettingDetailsService.selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.XK.getInfo()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - //转化类 - XKBetRecordResponseDTO.DataBean.ResultBean resultBean = (XKBetRecordResponseDTO.DataBean.ResultBean) gamesDataBuildDTO.getData(); - -// GameSecretKeyCurrency currencyDTO = gameSecretKeyCurrencyService.findByGameSecretKeyCurrencyDTO(GameSecretKeyCurrencyDTO.builder() -// .platformCode(GamePlatforms.XK.getInfo()) -// .code(resultBean.getAgentId()) -// .build()); - - Member member = memberService.selectMemberByGameAccount(resultBean.getAccount()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gamesDatas = redisCache.getCacheList(CacheConstants.XK_GAMES); - Map dataDTOMap = gamesDatas.stream().collect(Collectors.toMap(XKGamesDTO.DataBean::getGameId, e -> e)); - XKGamesDTO.DataBean gamesDataDTO = dataDTOMap.get(resultBean.getGameId()); - BigDecimal payoffAmount = BigDecimal.ZERO; - - if (GameStatus.WIN.getCode().equals(resultBean.getStatus())) { - payoffAmount = NumberUtil.sub(resultBean.getPayoffAmount(), resultBean.getTurnover()); - } else if (GameStatus.FAIL.getCode().equals(resultBean.getStatus())) { - payoffAmount = NumberUtil.sub(resultBean.getPayoffAmount(), resultBean.getTurnover()).negate(); - } - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(gamesDataBuildDTO.getSystemCurrencyCode()) - .memberId(member.getId()) - .gameCode(resultBean.getGameId()) - .gameType(XKGameType.findSystemByCode(resultBean.getGameCategoryId())) - .platformCode(GamePlatforms.XK.getCode()) - .gameId(gamesDataDTO.getSystemGameId()) - .gameName(gamesDataDTO.getName()) - .gameStatus(resultBean.getStatus()) - .gameStatusType(resultBean.getType()) - .gameCurrencyCode(resultBean.getAgentId()) - .account(String.valueOf(resultBean.getAccount())) - .wagersId(String.valueOf(resultBean.getWagersId())) - .wagersTime(resultBean.getWagersTime()) - .betAmount(resultBean.getBetAmount().abs()) - .payoffTime(resultBean.getPayoffTime()) - .payoffAmount(payoffAmount) - .settlementTime(resultBean.getSettlementTime()) - .turnover(resultBean.getTurnover()) - .orderNo(String.valueOf(resultBean.getRoundIndex())) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/game/controller/GameBettingDetailsController.java b/ff-game/src/main/java/com/ff/game/controller/GameBettingDetailsController.java deleted file mode 100644 index b05f2ba..0000000 --- a/ff-game/src/main/java/com/ff/game/controller/GameBettingDetailsController.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ff.game.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; - -import com.ff.game.dto.GameBettingDetailsDTO; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 会员投注细目Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/game/details") -public class GameBettingDetailsController extends BaseController -{ - @Autowired - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 查询会员投注细目列表 - */ - @PreAuthorize("@ss.hasPermi('game:details:list')") - @GetMapping("/list") - public TableDataInfo list(GameBettingDetailsDTO gameBettingDetails) - { - startPage(); - List list = gameBettingDetailsService.selectGameBettingDetailsList(gameBettingDetails); - return getDataTable(list); - } - - /** - * 导出会员投注细目列表 - */ - @PreAuthorize("@ss.hasPermi('game:details:export')") - @Log(title = "会员投注细目", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, GameBettingDetailsDTO gameBettingDetails) - { - List list = gameBettingDetailsService.selectGameBettingDetailsList(gameBettingDetails); - ExcelUtil util = new ExcelUtil(GameBettingDetails.class); - util.exportExcel(response, list, "会员投注细目数据"); - } - - /** - * 获取会员投注细目详细信息 - */ - @PreAuthorize("@ss.hasPermi('game:details:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(gameBettingDetailsService.selectGameBettingDetailsById(id)); - } - - /** - * 新增会员投注细目 - */ - @PreAuthorize("@ss.hasPermi('game:details:add')") - @Log(title = "会员投注细目", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody GameBettingDetails gameBettingDetails) - { - return toAjax(gameBettingDetailsService.insertGameBettingDetails(gameBettingDetails)); - } - - /** - * 修改会员投注细目 - */ - @PreAuthorize("@ss.hasPermi('game:details:edit')") - @Log(title = "会员投注细目", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody GameBettingDetails gameBettingDetails) - { - return toAjax(gameBettingDetailsService.updateGameBettingDetails(gameBettingDetails)); - } - - /** - * 删除会员投注细目 - */ - @PreAuthorize("@ss.hasPermi('game:details:remove')") - @Log(title = "会员投注细目", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(gameBettingDetailsService.deleteGameBettingDetailsByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/game/controller/GameController.java b/ff-game/src/main/java/com/ff/game/controller/GameController.java deleted file mode 100644 index 5dde5a0..0000000 --- a/ff-game/src/main/java/com/ff/game/controller/GameController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.game.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.game.domain.Game; -import com.ff.game.service.IGameService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 平台子游戏管理Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/game/game") -public class GameController extends BaseController -{ - @Autowired - private IGameService gameService; - - /** - * 查询平台子游戏管理列表 - */ - @PreAuthorize("@ss.hasPermi('game:game:list')") - @GetMapping("/list") - public TableDataInfo list(Game game) - { - startPage(); - List list = gameService.selectGameList(game); - return getDataTable(list); - } - - /** - * 导出平台子游戏管理列表 - */ - @PreAuthorize("@ss.hasPermi('game:game:export')") - @Log(title = "平台子游戏管理", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, Game game) - { - List list = gameService.selectGameList(game); - ExcelUtil util = new ExcelUtil(Game.class); - util.exportExcel(response, list, "平台子游戏管理数据"); - } - - /** - * 获取平台子游戏管理详细信息 - */ - @PreAuthorize("@ss.hasPermi('game:game:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(gameService.selectGameById(id)); - } - - /** - * 新增平台子游戏管理 - */ - @PreAuthorize("@ss.hasPermi('game:game:add')") - @Log(title = "平台子游戏管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody Game game) - { - return toAjax(gameService.insertGame(game)); - } - - /** - * 修改平台子游戏管理 - */ - @PreAuthorize("@ss.hasPermi('game:game:edit')") - @Log(title = "平台子游戏管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody Game game) - { - return toAjax(gameService.updateGame(game)); - } - - /** - * 删除平台子游戏管理 - */ - @PreAuthorize("@ss.hasPermi('game:game:remove')") - @Log(title = "平台子游戏管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(gameService.deleteGameByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/game/controller/GameExchangeMoneyController.java b/ff-game/src/main/java/com/ff/game/controller/GameExchangeMoneyController.java deleted file mode 100644 index 61c681b..0000000 --- a/ff-game/src/main/java/com/ff/game/controller/GameExchangeMoneyController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.game.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.game.domain.GameExchangeMoney; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 会员金额转移记录Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/game/money") -public class GameExchangeMoneyController extends BaseController -{ - @Autowired - private IGameExchangeMoneyService gameExchangeMoneyService; - - /** - * 查询会员金额转移记录列表 - */ - @PreAuthorize("@ss.hasPermi('game:money:list')") - @GetMapping("/list") - public TableDataInfo list(GameExchangeMoney gameExchangeMoney) - { - startPage(); - List list = gameExchangeMoneyService.selectGameExchangeMoneyList(gameExchangeMoney); - return getDataTable(list); - } - - /** - * 导出会员金额转移记录列表 - */ - @PreAuthorize("@ss.hasPermi('game:money:export')") - @Log(title = "会员金额转移记录", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, GameExchangeMoney gameExchangeMoney) - { - List list = gameExchangeMoneyService.selectGameExchangeMoneyList(gameExchangeMoney); - ExcelUtil util = new ExcelUtil(GameExchangeMoney.class); - util.exportExcel(response, list, "会员金额转移记录数据"); - } - - /** - * 获取会员金额转移记录详细信息 - */ - @PreAuthorize("@ss.hasPermi('game:money:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(gameExchangeMoneyService.selectGameExchangeMoneyById(id)); - } - - /** - * 新增会员金额转移记录 - */ - @PreAuthorize("@ss.hasPermi('game:money:add')") - @Log(title = "会员金额转移记录", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody GameExchangeMoney gameExchangeMoney) - { - return toAjax(gameExchangeMoneyService.insertGameExchangeMoney(gameExchangeMoney)); - } - - /** - * 修改会员金额转移记录 - */ - @PreAuthorize("@ss.hasPermi('game:money:edit')") - @Log(title = "会员金额转移记录", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody GameExchangeMoney gameExchangeMoney) - { - return toAjax(gameExchangeMoneyService.updateGameExchangeMoney(gameExchangeMoney)); - } - - /** - * 删除会员金额转移记录 - */ - @PreAuthorize("@ss.hasPermi('game:money:remove')") - @Log(title = "会员金额转移记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(gameExchangeMoneyService.deleteGameExchangeMoneyByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/game/controller/GameFreeRecordController.java b/ff-game/src/main/java/com/ff/game/controller/GameFreeRecordController.java deleted file mode 100644 index 8c9f9fb..0000000 --- a/ff-game/src/main/java/com/ff/game/controller/GameFreeRecordController.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.ff.game.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.game.domain.GameFreeRecord; -import com.ff.game.service.IGameFreeRecordService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 免费赠送游戏记录Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/game/record") -public class GameFreeRecordController extends BaseController -{ - @Autowired - private IGameFreeRecordService gameFreeRecordService; - - /** - * 查询免费赠送游戏记录列表 - */ - @PreAuthorize("@ss.hasPermi('game:record:list')") - @GetMapping("/list") - public TableDataInfo list(GameFreeRecord gameFreeRecord) - { - startPage(); - List list = gameFreeRecordService.selectGameFreeRecordList(gameFreeRecord); - return getDataTable(list); - } - - /** - * 导出免费赠送游戏记录列表 - */ - @PreAuthorize("@ss.hasPermi('game:record:export')") - @Log(title = "免费赠送游戏记录", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, GameFreeRecord gameFreeRecord) - { - List list = gameFreeRecordService.selectGameFreeRecordList(gameFreeRecord); - ExcelUtil util = new ExcelUtil(GameFreeRecord.class); - util.exportExcel(response, list, "免费赠送游戏记录数据"); - } - - /** - * 获取免费赠送游戏记录详细信息 - */ - @PreAuthorize("@ss.hasPermi('game:record:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(gameFreeRecordService.selectGameFreeRecordById(id)); - } - - /** - * 新增免费赠送游戏记录 - */ - @PreAuthorize("@ss.hasPermi('game:record:add')") - @Log(title = "免费赠送游戏记录", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody GameFreeRecord gameFreeRecord) - { - return toAjax(gameFreeRecordService.insertGameFreeRecord(gameFreeRecord)); - } - - /** - * 修改免费赠送游戏记录 - */ - @PreAuthorize("@ss.hasPermi('game:record:edit')") - @Log(title = "免费赠送游戏记录", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody GameFreeRecord gameFreeRecord) - { - return toAjax(gameFreeRecordService.updateGameFreeRecord(gameFreeRecord)); - } - - /** - * 删除免费赠送游戏记录 - */ - @PreAuthorize("@ss.hasPermi('game:record:remove')") - @Log(title = "免费赠送游戏记录", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(gameFreeRecordService.deleteGameFreeRecordByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/game/controller/GamePlatformController.java b/ff-game/src/main/java/com/ff/game/controller/GamePlatformController.java deleted file mode 100644 index cc87b71..0000000 --- a/ff-game/src/main/java/com/ff/game/controller/GamePlatformController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.GamePlatforms; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 平台管理Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/game/platform") -public class GamePlatformController extends BaseController { - - - /** - * 选择 - * - * @return {@link AjaxResult } - */ - @GetMapping("/select") - public AjaxResult select() { - return AjaxResult.success(GamePlatforms.getCodes()); - } - -} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameBettingDetailsDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameBettingDetailsDTO.java deleted file mode 100644 index c7cdf0d..0000000 --- a/ff-game/src/main/java/com/ff/game/dto/GameBettingDetailsDTO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.game.dto; - -import com.ff.game.domain.GameBettingDetails; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - - -/** - * 游戏投注详情dto - * - * @author shi - * @date 2025/03/24 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameBettingDetailsDTO extends GameBettingDetails { - /** - * 时间类型 1 按投注时间 2 按入库时间 - */ - private Integer timeType; -} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameDTO.java deleted file mode 100644 index 3dddea8..0000000 --- a/ff-game/src/main/java/com/ff/game/dto/GameDTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.game.dto; - -import com.ff.game.domain.Game; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.util.List; - -/** - * 游戏dto - * - * @author shi - * @date 2025/03/12 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class GameDTO extends Game { - /** - * 平台集合 - */ - private List platformCodes; - - /** - * 平台代码 - */ - private String platformCode; -} diff --git a/ff-game/src/main/java/com/ff/game/dto/GameExchangeMoneyDTO.java b/ff-game/src/main/java/com/ff/game/dto/GameExchangeMoneyDTO.java deleted file mode 100644 index f505d6b..0000000 --- a/ff-game/src/main/java/com/ff/game/dto/GameExchangeMoneyDTO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ff.game.dto; - -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.domain.GameExchangeMoney; -import lombok.Data; - -/** - * 游戏兑换货币dto - * - * @author shi - * @date 2025/02/27 - */ -@Data -public class GameExchangeMoneyDTO extends GameExchangeMoney { - /** - * 会员帐户 - */ - private String memberAccount; - /** - * 游戏账户 - */ - private String gameAccount; -} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java deleted file mode 100644 index d4b5da3..0000000 --- a/ff-game/src/main/java/com/ff/game/mapper/GameBettingDetailsMapper.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.ff.game.mapper; - -import java.util.List; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.dto.GameBettingDetailsDTO; -import org.apache.ibatis.annotations.Param; -import org.springframework.security.core.parameters.P; - -/** - * 会员投注细目Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface GameBettingDetailsMapper -{ - /** - * 查询会员投注细目 - * - * @param id 会员投注细目主键 - * @return 会员投注细目 - */ - GameBettingDetails selectGameBettingDetailsById(Long id); - - - /** - * 按投注id选择游戏投注详细信息 - * - * @param wagersIds 投注ID - * @param platformCode 平台代码 - * @return {@link List }<{@link Long }> - */ - List selectGameBettingDetailsByWagersId(@Param("wagersIds") List wagersIds, @Param("platformCode") String platformCode); - - - /** - * 查询会员投注细目列表 - * - * @param gameBettingDetailsDTO 会员投注细目 - * @return 会员投注细目集合 - */ - List selectGameBettingDetailsList(GameBettingDetailsDTO gameBettingDetailsDTO); - - /** - * 新增会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - int insertGameBettingDetails(GameBettingDetails gameBettingDetails); - - /** - * 修改会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - int updateGameBettingDetails(GameBettingDetails gameBettingDetails); - - /** - * 删除会员投注细目 - * - * @param id 会员投注细目主键 - * @return 结果 - */ - int deleteGameBettingDetailsById(Long id); - - /** - * 批量删除会员投注细目 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteGameBettingDetailsByIds(Long[] ids); - - /** - * 批量插入 - * - * @param bettingDetails 投注详情 - * @return int - */ - int batchInsert(List bettingDetails); - - - /** - * 按投注id删除游戏投注详细信息 - * - * @param wagersIds 投注id - * @return int - */ - int deleteGameBettingDetailsByWagersId(@Param("wagersIds") List wagersIds); -} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameExchangeMoneyMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameExchangeMoneyMapper.java deleted file mode 100644 index 0d0a9ac..0000000 --- a/ff-game/src/main/java/com/ff/game/mapper/GameExchangeMoneyMapper.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.ff.game.mapper; - -import java.util.List; -import com.ff.game.domain.GameExchangeMoney; -import com.ff.game.dto.GameExchangeMoneyDTO; - -/** - * 会员金额转移记录Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface GameExchangeMoneyMapper -{ - /** - * 查询会员金额转移记录 - * - * @param id 会员金额转移记录主键 - * @return 会员金额转移记录 - */ - GameExchangeMoney selectGameExchangeMoneyById(Long id); - - /** - * 查询会员金额转移记录列表 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 会员金额转移记录集合 - */ - List selectGameExchangeMoneyList(GameExchangeMoney gameExchangeMoney); - - /** - * 选择游戏兑换货币列表 - * - * @param gameExchangeMoneyDTO 游戏兑换货币dto - * @return {@link List }<{@link GameExchangeMoneyDTO }> - */ - List selectGameExchangeMoneyDTOList(GameExchangeMoneyDTO gameExchangeMoneyDTO); - - /** - * 新增会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - int insertGameExchangeMoney(GameExchangeMoney gameExchangeMoney); - - /** - * 修改会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - int updateGameExchangeMoney(GameExchangeMoney gameExchangeMoney); - - /** - * 删除会员金额转移记录 - * - * @param id 会员金额转移记录主键 - * @return 结果 - */ - int deleteGameExchangeMoneyById(Long id); - - /** - * 批量删除会员金额转移记录 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteGameExchangeMoneyByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameFreeRecordMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameFreeRecordMapper.java deleted file mode 100644 index 63a5d78..0000000 --- a/ff-game/src/main/java/com/ff/game/mapper/GameFreeRecordMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.game.mapper; - -import java.util.List; -import com.ff.game.domain.GameFreeRecord; - -/** - * 免费赠送游戏记录Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface GameFreeRecordMapper -{ - /** - * 查询免费赠送游戏记录 - * - * @param id 免费赠送游戏记录主键 - * @return 免费赠送游戏记录 - */ - GameFreeRecord selectGameFreeRecordById(Long id); - - /** - * 查询免费赠送游戏记录列表 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 免费赠送游戏记录集合 - */ - List selectGameFreeRecordList(GameFreeRecord gameFreeRecord); - - /** - * 新增免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - int insertGameFreeRecord(GameFreeRecord gameFreeRecord); - - /** - * 修改免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - int updateGameFreeRecord(GameFreeRecord gameFreeRecord); - - /** - * 删除免费赠送游戏记录 - * - * @param id 免费赠送游戏记录主键 - * @return 结果 - */ - int deleteGameFreeRecordById(Long id); - - /** - * 批量删除免费赠送游戏记录 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteGameFreeRecordByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java b/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java deleted file mode 100644 index 09ed960..0000000 --- a/ff-game/src/main/java/com/ff/game/mapper/GameMapper.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.ff.game.mapper; - -import com.ff.api.response.GameResponse; -import com.ff.game.api.request.GameUniqueDTO; -import com.ff.game.domain.Game; -import com.ff.game.dto.GameDTO; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 平台子游戏管理Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface GameMapper { - /** - * 查询平台子游戏管理 - * - * @param id 平台子游戏管理主键 - * @return 平台子游戏管理 - */ - Game selectGameById(Long id); - - - /** - * 按游戏id选择游戏 - * - * @param gameId 游戏id - * @return {@link Game } - */ - Game selectGameByGameId(String gameId); - - /** - * 查询平台子游戏管理列表 - * - * @param game 平台子游戏管理 - * @return 平台子游戏管理集合 - */ - List selectGameList(Game game); - - /** - * 新增平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - int insertGame(Game game); - - /** - * 修改平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - int updateGame(Game game); - - /** - * 删除平台子游戏管理 - * - * @param id 平台子游戏管理主键 - * @return 结果 - */ - int deleteGameById(Long id); - - /** - * 批量删除平台子游戏管理 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteGameByIds(Long[] ids); - - - /** - * 根据平台code与平台类型选择最大序号 - * - * @param platformType - * @param platformCode - * @return - */ - Integer selectMaxSortNoBy(@Param("platformType") Integer platformType, @Param("platformCode") String platformCode); - - /** - * 选择游戏唯一列表 - * - * @param gameUniqueDTO 游戏独有dto - * @return {@link List }<{@link Game }> - */ - List selectGameUniqueList(GameUniqueDTO gameUniqueDTO); - - /** - * 选择游戏响应列表 - * - * @return {@link List }<{@link GameResponse }> - */ - List selectGameResponseList(); - - - /** - * 选择游戏数据列表 - * - * @param gameDTO 游戏dto - * @return {@link List }<{@link Game }> - */ - List selectGameDTOList(GameDTO gameDTO); - -} diff --git a/ff-game/src/main/java/com/ff/game/mapper/PlatformMapper.java b/ff-game/src/main/java/com/ff/game/mapper/PlatformMapper.java deleted file mode 100644 index c6664b1..0000000 --- a/ff-game/src/main/java/com/ff/game/mapper/PlatformMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ff.game.mapper; - -import com.ff.game.domain.Platform; - -import java.util.List; - -/** - * @author cengy - */ -public interface PlatformMapper { - - - List selectList(Platform platform); - - Platform selectByPlatformCode(String platformCode); - - int updatePlatform(Platform platform); - - int insertPlatform(Platform platform); - - int deleteById(Long id); - - int deleteByIds(String ids); -} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java b/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java deleted file mode 100644 index 3ef3fc3..0000000 --- a/ff-game/src/main/java/com/ff/game/service/IGameBettingDetailsService.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.ff.game.service; - -import java.util.List; - -import com.ff.game.domain.Game; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.dto.GameBettingDetailsDTO; -import org.apache.ibatis.annotations.Param; - -/** - * 会员投注细目Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface IGameBettingDetailsService -{ - /** - * 查询会员投注细目 - * - * @param id 会员投注细目主键 - * @return 会员投注细目 - */ - GameBettingDetails selectGameBettingDetailsById(Long id); - - /** - * 按投注id选择游戏投注详细信息 - * - * @param wagersIds 投注ID - * @return {@link List }<{@link Long }> - */ - List selectGameBettingDetailsByWagersId(List wagersIds,String platformCode); - - - - - /** - * 查询会员投注细目列表 - * - * @param gameBettingDetailsDTO 会员投注细目 - * @return 会员投注细目集合 - */ - List selectGameBettingDetailsList(GameBettingDetailsDTO gameBettingDetailsDTO); - - /** - * 新增会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - int insertGameBettingDetails(GameBettingDetails gameBettingDetails); - - - /** - * 批量插入 - * - * @param bettingDetails 投注详情 - * @return int - */ - int batchInsert(List bettingDetails); - - /** - * 修改会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - int updateGameBettingDetails(GameBettingDetails gameBettingDetails); - - /** - * 批量删除会员投注细目 - * - * @param ids 需要删除的会员投注细目主键集合 - * @return 结果 - */ - int deleteGameBettingDetailsByIds(Long[] ids); - - /** - * 删除会员投注细目信息 - * - * @param id 会员投注细目主键 - * @return 结果 - */ - int deleteGameBettingDetailsById(Long id); - - /** - * 按投注id删除游戏投注详细信息 - * - * @param wagersId 投注id - * @return int - */ - int deleteGameBettingDetailsByWagersId(List wagersId); -} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameExchangeMoneyService.java b/ff-game/src/main/java/com/ff/game/service/IGameExchangeMoneyService.java deleted file mode 100644 index 111afbe..0000000 --- a/ff-game/src/main/java/com/ff/game/service/IGameExchangeMoneyService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.ff.game.service; - -import java.util.List; - -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.domain.GameExchangeMoney; -import com.ff.game.dto.GameExchangeMoneyDTO; - -/** - * 会员金额转移记录Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface IGameExchangeMoneyService -{ - /** - * 查询会员金额转移记录 - * - * @param id 会员金额转移记录主键 - * @return 会员金额转移记录 - */ - GameExchangeMoney selectGameExchangeMoneyById(Long id); - - /** - * 查询会员金额转移记录列表 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 会员金额转移记录集合 - */ - List selectGameExchangeMoneyList(GameExchangeMoney gameExchangeMoney); - - /** - * 选择游戏兑换货币列表 - * - * @param gameExchangeMoneyDTO 游戏兑换货币dto - * @return {@link List }<{@link GameExchangeMoneyDTO }> - */ - List selectGameExchangeMoneyDTOList(GameExchangeMoneyDTO gameExchangeMoneyDTO); - - /** - * 新增会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - int insertGameExchangeMoney(GameExchangeMoney gameExchangeMoney); - - - /** - * 获取交易id - * - * @param prefix 前缀 - * @param length 长 - * @return {@link String } - */ - String getTransactionId(String prefix, int length ); - - /** - * 修改会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - int updateGameExchangeMoney(GameExchangeMoney gameExchangeMoney); - - /** - * 批量删除会员金额转移记录 - * - * @param ids 需要删除的会员金额转移记录主键集合 - * @return 结果 - */ - int deleteGameExchangeMoneyByIds(Long[] ids); - - /** - * 删除会员金额转移记录信息 - * - * @param id 会员金额转移记录主键 - * @return 结果 - */ - int deleteGameExchangeMoneyById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameFreeRecordService.java b/ff-game/src/main/java/com/ff/game/service/IGameFreeRecordService.java deleted file mode 100644 index 3c5f3b3..0000000 --- a/ff-game/src/main/java/com/ff/game/service/IGameFreeRecordService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.game.service; - -import java.util.List; -import com.ff.game.domain.GameFreeRecord; - -/** - * 免费赠送游戏记录Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface IGameFreeRecordService -{ - /** - * 查询免费赠送游戏记录 - * - * @param id 免费赠送游戏记录主键 - * @return 免费赠送游戏记录 - */ - GameFreeRecord selectGameFreeRecordById(Long id); - - /** - * 查询免费赠送游戏记录列表 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 免费赠送游戏记录集合 - */ - List selectGameFreeRecordList(GameFreeRecord gameFreeRecord); - - /** - * 新增免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - int insertGameFreeRecord(GameFreeRecord gameFreeRecord); - - /** - * 修改免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - int updateGameFreeRecord(GameFreeRecord gameFreeRecord); - - /** - * 批量删除免费赠送游戏记录 - * - * @param ids 需要删除的免费赠送游戏记录主键集合 - * @return 结果 - */ - int deleteGameFreeRecordByIds(Long[] ids); - - /** - * 删除免费赠送游戏记录信息 - * - * @param id 免费赠送游戏记录主键 - * @return 结果 - */ - int deleteGameFreeRecordById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/game/service/IGameService.java b/ff-game/src/main/java/com/ff/game/service/IGameService.java deleted file mode 100644 index bab4681..0000000 --- a/ff-game/src/main/java/com/ff/game/service/IGameService.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.ff.game.service; - -import com.ff.api.response.GameResponse; -import com.ff.game.api.request.GameUniqueDTO; -import com.ff.game.domain.Game; -import com.ff.game.dto.GameDTO; - -import java.util.List; - -/** - * 平台子游戏管理Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface IGameService { - /** - * 查询平台子游戏管理 - * - * @param id 平台子游戏管理主键 - * @return 平台子游戏管理 - */ - Game selectGameById(Long id); - - - /** - * 按游戏id选择游戏 - * - * @param gameId 游戏id - * @return {@link Game } - */ - Game selectGameByGameId(String gameId); - - /** - * 查询平台子游戏管理列表 - * - * @param game 平台子游戏管理 - * @return 平台子游戏管理集合 - */ - List selectGameList(Game game); - - - /** - * 选择游戏数据列表 - * - * @param gameDTO 游戏dto - * @return {@link List }<{@link Game }> - */ - List selectGameDTOList(GameDTO gameDTO); - - /** - * 新增平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - int insertGame(Game game); - - /** - * 修改平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - int updateGame(Game game); - - /** - * 批量删除平台子游戏管理 - * - * @param ids 需要删除的平台子游戏管理主键集合 - * @return 结果 - */ - int deleteGameByIds(Long[] ids); - - /** - * 删除平台子游戏管理信息 - * - * @param id 平台子游戏管理主键 - * @return 结果 - */ - int deleteGameById(Long id); - - /** - * 按平台id选择最大排序号 - * - * @return {@link Integer } - */ - Integer selectMaxSortNo(Integer platformType, String platformCode); - - /** - * 选择游戏唯一列表 - * - * @param gameUniqueDTO 游戏独有dto - * @return {@link List }<{@link Game }> - */ - List selectGameUniqueList(GameUniqueDTO gameUniqueDTO); - - /** - * 选择游戏响应列表 - * - * @return {@link List }<{@link GameResponse }> - */ - List selectGameResponseList(); - - -} diff --git a/ff-game/src/main/java/com/ff/game/service/IPlatformService.java b/ff-game/src/main/java/com/ff/game/service/IPlatformService.java deleted file mode 100644 index 2a8b704..0000000 --- a/ff-game/src/main/java/com/ff/game/service/IPlatformService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.game.service; - -import com.ff.game.domain.Platform; - -import java.util.List; - -/** - * @author cengy - */ -public interface IPlatformService { - - List selectList(Platform platform); - - Platform selectByPlatformCode(String platformCode); - - int updatePlatform(Platform platform); - - int insertPlatform(Platform platform); - - int deleteById(Long id); - - int deleteByIds(String ids); - - void loadToCache(); - - Platform get(String platformCode); -} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java deleted file mode 100644 index 62ffbfe..0000000 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameBettingDetailsServiceImpl.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.ff.game.service.impl; - -import java.util.Collections; -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import com.ff.game.dto.GameBettingDetailsDTO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.game.mapper.GameBettingDetailsMapper; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.service.IGameBettingDetailsService; - -/** - * 会员投注细目Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class GameBettingDetailsServiceImpl implements IGameBettingDetailsService -{ - @Autowired - private GameBettingDetailsMapper gameBettingDetailsMapper; - - /** - * 查询会员投注细目 - * - * @param id 会员投注细目主键 - * @return 会员投注细目 - */ - @Override - public GameBettingDetails selectGameBettingDetailsById(Long id) - { - return gameBettingDetailsMapper.selectGameBettingDetailsById(id); - } - - /** - * 按投注id选择游戏投注详细信息 - * - * @param wagersIds 投注ID - * @return {@link List }<{@link Long }> - */ - @Override - public List selectGameBettingDetailsByWagersId(List wagersIds, String platformCode) { - return gameBettingDetailsMapper.selectGameBettingDetailsByWagersId(wagersIds,platformCode); - } - - /** - * 查询会员投注细目列表 - * - * @param gameBettingDetailsDTO 会员投注细目 - * @return 会员投注细目 - */ - @Override - public List selectGameBettingDetailsList(GameBettingDetailsDTO gameBettingDetailsDTO) - { - return gameBettingDetailsMapper.selectGameBettingDetailsList(gameBettingDetailsDTO); - } - - /** - * 新增会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - @Override - public int insertGameBettingDetails(GameBettingDetails gameBettingDetails) - { - gameBettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetailsMapper.insertGameBettingDetails(gameBettingDetails); - } - - /** - * 批量插入 - * - * @param bettingDetails 投注详情 - * @return int - */ - @Override - public int batchInsert(List bettingDetails) { - return gameBettingDetailsMapper.batchInsert(bettingDetails); - } - - /** - * 修改会员投注细目 - * - * @param gameBettingDetails 会员投注细目 - * @return 结果 - */ - @Override - public int updateGameBettingDetails(GameBettingDetails gameBettingDetails) - { - gameBettingDetails.setUpdateTime(DateUtils.getNowDate()); - return gameBettingDetailsMapper.updateGameBettingDetails(gameBettingDetails); - } - - /** - * 批量删除会员投注细目 - * - * @param ids 需要删除的会员投注细目主键 - * @return 结果 - */ - @Override - public int deleteGameBettingDetailsByIds(Long[] ids) - { - return gameBettingDetailsMapper.deleteGameBettingDetailsByIds(ids); - } - - /** - * 删除会员投注细目信息 - * - * @param id 会员投注细目主键 - * @return 结果 - */ - @Override - public int deleteGameBettingDetailsById(Long id) - { - return gameBettingDetailsMapper.deleteGameBettingDetailsById(id); - } - - /** - * 按投注id删除游戏投注详细信息 - * - * @param wagersId 投注id - * @return int - */ - @Override - public int deleteGameBettingDetailsByWagersId(List wagersId) { - return gameBettingDetailsMapper.deleteGameBettingDetailsByWagersId(wagersId); - } -} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameExchangeMoneyServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameExchangeMoneyServiceImpl.java deleted file mode 100644 index 9018a3f..0000000 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameExchangeMoneyServiceImpl.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.ff.game.service.impl; - -import java.util.Collections; -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.enums.GamePlatforms; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.game.dto.GameExchangeMoneyDTO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.game.mapper.GameExchangeMoneyMapper; -import com.ff.game.domain.GameExchangeMoney; -import com.ff.game.service.IGameExchangeMoneyService; -import org.springframework.util.CollectionUtils; - -/** - * 会员金额转移记录Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class GameExchangeMoneyServiceImpl implements IGameExchangeMoneyService -{ - @Autowired - private GameExchangeMoneyMapper gameExchangeMoneyMapper; - - /** - * 查询会员金额转移记录 - * - * @param id 会员金额转移记录主键 - * @return 会员金额转移记录 - */ - @Override - public GameExchangeMoney selectGameExchangeMoneyById(Long id) - { - return gameExchangeMoneyMapper.selectGameExchangeMoneyById(id); - } - - /** - * 查询会员金额转移记录列表 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 会员金额转移记录 - */ - @Override - public List selectGameExchangeMoneyList(GameExchangeMoney gameExchangeMoney) - { - return gameExchangeMoneyMapper.selectGameExchangeMoneyList(gameExchangeMoney); - } - - @Override - public List selectGameExchangeMoneyDTOList(GameExchangeMoneyDTO gameExchangeMoneyDTO) { - return gameExchangeMoneyMapper.selectGameExchangeMoneyDTOList(gameExchangeMoneyDTO); - } - - /** - * 新增会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - @Override - public int insertGameExchangeMoney(GameExchangeMoney gameExchangeMoney) - { - gameExchangeMoney.setId(IdUtil.getSnowflakeNextId()); - gameExchangeMoney.setCreateTime(DateUtils.getNowDate()); - return gameExchangeMoneyMapper.insertGameExchangeMoney(gameExchangeMoney); - } - - /** - * 获取交易id - * - * @param prefix 前缀 - * @param length 长 - * @return {@link String } - */ - @Override - public synchronized String getTransactionId(String prefix, int length) { - String transactionId = StringUtils.generateOrderId(prefix,length); - List gameExchangeMonies = this.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .transactionId(transactionId) - .build() - ); - while (!CollectionUtils.isEmpty(gameExchangeMonies)){ - transactionId = StringUtils.generateOrderId(prefix,length); - gameExchangeMonies = this.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .transactionId(transactionId) - .build() - ); - } - - return transactionId; - } - - /** - * 修改会员金额转移记录 - * - * @param gameExchangeMoney 会员金额转移记录 - * @return 结果 - */ - @Override - public int updateGameExchangeMoney(GameExchangeMoney gameExchangeMoney) - { - gameExchangeMoney.setUpdateTime(DateUtils.getNowDate()); - return gameExchangeMoneyMapper.updateGameExchangeMoney(gameExchangeMoney); - } - - /** - * 批量删除会员金额转移记录 - * - * @param ids 需要删除的会员金额转移记录主键 - * @return 结果 - */ - @Override - public int deleteGameExchangeMoneyByIds(Long[] ids) - { - return gameExchangeMoneyMapper.deleteGameExchangeMoneyByIds(ids); - } - - /** - * 删除会员金额转移记录信息 - * - * @param id 会员金额转移记录主键 - * @return 结果 - */ - @Override - public int deleteGameExchangeMoneyById(Long id) - { - return gameExchangeMoneyMapper.deleteGameExchangeMoneyById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameFreeRecordServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameFreeRecordServiceImpl.java deleted file mode 100644 index 7a710cf..0000000 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameFreeRecordServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.game.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.game.mapper.GameFreeRecordMapper; -import com.ff.game.domain.GameFreeRecord; -import com.ff.game.service.IGameFreeRecordService; - -/** - * 免费赠送游戏记录Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class GameFreeRecordServiceImpl implements IGameFreeRecordService -{ - @Autowired - private GameFreeRecordMapper gameFreeRecordMapper; - - /** - * 查询免费赠送游戏记录 - * - * @param id 免费赠送游戏记录主键 - * @return 免费赠送游戏记录 - */ - @Override - public GameFreeRecord selectGameFreeRecordById(Long id) - { - return gameFreeRecordMapper.selectGameFreeRecordById(id); - } - - /** - * 查询免费赠送游戏记录列表 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 免费赠送游戏记录 - */ - @Override - public List selectGameFreeRecordList(GameFreeRecord gameFreeRecord) - { - return gameFreeRecordMapper.selectGameFreeRecordList(gameFreeRecord); - } - - /** - * 新增免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - @Override - public int insertGameFreeRecord(GameFreeRecord gameFreeRecord) - { - gameFreeRecord.setId(IdUtil.getSnowflakeNextId()); - gameFreeRecord.setCreateTime(DateUtils.getNowDate()); - return gameFreeRecordMapper.insertGameFreeRecord(gameFreeRecord); - } - - /** - * 修改免费赠送游戏记录 - * - * @param gameFreeRecord 免费赠送游戏记录 - * @return 结果 - */ - @Override - public int updateGameFreeRecord(GameFreeRecord gameFreeRecord) - { - gameFreeRecord.setUpdateTime(DateUtils.getNowDate()); - return gameFreeRecordMapper.updateGameFreeRecord(gameFreeRecord); - } - - /** - * 批量删除免费赠送游戏记录 - * - * @param ids 需要删除的免费赠送游戏记录主键 - * @return 结果 - */ - @Override - public int deleteGameFreeRecordByIds(Long[] ids) - { - return gameFreeRecordMapper.deleteGameFreeRecordByIds(ids); - } - - /** - * 删除免费赠送游戏记录信息 - * - * @param id 免费赠送游戏记录主键 - * @return 结果 - */ - @Override - public int deleteGameFreeRecordById(Long id) - { - return gameFreeRecordMapper.deleteGameFreeRecordById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java deleted file mode 100644 index 4a1a969..0000000 --- a/ff-game/src/main/java/com/ff/game/service/impl/GameServiceImpl.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.ff.game.service.impl; - -import cn.hutool.core.util.IdUtil; -import com.ff.api.response.GameResponse; -import com.ff.base.utils.DateUtils; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.GameUniqueDTO; -import com.ff.game.domain.Game; -import com.ff.game.dto.GameDTO; -import com.ff.game.mapper.GameMapper; -import com.ff.game.service.IGameService; -import com.ff.member.service.IMemberService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; - -/** - * 平台子游戏管理Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -@Slf4j -public class GameServiceImpl implements IGameService { - - @Autowired - private GameMapper gameMapper; - - @Resource - private IMemberService memberService; - - @Autowired - private Map gamesService; - - /** - * 查询平台子游戏管理 - * - * @param id 平台子游戏管理主键 - * @return 平台子游戏管理 - */ - @Override - public Game selectGameById(Long id) { - return gameMapper.selectGameById(id); - } - - /** - * 按游戏id选择游戏 - * - * @param gameId 游戏id - * @return {@link Game } - */ - @Override - public Game selectGameByGameId(String gameId) { - return gameMapper.selectGameByGameId(gameId); - } - - /** - * 查询平台子游戏管理列表 - * - * @param game 平台子游戏管理 - * @return 平台子游戏管理 - */ - @Override - public List selectGameList(Game game) { - return gameMapper.selectGameList(game); - } - - /** - * 选择游戏数据列表 - * - * @param gameDTO 游戏dto - * @return {@link List }<{@link Game }> - */ - @Override - public List selectGameDTOList(GameDTO gameDTO) { - return gameMapper.selectGameDTOList(gameDTO); - } - - /** - * 新增平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - @Override - public int insertGame(Game game) { - if (game.getId() == null) { - game.setId(IdUtil.getSnowflakeNextId()); - } - game.setCreateTime(DateUtils.getNowDate()); - return gameMapper.insertGame(game); - } - - /** - * 修改平台子游戏管理 - * - * @param game 平台子游戏管理 - * @return 结果 - */ - @Override - public int updateGame(Game game) { - game.setUpdateTime(DateUtils.getNowDate()); - return gameMapper.updateGame(game); - } - - /** - * 批量删除平台子游戏管理 - * - * @param ids 需要删除的平台子游戏管理主键 - * @return 结果 - */ - @Override - public int deleteGameByIds(Long[] ids) { - return gameMapper.deleteGameByIds(ids); - } - - /** - * 删除平台子游戏管理信息 - * - * @param id 平台子游戏管理主键 - * @return 结果 - */ - @Override - public int deleteGameById(Long id) { - return gameMapper.deleteGameById(id); - } - - /** - * 选择游戏唯一列表 - * - * @param gameUniqueDTO 游戏独有dto - * @return {@link List }<{@link Game }> - */ - @Override - public List selectGameUniqueList(GameUniqueDTO gameUniqueDTO) { - return gameMapper.selectGameUniqueList(gameUniqueDTO); - } - - /** - * 选择游戏响应列表 - * - * @return {@link List }<{@link GameResponse }> - */ - @Override - public List selectGameResponseList() { - return gameMapper.selectGameResponseList(); - } - - @Override - public Integer selectMaxSortNo(Integer platformType, String platformCode) { - return gameMapper.selectMaxSortNoBy(platformType, platformCode); - } - - -} diff --git a/ff-game/src/main/java/com/ff/game/service/impl/PlatformServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/PlatformServiceImpl.java deleted file mode 100644 index 6dd8f6b..0000000 --- a/ff-game/src/main/java/com/ff/game/service/impl/PlatformServiceImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.ff.game.service.impl; - -import com.ff.base.constant.CacheConstants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.datasource.DynamicDataSourceContextHolder; -import com.ff.game.domain.Platform; -import com.ff.game.mapper.PlatformMapper; -import com.ff.game.service.IPlatformService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.sql.DataSource; -import java.util.List; -import java.util.Map; - -/** - * @author cengy - */ -@Service -public class PlatformServiceImpl implements IPlatformService { - - @Autowired - PlatformMapper platformMapper; - @Autowired - RedisCache redisCache; - - @Override - public List selectList(Platform platform) { - return platformMapper.selectList(platform); - } - - @Override - public Platform selectByPlatformCode(String platformCode) { - return platformMapper.selectByPlatformCode(platformCode); - } - - @Override - public int updatePlatform(Platform platform) { - return platformMapper.updatePlatform(platform); - } - - @Override - public int insertPlatform(Platform platform) { - return platformMapper.insertPlatform(platform); - } - - @Override - public int deleteById(Long id) { - return platformMapper.deleteById(id); - } - - @Override - public int deleteByIds(String ids) { - return platformMapper.deleteByIds(ids); - } - - @Override - public void loadToCache() { - Map resolvedDataSources = DynamicDataSourceContextHolder.getAllDataSource(); - for (Map.Entry entry : resolvedDataSources.entrySet()) { - Object key = entry.getKey(); - // 设置数据源类型 - DynamicDataSourceContextHolder.setDataSourceType(key.toString()); - List list = selectList(new Platform()); - for (Platform pp : list) { - redisCache.setCacheObject(getCacheKey(pp.getPlatformCode()), pp); - } - } - } - - @Override - public Platform get(String platformCode) { - return redisCache.getCacheObject(getCacheKey(platformCode)); - } - - private String getCacheKey(String configKey) { - return CacheConstants.Platform + configKey; - } -} diff --git a/ff-game/src/main/java/com/ff/member/controller/MemberController.java b/ff-game/src/main/java/com/ff/member/controller/MemberController.java deleted file mode 100644 index 65cfceb..0000000 --- a/ff-game/src/main/java/com/ff/member/controller/MemberController.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ff.member.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 会员Controller - * - * @author shi - * @date 2025-02-10 - */ -@RestController -@RequestMapping("/tenant/member") -public class MemberController extends BaseController -{ - @Autowired - private IMemberService memberService; - - /** - * 查询会员列表 - */ - @PreAuthorize("@ss.hasPermi('member:member:list')") - @GetMapping("/list") - public TableDataInfo list(Member member) - { - startPage(); - List list = memberService.selectMemberList(member); - return getDataTable(list); - } - - -} diff --git a/ff-game/src/main/java/com/ff/member/mapper/MemberMapper.java b/ff-game/src/main/java/com/ff/member/mapper/MemberMapper.java deleted file mode 100644 index 761e12b..0000000 --- a/ff-game/src/main/java/com/ff/member/mapper/MemberMapper.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.ff.member.mapper; - -import java.util.List; -import com.ff.member.domain.Member; -import org.apache.ibatis.annotations.Param; - -/** - * 会员Mapper接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface MemberMapper -{ - /** - * 查询会员 - * - * @param id 会员主键 - * @return 会员 - */ - Member selectMemberById(Long id); - - /** - * 查询会员列表 - * - * @param member 会员 - * @return 会员集合 - */ - List selectMemberList(Member member); - - /** - * 新增会员 - * - * @param member 会员 - * @return 结果 - */ - int insertMember(Member member); - - /** - * 修改会员 - * - * @param member 会员 - * @return 结果 - */ - int updateMember(Member member); - - /** - * 删除会员 - * - * @param id 会员主键 - * @return 结果 - */ - int deleteMemberById(Long id); - - /** - * 批量删除会员 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteMemberByIds(Long[] ids); - - - - - /** - * 按游戏帐户选择成员 - * - * @param gameAccount 游戏账号 - * @return {@link Member } - */ - Member selectMemberByGameAccount(String gameAccount); - - - /** - * 按帐户选择成员 - * - * @param account 账户 - * @param currencyCode 货币代码 - * @param platformCode 平台代码 - * @return {@link Member } - */ - Member selectMemberByAccount(@Param("account") String account,@Param("currencyCode") String currencyCode,@Param("platformCode") String platformCode); -} diff --git a/ff-game/src/main/java/com/ff/member/service/IMemberService.java b/ff-game/src/main/java/com/ff/member/service/IMemberService.java deleted file mode 100644 index 6aa977d..0000000 --- a/ff-game/src/main/java/com/ff/member/service/IMemberService.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.ff.member.service; - -import java.util.List; -import com.ff.member.domain.Member; - -/** - * 会员Service接口 - * - * @author shi - * @date 2025-02-10 - */ -public interface IMemberService -{ - /** - * 查询会员 - * - * @param id 会员主键 - * @return 会员 - */ - Member selectMemberById(Long id); - - /** - * 查询会员列表 - * - * @param member 会员 - * @return 会员集合 - */ - List selectMemberList(Member member); - - /** - * 生成会员游戏账号 - * - * @param platformCode 平台代码 - * @param tenantSn 租户sn - * @return {@link String } - */ - String getMemberGameAccount(String platformCode,String tenantSn); - - /** - * 新增会员 - * - * @param member 会员 - * @return 结果 - */ - int insertMember(Member member); - - /** - * 修改会员 - * - * @param member 会员 - * @return 结果 - */ - int updateMember(Member member); - - /** - * 批量删除会员 - * - * @param ids 需要删除的会员主键集合 - * @return 结果 - */ - int deleteMemberByIds(Long[] ids); - - /** - * 删除会员信息 - * - * @param id 会员主键 - * @return 结果 - */ - int deleteMemberById(Long id); - - - /** - * 按游戏帐户选择成员 - * - * @param gameAccount 游戏账号 - * @return {@link Member } - */ - Member selectMemberByGameAccount(String gameAccount); - - /** - * 按帐户选择成员 - * - * @param account 账户 - * @param currencyCode 货币代码 - * @param platformCode 平台代码 - * @return {@link Member } - */ - Member selectMemberByAccount(String account,String currencyCode,String platformCode); -} diff --git a/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java b/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java deleted file mode 100644 index a21b96a..0000000 --- a/ff-game/src/main/java/com/ff/member/service/impl/MemberServiceImpl.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.ff.member.service.impl; - -import java.util.List; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.enums.GamePlatforms; -import com.ff.base.enums.PlatformType; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.RandomGeneratorUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.member.mapper.MemberMapper; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import org.springframework.util.ObjectUtils; - -/** - * 会员Service业务层处理 - * - * @author shi - * @date 2025-02-10 - */ -@Service -public class MemberServiceImpl implements IMemberService { - @Autowired - private MemberMapper memberMapper; - - /** - * 查询会员 - * - * @param id 会员主键 - * @return 会员 - */ - @Override - public Member selectMemberById(Long id) { - return memberMapper.selectMemberById(id); - } - - /** - * 查询会员列表 - * - * @param member 会员 - * @return 会员 - */ - @Override - public List selectMemberList(Member member) { - return memberMapper.selectMemberList(member); - } - - /** - * 获取会员游戏账号 - * - * @return {@link String } - */ - @Override - public synchronized String getMemberGameAccount(String platformCode,String tenantSn) { - String gameAccount = null; - if (GamePlatforms.DG.getInfo().equals(platformCode) || GamePlatforms.KM.getInfo().equals(platformCode)) { - tenantSn=tenantSn.toUpperCase(); - do { - gameAccount = RandomGeneratorUtils.generateRandomAccountUpper()+tenantSn; - } while (!ObjectUtils.isEmpty(memberMapper.selectMemberByGameAccount(gameAccount))); - } else if (GamePlatforms.PG.getInfo().equals(platformCode) || GamePlatforms.PGX.getInfo().equals(platformCode) || GamePlatforms.PGT.getInfo().equals(platformCode)) { - tenantSn=tenantSn.toLowerCase(); - do { - gameAccount = RandomGeneratorUtils.generateRandomAccountLower()+tenantSn; - } while (!ObjectUtils.isEmpty(memberMapper.selectMemberByGameAccount(gameAccount))); - } else { - do { - gameAccount = RandomGeneratorUtils.generateRandomAccount()+tenantSn; - } while (!ObjectUtils.isEmpty(memberMapper.selectMemberByGameAccount(gameAccount))); - } - - - return gameAccount; - } - - /** - * 新增会员 - * - * @param member 会员 - * @return 结果 - */ - @Override - public int insertMember(Member member) { - member.setId(IdUtil.getSnowflakeNextId()); - member.setCreateTime(DateUtils.getNowDate()); - return memberMapper.insertMember(member); - } - - /** - * 修改会员 - * - * @param member 会员 - * @return 结果 - */ - @Override - public int updateMember(Member member) { - member.setUpdateTime(DateUtils.getNowDate()); - return memberMapper.updateMember(member); - } - - /** - * 批量删除会员 - * - * @param ids 需要删除的会员主键 - * @return 结果 - */ - @Override - public int deleteMemberByIds(Long[] ids) { - return memberMapper.deleteMemberByIds(ids); - } - - /** - * 删除会员信息 - * - * @param id 会员主键 - * @return 结果 - */ - @Override - public int deleteMemberById(Long id) { - return memberMapper.deleteMemberById(id); - } - - - /** - * 按游戏帐户选择成员 - * - * @param gameAccount 游戏账号 - * @return {@link Member } - */ - @Override - public Member selectMemberByGameAccount(String gameAccount) { - return memberMapper.selectMemberByGameAccount(gameAccount); - } - - /** - * 按帐户选择成员 - * - * @param account 账户 - * @param currencyCode 货币代码 - * @param platformCode 平台代码 - * @return {@link Member } - */ - @Override - public Member selectMemberByAccount(String account, String currencyCode, String platformCode) { - return memberMapper.selectMemberByAccount(account, currencyCode, platformCode); - } -} diff --git a/ff-game/src/main/java/com/ff/monitor/SysLogininforController.java b/ff-game/src/main/java/com/ff/monitor/SysLogininforController.java deleted file mode 100644 index 00954c7..0000000 --- a/ff-game/src/main/java/com/ff/monitor/SysLogininforController.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.ff.monitor; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.web.service.SysPasswordService; -import com.ff.base.system.domain.SysLogininfor; -import com.ff.base.system.service.ISysLogininforService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 系统访问记录 - * - * @author ff - */ -@RestController -@RequestMapping("/monitor/logininfor") -public class SysLogininforController extends BaseController -{ - @Autowired - private ISysLogininforService logininforService; - - @Autowired - private SysPasswordService passwordService; - - @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')") - @GetMapping("/list") - public TableDataInfo list(SysLogininfor logininfor) - { - startPage(); - List list = logininforService.selectLogininforList(logininfor); - return getDataTable(list); - } - - @Log(title = "登录日志", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('monitor:logininfor:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysLogininfor logininfor) - { - List list = logininforService.selectLogininforList(logininfor); - ExcelUtil util = new ExcelUtil(SysLogininfor.class); - util.exportExcel(response, list, "登录日志"); - } - - @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") - @Log(title = "登录日志", businessType = BusinessType.DELETE) - @DeleteMapping("/{infoIds}") - public AjaxResult remove(@PathVariable Long[] infoIds) - { - return toAjax(logininforService.deleteLogininforByIds(infoIds)); - } - - @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") - @Log(title = "登录日志", businessType = BusinessType.CLEAN) - @DeleteMapping("/clean") - public AjaxResult clean() - { - logininforService.cleanLogininfor(); - return success(); - } - - @PreAuthorize("@ss.hasPermi('monitor:logininfor:unlock')") - @Log(title = "账户解锁", businessType = BusinessType.OTHER) - @GetMapping("/unlock/{userName}") - public AjaxResult unlock(@PathVariable("userName") String userName) - { - passwordService.clearLoginRecordCache(userName); - return success(); - } -} diff --git a/ff-game/src/main/java/com/ff/monitor/SysOperlogController.java b/ff-game/src/main/java/com/ff/monitor/SysOperlogController.java deleted file mode 100644 index dd08069..0000000 --- a/ff-game/src/main/java/com/ff/monitor/SysOperlogController.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.ff.monitor; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.domain.SysOperLog; -import com.ff.base.system.service.ISysOperLogService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 操作日志记录 - * - * @author ff - */ -@RestController -@RequestMapping("/monitor/operlog") -public class SysOperlogController extends BaseController -{ - @Autowired - private ISysOperLogService operLogService; - - @PreAuthorize("@ss.hasPermi('monitor:operlog:list')") - @GetMapping("/list") - public TableDataInfo list(SysOperLog operLog) - { - startPage(); - List list = operLogService.selectOperLogList(operLog); - return getDataTable(list); - } - - @Log(title = "操作日志", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('monitor:operlog:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysOperLog operLog) - { - List list = operLogService.selectOperLogList(operLog); - ExcelUtil util = new ExcelUtil(SysOperLog.class); - util.exportExcel(response, list, "操作日志"); - } - - @Log(title = "操作日志", businessType = BusinessType.DELETE) - @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") - @DeleteMapping("/{operIds}") - public AjaxResult remove(@PathVariable Long[] operIds) - { - return toAjax(operLogService.deleteOperLogByIds(operIds)); - } - - @Log(title = "操作日志", businessType = BusinessType.CLEAN) - @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") - @DeleteMapping("/clean") - public AjaxResult clean() - { - operLogService.cleanOperLog(); - return success(); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/address/DBSportsAddress.java b/ff-game/src/main/java/com/ff/sports/db/address/DBSportsAddress.java deleted file mode 100644 index c2e1843..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/address/DBSportsAddress.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ff.sports.db.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * DB体育对接文档 - * 账号: api - * 密码: a12345678 - * - * @author cengy - */ -@Component -public class DBSportsAddress implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.DBSports.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, ""); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/sports/db/client/DBSportsClient.java b/ff-game/src/main/java/com/ff/sports/db/client/DBSportsClient.java deleted file mode 100644 index bbcc535..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/client/DBSportsClient.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.ff.sports.db.client; - -import com.dtflys.forest.annotation.*; -import com.ff.sports.db.address.DBSportsAddress; -import com.ff.sports.db.dto.*; - -/** - * @author cengy - */ -@Address(source = DBSportsAddress.class) -public interface DBSportsClient { - /** - * 创建投注用户 - * - * @return {@link CreateUserResponse} - */ - @Post(url = "/api/user/create", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - CreateUserResponse createMember(@Body CreateUserRequest request, - @Header("requestId") @Var("requestId") String requestId); - - /** - * 用户登录接口(注册和登录合并为一个接口) - * - * @param request - * @param requestId - * @return - */ - @Post(url = "/api/user/login", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - LoginResponse login(@Body LoginRequest request, - @Header("requestId") String requestId); - - /** - * 用户金额转入到DB体育平台,支持两位小数,最小0.01,必须是正数 - * - * @param request - * @return {@link TransferResponse} - */ - @Post(url = "/api/fund/transfer", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - TransferResponse transferIn(@Body TransferRequest request, - @Header("requestId") @Var("requestId") String requestId - ); - - @Post(url = "/api/fund/transfer", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - TransferResponse transferOut(@Body TransferRequest request, - @Header("requestId") String requestId - ); - - @Post(url = "/api/fund/checkBalance", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - GetMemberInfoResponse getMemberInfo(@Body GetMemberInfoRequest request, - @Header("requestId") String requestId); - - /** - * 根据转账ID查询交易记录接口。 - */ - @Post(url = "/api/fund/getTransferRecord", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - TransferDetailResponse transferDetail(@Body TransferDetailRequest request, - @Header("requestId") String requestId); - - /** - * 剔用户 - * - * @param request - * @param requestId - * @return - */ - @Post(value = "/api/user/kickOutUser", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - KickUserResponse kickUser(@Body KickUserRequest request, - @Header("requestId") String requestId); - - - /** - * 拉取订单Json数据 - */ - @Post(url = "/api/bet/queryBetListV2", - headers = { - "Content-type: application/x-www-form-urlencoded" - } - ) - GetBetListResponse getBetList(@Body GetBetListRequest request, - @Header("requestId") String requestId); - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserRequest.java deleted file mode 100644 index b8e3366..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class CreateUserRequest implements Serializable { - - private static final long serialVersionUID = 1L; - - private String userName; // 用户名(可以包含但是不要等同于特殊字符或者空格,长度控制在30个字符以下) - private String merchantCode; // 商户code - private String timestamp = System.currentTimeMillis() + ""; // 13位时间戳 - private String currency; // 币种 - private String nickname; // N 昵称 - private String agentId; // N 信用网(代理id) - private String signature; // 签名 signature =MD5(MD5(userName +”&”+ merchantCode +”&”+ timestamp) + ”&”+ key) - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(userName + "&" + merchantCode + "&" + timestamp) + "&" + key); - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserResponse.java deleted file mode 100644 index ce2c62e..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/CreateUserResponse.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class CreateUserResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - private UserDTO data; - - @Data - public static class UserDTO { - private String userId; - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/Enums.java b/ff-game/src/main/java/com/ff/sports/db/dto/Enums.java deleted file mode 100644 index 5cbd46b..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/Enums.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.ff.sports.db.dto; - -/** - * @author cengy - */ -public class Enums { - - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListRequest.java deleted file mode 100644 index c0736f2..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListRequest.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class GetBetListRequest implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 用户名(可选) - */ - private String userName; - - /** - * 开始时间(13位时间戳,必填) - */ - private String startTime; - - /** - * 结束时间(13位时间戳,必填) - */ - private String endTime; - - /** - * 商户编码(必填) - */ - private String merchantCode; - - /** - * 赛种ID(可选) - */ - private Integer sportId; - - /** - * 联赛ID(可选) - */ - private Long tournamentId; - - /** - * 结算状态(可选) - * 0: 未结算 - * 1: 已结算 - * 2: 取消人工 - * 3: 待确认 - * 4: 风控拒单 - * 5: 撤单(赛事取消) - */ - private Integer settleStatus; - - /** - * 页面编号,从1开始(可选) - */ - private Integer pageNum; - - /** - * 每页条数(最大1000,可选) - */ - private Integer pageSize; - - /** - * 请求时间戳(13位,必填) - */ - private String timestamp = String.valueOf(System.currentTimeMillis()); - - /** - * 排序方式(可选) - * 1: 订单创建时间(投注时间) - * 2: 订单更新时间 - */ - private Integer orderBy; - - /** - * 语言(可选,默认中文,传"en"返回英文) - */ - private String language; - - /** - * 签名(必填) - */ - private String signature; - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + startTime + "&" + endTime + "&" + timestamp) + "&" + key); - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListResponse.java deleted file mode 100644 index a05a0d3..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/GetBetListResponse.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class GetBetListResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - private DataDTO data; - - @Data - public static class DataDTO { - - - // 当前页码 - private Integer pageNum; - // 每页条数 - private Integer pageSize; - // 总条数 - private Integer totalCount; - // 注单列表 - private List list; - } - - @Data - public static class OrderItemDTO { - // 用户名 - private String userName; - - // 商户编码 - private String merchantCode; - - // 订单ID - private String orderNo; - - // 订单状态,具体见参数字段映射 - private Integer orderStatus; - - // 投注时间(13位时间戳) - private Long createTime; - - // 订单更新时间(13位时间戳) - private Long modifyTime; - - // 实际投注金额 - private String orderAmount; - - // 注单项数量 - private Integer betCount; - - // 结算时间(13位时间戳) - private Long settleTime; - - // 结算金额 - private Double settleAmount; - - // 提前结算投注金额 - private Double preBetAmount; - - // 盈利金额 - private Double profitAmount; - - // 注单结算结果 - // 2:走水,3:输,4:赢,5:赢半,6:输半,7:赛事取消,8:赛事延期 - private Integer outcome; - - // 串关类型 - private Integer seriesType; - - // 串关值 - private String seriesValue; - - // 结算次数 - private Integer settleTimes; - - // 设备类型:1-H5,2-PC,3-Android,4-IOS - private String deviceType; - - // 移动设备标识 - private String deviceImei; - - // 用户IP地址 - private String ip; - - // 币种 - private String currency; - - // 汇率 - private BigDecimal exchangeRate; - - // 最大中奖金额 - private Double maxWinAmount; - - // VIP等级 - private Integer vipLevel; - - // 投注前余额 - private BigDecimal beforeTransfer; - - // 投注后余额 - private BigDecimal afterTransfer; - - // 有效投注金额 - private BigDecimal validOrderAmount; - - // 注单详情列表 - private List detailList; - } - - @Data - public static class DetailItemDTO { - // 投注项编号 - private Long betNo; - - // 投注项ID - private Long playOptionsId; - - // 赛事ID - private Long matchId; - - // 比赛开始时间(13位时间戳) - private Long beginTime; - - // 注单金额 - private Double betAmount; - - // 联赛名称 - private String matchName; - - // 比赛对阵 - private String matchInfo; - - // 投注类型: - // 1:早盘,2:滚球盘,3:冠军盘,4:虚拟赛事,5:电竞赛事 - private Integer matchType; - - // 赛种ID - private Integer sportId; - - // 玩法ID - private Integer playId; - - // 投注项(如主客队) - private String playOptions; - - // 游戏名称 - private String sportName; - - // 联赛ID - private Long tournamentId; - - // 投注项名称 - private String playOptionName; - - // 玩法名称 - private String playName; - - // 盘口类型 - private String marketType; - - // 盘口值 - private String marketValue; - - // 让球值 - private BigDecimal handicap; - - // 结算比分(我方处理后所得,数据商可能未提供) - private String settleScore; - - // 基准分 - private String scoreBenchmark; - - // 当前赔率(欧洲盘表示) - private BigDecimal oddsValue; - - // 注单结算结果: - // 0:无结果,2:走水,3:输,4:赢,5:赢一半,6:输一半, - // 7:赛事取消,8:赛事延期,11:比赛延迟,12:比赛中断, - // 13:未知,15:比赛放弃,16:异常盘口,17:未知状态, - // 18:比赛取消,19:比赛延期 - private String betResult; - - // 最终赔率(按盘口类型) - private BigDecimal oddFinally; - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoRequest.java deleted file mode 100644 index 5255cb6..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoRequest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class GetMemberInfoRequest implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 用户名,不能为空 - */ - private String userName; - - /** - * 商户编码 - */ - private String merchantCode; - /** - * Long型时间戳(13位) - */ - private String timestamp = System.currentTimeMillis() + ""; - - private String signature; - - public void buildSignature(String key) { - - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + timestamp) + "&" + key); - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoResponse.java deleted file mode 100644 index 1f329c0..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/GetMemberInfoResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class GetMemberInfoResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - private MemberInfoDTO data; - - @Data - public static class MemberInfoDTO { - private BigDecimal balance; - private String userName; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/KickUserRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/KickUserRequest.java deleted file mode 100644 index 809825d..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/KickUserRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class KickUserRequest implements Serializable { - - private static final long serialVersionUID = 1L; - private String userName; - private String merchantCode; - private String timestamp = System.currentTimeMillis() + ""; - private String signature; - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + timestamp) + "&" + key); - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/KickUserResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/KickUserResponse.java deleted file mode 100644 index 065e66a..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/KickUserResponse.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class KickUserResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/LoginRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/LoginRequest.java deleted file mode 100644 index f120b9b..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/LoginRequest.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @author cengy - */ -@Data -public class LoginRequest implements Serializable { - - private static final long serialVersionUID = 1L; - private String userName; - private String merchantCode; - private String timestamp = System.currentTimeMillis() + ""; - private String signature; - - // 不能传错,用户可能受到设备类型相关风控措施的错误限制,进而影响正常用户货量,并产生客诉 - private String terminal; // 终端类型:【电脑传值:pc】,【移动设备传值:mobile】 注:这个参数传值必须是pc或者mobile, - private BigDecimal balance; // 用户余额,N - private String currency; // 币种(见参数映射:支持币种 )会员首次登录,必须填写币种参数,否则注册失败 - - private String callbackUrl; // 玩家会话失效跳转的商户地址url(非必传) - private String stoken; // 非必传字段(商户方用户会话) - - // 非必传字段(支持体育游戏其他端的跳转) , - // C端⽀持跳转的游戏,如果C端⽀持跳转多个游戏 , - // 则使⽤逗号区分。 具体字段可查看:参数字段映射第6条 参数字段映射 - private String jumpsupport; - private String jumpfrom; // 非必传字段,同上 - - private String agentId; // 信用网(代理id),N - // 用户语种: - //zh:中文 - //en:英文 - //vi:越南语 - //tw:中文繁体 - //th:泰语 - //ms:马来语 - //ad:印尼语 - //ko:韩语 - //mya:缅甸语 - //pt:葡萄牙语 - //es:西班牙语 - //非必传字段 - private String language; - private String ip; // 非必传字段 说明:商户端在该字段上传入用户登陆时端ip - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + terminal + "&" + timestamp) + "&" + key); - - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/LoginResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/LoginResponse.java deleted file mode 100644 index eafb9ba..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/LoginResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class LoginResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - private LoginRespDTO data; - - @Data - public static class LoginRespDTO { - private String domain; // 体育游戏前端URL - private String token; // 带有登录状态的token - private String apiDomain;// 赛事API的域名(若没有对接赛事API,为空) - private String imgDomain; // 静态资源域名 - private String loginUrl; // 登录体育URL,可直接跳转 - private String userId; // 用户id - private String url; // 参加活动的商户使用,客户端域名和参数拼接后提供商户使用 - private List loginUrlArr; // loginUrl数组,多个域名,调试使用 - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailRequest.java deleted file mode 100644 index 342144d..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class TransferDetailRequest implements Serializable { - - /** - * 用户名,N - */ - private String userName; - /** - * 商户code - */ - private String merchantCode; - /** - * 交易id(19位数字) - */ - private String transferId; - - private String timestamp = System.currentTimeMillis() + ""; - - /** - * 签名 - */ - private String signature; - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + transferId + "&" + timestamp) + "&" + key); - this.signature = signature; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailResponse.java deleted file mode 100644 index 77fba58..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/TransferDetailResponse.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @author cengy - */ -@Data -public class TransferDetailResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private TransferDetailDTO data; - private Boolean status; - private String msg; - private String code; - private Long serverTime; - - @Data - public static class TransferDetailDTO implements Serializable { - private static final long serialVersionUID = 1L; - - private String transferId; // 交易id - private String merchantCode; // 商户代码 - private Long userId; // 用户id - private Integer transferType; // 交易类型 1:加款,2:扣款 - private BigDecimal amount; // 交易金额 - private BigDecimal beforeTransfer; // 转账前余额 - private Integer afterTransfer; // 转账后余额 - private Integer status; // 转账成功与否(0:失败,1:成功) - private String mag; // 转账模式 1:免转,2:转账 - private Integer transferMode; // 转账涉及订单(transferMode为2时,该字段为空) - private Long createTime; // 交易时间 - - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/TransferRequest.java b/ff-game/src/main/java/com/ff/sports/db/dto/TransferRequest.java deleted file mode 100644 index 9b500d3..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/TransferRequest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ff.sports.db.dto; - -import com.ff.base.utils.sign.Md5Utils; -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class TransferRequest implements Serializable { - - private String userName; - private String merchantCode; - private int transferType; // 1:加款 2:扣款 - - private String amount; // 金额,小数2位 - private String transferId; // 交易的讯息号,唯一标示,不可重复,19位长度的字符串 - private String timestamp = String.valueOf(System.currentTimeMillis()); - private String signature; - - public void buildSignature(String key) { - String signature = Md5Utils.md5New(Md5Utils.md5New(merchantCode + "&" + userName + "&" + transferType + "&" + amount + "&" + transferId + "&" + timestamp) + "&" + key); - this.signature = signature; - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/db/dto/TransferResponse.java b/ff-game/src/main/java/com/ff/sports/db/dto/TransferResponse.java deleted file mode 100644 index 1ada1ab..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/dto/TransferResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.sports.db.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class TransferResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean status; - private String msg; - private String code; - private Long serverTime; - private TransferDTO data; - - @Data - public static class TransferDTO { - private String userName; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/db/impl/DBSportsServiceImpl.java b/ff-game/src/main/java/com/ff/sports/db/impl/DBSportsServiceImpl.java deleted file mode 100644 index 2e183d5..0000000 --- a/ff-game/src/main/java/com/ff/sports/db/impl/DBSportsServiceImpl.java +++ /dev/null @@ -1,615 +0,0 @@ -package com.ff.sports.db.impl; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import com.ff.sports.db.client.DBSportsClient; -import com.ff.sports.db.dto.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - - -/** - * DB体育 - * - * @author cengy - * @date 2024/10/21 - */ -@Service("DBSportsService") -@Slf4j -public class DBSportsServiceImpl implements IGamesService { - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private DBSportsClient dbSportsClient; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean isSuccess(String errorCode) { - return "0000".equals(errorCode); - } - - String getSign(String bodyJsonString, String merchantId, String merchantApiSecret, long requestTimestamp) { - - String stringThatNeedsToBeSigned = bodyJsonString + "." + merchantId + "." + requestTimestamp + "." + merchantApiSecret; - String sign = Md5Utils.md5New(stringThatNeedsToBeSigned); - return sign; - } - - /** - * 创建成员 - * - * @param requestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO requestDTO) { - - CreateUserRequest request = new CreateUserRequest(); - request.setUserName(requestDTO.getAccount()); - request.setMerchantCode(requestDTO.getAgentId()); - request.setCurrency(requestDTO.getCurrency()); - request.buildSignature(requestDTO.getAgentKey()); - - //String lang = requestDTO.getLan - String requestId = IdUtils.fastUUID(); - CreateUserResponse response = dbSportsClient.createMember(request, requestId); - if (isSuccess(response.getCode())) { - return Boolean.TRUE; - } - - log.error("创建会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMsg()); - throw new ApiException(ErrorCode.Create_Member_Failure.getCode()); - } - - - /** - * 按代理id进行交换转账 - * - * @param requestDTO 外汇转账 - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO requestDTO) { - - Member member = memberService.selectMemberByGameAccount(requestDTO.getAccount()); - String transactionId = GamePlatforms.DBSports.getCode() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(requestDTO.getTenantKey()) - .orderId(requestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); -//获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .orderId(requestDTO.getOrderId()) - .tenantKey(requestDTO.getTenantKey()) - .quota(requestDTO.getQuota()) - .balance(requestDTO.getAmount()) - .exchangeType(requestDTO.getTransferType()) - .currencyCode(requestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.DBSports.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - //接口限制限制50字符 - exchangeMoney.setTransactionId(transactionId); - // 转入 - if (requestDTO.getTransferType().equals(TransferType.GAMES.getCode())) { - TransferRequest request = new TransferRequest(); - request.setUserName(requestDTO.getAccount()); - request.setTransferType(1); - request.setTransferId(requestDTO.getOrderId()); - request.setMerchantCode(requestDTO.getAgentId()); - request.setAmount(requestDTO.getAmount().toString()); - request.buildSignature(requestDTO.getAgentKey()); - - TransferResponse response = dbSportsClient.transferIn( - request, IdUtils.fastUUID() - ); - if (isSuccess(response.getCode())) { - GetMemberInfoRequest queryMemberRequest = new GetMemberInfoRequest(); - queryMemberRequest.setUserName(requestDTO.getAccount()); - queryMemberRequest.setMerchantCode(requestDTO.getAgentId()); - queryMemberRequest.buildSignature(requestDTO.getAgentKey()); - String requestId = IdUtils.fastUUID(); - try { - GetMemberInfoResponse queryMemberResponse = dbSportsClient.getMemberInfo(queryMemberRequest, requestId); - if (this.isSuccess(queryMemberResponse.getCode())) { - BigDecimal transAmount = requestDTO.getAmount(); - BigDecimal afterAmount = queryMemberResponse.getData().getBalance(); - BigDecimal beforeAmount = afterAmount.subtract(transAmount); - exchangeMoney.setBalance(transAmount); - exchangeMoney.setCoinBefore(beforeAmount); - exchangeMoney.setCoinAfter(afterAmount); - exchangeMoney.setCurrencyBefore(beforeAmount); - exchangeMoney.setCurrencyAfter(afterAmount); - } - } catch (Exception e) { - log.error("查询会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMsg(), e); - } - exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - } else { - throw new ApiException(ErrorCode.Transfer_In_Failure.getCode()); - } - } else { - // 获取第三方钱包余额 - MemberInfoRequestDTO memberInfoRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(requestDTO.getAgentId()) - .agentKey(requestDTO.getAgentKey()) - .build(); - BigDecimal balance = this.getMemberInfo(memberInfoRequestDTO).getBalance(); - if (balance.compareTo(BigDecimal.ZERO) <= 0) { - throw new ApiException(ErrorCode.INSUFFICIENT_PLAYER_BALANCE.getCode()); - } - - TransferRequest request = new TransferRequest(); - request.setUserName(requestDTO.getAccount()); - request.setTransferType(2); // 转出 - request.setTransferId(requestDTO.getOrderId()); - request.setMerchantCode(requestDTO.getAgentId()); - request.setAmount(/*requestDTO.getAmount().toString()*/ balance.toString()); - request.buildSignature(requestDTO.getAgentKey()); - - TransferResponse response = dbSportsClient - .transferOut( - request, IdUtils.fastUUID() - ); - - //判断是否转移成功 - if (this.isSuccess(response.getCode())) { - BigDecimal transAmount = balance; - BigDecimal beforeAmount = balance; - BigDecimal afterAmount = BigDecimal.ZERO; - - //更新数据 - exchangeMoney.setBalance(transAmount); - exchangeMoney.setCoinBefore(beforeAmount); - exchangeMoney.setCoinAfter(afterAmount); - exchangeMoney.setCurrencyBefore(beforeAmount); - exchangeMoney.setCurrencyAfter(afterAmount); - exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - } else { - throw new ApiException(ErrorCode.Transfer_Out_Failure.getCode()); - } - } - return exchangeMoney.getId(); - } - - /** - * 获取会员信息 - * - * @param requestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO requestDTO) { - GetMemberInfoRequest request = new GetMemberInfoRequest(); - request.setUserName(requestDTO.getAccounts()); - request.setMerchantCode(requestDTO.getAgentId()); - request.buildSignature(requestDTO.getAgentKey()); - String requestId = IdUtils.fastUUID(); - GetMemberInfoResponse response = dbSportsClient.getMemberInfo(request, requestId); - //判断是否获取成功 - if (this.isSuccess(response.getCode())) { - return MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(response.getData().getBalance()) - .account(requestDTO.getAccounts()) - .build(); - } - throw new ApiException(ErrorCode.Get_Member_Info_Failure.getCode()); - } - - /** - * 无重定向登录 - * - * @param requestDTO 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin requestDTO) { - LoginRequest request = new LoginRequest(); - request.setUserName(requestDTO.getAccount()); - request.setMerchantCode(requestDTO.getAgentId()); - if (requestDTO.getPlatform().equalsIgnoreCase("web")) { - request.setTerminal("pc"); - } else { - request.setTerminal("mobile"); - } - request.setLanguage(requestDTO.getLang()); - request.setCurrency(requestDTO.getCurrency()); - - request.buildSignature(requestDTO.getAgentKey()); - - LoginResponse response = dbSportsClient.login( - request, IdUtils.fastUUID() - ); - - if (this.isSuccess(response.getCode())) { - LoginResponse.LoginRespDTO respDTO = response.getData(); - - String loginURL = respDTO.getLoginUrl(); - if (StringUtils.isEmpty(loginURL)) { - throw new ApiException(ErrorCode.Get_Url_Failure.getCode()); - } - - return loginURL; - } - throw new ApiException(ErrorCode.Get_Url_Failure.getCode()); - } - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - Platform platform = gamesBaseRequestDTO.getVendor(); - Game condition = new Game(); - condition.setPlatformCode(platform.getPlatformCode()); - condition.setPlatformType(PlatformType.SPORTS.getCode()); - List gameList = gameService.selectGameList(condition); - //不存在这个游戏 - if (ObjectUtils.isEmpty(gameList)) { - Game game = new Game(); - game.setId(IdUtil.getSnowflakeNextId()); - game.setSortNo(1); - game.setPlatformCode(platform.getPlatformCode()); - game.setPlatformType(PlatformType.SPORTS.getCode()); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName(GamePlatforms.DBSports.getInfo()); - game.setCreateBy(Constants.SYSTEM); - NameInfo nameInfo = new NameInfo(); - nameInfo.setLang("zh-CN"); - nameInfo.setName("DB体育"); - game.setNameInfo(Collections.singletonList(nameInfo)); - gameService.insertGame(game); - } - /*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID); - if (ObjectUtils.isEmpty(gameName)) { - gameNameService.insertGameName(GameName.builder() - .id(GAME_NAME_ID) - .gameId(game.getId()) - .gameName(game.getGameName()) - .langCode("zh-CN") - .createBy(Constants.SYSTEM) - .build()); - }*/ - - return CacheConstants.DB_Sports; - } - - /** - * 汇兑转移状态 - * - * @param requestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO requestDTO) { - - GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(requestDTO.getGameExchangeMoneyId()); - if (null == gameExchangeMoney) { - throw new ApiException(ErrorCode.Transfer_Not_Exist.getCode()); - } - Integer status = StatusType.IN_PROGRESS.getValue(); - - if (!Objects.equals(gameExchangeMoney.getStatus(), StatusType.SUCCESS.getValue())) { - TransferDetailRequest request = new TransferDetailRequest(); - request.setMerchantCode(requestDTO.getAgentId()); - request.setTransferId(gameExchangeMoney.getOrderId()); - request.buildSignature(requestDTO.getAgentKey()); - TransferDetailResponse response = dbSportsClient.transferDetail( - request, IdUtils.fastUUID() - ); - if (this.isSuccess(response.getCode()) && response.getData().getStatus() == 1) { - status = StatusType.SUCCESS.getValue(); - } else { - status = StatusType.FAILURE.getValue(); - } - } - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(gameExchangeMoney.getBalance()) - .coinBefore(gameExchangeMoney.getCoinBefore()) - .coinAfter(gameExchangeMoney.getCoinAfter()) - .build(); - } - - - /** - * 按时间获取投注记录 - * - * @param requestDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO requestDTO) { - - this.getRealtimeRecord(requestDTO, 1); - - return Boolean.TRUE; - } - - void getRealtimeRecord(BetRecordByTimeDTO requestDTO, int pageNum) { - - GetBetListRequest request = new GetBetListRequest(); - request.setStartTime(/*String.valueOf(requestDTO.getStartTime())*/ "1744333220000"); - request.setEndTime(/*String.valueOf(requestDTO.getEndTime())*/ "1744335020000"); - request.setMerchantCode(requestDTO.getAgentId()); - request.setPageNum(pageNum); - request.setPageSize(1000); - request.buildSignature(requestDTO.getAgentKey()); - - GetBetListResponse response = dbSportsClient.getBetList( - request, IdUtils.fastUUID() - ); - - if (this.isSuccess(response.getCode())) { - List list = response.getData().getList(); - if (CollectionUtils.isEmpty(list)) { - return; - } - this.batchInsert(list, requestDTO); - getRealtimeRecord(requestDTO, ++pageNum); - } - } - - /** - * 按历史时间获取投注记录 - * - * @param requestDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO requestDTO) { - - return Boolean.TRUE; - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new BaseException("暂不支持免费局数"); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - - KickUserRequest request = new KickUserRequest(); - request.setUserName(kickMemberRequestDTO.getAccount()); - request.setMerchantCode(kickMemberRequestDTO.getAgentId()); - request.buildSignature(kickMemberRequestDTO.getAgentKey()); - KickUserResponse kickUserResponse = dbSportsClient.kickUser(request, IdUtils.fastUUID()); - if (this.isSuccess(kickUserResponse.getCode())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 批量插入 - * - * @param settledOrderList 投注记录 - */ - private void batchInsert(List settledOrderList, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List dataList = settledOrderList; - if (CollectionUtils.isEmpty(dataList)) { - return; - } - - //数据转化 - for (GetBetListResponse.OrderItemDTO dataBean : dataList) { - if (dataBean.getOrderStatus() != 1) { // 只关心结算的 - continue; - } - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(dataBean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(dataBean.getOrderNo()); - } - if (CollectionUtils.isEmpty(gameBettingDetails)) { - return; - } - //查询重复数据id - List removeWagersIds = gameBettingDetailsService - .selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.DBSports.getCode()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - GetBetListResponse.OrderItemDTO dataBean = (GetBetListResponse.OrderItemDTO) gamesDataBuildDTO.getData(); - Member member = memberService.selectMemberByGameAccount(dataBean.getUserName()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - //List gameList = redisCache.getCacheList(CacheConstants.DB_Sports); - //Game game = gameList.get(0); - BigDecimal originPayoffAmount = BigDecimal.valueOf(dataBean.getSettleAmount()); - BigDecimal betAmount = new BigDecimal(dataBean.getOrderAmount()); - - int compareResult = originPayoffAmount.compareTo(betAmount); - long payoffTime = dataBean.getSettleTime(); - long createTime = dataBean.getCreateTime(); - Platform platform = gamesDataBuildDTO.getPlatform(); - String systemCurrency = platform.getOurCurrency(dataBean.getCurrency()); - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(systemCurrency) - .memberId(member.getId()) - .gameCode("1") - .gameType(PlatformType.SPORTS.getCode()) // 体育 - .platformCode(GamePlatforms.DBSports.getCode()) - .gameId(GamePlatforms.DBSports.getCode() + "_1") - .gameName(GamePlatforms.DBSports.getInfo()) - .gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode()) - .gameStatusType(1) // 一般下注 - .gameCurrencyCode(dataBean.getCurrency()) - .account(dataBean.getUserName()) - .wagersId(dataBean.getOrderNo()) - .wagersTime(createTime) - .betAmount(betAmount) - .payoffTime(payoffTime) - .payoffAmount(originPayoffAmount.abs()) - .settlementTime(payoffTime) - .turnover(betAmount) - .orderNo(dataBean.getOrderNo()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/address/FBSportsAddress.java b/ff-game/src/main/java/com/ff/sports/fb/address/FBSportsAddress.java deleted file mode 100644 index e0aaa84..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/address/FBSportsAddress.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.sports.fb.address; - -import com.dtflys.forest.callback.AddressSource; -import com.dtflys.forest.http.ForestAddress; -import com.dtflys.forest.http.ForestRequest; -import com.ff.base.enums.GamePlatforms; -import com.ff.game.service.IPlatformService; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - - -/** - * 对接文档地址 - * - * @author cengy - */ -@Component -public class FBSportsAddress implements AddressSource { - - @Resource - private IPlatformService platformService; - - @Override - public ForestAddress getAddress(ForestRequest request) { - String apiBaseUrl = platformService.get(GamePlatforms.FBSports.getCode()) - .getUrlInfo().getUrl(); - return new ForestAddress("https", apiBaseUrl, 443, "fb/data"); - } -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/sports/fb/client/FBSportsClient.java b/ff-game/src/main/java/com/ff/sports/fb/client/FBSportsClient.java deleted file mode 100644 index dc28d2d..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/client/FBSportsClient.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.ff.sports.fb.client; - -import com.dtflys.forest.annotation.*; -import com.ff.sports.fb.address.FBSportsAddress; -import com.ff.sports.fb.dto.*; - -/** - * 数据接口文档
- * 网页接入文档 - * - * @author cengy - */ -@Address(source = FBSportsAddress.class) -public interface FBSportsClient { - /** - * 创建投注用户 - * - * @return {@link CreateUserResponse} - */ - @Post(url = "/api/v2/new/user/create") - CreateUserResponse createMember(@JSONBody CreateUserRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - /** - * 用户金额转入到FB体育平台,支持两位小数,最小0.01,必须是正数 - * - * @param request - * @param sign - * @param timestamp - * @param merchantId - * @return {@link TransferInResponse} - */ - @Post(url = "/api/v2/new/transfer/in") - TransferInResponse transferIn(@JSONBody TransferInRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - @Post(url = "/api/v2/new/transfer/out") - TransferOutResponse transferOut(@JSONBody TransferOutRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - @Post(url = "/api/v2/new/user/detail") - GetMemberInfoResponse getMemberInfo(@JSONBody GetMemberInfoRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - /** - * 查询转账详情,当转入/转出接口遇到异常,可查询某次转账是否成功 - */ - @Post(url = "/api/v2/transfer/detail") - TransferDetailResponse transferDetail(@JSONBody TransferDetailRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - @Post(url = "/api/v2/service/domain/list") - GetUrlResponse getUrl(@JSONBody GetUrlRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - /** - * FB体育用拉取订单文件的方式同步订单数据,FB体育每5分钟生成一次订单文件, - * 通过此接口获取某一段时间内的文件ID列表,再通过文件ID获取具体订单数据 - */ - @Post(url = "/api/v2/order/file/ids") - OrderFilesResponse orderFiles(@JSONBody OrderFilesRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - /** - * 拉取订单Json数据 - */ - @Post(url = "/api/v2/order/list") - OrderInfoResponse getOrderJsonData(@JSONBody OrderInfoRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); - - - /** - * 获取用户app端鉴权token和相关服务url,获取到的token用于app调用接口鉴权 - * - * @param request - * @param sign - * @param timestamp - * @param merchantId - * @return - */ - @Post(url = "/api/v2/token/get") - GetTokenResponse getToken(@JSONBody GetTokenRequest request, - @Header("sign") @Var("sign") String sign, - @Header("timestamp") @Var("timestamp") long timestamp, - @Header("merchantId") @Var("merchantId") String merchantId); -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserRequest.java deleted file mode 100644 index 95c942d..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserRequest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class CreateUserRequest implements Serializable { - - private static final long serialVersionUID = 1L; - - private String merchantUserId;// 渠道用户id,支持40位字符串,必须唯一 - private List currencyIds = null; // 币种id集合 , see enum: currency - private Integer oddsLevel = null; // 赔率级别,不传则为默认, see enum: user_odds_level_enum - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("currencyIds", currencyIds); - map.put("merchantUserId", merchantUserId); - map.put("oddsLevel", oddsLevel); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserResponse.java deleted file mode 100644 index 015abf1..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/CreateUserResponse.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class CreateUserResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean success; - private Integer data; - private Integer code; - private String message; -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/Enums.java b/ff-game/src/main/java/com/ff/sports/fb/dto/Enums.java deleted file mode 100644 index cf2bd48..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/Enums.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.ff.sports.fb.dto; - -/** - * @author cengy - */ -public class Enums { - - -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoRequest.java deleted file mode 100644 index 51e7129..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class GetMemberInfoRequest implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 渠道用户id,不能为空 - */ - private String merchantUserId; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("merchantUserId", merchantUserId); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoResponse.java deleted file mode 100644 index 0911248..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetMemberInfoResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class GetMemberInfoResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private MemberInfo data; - private Integer code; - - @Data - public static class MemberInfo implements Serializable{ - private static final long serialVersionUID = 1L; - private String merchantUserId; - private Integer userId; // FB体育用户id - private Integer walletType; // 用户钱包类型 , see enum: wallet_type - private Integer currencyType; // 用户币种类型 , see enum: currency_type - private List wallets; // 钱包集合 - private Integer oddsLevel;// 赔率级别 , see enum: user_odds_level_enum - } - @Data - public static class Wallet implements Serializable{ - private static final long serialVersionUID = 1L; - private Integer currencyType; // 币种类型 , see enum: currency_type - private BigDecimal balance; // 余额 - private Integer currencyId; // 币种id , see enum: currency - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenRequest.java deleted file mode 100644 index 1f46602..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenRequest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class GetTokenRequest implements Serializable { - - private static final long serialVersionUID = 1L; - - private String merchantUserId; - // 平台类型,pc,h5, mobile , see enum: plat_form_enum - private String platForm; - // 客户端用户ip地址,尽可能提供,我们用于风控 - private String ip; // 可选 - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("merchantUserId", merchantUserId); - map.put("platForm", platForm); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenResponse.java deleted file mode 100644 index 32a5029..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetTokenResponse.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class GetTokenResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private Integer code; - private TokenDTO data; - - @Data - public static class TokenDTO implements Serializable { - private String token; // 用户鉴权token,用于客户端鉴权 - private ServerInfo serverInfo; // 服务器地址信息 - private List domains; // 全部服务器地址信息 - private String themeBgColor; // 主题背景色 - private String themeFgColor; // 主题前景色 - private Integer userId; // FB用户ID - } - - @Data - public static class ServerInfo implements Serializable { - private static final long serialVersionUID = 1L; - private String apiServerAddress; // app接口服务地址 - private String apiEmbeddedServerAddress; // app内嵌网页地址 - private String pushServerAddress; // 推送服务地址 - private String pcAddress; // PC投注网站地址 - private String h5Address; // h5投注网站地址 - private String virtualAddress; // 虚拟体育投注网站地址 - private String virtualMatchVideoAddress; // 虚拟赛事视频地址 - private String ouH5Address; // 欧版h5地址 - private String ouPcAddress; // 欧版pc地址 - } - - @Data - public static class Domain { - private Integer type; // 域名类型 - private List domains; // 域名集合 - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlRequest.java deleted file mode 100644 index 15d3213..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @author cengy - */ -@Data -public class GetUrlRequest implements Serializable { - private static final long serialVersionUID = 1L; - - public String toJSON() { - return "{}"; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlResponse.java deleted file mode 100644 index e0ea5f8..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/GetUrlResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class GetUrlResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private List data; - private Integer code; - - @Data - public static class UrlDTO implements Serializable { - private static final long serialVersionUID = 1L; - private int type; //域名类型,1:API,2:PUSH,3:H5,4:PC,5:IMAGE , see enum: domain_type_enum - private List domainList; // 域名集合 - } - - @Data - public static class DomainDTO implements Serializable { - private static final long serialVersionUID = 1L; - private String domain; // 域名 - private int weight; // 权限值 - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesRequest.java deleted file mode 100644 index 5cbbeed..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesRequest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class OrderFilesRequest implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 开始时间戳,13位数字,不能为null - */ - private Long startTime; - - /** - * 结束时间戳,13位数字,不能为null - */ - private Long endTime; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("endTime", endTime); - map.put("startTime", startTime); - return JSON.toJSONString(map); -// String endTimeStr = endTime ; // 转换为字符串 -// String startTimeStr = startTime; // 转换为字符串 -// -// String json = "{" + -// "\"endTime\": \"" + endTimeStr + "\", " + -// "\"startTime\": \"" + startTimeStr + "\"" + -// "}"; -// return json; - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesResponse.java deleted file mode 100644 index 8d9f1b5..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderFilesResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class OrderFilesResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private Integer code; - - private List data; - - @Data - public static class FileId implements Serializable { - private static final long serialVersionUID = 1L; - private Long fileId; - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoRequest.java deleted file mode 100644 index 251dc02..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoRequest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class OrderInfoRequest implements Serializable { - private static final long serialVersionUID = 1L; - /** - * 文件Id,需要从/order/file/ids接口获取到 - */ - private Long fileId; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("fileId", fileId); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoResponse.java deleted file mode 100644 index fb48ce7..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/OrderInfoResponse.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - * @author cengy - */ -@Data -public class OrderInfoResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private Integer code; - - private List data; - - @Data - public static class OrderDTO implements Serializable { - private static final long serialVersionUID = 1L; - private String id; // 订单号 - private Integer rejectReason; // 拒单原因码 see enum: order_reject_type - private String rejectReasonStr; // 拒单原因 - private String userId; // FB平台用户ID - private String merchantId; // 渠道ID - private String merchantUserId; // 渠道用户ID - private Integer currency; // 币种 see enum: currency - private String exchangeRate; // 汇率快照 - private Integer seriesType; // 关次类型 ,0 单关、1 串关, see enum: series_type - private String betType; // 投注类型 - private Integer allUp; // 总关数 - private Integer allUpAlive; // 存活关数 - private String stakeAmount; // 投注额(本金) - private String liabilityStake; // 名义投注额(名义本金) - private String settleAmount; // 结算派奖金额 - private Integer orderStatus; // 订单状态 see enum: order_status - private Integer payStatus; // 付款状态 - private Integer oddsChange; // 是否接受赔率变更 0不接受,1 接受更好赔率,2接受任意赔率 , see enum: odds_change_enum - private String device; // 设备类型 (pc、h5、mobile) , see enum: plat_form_enum - private String ip; // 投注IP地址 - private String settleTime; // 订单结算时间 - private String createTime; // 订单创建时间 - private String modifyTime; // 订单确认时间 - private String cancelTime; // 订单取消时间 - private String thirdRemark; // 第三方备注 - private String relatedId; // 三方关联ID - private String maxWinAmount; // 最大可赢金额 - private String loseAmount; // 最大赔付金额 - private Integer rollBackCount; // 回滚次数 - private Integer itemCount; // 选项数 - private Integer seriesValue; // 串几关 - private Integer betNum; // 子单数 - private String cashOutTotalStake; // 提前结算总本金 - private String liabilityCashoutStake; // 提前结算名义总本金 - private String cashOutPayoutStake; // 提前结算总派奖额 - private String reserveId; // 预约订单单号 - private Integer cashOutCount; // 提前结算次数 - private String unitStake; // 每单金额 - private Integer reserveVersion; // 预约订单版本号 - private List betList; // 注单集合 - } - - @Data - public static class BetDTO implements Serializable { - private static final long serialVersionUID = 1L; - - private String id; // ID - private String orderId; // 订单ID - private Integer sportId; // 运动ID - private String matchId; // 比赛ID - private String matchName; // 比赛名称 - private Integer period; // 阶段ID - private String marketId; // 玩法ID - private Integer marketType; // 玩法类型 - private Integer optionType; // 投注项类型 - private String optionName; // 选项名称 - private String marketName; // 玩法名称 - private String tournamentId; // 联赛ID - private String tournamentName; // 联赛名称 - private String odds; // 欧式赔率 - private Integer oddsFormat; // 投注时赔率类型 - private String betOdds; // 投注时赔率 - private Integer settleStatus; // 结算状态 - private Integer settleResult; // 结算结果 - private Boolean isInplay; // 是否滚球 - private String remark; // 备注 - private Double p1; // 变量1 (例如:让几个球) - private Double p2; // 变量2 - private Double p3; // 变量3 - private String extendedParameter; // 亚洲让球线 - private String extraInfo; // 当前比分 - private String pendingTime; // 延迟等待时间 - private String betScore; // 下注当时比分 - private Integer cancelReason; // 取消原因 - private String cancelReasonName; // 取消原因文本 - private Integer matchType; // 赛事类型 - private String matchTime; // 开赛时间 - private Integer virtualMatchDay; // 轮次 - private Integer virtualChampId; // 赛季 - private Integer virtualLegOrder; // 淘汰赛回合 - private Integer virtualWeekDay; // 小组赛比赛日 - private Integer virtualBlockId; // 期 - private Integer leaguePhase; // 联赛阶段 - private String maxStake; // 最大投注额 - private String validSettleStakeAmount; // 有效已结算投注额 - private String validSettleAmount; // 有效返还额 - private String cashOutCancelStake; // 提前结算取消总额 - private Integer walletType; // 钱包类型 - private Integer version; // 数据变更标记 - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailRequest.java deleted file mode 100644 index 85f678d..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailRequest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class TransferDetailRequest implements Serializable { - - - /** - * 业务id,不能为null - */ - private String businessId; - - /** - * 渠道用户ID,不能为null - */ - private String merchantUserId; - - /** - * 转账类型 , see enum: transfer_type_enum 不能为空 - */ - private String transferType; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("businessId", businessId); - map.put("merchantUserId", merchantUserId); - map.put("transferType", transferType); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailResponse.java deleted file mode 100644 index 614edd0..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferDetailResponse.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @author cengy - */ -@Data -public class TransferDetailResponse implements Serializable { - private static final long serialVersionUID = 1L; - - private Boolean success; - private String message; - private TransferDetail data; - private Integer code; - - @Data - public static class TransferDetail implements Serializable { - private static final long serialVersionUID = 1L; - - private Integer id; - private Integer userId; - private String merchantUserId; - private String businessId; - // IN 转入 - // OUT 转出 - private String transferType; - private BigDecimal beforeTransferAmount; - private BigDecimal afterTransferAmount; - private Integer status; // 状态 , see enum: transfer_status_enum, 1 Successful 0 Failure - private Long createTime; // 记录创建时间 - private Integer currencyId;// 币种id , see enum: currency - - } - -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInRequest.java deleted file mode 100644 index 52b4c62..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInRequest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class TransferInRequest implements Serializable { - - /** - * 转账金额,不能为null - * 必须大於或等於0 - */ - private BigDecimal amount; - - /** - * 业务id,不能为null - */ - private String businessId; - - /** - * 渠道用户ID,不能为null - */ - private String merchantUserId; - - /** - * 币种id,可不传入 - */ - private Integer currencyId; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("amount", amount); - map.put("businessId", businessId); - map.put("currencyId", currencyId); - map.put("merchantUserId", merchantUserId); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInResponse.java deleted file mode 100644 index e5ab6ca..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferInResponse.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @author cengy - */ -@Data -public class TransferInResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean success; - private BigDecimal data; - private Integer code; - private String message; -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutRequest.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutRequest.java deleted file mode 100644 index 37fc465..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutRequest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ff.sports.fb.dto; - -import com.alibaba.fastjson2.JSON; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -@Data -public class TransferOutRequest implements Serializable { - - /** - * 转账金额,不能为null - * 必须大於或等於0 - */ - private BigDecimal amount; - - /** - * 业务id,不能为null - */ - private String businessId; - - /** - * 渠道用户ID,不能为null - */ - private String merchantUserId; - - /** - * 币种id,可不传入 - */ - private Integer currencyId; - - public String toJSON() { - Map map = new LinkedHashMap<>(); - map.put("amount", amount); - map.put("businessId", businessId); - map.put("currencyId", currencyId); - map.put("merchantUserId", merchantUserId); - return JSON.toJSONString(map); - } -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutResponse.java b/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutResponse.java deleted file mode 100644 index 9fb8897..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/dto/TransferOutResponse.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ff.sports.fb.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @author cengy - */ -@Data -public class TransferOutResponse implements Serializable { - - private static final long serialVersionUID = 1L; - - private Boolean success; - private BigDecimal data; - private Integer code; - private String message; -} diff --git a/ff-game/src/main/java/com/ff/sports/fb/impl/FBSportsServiceImpl.java b/ff-game/src/main/java/com/ff/sports/fb/impl/FBSportsServiceImpl.java deleted file mode 100644 index 15232d8..0000000 --- a/ff-game/src/main/java/com/ff/sports/fb/impl/FBSportsServiceImpl.java +++ /dev/null @@ -1,755 +0,0 @@ -package com.ff.sports.fb.impl; - -import cn.hutool.core.util.IdUtil; -import com.ff.base.constant.CacheConstants; -import com.ff.base.constant.Constants; -import com.ff.base.core.redis.RedisCache; -import com.ff.base.enums.*; -import com.ff.base.exception.base.ApiException; -import com.ff.base.exception.base.BaseException; -import com.ff.base.utils.DateUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.sign.Md5Utils; -import com.ff.base.utils.uuid.IdUtils; -import com.ff.game.api.IGamesService; -import com.ff.game.api.request.*; -import com.ff.game.domain.*; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import com.ff.game.service.IGameService; -import com.ff.member.domain.Member; -import com.ff.member.service.IMemberService; -import com.ff.sports.fb.client.FBSportsClient; -import com.ff.sports.fb.dto.*; -import com.ff.utils.TimestampFromString; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.ObjectUtils; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - - -/** - * FB体育 - * - * @author shi - * @date 2024/10/21 - */ -@Service("FBSportsService") -@Slf4j -public class FBSportsServiceImpl implements IGamesService { - - @Resource - private RedisCache redisCache; - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - @Resource - private IGameService gameService; - - - @Resource - private IMemberService memberService; - - @Resource - private FBSportsClient fbSportsClient; - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - /** - * 获得就是成功 - * - * @param errorCode 错误代码 - * @return {@link Boolean } - */ - private Boolean isSuccess(Integer errorCode) { - return 0 == errorCode; - } - - String getSign(String bodyJsonString, String merchantId, String merchantApiSecret, long requestTimestamp) { - - String stringThatNeedsToBeSigned = bodyJsonString + "." + merchantId + "." + requestTimestamp + "." + merchantApiSecret; - String sign = Md5Utils.md5New(stringThatNeedsToBeSigned); - return sign; - } - - /** - * 创建成员 - * - * @param createMemberRequestDTO 创建成员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean createMember(CreateMemberRequestDTO createMemberRequestDTO) { - - long timestamp = System.currentTimeMillis(); - CreateUserRequest request = new CreateUserRequest(); - request.setMerchantUserId(createMemberRequestDTO.getAccount()); - ArrayList currencyIds = new ArrayList<>(); - currencyIds.add(Integer.parseInt(createMemberRequestDTO.getCurrency())); - request.setCurrencyIds(currencyIds); - String jsonBody = /*SortByAttributeNameASC.get(request)*/ request.toJSON(); - String sign = getSign(jsonBody, - createMemberRequestDTO.getAgentId(), - createMemberRequestDTO.getAgentKey(), - timestamp - ); - - CreateUserResponse response = fbSportsClient.createMember( - request, - sign, - timestamp, createMemberRequestDTO.getAgentId()); - if (isSuccess(response.getCode())) { - log.info("创建会员成功, account:{}->{}", createMemberRequestDTO.getAccount(), response.getData()); - return Boolean.TRUE; - } - - log.error("创建会员失败, errorCode:{}, errorMessage:{}", response.getCode(), response.getMessage()); - throw new ApiException(ErrorCode.Create_Member_Failure.getCode()); - } - - - /** - * 按代理id进行交换转账 - * - * @param requestDTO 外汇转账moeny dto - * @return {@link Long } - */ - @Override - @Transactional - public Long exchangeTransferByAgentId(ExchangeTransferMoneyRequestDTO requestDTO) { - - Member member = memberService.selectMemberByGameAccount(requestDTO.getAccount()); - String transactionId = GamePlatforms.FBSports.getCode() + IdUtils.simpleUUID(); - List gameExchangeMonies = gameExchangeMoneyService.selectGameExchangeMoneyList( - GameExchangeMoney.builder() - .tenantKey(requestDTO.getTenantKey()) - .orderId(requestDTO.getOrderId()) - .build() - ); - Assert.isTrue(CollectionUtils.isEmpty(gameExchangeMonies), "订单号重复"); -//获取下一个自增id - GameExchangeMoney exchangeMoney = GameExchangeMoney - .builder() - .orderId(requestDTO.getOrderId()) - .tenantKey(requestDTO.getTenantKey()) - .quota(requestDTO.getQuota()) - .balance(requestDTO.getAmount()) - .exchangeType(requestDTO.getTransferType()) - .currencyCode(requestDTO.getSystemCurrency()) - .memberId(member.getId()) - .transactionId(transactionId) - .platformCode(GamePlatforms.FBSports.getCode()) - .build(); - exchangeMoney.setCreateBy(Constants.SYSTEM); - //接口限制限制50字符 - exchangeMoney.setTransactionId(transactionId); - // 转入 - if (requestDTO.getTransferType().equals(TransferType.GAMES.getCode())) { - TransferInRequest request = new TransferInRequest(); - request.setMerchantUserId(requestDTO.getAccount()); - request.setAmount(requestDTO.getAmount()); - request.setBusinessId(requestDTO.getOrderId()); - request.setCurrencyId(Integer.parseInt(requestDTO.getCurrency())); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - - TransferInResponse response = fbSportsClient.transferIn( - request, - sign, - timestamp, - requestDTO.getAgentId()); - if (isSuccess(response.getCode())) { - BigDecimal transAmount = requestDTO.getAmount(); - - exchangeMoney.setBalance(transAmount); - exchangeMoney.setCoinBefore(response.getData().subtract(transAmount)); - exchangeMoney.setCoinAfter(response.getData()); - exchangeMoney.setCurrencyBefore(response.getData().subtract(transAmount)); - exchangeMoney.setCurrencyAfter(response.getData()); - exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - } else { - throw new ApiException(ErrorCode.Transfer_In_Failure.getCode()); - } - } else { - // 获取第三方钱包余额 - MemberInfoRequestDTO memberInfoRequestDTO = MemberInfoRequestDTO.builder() - .accounts(member.getGameAccount()) - .agentId(requestDTO.getAgentId()) - .agentKey(requestDTO.getAgentKey()) - .build(); - BigDecimal balance = this.getMemberInfo(memberInfoRequestDTO).getBalance(); - - TransferOutRequest request = new TransferOutRequest(); - request.setMerchantUserId(requestDTO.getAccount()); - request.setAmount(/*requestDTO.getAmount()*/ balance); - request.setBusinessId(requestDTO.getOrderId()); - request.setCurrencyId(Integer.parseInt(requestDTO.getCurrency())); - - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - - TransferOutResponse response = fbSportsClient - .transferOut( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - - - //判断是否转移成功 - if (this.isSuccess(response.getCode())) { - BigDecimal transAmount = balance; - //更新数据 - exchangeMoney.setBalance(transAmount); - exchangeMoney.setCoinBefore(response.getData().add(transAmount)); - exchangeMoney.setCoinAfter(response.getData()); - exchangeMoney.setCurrencyBefore(response.getData().add(transAmount)); - exchangeMoney.setCurrencyAfter(response.getData()); - exchangeMoney.setStatus(StatusType.SUCCESS.getValue()); // SUCCESS - gameExchangeMoneyService.insertGameExchangeMoney(exchangeMoney); - } else { - throw new ApiException(ErrorCode.Transfer_Out_Failure.getCode()); - } - } - return exchangeMoney.getId(); - } - - /** - * 获取会员信息 - * - * @param requestDTO 会员信息请求dto - * @return {@link MemberInfoResponseDTO } - */ - @Override - public MemberInfoResponseDTO getMemberInfo(MemberInfoRequestDTO requestDTO) { - GetMemberInfoRequest request = new GetMemberInfoRequest(); - request.setMerchantUserId(requestDTO.getAccounts()); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - GetMemberInfoResponse response = fbSportsClient.getMemberInfo( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - //判断是否获取成功 - if (this.isSuccess(response.getCode())) { - BigDecimal balance = new BigDecimal("0.00"); - - for (GetMemberInfoResponse.Wallet wallet : response.getData().getWallets()) { - balance = balance.add(wallet.getBalance()); - } - return MemberInfoResponseDTO.builder() - .status(GameMemberStatus.UNKNOWN.getCode()) - .balance(balance) - .account(requestDTO.getAccounts()) - .build(); - } else { - throw new ApiException(ErrorCode.Get_Member_Info_Failure.getCode()); - } - } - - /** - * 无重定向登录 - * - * @param requestDTO 游戏登录 - * @return {@link String } - */ - @Override - public String loginWithoutRedirect(GamesLogin requestDTO) { - GetTokenRequest request = new GetTokenRequest(); - request.setMerchantUserId(requestDTO.getAccount()); - request.setPlatForm(/*requestDTO.getPlatform()*/ "mobile"); // pc,h5, mobile , see enum: plat_form_enum - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - - GetTokenResponse response = fbSportsClient.getToken( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - - if (this.isSuccess(response.getCode())) { - String token = response.getData().getToken(); - Integer userId = response.getData().getUserId(); - GetTokenResponse.ServerInfo serverInfo = response.getData().getServerInfo(); - String h5Address = serverInfo.getH5Address(); - if (StringUtils.isEmpty(h5Address)) { - throw new ApiException(ErrorCode.Get_Url_Failure.getCode()); - } - - return h5Address + - "/index.html#/" + - "?token=" + - token + - "&nickname=" + - userId + - "&apiSrc=" + - serverInfo.getApiServerAddress() + - "&pushSrc=" + - serverInfo.getPushServerAddress() + - "&virtualSrc=" + - serverInfo.getVirtualAddress() + - "&platformName=XK体育"; - } - - - /*GetUrlRequest request = new GetUrlRequest(); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - GetUrlResponse response = fbSportsClient.getUrl( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - //判断是否获取成功 - if (this.isSuccess(response.getCode())) { - List urlDTOS = new ArrayList<>(); - for (GetUrlResponse.UrlDTO urlDTO : response.getData()) { - if (urlDTO.getType() == 3) { // 3:h5 - urlDTOS.add(urlDTO); - } - } - if (urlDTOS.isEmpty()){ - throw new ApiException(ErrorCode.Get_Url_Failure.getCode()); - } - int randomIndex = new Random().nextInt(urlDTOS.size()); - GetUrlResponse.UrlDTO urlDTO = urlDTOS.get(randomIndex); - Collections.shuffle(urlDTO.getDomainList()); - return urlDTO.getDomainList().get(0).getDomain(); - }*/ - throw new ApiException(ErrorCode.Get_Url_Failure.getCode()); - } - - private static final Long GAME_ID = 11111L; - - /** - * 获取游戏列表 - * - * @param gamesBaseRequestDTO 游戏请求dto - * @return {@link String } - */ - @Transactional - @Override - public String getGameList(GamesBaseRequestDTO gamesBaseRequestDTO) { - - Platform platform = gamesBaseRequestDTO.getVendor(); - Game game = gameService.selectGameById(GAME_ID); - //不存在这个游戏 - if (ObjectUtils.isEmpty(game)) { - game = new Game(); - game.setId(/*IdUtil.getSnowflakeNextId()*/GAME_ID); - game.setSortNo(1); - //game.setPlatformId(gamePlatform.getId()); - game.setPlatformCode(platform.getPlatformCode()); - game.setPlatformType(PlatformType.SPORTS.getCode()); - game.setGameCode("1"); - game.setGameSourceType(String.valueOf(1)); - game.setGameName("FB体育"); - game.setCreateBy(Constants.SYSTEM); - NameInfo nameInfo = new NameInfo(); - nameInfo.setLang("zh-CN"); - nameInfo.setName("FB体育"); - game.setNameInfo(Collections.singletonList(nameInfo)); - gameService.insertGame(game); - } - /*GameName gameName = gameNameService.selectGameNameById(GAME_NAME_ID); - if (ObjectUtils.isEmpty(gameName)) { - gameNameService.insertGameName(GameName.builder() - .id(GAME_NAME_ID) - .gameId(game.getId()) - .gameName(game.getGameName()) - .langCode("zh-CN") - .createBy(Constants.SYSTEM) - .build()); - }*/ - - return CacheConstants.FB_Sports; - } - - /** - * 汇兑转移状态 - * - * @param requestDTO 兑换转账请求dto - * @return {@link Boolean } - */ - @Override - public ExchangeTransferStatusResponseDTO exchangeTransferStatus(ExchangeTransferStatusRequestDTO requestDTO) { - - GameExchangeMoney gameExchangeMoney = gameExchangeMoneyService.selectGameExchangeMoneyById(requestDTO.getGameExchangeMoneyId()); - if (null == gameExchangeMoney) { - throw new ApiException(ErrorCode.Transfer_Not_Exist.getCode()); - } - Integer status = StatusType.IN_PROGRESS.getValue(); - - if (!Objects.equals(gameExchangeMoney.getStatus(), StatusType.SUCCESS.getValue())) { - TransferDetailRequest request = new TransferDetailRequest(); - request.setMerchantUserId(requestDTO.getAccount()); - request.setTransferType(Objects.equals(gameExchangeMoney.getExchangeType(), TransferType.GAMES.getCode()) - ? "IN" : "OUT"); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - TransferDetailResponse response = fbSportsClient.transferDetail( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - if (this.isSuccess(response.getCode())) { - status = StatusType.SUCCESS.getValue(); - }else { - status = StatusType.FAILURE.getValue(); - } - } - - return ExchangeTransferStatusResponseDTO.builder() - .statusType(status) - .balance(gameExchangeMoney.getBalance()) - .coinBefore(gameExchangeMoney.getCoinBefore()) - .coinAfter(gameExchangeMoney.getCoinAfter()) - .build(); - } - - - /** - * 按时间获取投注记录 - * - * @param requestDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByTime(BetRecordByTimeDTO requestDTO) { - Long lend = requestDTO.getEndTime(); - Long lstart = requestDTO.getStartTime(); - //betRecordByTimeDTO.setStartTime(lstart); - //betRecordByTimeDTO.setEndTime(lend); - - OrderFilesRequest request = new OrderFilesRequest(); - request.setStartTime(lstart); - request.setEndTime(lend); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - OrderFilesResponse orderFilesResponse = fbSportsClient.orderFiles( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - if (this.isSuccess(orderFilesResponse.getCode())) { - for (OrderFilesResponse.FileId fileId : orderFilesResponse.getData()) { - try { - getOrderData(fileId.getFileId(), requestDTO); - } catch (Exception e) { - log.error("获取订单数据失败,fileId:{},agentId:{}", fileId, requestDTO.getAgentId()); - } - } - return true; - } - log.error("获取订单文件失败,agentId:{}", requestDTO.getAgentId()); - return false; - } - - void getOrderData(Long fileId, BetRecordByTimeDTO requestDTO) { - OrderInfoRequest request = new OrderInfoRequest(); - request.setFileId(fileId); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - - OrderInfoResponse orderInfoResponse = fbSportsClient.getOrderJsonData( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - if (!this.isSuccess(orderInfoResponse.getCode())) { - return; - } - List settledOrderList = new ArrayList<>(); - for (OrderInfoResponse.OrderDTO orderDTO : orderInfoResponse.getData()) { -// 0 Created 未确认 -// 1 Confirming 确认中 -// 2 Rejected 已拒单 -// 3 Canceled 已取消 -// 4 Confirmed 已接单 -// 5 Settled 已结算 - if (!orderDTO.getOrderStatus().equals(5)) { // 已结算 - continue; - } - settledOrderList.add(orderDTO); - } - this.batchInsert(settledOrderList, requestDTO); - } - - /** - * 按历史时间获取投注记录 - * - * @param requestDTO 按时间dto投注记录 - * @return {@link Boolean } - */ - @Override - public Boolean getBetRecordByHistoryTime(BetRecordByTimeDTO requestDTO) { - Long lend = requestDTO.getEndTime(); - Long lstart = requestDTO.getStartTime(); - //betRecordByTimeDTO.setStartTime(lstart); - //betRecordByTimeDTO.setEndTime(lend); - - OrderFilesRequest request = new OrderFilesRequest(); - request.setStartTime(lstart); - request.setEndTime(lend); - long timestamp = System.currentTimeMillis(); - String jsonBody = request.toJSON(); - String sign = getSign(jsonBody, - requestDTO.getAgentId(), - requestDTO.getAgentKey(), - timestamp - ); - OrderFilesResponse orderFilesResponse = fbSportsClient.orderFiles( - request, - sign, - timestamp, - requestDTO.getAgentId() - ); - if (this.isSuccess(orderFilesResponse.getCode())) { - for (OrderFilesResponse.FileId fileId : orderFilesResponse.getData()) { - try { - getOrderData(fileId.getFileId(), requestDTO); - } catch (Exception e) { - log.error("获取订单数据失败,fileId:{},agentId:{}", fileId, requestDTO.getAgentId()); - } - } - return true; - } - log.error("获取订单文件失败,agentId:{}", requestDTO.getAgentId()); - return false; - } - - - /** - * 赠送免费局数 - * - * @param createFreeSpinRequest 创建自由旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean createFreeSpin(CreateFreeSpinRequestDTO createFreeSpinRequest) { - throw new BaseException("暂不支持免费局数"); - } - - /** - * 获取游戏详细信息 - * - * @param getGameDetailRequestDTO 获取游戏详细信息请求dto - * @return {@link GetGameDetailResponseDTO } - */ - @Override - public GetGameDetailResponseDTO getGameDetail(GetGameDetailRequestDTO getGameDetailRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 强制会员从游戏注销 - * - * @param kickMemberRequestDTO 踢会员请求dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMember(KickMemberRequestDTO kickMemberRequestDTO) { - - return Boolean.FALSE; - } - - /** - * 踢成员全部 - * - * @param kickMemberAllDTO 踢成员全部dto - * @return {@link Boolean } - */ - @Override - public Boolean kickMemberAll(KickMemberAllDTO kickMemberAllDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 免费游戏玩家使用的纪录 - * - * @param getFreeSpinDashflowRequestDTO 获取自由旋转dashflow请求dto - * @return {@link List }<{@link GameFreeRecord }> - */ - @Override - public List getFreeSpinDashflow(GetFreeSpinDashflowRequestDTO getFreeSpinDashflowRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 取消赠送免费局数 - * - * @param cancelFreeSpinRequestDTO 取消免费旋转请求 - * @return {@link Boolean } - */ - @Override - public Boolean cancelFreeSpin(CancelFreeSpinRequestDTO cancelFreeSpinRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 游戏演示登录 - * - * @param gameDemoLoginRequestDTO 游戏演示登录请求dto - * @return {@link GameDemoLoginResponseDTO } - */ - @Override - public GameDemoLoginResponseDTO gameDemoLogin(GameDemoLoginRequestDTO gameDemoLoginRequestDTO) { - throw new ApiException(ErrorCode.PLATFORM_NOT_METHODS.getCode()); - } - - /** - * 批量插入 - * - * @param settledOrderList 投注记录 - */ - private void batchInsert(List settledOrderList, BetRecordByTimeDTO betRecordByTimeDTO) { - List gameBettingDetails = new ArrayList<>(); - List wagersIds = new ArrayList<>(); - //数据组装 - List dataList = settledOrderList; - if (CollectionUtils.isEmpty(dataList)) { - return; - } - - //数据转化 - for (OrderInfoResponse.OrderDTO dataBean : dataList) { - GameBettingDetails bettingDetails = this.dataBuild(GamesDataBuildDTO.builder() - .platform(betRecordByTimeDTO.getVendor()) - .data(dataBean).build()); - if (!ObjectUtils.isEmpty(bettingDetails)) { - bettingDetails.setId(IdUtil.getSnowflakeNextId()); - gameBettingDetails.add(bettingDetails); - } - wagersIds.add(dataBean.getId()); - } - if (CollectionUtils.isEmpty(gameBettingDetails)) { - return; - } - //查询重复数据id - List removeWagersIds = gameBettingDetailsService - .selectGameBettingDetailsByWagersId(wagersIds, GamePlatforms.FBSports.getCode()); - //用steam流清除list中与wagersIds集合相同的数据 - gameBettingDetails = gameBettingDetails.stream() - .filter(detail -> !removeWagersIds.contains(detail.getWagersId())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(gameBettingDetails)) { - gameBettingDetailsService.batchInsert(gameBettingDetails); - } - } - - /** - * 数据构建 - * - * @param gamesDataBuildDTO 数据 - * @return {@link GameBettingDetails } - */ - @Override - public GameBettingDetails dataBuild(GamesDataBuildDTO gamesDataBuildDTO) { - - //转化类 - OrderInfoResponse.OrderDTO dataBean = (OrderInfoResponse.OrderDTO) gamesDataBuildDTO.getData(); - Member member = memberService.selectMemberByGameAccount(dataBean.getMerchantUserId()); - if (ObjectUtils.isEmpty(member)) { - return null; - } - List gameList = redisCache.getCacheList(CacheConstants.FB_Sports); - Game game = gameList.get(0); - BigDecimal originPayoffAmount = new BigDecimal(dataBean.getSettleAmount()); - BigDecimal betAmount = new BigDecimal(dataBean.getStakeAmount()); - - int compareResult = originPayoffAmount.compareTo(betAmount); - long payoffTime = TimestampFromString.to(dataBean.getSettleTime()); - long createTime = TimestampFromString.to(dataBean.getCreateTime()); - Platform platform = gamesDataBuildDTO.getPlatform(); - String systemCurrency = platform.getOurCurrency(dataBean.getCurrency().toString()); - //数据构造 - GameBettingDetails gameBettingDetails = GameBettingDetails.builder() - .tenantKey(member.getTenantKey()) - //保存我们的币种id - .currencyCode(systemCurrency) - .memberId(member.getId()) - .gameCode(game.getGameCode()) - .gameType(8) // 体育 - .platformCode(GamePlatforms.FBSports.getCode()) - .gameId(game.getGameId()) - .gameName(game.getGameName()) - .gameStatus(compareResult > 0 ? GameStatus.WIN.getCode() : compareResult < 0 ? GameStatus.FAIL.getCode() : GameStatus.FLAT.getCode()) - .gameStatusType(1) // 一般下注 - .gameCurrencyCode(dataBean.getCurrency().toString()) - .account(dataBean.getMerchantUserId()) - .wagersId(dataBean.getId()) - .wagersTime(createTime) - .betAmount(betAmount) - .payoffTime(payoffTime) - .payoffAmount(originPayoffAmount.abs()) - .settlementTime(payoffTime) - .turnover(betAmount) - .orderNo(dataBean.getId()) - .settlementStatus(SettlementStatusEnum.COMPLETED.getCode()) - .build(); - gameBettingDetails.setCreateBy(Constants.SYSTEM); - gameBettingDetails.setCreateTime(DateUtils.getNowDate()); - return gameBettingDetails; - } -} diff --git a/ff-game/src/main/java/com/ff/sys/controller/SysFeedbackController.java b/ff-game/src/main/java/com/ff/sys/controller/SysFeedbackController.java deleted file mode 100644 index 04a8171..0000000 --- a/ff-game/src/main/java/com/ff/sys/controller/SysFeedbackController.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.ff.sys.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; - -import com.ff.base.enums.Status; -import com.ff.base.utils.SecurityUtils; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.sys.domain.SysFeedback; -import com.ff.sys.service.ISysFeedbackService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 系统反馈Controller - * - * @author shi - * @date 2025-02-27 - */ -@RestController -@RequestMapping("/sys/feedback") -public class SysFeedbackController extends BaseController -{ - @Autowired - private ISysFeedbackService sysFeedbackService; - - /** - * 查询系统反馈列表 - */ - @PreAuthorize("@ss.hasPermi('sys:feedback:list')") - @GetMapping("/list") - public TableDataInfo list(SysFeedback sysFeedback) - { - startPage(); - List list = sysFeedbackService.selectSysFeedbackList(sysFeedback); - return getDataTable(list); - } - - - /** - * 获取系统反馈详细信息 - */ - @PreAuthorize("@ss.hasPermi('sys:feedback:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(sysFeedbackService.selectSysFeedbackById(id)); - } - - /** - * 新增系统反馈 - */ - @PreAuthorize("@ss.hasPermi('sys:feedback:add')") - @Log(title = "系统反馈", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody SysFeedback sysFeedback) - { - sysFeedback.setUserId(getUserId()); - sysFeedback.setUserType(SecurityUtils.getLoginUser().getUser().getLoginType()); - return toAjax(sysFeedbackService.insertSysFeedback(sysFeedback)); - } - - /** - * 修改系统反馈 - */ - @PreAuthorize("@ss.hasPermi('sys:feedback:edit')") - @Log(title = "系统反馈", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody SysFeedback sysFeedback) - { - sysFeedback.setStatus(Status.PROCESSED.getValue()); - return toAjax(sysFeedbackService.updateSysFeedback(sysFeedback)); - } - - /** - * 删除系统反馈 - */ - @PreAuthorize("@ss.hasPermi('sys:feedback:remove')") - @Log(title = "系统反馈", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(sysFeedbackService.deleteSysFeedbackByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/sys/controller/SysNoticeController.java b/ff-game/src/main/java/com/ff/sys/controller/SysNoticeController.java deleted file mode 100644 index e4a5477..0000000 --- a/ff-game/src/main/java/com/ff/sys/controller/SysNoticeController.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.ff.sys.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.sys.domain.SysNotice; -import com.ff.sys.service.ISysNoticeService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 系统公告Controller - * - * @author shi - * @date 2025-02-28 - */ -@RestController -@RequestMapping("/sys/notice") -public class SysNoticeController extends BaseController -{ - @Autowired - private ISysNoticeService sysNoticeService; - - /** - * 查询系统公告列表 - */ - @PreAuthorize("@ss.hasPermi('sys:notice:list')") - @GetMapping("/list") - public TableDataInfo list(SysNotice sysNotice) - { - startPage(); - List list = sysNoticeService.selectSysNoticeList(sysNotice); - return getDataTable(list); - } - - - - /** - * 获取系统公告详细信息 - */ - @PreAuthorize("@ss.hasPermi('sys:notice:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(sysNoticeService.selectSysNoticeById(id)); - } - - /** - * 新增系统公告 - */ - @PreAuthorize("@ss.hasPermi('sys:notice:add')") - @Log(title = "系统公告", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody SysNotice sysNotice) - { - return toAjax(sysNoticeService.insertSysNotice(sysNotice)); - } - - /** - * 修改系统公告 - */ - @PreAuthorize("@ss.hasPermi('sys:notice:edit')") - @Log(title = "系统公告", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody SysNotice sysNotice) - { - return toAjax(sysNoticeService.updateSysNotice(sysNotice)); - } - - /** - * 删除系统公告 - */ - @PreAuthorize("@ss.hasPermi('sys:notice:remove')") - @Log(title = "系统公告", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(sysNoticeService.deleteSysNoticeByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/sys/mapper/SysFeedbackMapper.java b/ff-game/src/main/java/com/ff/sys/mapper/SysFeedbackMapper.java deleted file mode 100644 index 79cdd25..0000000 --- a/ff-game/src/main/java/com/ff/sys/mapper/SysFeedbackMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.sys.mapper; - -import java.util.List; -import com.ff.sys.domain.SysFeedback; - -/** - * 系统反馈Mapper接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface SysFeedbackMapper -{ - /** - * 查询系统反馈 - * - * @param id 系统反馈主键 - * @return 系统反馈 - */ - SysFeedback selectSysFeedbackById(Long id); - - /** - * 查询系统反馈列表 - * - * @param sysFeedback 系统反馈 - * @return 系统反馈集合 - */ - List selectSysFeedbackList(SysFeedback sysFeedback); - - /** - * 新增系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - int insertSysFeedback(SysFeedback sysFeedback); - - /** - * 修改系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - int updateSysFeedback(SysFeedback sysFeedback); - - /** - * 删除系统反馈 - * - * @param id 系统反馈主键 - * @return 结果 - */ - int deleteSysFeedbackById(Long id); - - /** - * 批量删除系统反馈 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteSysFeedbackByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/sys/mapper/SysNoticeMapper.java b/ff-game/src/main/java/com/ff/sys/mapper/SysNoticeMapper.java deleted file mode 100644 index 3adc3a6..0000000 --- a/ff-game/src/main/java/com/ff/sys/mapper/SysNoticeMapper.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.sys.mapper; - -import java.util.List; -import com.ff.sys.domain.SysNotice; - -/** - * 系统公告Mapper接口 - * - * @author shi - * @date 2025-02-28 - */ -public interface SysNoticeMapper -{ - /** - * 查询系统公告 - * - * @param id 系统公告主键 - * @return 系统公告 - */ - SysNotice selectSysNoticeById(Long id); - - /** - * 查询系统公告列表 - * - * @param sysNotice 系统公告 - * @return 系统公告集合 - */ - List selectSysNoticeList(SysNotice sysNotice); - - /** - * 新增系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - int insertSysNotice(SysNotice sysNotice); - - /** - * 修改系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - int updateSysNotice(SysNotice sysNotice); - - /** - * 删除系统公告 - * - * @param id 系统公告主键 - * @return 结果 - */ - int deleteSysNoticeById(Long id); - - /** - * 批量删除系统公告 - * - * @param ids 需要删除的数据主键集合 - * @return 结果 - */ - int deleteSysNoticeByIds(Long[] ids); -} diff --git a/ff-game/src/main/java/com/ff/sys/service/ISysFeedbackService.java b/ff-game/src/main/java/com/ff/sys/service/ISysFeedbackService.java deleted file mode 100644 index 1a5a43b..0000000 --- a/ff-game/src/main/java/com/ff/sys/service/ISysFeedbackService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.sys.service; - -import java.util.List; -import com.ff.sys.domain.SysFeedback; - -/** - * 系统反馈Service接口 - * - * @author shi - * @date 2025-02-27 - */ -public interface ISysFeedbackService -{ - /** - * 查询系统反馈 - * - * @param id 系统反馈主键 - * @return 系统反馈 - */ - SysFeedback selectSysFeedbackById(Long id); - - /** - * 查询系统反馈列表 - * - * @param sysFeedback 系统反馈 - * @return 系统反馈集合 - */ - List selectSysFeedbackList(SysFeedback sysFeedback); - - /** - * 新增系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - int insertSysFeedback(SysFeedback sysFeedback); - - /** - * 修改系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - int updateSysFeedback(SysFeedback sysFeedback); - - /** - * 批量删除系统反馈 - * - * @param ids 需要删除的系统反馈主键集合 - * @return 结果 - */ - int deleteSysFeedbackByIds(Long[] ids); - - /** - * 删除系统反馈信息 - * - * @param id 系统反馈主键 - * @return 结果 - */ - int deleteSysFeedbackById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/sys/service/ISysNoticeService.java b/ff-game/src/main/java/com/ff/sys/service/ISysNoticeService.java deleted file mode 100644 index bc2d210..0000000 --- a/ff-game/src/main/java/com/ff/sys/service/ISysNoticeService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.ff.sys.service; - -import java.util.List; -import com.ff.sys.domain.SysNotice; - -/** - * 系统公告Service接口 - * - * @author shi - * @date 2025-02-28 - */ -public interface ISysNoticeService -{ - /** - * 查询系统公告 - * - * @param id 系统公告主键 - * @return 系统公告 - */ - SysNotice selectSysNoticeById(Long id); - - /** - * 查询系统公告列表 - * - * @param sysNotice 系统公告 - * @return 系统公告集合 - */ - List selectSysNoticeList(SysNotice sysNotice); - - /** - * 新增系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - int insertSysNotice(SysNotice sysNotice); - - /** - * 修改系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - int updateSysNotice(SysNotice sysNotice); - - /** - * 批量删除系统公告 - * - * @param ids 需要删除的系统公告主键集合 - * @return 结果 - */ - int deleteSysNoticeByIds(Long[] ids); - - /** - * 删除系统公告信息 - * - * @param id 系统公告主键 - * @return 结果 - */ - int deleteSysNoticeById(Long id); -} diff --git a/ff-game/src/main/java/com/ff/sys/service/impl/SysFeedbackServiceImpl.java b/ff-game/src/main/java/com/ff/sys/service/impl/SysFeedbackServiceImpl.java deleted file mode 100644 index 478565a..0000000 --- a/ff-game/src/main/java/com/ff/sys/service/impl/SysFeedbackServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.sys.service.impl; - -import java.util.List; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.sys.mapper.SysFeedbackMapper; -import com.ff.sys.domain.SysFeedback; -import com.ff.sys.service.ISysFeedbackService; -import cn.hutool.core.util.IdUtil; - - -/** - * 系统反馈Service业务层处理 - * - * @author shi - * @date 2025-02-27 - */ -@Service -public class SysFeedbackServiceImpl implements ISysFeedbackService -{ - @Autowired - private SysFeedbackMapper sysFeedbackMapper; - - /** - * 查询系统反馈 - * - * @param id 系统反馈主键 - * @return 系统反馈 - */ - @Override - public SysFeedback selectSysFeedbackById(Long id) - { - return sysFeedbackMapper.selectSysFeedbackById(id); - } - - /** - * 查询系统反馈列表 - * - * @param sysFeedback 系统反馈 - * @return 系统反馈 - */ - @Override - public List selectSysFeedbackList(SysFeedback sysFeedback) - { - return sysFeedbackMapper.selectSysFeedbackList(sysFeedback); - } - - /** - * 新增系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - @Override - public int insertSysFeedback(SysFeedback sysFeedback) - { - sysFeedback.setId(IdUtil.getSnowflakeNextId()); - sysFeedback.setCreateTime(DateUtils.getNowDate()); - return sysFeedbackMapper.insertSysFeedback(sysFeedback); - } - - /** - * 修改系统反馈 - * - * @param sysFeedback 系统反馈 - * @return 结果 - */ - @Override - public int updateSysFeedback(SysFeedback sysFeedback) - { - sysFeedback.setUpdateTime(DateUtils.getNowDate()); - return sysFeedbackMapper.updateSysFeedback(sysFeedback); - } - - /** - * 批量删除系统反馈 - * - * @param ids 需要删除的系统反馈主键 - * @return 结果 - */ - @Override - public int deleteSysFeedbackByIds(Long[] ids) - { - return sysFeedbackMapper.deleteSysFeedbackByIds(ids); - } - - /** - * 删除系统反馈信息 - * - * @param id 系统反馈主键 - * @return 结果 - */ - @Override - public int deleteSysFeedbackById(Long id) - { - return sysFeedbackMapper.deleteSysFeedbackById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/sys/service/impl/SysNoticeServiceImpl.java b/ff-game/src/main/java/com/ff/sys/service/impl/SysNoticeServiceImpl.java deleted file mode 100644 index 497c005..0000000 --- a/ff-game/src/main/java/com/ff/sys/service/impl/SysNoticeServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.ff.sys.service.impl; - -import java.util.List; -import com.ff.base.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.ff.sys.mapper.SysNoticeMapper; -import com.ff.sys.domain.SysNotice; -import com.ff.sys.service.ISysNoticeService; -import cn.hutool.core.util.IdUtil; - - -/** - * 系统公告Service业务层处理 - * - * @author shi - * @date 2025-02-28 - */ -@Service -public class SysNoticeServiceImpl implements ISysNoticeService -{ - @Autowired - private SysNoticeMapper sysNoticeMapper; - - /** - * 查询系统公告 - * - * @param id 系统公告主键 - * @return 系统公告 - */ - @Override - public SysNotice selectSysNoticeById(Long id) - { - return sysNoticeMapper.selectSysNoticeById(id); - } - - /** - * 查询系统公告列表 - * - * @param sysNotice 系统公告 - * @return 系统公告 - */ - @Override - public List selectSysNoticeList(SysNotice sysNotice) - { - return sysNoticeMapper.selectSysNoticeList(sysNotice); - } - - /** - * 新增系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - @Override - public int insertSysNotice(SysNotice sysNotice) - { - sysNotice.setId(IdUtil.getSnowflakeNextId()); - sysNotice.setCreateTime(DateUtils.getNowDate()); - return sysNoticeMapper.insertSysNotice(sysNotice); - } - - /** - * 修改系统公告 - * - * @param sysNotice 系统公告 - * @return 结果 - */ - @Override - public int updateSysNotice(SysNotice sysNotice) - { - sysNotice.setUpdateTime(DateUtils.getNowDate()); - return sysNoticeMapper.updateSysNotice(sysNotice); - } - - /** - * 批量删除系统公告 - * - * @param ids 需要删除的系统公告主键 - * @return 结果 - */ - @Override - public int deleteSysNoticeByIds(Long[] ids) - { - return sysNoticeMapper.deleteSysNoticeByIds(ids); - } - - /** - * 删除系统公告信息 - * - * @param id 系统公告主键 - * @return 结果 - */ - @Override - public int deleteSysNoticeById(Long id) - { - return sysNoticeMapper.deleteSysNoticeById(id); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysConfigController.java b/ff-game/src/main/java/com/ff/system/SysConfigController.java deleted file mode 100644 index 94311f2..0000000 --- a/ff-game/src/main/java/com/ff/system/SysConfigController.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Anonymous; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.domain.SysConfig; -import com.ff.base.system.service.ISysConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 参数配置 信息操作处理 - * - * @author ff - */ -@RestController -@RequestMapping("/system/config") -public class SysConfigController extends BaseController -{ - @Autowired - private ISysConfigService configService; - - /** - * 获取参数配置列表 - */ - @PreAuthorize("@ss.hasPermi('system:config:list')") - @GetMapping("/list") - public TableDataInfo list(SysConfig config) - { - startPage(); - List list = configService.selectConfigList(config); - return getDataTable(list); - } - - @Log(title = "参数管理", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:config:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysConfig config) - { - List list = configService.selectConfigList(config); - ExcelUtil util = new ExcelUtil(SysConfig.class); - util.exportExcel(response, list, "参数数据"); - } - - /** - * 根据参数编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:config:query')") - @GetMapping(value = "/{configId}") - public AjaxResult getInfo(@PathVariable Long configId) - { - return success(configService.selectConfigById(configId)); - } - - /** - * 根据参数键名查询参数值 - */ - @Anonymous - @GetMapping(value = "/configKey/{configKey}") - public AjaxResult getConfigKey(@PathVariable String configKey) - { - return success(configService.selectConfigByKey(configKey)); - } - - /** - * 新增参数配置 - */ - @PreAuthorize("@ss.hasPermi('system:config:add')") - @Log(title = "参数管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysConfig config) - { - if (!configService.checkConfigKeyUnique(config)) - { - return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); - } - config.setCreateBy(getUsername()); - return toAjax(configService.insertConfig(config)); - } - - /** - * 修改参数配置 - */ - @PreAuthorize("@ss.hasPermi('system:config:edit')") - @Log(title = "参数管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysConfig config) - { - if (!configService.checkConfigKeyUnique(config)) - { - return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); - } - config.setUpdateBy(getUsername()); - return toAjax(configService.updateConfig(config)); - } - - /** - * 删除参数配置 - */ - @PreAuthorize("@ss.hasPermi('system:config:remove')") - @Log(title = "参数管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{configIds}") - public AjaxResult remove(@PathVariable Long[] configIds) - { - configService.deleteConfigByIds(configIds); - return success(); - } - - /** - * 刷新参数缓存 - */ - @PreAuthorize("@ss.hasPermi('system:config:remove')") - @Log(title = "参数管理", businessType = BusinessType.CLEAN) - @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() - { - configService.resetConfigCache(); - return success(); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysDatasourceController.java b/ff-game/src/main/java/com/ff/system/SysDatasourceController.java deleted file mode 100644 index 0372b26..0000000 --- a/ff-game/src/main/java/com/ff/system/SysDatasourceController.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.ff.system; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; - -import com.ff.base.system.domain.SysDatasource; -import com.ff.base.system.service.ISysDatasourceService; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 租户数据源Controller - * - * @author liukang - * @date 2024-11-20 - */ -@RestController -@RequestMapping("/system/datasource") -public class SysDatasourceController extends BaseController -{ - @Autowired - private ISysDatasourceService sysDatasourceService; - - /** - * 查询租户数据源列表 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:list')") - @GetMapping("/list") - public TableDataInfo list(SysDatasource sysDatasource) - { - startPage(); - List list = sysDatasourceService.selectSysDatasourceList(sysDatasource); - return getDataTable(list); - } - - /** - * 导出租户数据源列表 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:export')") - @Log(title = "租户数据源", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, SysDatasource sysDatasource) - { - List list = sysDatasourceService.selectSysDatasourceList(sysDatasource); - ExcelUtil util = new ExcelUtil(SysDatasource.class); - util.exportExcel(response, list, "租户数据源数据"); - } - - /** - * 获取租户数据源详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return success(sysDatasourceService.selectSysDatasourceById(id)); - } - - /** - * 新增租户数据源 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:add')") - @Log(title = "租户数据源", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody SysDatasource sysDatasource) - { - return toAjax(sysDatasourceService.insertSysDatasource(sysDatasource)); - } - - /** - * 修改租户数据源 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:edit')") - @Log(title = "租户数据源", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody SysDatasource sysDatasource) - { - return toAjax(sysDatasourceService.updateSysDatasource(sysDatasource)); - } - - /** - * 删除租户数据源 - */ - @PreAuthorize("@ss.hasPermi('system:datasource:remove')") - @Log(title = "租户数据源", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(sysDatasourceService.deleteSysDatasourceByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysDeptController.java b/ff-game/src/main/java/com/ff/system/SysDeptController.java deleted file mode 100644 index 9438ab4..0000000 --- a/ff-game/src/main/java/com/ff/system/SysDeptController.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.constant.UserConstants; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysDept; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.StringUtils; -import com.ff.base.system.service.ISysDeptService; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 部门信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/dept") -public class SysDeptController extends BaseController -{ - @Autowired - private ISysDeptService deptService; - - /** - * 获取部门列表 - */ - @PreAuthorize("@ss.hasPermi('system:dept:list')") - @GetMapping("/list") - public AjaxResult list(SysDept dept) - { - List depts = deptService.selectDeptList(dept); - return success(depts); - } - - /** - * 查询部门列表(排除节点) - */ - @PreAuthorize("@ss.hasPermi('system:dept:list')") - @GetMapping("/list/exclude/{deptId}") - public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) - { - List depts = deptService.selectDeptList(new SysDept()); - depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")); - return success(depts); - } - - /** - * 根据部门编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:dept:query')") - @GetMapping(value = "/{deptId}") - public AjaxResult getInfo(@PathVariable Long deptId) - { - deptService.checkDeptDataScope(deptId); - return success(deptService.selectDeptById(deptId)); - } - - /** - * 新增部门 - */ - @PreAuthorize("@ss.hasPermi('system:dept:add')") - @Log(title = "部门管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDept dept) - { - if (!deptService.checkDeptNameUnique(dept)) - { - return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); - } - dept.setCreateBy(getUsername()); - return toAjax(deptService.insertDept(dept)); - } - - /** - * 修改部门 - */ - @PreAuthorize("@ss.hasPermi('system:dept:edit')") - @Log(title = "部门管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDept dept) - { - Long deptId = dept.getDeptId(); - deptService.checkDeptDataScope(deptId); - if (!deptService.checkDeptNameUnique(dept)) - { - return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); - } - else if (dept.getParentId().equals(deptId)) - { - return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); - } - else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) - { - return error("该部门包含未停用的子部门!"); - } - dept.setUpdateBy(getUsername()); - return toAjax(deptService.updateDept(dept)); - } - - /** - * 删除部门 - */ - @PreAuthorize("@ss.hasPermi('system:dept:remove')") - @Log(title = "部门管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{deptId}") - public AjaxResult remove(@PathVariable Long deptId) - { - if (deptService.hasChildByDeptId(deptId)) - { - return warn("存在下级部门,不允许删除"); - } - if (deptService.checkDeptExistUser(deptId)) - { - return warn("部门存在用户,不允许删除"); - } - deptService.checkDeptDataScope(deptId); - return toAjax(deptService.deleteDeptById(deptId)); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysDictDataController.java b/ff-game/src/main/java/com/ff/system/SysDictDataController.java deleted file mode 100644 index 8c07d02..0000000 --- a/ff-game/src/main/java/com/ff/system/SysDictDataController.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.ff.system; - -import com.fasterxml.jackson.annotation.JsonView; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysDictData; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.service.ISysDictDataService; -import com.ff.base.system.service.ISysDictTypeService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.List; - -/** - * 数据字典信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/dict/data") -public class SysDictDataController extends BaseController -{ - @Autowired - private ISysDictDataService dictDataService; - - @Autowired - private ISysDictTypeService dictTypeService; - - @PreAuthorize("@ss.hasPermi('system:dict:list')") - @GetMapping("/allList") - @JsonView(SysDictData.DictDataSimpleView.class) - public AjaxResult allList(SysDictData dictData) - { - dictData.setStatus("0"); - List list = dictDataService.selectDictDataList(dictData); - return AjaxResult.success(list); - } - - @PreAuthorize("@ss.hasPermi('system:dict:list')") - @GetMapping("/list") - public TableDataInfo list(SysDictData dictData) - { - startPage(); - List list = dictDataService.selectDictDataList(dictData); - return getDataTable(list); - } - - @Log(title = "字典数据", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:dict:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysDictData dictData) - { - List list = dictDataService.selectDictDataList(dictData); - ExcelUtil util = new ExcelUtil(SysDictData.class); - util.exportExcel(response, list, "字典数据"); - } - - /** - * 查询字典数据详细 - */ - @PreAuthorize("@ss.hasPermi('system:dict:query')") - @GetMapping(value = "/{dictCode}") - public AjaxResult getInfo(@PathVariable Long dictCode) - { - return success(dictDataService.selectDictDataById(dictCode)); - } - - /** - * 根据字典类型查询字典数据信息 - */ - @GetMapping(value = "/type/{dictType}") - public AjaxResult dictType(@PathVariable String dictType) - { - List data = dictTypeService.selectDictDataByType(dictType); - if (StringUtils.isNull(data)) - { - data = new ArrayList(); - } - return success(data); - } - - /** - * 新增字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:add')") - @Log(title = "字典数据", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictData dict) - { - dict.setCreateBy(getUsername()); - return toAjax(dictDataService.insertDictData(dict)); - } - - /** - * 修改保存字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:edit')") - @Log(title = "字典数据", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictData dict) - { - dict.setUpdateBy(getUsername()); - return toAjax(dictDataService.updateDictData(dict)); - } - - /** - * 删除字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:remove')") - @Log(title = "字典类型", businessType = BusinessType.DELETE) - @DeleteMapping("/{dictCodes}") - public AjaxResult remove(@PathVariable Long[] dictCodes) - { - dictDataService.deleteDictDataByIds(dictCodes); - return success(); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysDictTypeController.java b/ff-game/src/main/java/com/ff/system/SysDictTypeController.java deleted file mode 100644 index 7406791..0000000 --- a/ff-game/src/main/java/com/ff/system/SysDictTypeController.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysDictType; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.service.ISysDictTypeService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 数据字典信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/dict/type") -public class SysDictTypeController extends BaseController -{ - @Autowired - private ISysDictTypeService dictTypeService; - - @PreAuthorize("@ss.hasPermi('system:dict:list')") - @GetMapping("/list") - public TableDataInfo list(SysDictType dictType) - { - startPage(); - List list = dictTypeService.selectDictTypeList(dictType); - return getDataTable(list); - } - - @Log(title = "字典类型", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:dict:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysDictType dictType) - { - List list = dictTypeService.selectDictTypeList(dictType); - ExcelUtil util = new ExcelUtil(SysDictType.class); - util.exportExcel(response, list, "字典类型"); - } - - /** - * 查询字典类型详细 - */ - @PreAuthorize("@ss.hasPermi('system:dict:query')") - @GetMapping(value = "/{dictId}") - public AjaxResult getInfo(@PathVariable Long dictId) - { - return success(dictTypeService.selectDictTypeById(dictId)); - } - - /** - * 新增字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:add')") - @Log(title = "字典类型", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysDictType dict) - { - if (!dictTypeService.checkDictTypeUnique(dict)) - { - return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); - } - dict.setCreateBy(getUsername()); - return toAjax(dictTypeService.insertDictType(dict)); - } - - /** - * 修改字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:edit')") - @Log(title = "字典类型", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysDictType dict) - { - if (!dictTypeService.checkDictTypeUnique(dict)) - { - return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); - } - dict.setUpdateBy(getUsername()); - return toAjax(dictTypeService.updateDictType(dict)); - } - - /** - * 删除字典类型 - */ - @PreAuthorize("@ss.hasPermi('system:dict:remove')") - @Log(title = "字典类型", businessType = BusinessType.DELETE) - @DeleteMapping("/{dictIds}") - public AjaxResult remove(@PathVariable Long[] dictIds) - { - dictTypeService.deleteDictTypeByIds(dictIds); - return success(); - } - - /** - * 刷新字典缓存 - */ - @PreAuthorize("@ss.hasPermi('system:dict:remove')") - @Log(title = "字典类型", businessType = BusinessType.CLEAN) - @DeleteMapping("/refreshCache") - public AjaxResult refreshCache() - { - dictTypeService.resetDictCache(); - return success(); - } - - /** - * 获取字典选择框列表 - */ - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - List dictTypes = dictTypeService.selectDictTypeAll(); - return success(dictTypes); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysIndexController.java b/ff-game/src/main/java/com/ff/system/SysIndexController.java deleted file mode 100644 index 2b2afb5..0000000 --- a/ff-game/src/main/java/com/ff/system/SysIndexController.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.ff.system; - -import com.ff.base.config.FFConfig; -import com.ff.base.utils.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 首页 - * - * @author ff - */ -@RestController -public class SysIndexController -{ - /** 系统基础配置 */ - @Autowired - private FFConfig FfConfig; - - /** - * 访问首页,提示语 - */ - @RequestMapping("/") - public String index() - { - return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", FfConfig.getName(), FfConfig.getVersion()); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysLoginController.java b/ff-game/src/main/java/com/ff/system/SysLoginController.java deleted file mode 100644 index 848d244..0000000 --- a/ff-game/src/main/java/com/ff/system/SysLoginController.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.ff.system; - -import com.ff.base.constant.Constants; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.domain.model.LoginBody; -import com.ff.base.enums.LoginType; -import com.ff.base.system.domain.SysMenu; -import com.ff.base.system.domain.SysRole; -import com.ff.base.system.domain.SysUser; -import com.ff.base.system.service.ISysDatasourceService; -import com.ff.base.system.service.ISysMenuService; -import com.ff.base.system.service.ITenantAgentService; -import com.ff.base.utils.SecurityUtils; -import com.ff.base.web.service.SysLoginService; -import com.ff.base.web.service.SysPermissionService; -import com.ff.base.system.service.ITenantSecretKeyService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.CollectionUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * 登录验证 - * - * @author ff - */ -@RestController -public class SysLoginController { - @Autowired - private SysLoginService loginService; - - @Autowired - private ISysMenuService menuService; - - @Autowired - private SysPermissionService permissionService; - - @Resource - private ISysDatasourceService datasourceService; - - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private ITenantAgentService tenantAgentService; - - - /** - * 登录方法 - * - * @param loginBody 登录信息 - * @return 结果 - */ - @PostMapping("/login") - public AjaxResult login(@RequestBody LoginBody loginBody) { - AjaxResult ajax = AjaxResult.success(); - // 生成令牌 - String token = ""; - // 验证码校验 - loginService.validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid()); - // 登录前置校验 - loginService.loginPreCheck(loginBody.getUsername(), loginBody.getPassword()); - if (LoginType.TENANT.getValue().equals(loginBody.getLoginType())) { - token = tenantSecretKeyService.login(loginBody.getUsername(), loginBody.getPassword()); - } else if (LoginType.AGENT.getValue().equals(loginBody.getLoginType())) { - token = tenantAgentService.login(loginBody.getUsername(), loginBody.getPassword()); - } else { - token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), - loginBody.getUuid()); - } - - ajax.put(Constants.TOKEN, token); - return ajax; - } - - /** - * 获取用户信息 - * - * @return 用户信息 - */ - @GetMapping("getInfo") - public AjaxResult getInfo(HttpServletRequest request) { - SysUser user = SecurityUtils.getLoginUser().getUser(); - // 角色集合 - Set roles = permissionService.getRolePermission(user); - // 权限集合 - Set permissions = permissionService.getMenuPermission(user); - - // 切换数据源 - String tenantId = request.getHeader(Constants.TENANT_ID); - - AjaxResult ajax = AjaxResult.success(); - ajax.put("user", user); - ajax.put("roles", roles); - ajax.put("permissions", permissions); - ajax.put("timeZone", datasourceService.selectSysDatasourceByTenantId(tenantId)); - ajax.put("timeZoneName", datasourceService.selectTimeZoneNameByTenantId(tenantId)); - return ajax; - } - - /** - * 获取路由信息 - * - * @return 路由信息 - */ - @GetMapping("getRouters") - public AjaxResult getRouters() { - List roleIds = SecurityUtils.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()); - List menus = new ArrayList<>(); - if (!CollectionUtils.isEmpty(roleIds)) { - menus = menuService.selectMenuTree(roleIds); - } - - return AjaxResult.success(menuService.buildMenus(menus)); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysMenuController.java b/ff-game/src/main/java/com/ff/system/SysMenuController.java deleted file mode 100644 index bdac1fd..0000000 --- a/ff-game/src/main/java/com/ff/system/SysMenuController.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.constant.UserConstants; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysMenu; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.StringUtils; -import com.ff.base.system.service.ISysMenuService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 菜单信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/menu") -public class SysMenuController extends BaseController -{ - @Autowired - private ISysMenuService menuService; - - /** - * 获取菜单列表 - */ - @PreAuthorize("@ss.hasPermi('system:menu:list')") - @GetMapping("/list") - public AjaxResult list(SysMenu menu) - { - List menus = menuService.selectMenuList(menu, getUserId()); - return success(menus); - } - - /** - * 根据菜单编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:menu:query')") - @GetMapping(value = "/{menuId}") - public AjaxResult getInfo(@PathVariable Long menuId) - { - return success(menuService.selectMenuById(menuId)); - } - - /** - * 获取菜单下拉树列表 - */ - @GetMapping("/treeselect") - public AjaxResult treeselect(SysMenu menu) - { - List menus = menuService.selectMenuList(menu, getUserId()); - return success(menuService.buildMenuTreeSelect(menus)); - } - - /** - * 加载对应角色菜单列表树 - */ - @GetMapping(value = "/roleMenuTreeselect/{roleId}") - public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) - { - List menus = menuService.selectMenuList(getUserId()); - AjaxResult ajax = AjaxResult.success(); - ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); - ajax.put("menus", menuService.buildMenuTreeSelect(menus)); - return ajax; - } - - /** - * 新增菜单 - */ - @PreAuthorize("@ss.hasPermi('system:menu:add')") - @Log(title = "菜单管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysMenu menu) - { - if (!menuService.checkMenuNameUnique(menu)) - { - return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); - } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) - { - return error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); - } - menu.setCreateBy(getUsername()); - return toAjax(menuService.insertMenu(menu)); - } - - /** - * 修改菜单 - */ - @PreAuthorize("@ss.hasPermi('system:menu:edit')") - @Log(title = "菜单管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysMenu menu) - { - if (!menuService.checkMenuNameUnique(menu)) - { - return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); - } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) - { - return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); - } - else if (menu.getMenuId().equals(menu.getParentId())) - { - return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); - } - menu.setUpdateBy(getUsername()); - return toAjax(menuService.updateMenu(menu)); - } - - /** - * 删除菜单 - */ - @PreAuthorize("@ss.hasPermi('system:menu:remove')") - @Log(title = "菜单管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{menuId}") - public AjaxResult remove(@PathVariable("menuId") Long menuId) - { - if (menuService.hasChildByMenuId(menuId)) - { - return warn("存在子菜单,不允许删除"); - } - if (menuService.checkMenuExistRole(menuId)) - { - return warn("菜单已分配,不允许删除"); - } - return toAjax(menuService.deleteMenuById(menuId)); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysPostController.java b/ff-game/src/main/java/com/ff/system/SysPostController.java deleted file mode 100644 index b00990e..0000000 --- a/ff-game/src/main/java/com/ff/system/SysPostController.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.domain.SysPost; -import com.ff.base.system.service.ISysPostService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 岗位信息操作处理 - * - * @author ff - */ -@RestController -@RequestMapping("/system/post") -public class SysPostController extends BaseController -{ - @Autowired - private ISysPostService postService; - - /** - * 获取岗位列表 - */ - @PreAuthorize("@ss.hasPermi('system:post:list')") - @GetMapping("/list") - public TableDataInfo list(SysPost post) - { - startPage(); - List list = postService.selectPostList(post); - return getDataTable(list); - } - - @Log(title = "岗位管理", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:post:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysPost post) - { - List list = postService.selectPostList(post); - ExcelUtil util = new ExcelUtil(SysPost.class); - util.exportExcel(response, list, "岗位数据"); - } - - /** - * 根据岗位编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:post:query')") - @GetMapping(value = "/{postId}") - public AjaxResult getInfo(@PathVariable Long postId) - { - return success(postService.selectPostById(postId)); - } - - /** - * 新增岗位 - */ - @PreAuthorize("@ss.hasPermi('system:post:add')") - @Log(title = "岗位管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysPost post) - { - if (!postService.checkPostNameUnique(post)) - { - return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); - } - else if (!postService.checkPostCodeUnique(post)) - { - return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); - } - post.setCreateBy(getUsername()); - return toAjax(postService.insertPost(post)); - } - - /** - * 修改岗位 - */ - @PreAuthorize("@ss.hasPermi('system:post:edit')") - @Log(title = "岗位管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysPost post) - { - if (!postService.checkPostNameUnique(post)) - { - return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); - } - else if (!postService.checkPostCodeUnique(post)) - { - return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); - } - post.setUpdateBy(getUsername()); - return toAjax(postService.updatePost(post)); - } - - /** - * 删除岗位 - */ - @PreAuthorize("@ss.hasPermi('system:post:remove')") - @Log(title = "岗位管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{postIds}") - public AjaxResult remove(@PathVariable Long[] postIds) - { - return toAjax(postService.deletePostByIds(postIds)); - } - - /** - * 获取岗位选择框列表 - */ - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - List posts = postService.selectPostAll(); - return success(posts); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysProfileController.java b/ff-game/src/main/java/com/ff/system/SysProfileController.java deleted file mode 100644 index f5cd517..0000000 --- a/ff-game/src/main/java/com/ff/system/SysProfileController.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.config.FFConfig; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.LoginType; -import com.ff.base.system.domain.SysUser; -import com.ff.base.core.domain.model.LoginUser; -import com.ff.base.enums.BusinessType; -import com.ff.base.system.domain.TenantAgent; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.service.ITenantAgentService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.base.utils.SecurityUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.file.FileUploadUtils; -import com.ff.base.utils.file.MimeTypeUtils; -import com.ff.base.web.service.TokenService; -import com.ff.base.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; - -/** - * 个人信息 业务处理 - * - * @author ff - */ -@RestController -@RequestMapping("/system/user/profile") -public class SysProfileController extends BaseController { - @Autowired - private ISysUserService userService; - - @Autowired - private TokenService tokenService; - - @Resource - private ITenantSecretKeyService tenantSecretKeyService; - - - @Resource - private ITenantAgentService tenantAgentService; - - /** - * 个人信息 - */ - @GetMapping - public AjaxResult profile() { - LoginUser loginUser = getLoginUser(); - SysUser user = loginUser.getUser(); - AjaxResult ajax = AjaxResult.success(user); - ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); - ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); - return ajax; - } - - /** - * 修改用户 - */ - @Log(title = "个人信息", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult updateProfile(@RequestBody SysUser user) { - LoginUser loginUser = getLoginUser(); - SysUser currentUser = loginUser.getUser(); - currentUser.setNickName(user.getNickName()); - currentUser.setEmail(user.getEmail()); - currentUser.setPhonenumber(user.getPhonenumber()); - currentUser.setSex(user.getSex()); - if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) { - return error("修改用户'" + loginUser.getUsername() + "'失败,手机号码已存在"); - } - if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) { - return error("修改用户'" + loginUser.getUsername() + "'失败,邮箱账号已存在"); - } - if (userService.updateUserProfile(currentUser) > 0) { - // 更新缓存用户信息 - tokenService.setLoginUser(loginUser); - return success(); - } - return error("修改个人信息异常,请联系管理员"); - } - - /** - * 重置密码 - */ - @Log(title = "个人信息", businessType = BusinessType.UPDATE) - @PutMapping("/updatePwd") - public AjaxResult updatePwd(String oldPassword, String newPassword) { - LoginUser loginUser = getLoginUser(); - String userName = loginUser.getUsername(); - String password = loginUser.getPassword(); - if (!SecurityUtils.matchesPassword(oldPassword, password)) { - return error("修改密码失败,旧密码错误"); - } - if (SecurityUtils.matchesPassword(newPassword, password)) { - return error("新密码不能与旧密码相同"); - } - newPassword = SecurityUtils.encryptPassword(newPassword); - - Integer loginType = loginUser.getUser().getLoginType(); - Boolean result = Boolean.FALSE; - if (LoginType.TENANT.getValue().equals(loginType)) { - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(userName); - tenantSecretKey.setPassword(newPassword); - result = tenantSecretKeyService.updateTenantSecretKey(tenantSecretKey) > 0; - } else if (LoginType.AGENT.getValue().equals(loginType)) { - TenantAgent tenantAgent = tenantAgentService.selectTenantAgentByAccount(userName); - tenantAgent.setPassword(newPassword); - result = tenantAgentService.updateTenantAgent(tenantAgent) > 0; - } else if (LoginType.ADMIN.getValue().equals(loginType)) { - result = userService.resetUserPwd(userName, newPassword) > 0; - } - if (result) { - // 更新缓存用户密码 - loginUser.getUser().setPassword(newPassword); - tokenService.setLoginUser(loginUser); - return success(); - } - return error("修改密码异常,请联系管理员"); - } - - /** - * 头像上传 - */ - @Log(title = "用户头像", businessType = BusinessType.UPDATE) - @PostMapping("/avatar") - public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception { - if (!file.isEmpty()) { - LoginUser loginUser = getLoginUser(); - String avatar = FileUploadUtils.upload(FFConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); - if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) { - AjaxResult ajax = AjaxResult.success(); - ajax.put("imgUrl", avatar); - // 更新缓存用户头像 - loginUser.getUser().setAvatar(avatar); - tokenService.setLoginUser(loginUser); - return ajax; - } - } - return error("上传图片异常,请联系管理员"); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysRegisterController.java b/ff-game/src/main/java/com/ff/system/SysRegisterController.java deleted file mode 100644 index 8067487..0000000 --- a/ff-game/src/main/java/com/ff/system/SysRegisterController.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.ff.system; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.domain.model.RegisterBody; -import com.ff.base.utils.StringUtils; -import com.ff.base.web.service.SysRegisterService; -import com.ff.base.system.service.ISysConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -/** - * 注册验证 - * - * @author ff - */ -@RestController -public class SysRegisterController extends BaseController -{ - @Autowired - private SysRegisterService registerService; - - @Autowired - private ISysConfigService configService; - - @PostMapping("/register") - public AjaxResult register(@RequestBody RegisterBody user) - { - if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) - { - return error("当前系统没有开启注册功能!"); - } - String msg = registerService.register(user); - return StringUtils.isEmpty(msg) ? success() : error(msg); - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysRoleController.java b/ff-game/src/main/java/com/ff/system/SysRoleController.java deleted file mode 100644 index 31bb249..0000000 --- a/ff-game/src/main/java/com/ff/system/SysRoleController.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysDept; -import com.ff.base.system.domain.SysRole; -import com.ff.base.system.domain.SysUser; -import com.ff.base.core.domain.model.LoginUser; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.web.service.SysPermissionService; -import com.ff.base.web.service.TokenService; -import com.ff.base.system.domain.SysUserRole; -import com.ff.base.system.service.ISysDeptService; -import com.ff.base.system.service.ISysRoleService; -import com.ff.base.system.service.ISysUserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 角色信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/role") -public class SysRoleController extends BaseController -{ - @Autowired - private ISysRoleService roleService; - - @Autowired - private TokenService tokenService; - - @Autowired - private SysPermissionService permissionService; - - @Autowired - private ISysUserService userService; - - @Autowired - private ISysDeptService deptService; - - @PreAuthorize("@ss.hasPermi('system:role:list')") - @GetMapping("/list") - public TableDataInfo list(SysRole role) - { - startPage(); - List list = roleService.selectRoleList(role); - return getDataTable(list); - } - - @Log(title = "角色管理", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:role:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysRole role) - { - List list = roleService.selectRoleList(role); - ExcelUtil util = new ExcelUtil(SysRole.class); - util.exportExcel(response, list, "角色数据"); - } - - /** - * 根据角色编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:role:query')") - @GetMapping(value = "/{roleId}") - public AjaxResult getInfo(@PathVariable Long roleId) - { - roleService.checkRoleDataScope(roleId); - return success(roleService.selectRoleById(roleId)); - } - - /** - * 新增角色 - */ - @PreAuthorize("@ss.hasPermi('system:role:add')") - @Log(title = "角色管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysRole role) - { - if (!roleService.checkRoleNameUnique(role)) - { - return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { - return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); - } - role.setCreateBy(getUsername()); - return toAjax(roleService.insertRole(role)); - - } - - /** - * 修改保存角色 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - if (!roleService.checkRoleNameUnique(role)) - { - return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); - } - else if (!roleService.checkRoleKeyUnique(role)) - { - return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); - } - role.setUpdateBy(getUsername()); - - if (roleService.updateRole(role) > 0) - { - // 更新缓存用户权限 - LoginUser loginUser = getLoginUser(); - if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) - { - loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); - loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); - tokenService.setLoginUser(loginUser); - } - return success(); - } - return error("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); - } - - /** - * 修改保存数据权限 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @PutMapping("/dataScope") - public AjaxResult dataScope(@RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - return toAjax(roleService.authDataScope(role)); - } - - /** - * 状态修改 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysRole role) - { - roleService.checkRoleAllowed(role); - roleService.checkRoleDataScope(role.getRoleId()); - role.setUpdateBy(getUsername()); - return toAjax(roleService.updateRoleStatus(role)); - } - - /** - * 删除角色 - */ - @PreAuthorize("@ss.hasPermi('system:role:remove')") - @Log(title = "角色管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{roleIds}") - public AjaxResult remove(@PathVariable Long[] roleIds) - { - return toAjax(roleService.deleteRoleByIds(roleIds)); - } - - /** - * 获取角色选择框列表 - */ - @PreAuthorize("@ss.hasPermi('system:role:query')") - @GetMapping("/optionselect") - public AjaxResult optionselect() - { - return success(roleService.selectRoleAll()); - } - - /** - * 查询已分配用户角色列表 - */ - @PreAuthorize("@ss.hasPermi('system:role:list')") - @GetMapping("/authUser/allocatedList") - public TableDataInfo allocatedList(SysUser user) - { - startPage(); - List list = userService.selectAllocatedList(user); - return getDataTable(list); - } - - /** - * 查询未分配用户角色列表 - */ - @PreAuthorize("@ss.hasPermi('system:role:list')") - @GetMapping("/authUser/unallocatedList") - public TableDataInfo unallocatedList(SysUser user) - { - startPage(); - List list = userService.selectUnallocatedList(user); - return getDataTable(list); - } - - /** - * 取消授权用户 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PutMapping("/authUser/cancel") - public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) - { - return toAjax(roleService.deleteAuthUser(userRole)); - } - - /** - * 批量取消授权用户 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PutMapping("/authUser/cancelAll") - public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) - { - return toAjax(roleService.deleteAuthUsers(roleId, userIds)); - } - - /** - * 批量选择用户授权 - */ - @PreAuthorize("@ss.hasPermi('system:role:edit')") - @Log(title = "角色管理", businessType = BusinessType.GRANT) - @PutMapping("/authUser/selectAll") - public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) - { - roleService.checkRoleDataScope(roleId); - return toAjax(roleService.insertAuthUsers(roleId, userIds)); - } - - /** - * 获取对应角色部门树列表 - */ - @PreAuthorize("@ss.hasPermi('system:role:query')") - @GetMapping(value = "/deptTree/{roleId}") - public AjaxResult deptTree(@PathVariable("roleId") Long roleId) - { - AjaxResult ajax = AjaxResult.success(); - ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); - ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); - return ajax; - } -} diff --git a/ff-game/src/main/java/com/ff/system/SysUserController.java b/ff-game/src/main/java/com/ff/system/SysUserController.java deleted file mode 100644 index 2ab59fc..0000000 --- a/ff-game/src/main/java/com/ff/system/SysUserController.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.ff.system; - -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.SysDept; -import com.ff.base.system.domain.SysRole; -import com.ff.base.system.domain.SysUser; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.enums.BusinessType; -import com.ff.base.utils.SecurityUtils; -import com.ff.base.utils.StringUtils; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.system.service.ISysDeptService; -import com.ff.base.system.service.ISysPostService; -import com.ff.base.system.service.ISysRoleService; -import com.ff.base.system.service.ISysUserService; -import org.apache.commons.lang3.ArrayUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 用户信息 - * - * @author ff - */ -@RestController -@RequestMapping("/system/user") -public class SysUserController extends BaseController -{ - @Autowired - private ISysUserService userService; - - @Autowired - private ISysRoleService roleService; - - @Autowired - private ISysDeptService deptService; - - @Autowired - private ISysPostService postService; - - /** - * 获取用户列表 - */ - @PreAuthorize("@ss.hasPermi('system:user:list')") - @GetMapping("/list") - public TableDataInfo list(SysUser user) - { - startPage(); - List list = userService.selectUserList(user); - return getDataTable(list); - } - - @Log(title = "用户管理", businessType = BusinessType.EXPORT) - @PreAuthorize("@ss.hasPermi('system:user:export')") - @PostMapping("/export") - public void export(HttpServletResponse response, SysUser user) - { - List list = userService.selectUserList(user); - ExcelUtil util = new ExcelUtil(SysUser.class); - util.exportExcel(response, list, "用户数据"); - } - - @Log(title = "用户管理", businessType = BusinessType.IMPORT) - @PreAuthorize("@ss.hasPermi('system:user:import')") - @PostMapping("/importData") - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { - ExcelUtil util = new ExcelUtil(SysUser.class); - List userList = util.importExcel(file.getInputStream()); - String operName = getUsername(); - String message = userService.importUser(userList, updateSupport, operName); - return success(message); - } - - @PostMapping("/importTemplate") - public void importTemplate(HttpServletResponse response) - { - ExcelUtil util = new ExcelUtil(SysUser.class); - util.importTemplateExcel(response, "用户数据"); - } - - /** - * 根据用户编号获取详细信息 - */ - @PreAuthorize("@ss.hasPermi('system:user:query')") - @GetMapping(value = { "/", "/{userId}" }) - public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) - { - userService.checkUserDataScope(userId); - AjaxResult ajax = AjaxResult.success(); - List roles = roleService.selectRoleAll(); - ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - ajax.put("posts", postService.selectPostAll()); - if (StringUtils.isNotNull(userId)) - { - SysUser sysUser = userService.selectUserById(userId); - ajax.put(AjaxResult.DATA_TAG, sysUser); - ajax.put("postIds", postService.selectPostListByUserId(userId)); - ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); - } - return ajax; - } - - /** - * 新增用户 - */ - @PreAuthorize("@ss.hasPermi('system:user:add')") - @Log(title = "用户管理", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@Validated @RequestBody SysUser user) - { - deptService.checkDeptDataScope(user.getDeptId()); - roleService.checkRoleDataScope(user.getRoleIds()); - if (!userService.checkUserNameUnique(user)) - { - return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) - { - return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) - { - return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); - } - user.setCreateBy(getUsername()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - return toAjax(userService.insertUser(user)); - } - - /** - * 修改用户 - */ - @PreAuthorize("@ss.hasPermi('system:user:edit')") - @Log(title = "用户管理", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@Validated @RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - deptService.checkDeptDataScope(user.getDeptId()); - roleService.checkRoleDataScope(user.getRoleIds()); - if (!userService.checkUserNameUnique(user)) - { - return error("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); - } - else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) - { - return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); - } - else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) - { - return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); - } - user.setUpdateBy(getUsername()); - return toAjax(userService.updateUser(user)); - } - - /** - * 删除用户 - */ - @PreAuthorize("@ss.hasPermi('system:user:remove')") - @Log(title = "用户管理", businessType = BusinessType.DELETE) - @DeleteMapping("/{userIds}") - public AjaxResult remove(@PathVariable Long[] userIds) - { - if (ArrayUtils.contains(userIds, getUserId())) - { - return error("当前用户不能删除"); - } - return toAjax(userService.deleteUserByIds(userIds)); - } - - /** - * 重置密码 - */ - @PreAuthorize("@ss.hasPermi('system:user:resetPwd')") - @Log(title = "用户管理", businessType = BusinessType.UPDATE) - @PutMapping("/resetPwd") - public AjaxResult resetPwd(@RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - user.setUpdateBy(getUsername()); - return toAjax(userService.resetPwd(user)); - } - - /** - * 状态修改 - */ - @PreAuthorize("@ss.hasPermi('system:user:edit')") - @Log(title = "用户管理", businessType = BusinessType.UPDATE) - @PutMapping("/changeStatus") - public AjaxResult changeStatus(@RequestBody SysUser user) - { - userService.checkUserAllowed(user); - userService.checkUserDataScope(user.getUserId()); - user.setUpdateBy(getUsername()); - return toAjax(userService.updateUserStatus(user)); - } - - /** - * 根据用户编号获取授权角色 - */ - @PreAuthorize("@ss.hasPermi('system:user:query')") - @GetMapping("/authRole/{userId}") - public AjaxResult authRole(@PathVariable("userId") Long userId) - { - AjaxResult ajax = AjaxResult.success(); - SysUser user = userService.selectUserById(userId); - List roles = roleService.selectRolesByUserId(userId); - ajax.put("user", user); - ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); - return ajax; - } - - /** - * 用户授权角色 - */ - @PreAuthorize("@ss.hasPermi('system:user:edit')") - @Log(title = "用户管理", businessType = BusinessType.GRANT) - @PutMapping("/authRole") - public AjaxResult insertAuthRole(Long userId, Long[] roleIds) - { - userService.checkUserDataScope(userId); - roleService.checkRoleDataScope(roleIds); - userService.insertUserAuth(userId, roleIds); - return success(); - } - - /** - * 获取部门树列表 - */ - @PreAuthorize("@ss.hasPermi('system:user:list')") - @GetMapping("/deptTree") - public AjaxResult deptTree(SysDept dept) - { - return success(deptService.selectDeptTreeList(dept)); - } -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantBettingDetailsController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantBettingDetailsController.java deleted file mode 100644 index 1b5f853..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantBettingDetailsController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.ff.tenant.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.core.page.TableDataInfo; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.service.ITenantPlatformService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.common.domain.TenantGameQuota; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.dto.GameBettingDetailsDTO; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.tenant.dto.TenantDTO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - - -/** - * 租户控制器 - * - * @author shi - * @date 2025/02/27 - */ -@RestController -@RequestMapping("/tenant/betting/details") -public class TenantBettingDetailsController extends BaseController { - - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - /** - * 列表 - * - * @param gameBettingDetails 租户平台 - * @return {@link TableDataInfo } - */ - @PreAuthorize("@ss.hasPermi('tenant:betting:list')") - @GetMapping("/list") - public TableDataInfo list(GameBettingDetailsDTO gameBettingDetails) - { - gameBettingDetails.setTenantKey(getUsername()); - startPage(); - List gameBettingDetailsList = gameBettingDetailsService.selectGameBettingDetailsList(gameBettingDetails); - return getDataTable(gameBettingDetailsList); - } - -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantController.java deleted file mode 100644 index 9df1415..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantController.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.ff.tenant.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.base.system.service.ITenantAgentService; -import com.ff.base.system.service.ITenantPlatformService; -import com.ff.base.system.service.ITenantSecretKeyService; -import com.ff.common.domain.TenantGameQuota; -import com.ff.common.service.ITenantGameQuotaService; -import com.ff.tenant.dto.TenantDTO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - - -/** - * 租户控制器 - * - * @author shi - * @date 2025/02/27 - */ -@RestController -@RequestMapping("/tenant") -public class TenantController extends BaseController { - @Autowired - private ITenantSecretKeyService tenantSecretKeyService; - - @Resource - private ITenantGameQuotaService tenantGameQuotaService; - - @Resource - private ITenantPlatformService tenantPlatformService; - - - /** - * 获取信息 - * - * @return {@link AjaxResult } - */ - @GetMapping - public AjaxResult getInfo() { - TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyById(getUserId()); - TenantDTO tenantDTO = TenantDTO.builder() - .tenantSecretKey(tenantSecretKey) - .tenantGameQuotaList(tenantGameQuotaService.selectTenantGameQuotaList(TenantGameQuota.builder() - .tenantKey(tenantSecretKey.getTenantKey()) - .build())) - .currencyCodes(tenantPlatformService.selectCurrencyCodeByTenantId(tenantSecretKey.getId())) - .build(); - return success(tenantDTO); - } - - @GetMapping("/platforms/{currencyCode}") - public AjaxResult getTenantPlatformsInfo(@PathVariable("currencyCode") String currencyCode) { - return success(tenantPlatformService.selectTenantPlatformList(TenantPlatform.builder() - .currencyCode(currencyCode) - .tenantId(getUserId()) - .build())); - } - - -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantExchangeController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantExchangeController.java deleted file mode 100644 index c1f4dd3..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantExchangeController.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.ff.tenant.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.page.TableDataInfo; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.domain.GameExchangeMoney; -import com.ff.game.dto.GameExchangeMoneyDTO; -import com.ff.game.service.IGameBettingDetailsService; -import com.ff.game.service.IGameExchangeMoneyService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - - -/** - * 用户额度游戏流水控制器 - * - * @author shi - * @date 2025/02/27 - */ -@RestController -@RequestMapping("/tenant/exchange") -public class TenantExchangeController extends BaseController { - - - @Resource - private IGameExchangeMoneyService gameExchangeMoneyService; - - - /** - * 列表 - * - * @param gameExchangeMoneyDTO 游戏兑换货币 - * @return {@link TableDataInfo } - */ - @PreAuthorize("@ss.hasPermi('tenant:exchange:list')") - @GetMapping("/list") - public TableDataInfo list(GameExchangeMoneyDTO gameExchangeMoneyDTO) { - gameExchangeMoneyDTO.setTenantKey(getUsername()); - startPage(); - List gameExchangeMoneyDTOS = gameExchangeMoneyService.selectGameExchangeMoneyDTOList(gameExchangeMoneyDTO); - return getDataTable(gameExchangeMoneyDTOS); - } - -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaController.java deleted file mode 100644 index 2d10a79..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaController.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.ff.tenant.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.page.TableDataInfo; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.dto.GameBettingDetailsDTO; -import com.ff.game.service.IGameBettingDetailsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - - -/** - * 租户控制器 - * - * @author shi - * @date 2025/02/27 - */ -@RestController -@RequestMapping("/tenant/quota") -public class TenantQuotaController extends BaseController { - - - @Resource - private IGameBettingDetailsService gameBettingDetailsService; - - - /** - * 列表 - * - * @param gameBettingDetails 租户平台 - * @return {@link TableDataInfo } - */ - @PreAuthorize("@ss.hasPermi('tenant:betting:list')") - @GetMapping("/list") - public TableDataInfo list(GameBettingDetailsDTO gameBettingDetails) - { - gameBettingDetails.setTenantKey(getUsername()); - startPage(); - List gameBettingDetailsList = gameBettingDetailsService.selectGameBettingDetailsList(gameBettingDetails); - return getDataTable(gameBettingDetailsList); - } - -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaFlowController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaFlowController.java deleted file mode 100644 index 55948ac..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantQuotaFlowController.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ff.tenant.controller; - -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.page.TableDataInfo; -import com.ff.common.domain.TenantGameQuotaFlow; -import com.ff.common.service.ITenantGameQuotaFlowService; -import com.ff.game.domain.GameBettingDetails; -import com.ff.game.service.IGameBettingDetailsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.List; - - -/** - * 租户额度流水控制器 - * - * @author shi - * @date 2025/02/27 - */ -@RestController -@RequestMapping("/tenant/quota/flow") -public class TenantQuotaFlowController extends BaseController { - - - - @Resource - private ITenantGameQuotaFlowService tenantGameQuotaFlowService; - - - /** - * 列表 - * - * @param tenantGameQuotaFlow 租户平台 - * @return {@link TableDataInfo } - */ - @PreAuthorize("@ss.hasPermi('tenant:quota:flow:list')") - @GetMapping("/list") - public TableDataInfo list(TenantGameQuotaFlow tenantGameQuotaFlow) - { - tenantGameQuotaFlow.setTenantKey(getUsername()); - startPage(); - List tenantGameQuotaFlows = tenantGameQuotaFlowService.selectTenantGameQuotaFlowList(tenantGameQuotaFlow); - return getDataTable(tenantGameQuotaFlows); - } - -} diff --git a/ff-game/src/main/java/com/ff/tenant/controller/TenantWhiteController.java b/ff-game/src/main/java/com/ff/tenant/controller/TenantWhiteController.java deleted file mode 100644 index 58aa1de..0000000 --- a/ff-game/src/main/java/com/ff/tenant/controller/TenantWhiteController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.ff.tenant.controller; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ff.base.annotation.Log; -import com.ff.base.core.controller.BaseController; -import com.ff.base.core.domain.AjaxResult; -import com.ff.base.enums.BusinessType; -import com.ff.base.system.domain.TenantWhite; -import com.ff.base.system.service.ITenantWhiteService; -import com.ff.base.utils.poi.ExcelUtil; -import com.ff.base.core.page.TableDataInfo; - -/** - * 租户白名单Controller - * - * @author shi - * @date 2025-02-27 - */ -@RestController -@RequestMapping("/tenant/white") -public class TenantWhiteController extends BaseController -{ - @Autowired - private ITenantWhiteService tenantWhiteService; - - /** - * 查询租户白名单列表 - */ - @GetMapping("/list") - public TableDataInfo list(TenantWhite tenantWhite) - { - startPage(); - tenantWhite.setTenantId(getUserId()); - List list = tenantWhiteService.selectTenantWhiteList(tenantWhite); - return getDataTable(list); - } - - - /** - * 新增租户白名单 - */ - @Log(title = "租户白名单", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TenantWhite tenantWhite) - { - tenantWhite.setTenantId(getUserId()); - tenantWhite.setCreateBy(getUsername()); - return toAjax(tenantWhiteService.insertTenantWhite(tenantWhite)); - } - - /** - * 删除租户白名单 - */ - @Log(title = "租户白名单", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable Long[] ids) - { - return toAjax(tenantWhiteService.deleteTenantWhiteByIds(ids)); - } -} diff --git a/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java b/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java deleted file mode 100644 index 8bd7487..0000000 --- a/ff-game/src/main/java/com/ff/tenant/dto/TenantDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.ff.tenant.dto; - -import com.ff.base.system.domain.TenantPlatform; -import com.ff.base.system.domain.TenantSecretKey; -import com.ff.common.domain.TenantGameQuota; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; - -import java.util.List; - -/** - * 租户dto - * - * @author shi - * @date 2025/02/27 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@SuperBuilder -public class TenantDTO implements java.io.Serializable{ - private static final long serialVersionUID = 4132444654065053186L; - - /** - * 租户密钥 - */ - private TenantSecretKey tenantSecretKey; - - /** - * 租户游戏配额列表 - */ - private List tenantGameQuotaList; - - /** - * 租户平台 币种 - */ - private List currencyCodes; -} diff --git a/ff-game/src/main/java/com/ff/utils/CalculateDateDaysAgo.java b/ff-game/src/main/java/com/ff/utils/CalculateDateDaysAgo.java deleted file mode 100644 index dc5363b..0000000 --- a/ff-game/src/main/java/com/ff/utils/CalculateDateDaysAgo.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.ff.utils; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; - -/** - * @author cengy - */ -public class CalculateDateDaysAgo { - - public static LocalDate get(int daysToSubtract) { - return LocalDate.now().minusDays(daysToSubtract); - } - - public static String getStr(int daysToSubtract) { - // 获取当前日期减去指定天数 - LocalDate date = get(daysToSubtract); - - // 定义日期格式 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - - // 返回格式化日期字符串 - return date.format(formatter); - } -} diff --git a/ff-game/src/main/java/com/ff/utils/SortByAttributeNameASC.java b/ff-game/src/main/java/com/ff/utils/SortByAttributeNameASC.java deleted file mode 100644 index 6e351b1..0000000 --- a/ff-game/src/main/java/com/ff/utils/SortByAttributeNameASC.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ff.utils; - -import com.alibaba.fastjson2.JSON; - -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author cengy - */ -public class SortByAttributeNameASC { - public static String get(Object o) { - // Create a map to store field names and values - Map fieldMap = new LinkedHashMap<>(); - - // Get all fields of the class - Field[] fields = o.getClass().getDeclaredFields(); - - // Sort field names - Arrays.sort(fields, (f1, f2) -> f1.getName().compareTo(f2.getName())); - - // Fill the map with sorted fields and their values - for (Field field : fields) { - field.setAccessible(true); // Make private fields accessible - Object value = null; - try { - value = field.get(o); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - fieldMap.put(field.getName(), value); - } - - - return JSON.toJSONString(fieldMap); - } - -} diff --git a/ff-game/src/main/java/com/ff/utils/TimestampFromString.java b/ff-game/src/main/java/com/ff/utils/TimestampFromString.java deleted file mode 100644 index 8a3ddd6..0000000 --- a/ff-game/src/main/java/com/ff/utils/TimestampFromString.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.ff.utils; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * @author cengy - */ -public class TimestampFromString { - - public static final String PATTERN_DATE = "yyyy-MM-dd HH:mm:ss"; - - public static Long from(String date) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(PATTERN_DATE); - try { - Date parse = simpleDateFormat.parse(date); - return parse.getTime(); - } catch (ParseException e) { - return 0L; - } - } - - public static Long to(String timestamp) { - return Long.parseLong(timestamp); - } -} diff --git a/ff-game/src/main/java/com/ff/validation/ListSizeCheck.java b/ff-game/src/main/java/com/ff/validation/ListSizeCheck.java deleted file mode 100644 index b6a17c0..0000000 --- a/ff-game/src/main/java/com/ff/validation/ListSizeCheck.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.ff.validation; - -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 列表大小检查 - * - * @author shi - * @date 2025/02/12 - */ -@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE }) -@Retention(RetentionPolicy.RUNTIME) -@Constraint(validatedBy = ListSizeValidator.class) -public @interface ListSizeCheck { - - /** - * 消息 - * - * @return {@link String } - */ - String message() default "列表不能为空,且大小不得超过200"; - - /** - * 组 - * - * @return {@link Class }<{@link ? }>{@link [] } - */ - Class[] groups() default {}; - - /** - * 有效载荷 - * - * @return {@link Class }<{@link ? } {@link extends } {@link Payload }>{@link [] } - */ - Class[] payload() default {}; - - /** - * 最大尺寸 - * - * @return int - */ - int maxSize() default 200; -} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/validation/ListSizeValidator.java b/ff-game/src/main/java/com/ff/validation/ListSizeValidator.java deleted file mode 100644 index 2d7b0a2..0000000 --- a/ff-game/src/main/java/com/ff/validation/ListSizeValidator.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ff.validation; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; -import java.util.List; - -/** - * 列表大小验证器 - * - * @author shi - * @date 2025/02/12 - */ -public class ListSizeValidator implements ConstraintValidator> { - - private int maxSize; - - @Override - public void initialize(ListSizeCheck constraintAnnotation) { - // 从注解中获取最大值 - this.maxSize = constraintAnnotation.maxSize(); - } - - @Override - public boolean isValid(List value, ConstraintValidatorContext context) { - if (value == null) { - return true; - } - // 判断列表是否为空且大小不超过 maxSize - return !value.isEmpty() && value.size() <= maxSize; - } -} \ No newline at end of file diff --git a/ff-game/src/main/resources/META-INF/spring-devtools.properties b/ff-game/src/main/resources/META-INF/spring-devtools.properties deleted file mode 100644 index 37e7b58..0000000 --- a/ff-game/src/main/resources/META-INF/spring-devtools.properties +++ /dev/null @@ -1 +0,0 @@ -restart.include.json=/com.alibaba.fastjson2.*.jar \ No newline at end of file diff --git a/ff-game/src/main/resources/application-prod.properties b/ff-game/src/main/resources/application-prod.properties deleted file mode 100644 index 70731ce..0000000 --- a/ff-game/src/main/resources/application-prod.properties +++ /dev/null @@ -1,70 +0,0 @@ - -# 引入子配置文件 -spring.config.import=\ - classpath:config/prod/mybatis.properties,\ - classpath:config/prod/redis.properties,\ - classpath:config/prod/forest.properties,\ - classpath:config/prod/xxljob.properties,\ - classpath:config/prod/datasource.properties - - -# 项目相关配置 -ff.name=FF -ff.version=0.0.1 -ff.copyrightYear=2024 -ff.profile=/opt/gameApi/dist/game-api/uploadPath -ff.addressEnabled=false -ff.captchaType=math - -# 开发环境配置 -server.port=38080 -server.servlet.context-path=/ff-api -server.tomcat.uri-encoding=UTF-8 -server.tomcat.accept-count=1000 -server.tomcat.threads.max=800 -server.tomcat.threads.min-spare=100 - -# 日志配置 -logging.level.com.ff=debug -logging.level.org.springframework=warn -logging.file.path=/opt/gameApi/dist/game-api/logs - -# 用户配置 -user.password.maxRetryCount=5 -user.password.lockTime=10 - -# 跑批处理配置 -batchProcessing.commissionBatchSize=20 -batchProcessing.agentLevelBatchSize=50 -batchProcessing.bettingDataBatchSize=1000 - -# Spring配置 -spring.mvc.pathmatch.matching-strategy=ant_path_matcher -spring.messages.basename=i18n/messages -spring.servlet.multipart.max-file-size=20MB -spring.servlet.multipart.max-request-size=20MB -spring.devtools.restart.enabled=false - -# token配置 -token.header=Authorization -token.secret=abcdefghijklmnopqrstuvwxyz -token.expireTime=10080 - -# MyBatis配置 -mybatis.typeAliasesPackage=com.ff.**.domain -mybatis.mapperLocations=classpath*:mapper/**/*Mapper.xml -mybatis.configLocation=classpath:mybatis/mybatis-config.xml - -# PageHelper分页插件 -pagehelper.helperDialect=mysql -pagehelper.supportMethodsArguments=true -pagehelper.params=count=countSql - -# Swagger配置 -swagger.enabled=true -swagger.pathMapping=/ - -# 防止XSS攻击 -xss.enabled=true -xss.excludes=/system/notice -xss.urlPatterns=/system/*,/monitor/*,/tool/* diff --git a/ff-game/src/main/resources/application.properties b/ff-game/src/main/resources/application.properties deleted file mode 100644 index f841722..0000000 --- a/ff-game/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.profiles.active=test diff --git a/ff-game/src/main/resources/config/prod/datasource.properties b/ff-game/src/main/resources/config/prod/datasource.properties deleted file mode 100644 index f1a5b52..0000000 --- a/ff-game/src/main/resources/config/prod/datasource.properties +++ /dev/null @@ -1,35 +0,0 @@ -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver - -# 主库 -spring.datasource.druid.master.url=jdbc:mysql://127.0.0.1:23306/ff-game?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true -spring.datasource.druid.master.username=ff-game -spring.datasource.druid.master.password=bmGCJCyhfDXnPspe - -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=10 -spring.datasource.druid.maxActive=20 -spring.datasource.druid.maxWait=60000 -spring.datasource.druid.connectTimeout=30000 -spring.datasource.druid.socketTimeout=60000 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.maxEvictableIdleTimeMillis=900000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false - -spring.datasource.druid.webStatFilter.enabled=true -spring.datasource.druid.statViewServlet.enabled=true -spring.datasource.druid.statViewServlet.allow= -spring.datasource.druid.statViewServlet.url-pattern=/druid/* -spring.datasource.druid.statViewServlet.login-username=ff -spring.datasource.druid.statViewServlet.login-password=123456 - -spring.datasource.druid.filter.stat.enabled=true -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=1000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.filter.wall.config.multi-statement-allow=true diff --git a/ff-game/src/main/resources/config/prod/forest.properties b/ff-game/src/main/resources/config/prod/forest.properties deleted file mode 100644 index 088f953..0000000 --- a/ff-game/src/main/resources/config/prod/forest.properties +++ /dev/null @@ -1,16 +0,0 @@ -forest.backend=okhttp3 -forest.max-connections=1000 -forest.max-route-connections=500 -forest.max-request-queue-size=100 -forest.max-async-thread-size=300 -forest.max-async-queue-size=16 -forest.timeout=3000 -forest.connect-timeout=3000 -forest.read-timeout=3000 -forest.max-retry-count=0 -forest.ssl-protocol=TLS -forest.log-enabled=true -forest.log-request=true -forest.log-response-status=true -forest.log-response-content=true -forest.async-mode=platform diff --git a/ff-game/src/main/resources/config/prod/mybatis.properties b/ff-game/src/main/resources/config/prod/mybatis.properties deleted file mode 100644 index fbfd66b..0000000 --- a/ff-game/src/main/resources/config/prod/mybatis.properties +++ /dev/null @@ -1,3 +0,0 @@ -mybatis.typeAliasesPackage=com.ff.**.domain -mybatis.mapperLocations=classpath*:mapper/**/*Mapper.xml -mybatis.configLocation=classpath:mybatis/mybatis-config.xml diff --git a/ff-game/src/main/resources/config/prod/redis.properties b/ff-game/src/main/resources/config/prod/redis.properties deleted file mode 100644 index 2541864..0000000 --- a/ff-game/src/main/resources/config/prod/redis.properties +++ /dev/null @@ -1,9 +0,0 @@ -spring.redis.host=192.168.50.11 -spring.redis.port=26379 -spring.redis.database=10 -spring.redis.password=reAa123456 -spring.redis.timeout=10s -spring.redis.lettuce.pool.min-idle=0 -spring.redis.lettuce.pool.max-idle=8 -spring.redis.lettuce.pool.max-active=8 -spring.redis.lettuce.pool.max-wait=-1ms diff --git a/ff-game/src/main/resources/config/prod/xxljob.properties b/ff-game/src/main/resources/config/prod/xxljob.properties deleted file mode 100644 index d1ddbc6..0000000 --- a/ff-game/src/main/resources/config/prod/xxljob.properties +++ /dev/null @@ -1,9 +0,0 @@ -# XXL-Job配置 -xxl.job.admin.addresses=http://192.168.50.11:2980/xxl-job-admin/ -xxl.job.accessToken= -xxl.job.executor.appname=ff-admin-job-name -xxl.job.executor.address=http://192.168.50.28:13999 -xxl.job.executor.ip=192.168.50.28 -xxl.job.executor.port=13999 -xxl.job.executor.logpath=./logs/job -xxl.job.executor.logretentiondays=30 \ No newline at end of file diff --git a/ff-game/src/main/resources/config/test/datasource.properties b/ff-game/src/main/resources/config/test/datasource.properties deleted file mode 100644 index 9cc82d2..0000000 --- a/ff-game/src/main/resources/config/test/datasource.properties +++ /dev/null @@ -1,35 +0,0 @@ -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver - -# 主库 -spring.datasource.druid.master.url=jdbc:mysql://192.168.50.11:3306/ff-game?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true -spring.datasource.druid.master.username=root -spring.datasource.druid.master.password=123456 - -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=10 -spring.datasource.druid.maxActive=20 -spring.datasource.druid.maxWait=60000 -spring.datasource.druid.connectTimeout=30000 -spring.datasource.druid.socketTimeout=60000 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.maxEvictableIdleTimeMillis=900000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false - -spring.datasource.druid.webStatFilter.enabled=true -spring.datasource.druid.statViewServlet.enabled=true -spring.datasource.druid.statViewServlet.allow= -spring.datasource.druid.statViewServlet.url-pattern=/druid/* -spring.datasource.druid.statViewServlet.login-username=ff -spring.datasource.druid.statViewServlet.login-password=123456 - -spring.datasource.druid.filter.stat.enabled=true -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=1000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.filter.wall.config.multi-statement-allow=true diff --git a/ff-game/src/main/resources/config/test/forest.properties b/ff-game/src/main/resources/config/test/forest.properties deleted file mode 100644 index 088f953..0000000 --- a/ff-game/src/main/resources/config/test/forest.properties +++ /dev/null @@ -1,16 +0,0 @@ -forest.backend=okhttp3 -forest.max-connections=1000 -forest.max-route-connections=500 -forest.max-request-queue-size=100 -forest.max-async-thread-size=300 -forest.max-async-queue-size=16 -forest.timeout=3000 -forest.connect-timeout=3000 -forest.read-timeout=3000 -forest.max-retry-count=0 -forest.ssl-protocol=TLS -forest.log-enabled=true -forest.log-request=true -forest.log-response-status=true -forest.log-response-content=true -forest.async-mode=platform diff --git a/ff-game/src/main/resources/config/test/mybatis.properties b/ff-game/src/main/resources/config/test/mybatis.properties deleted file mode 100644 index fbfd66b..0000000 --- a/ff-game/src/main/resources/config/test/mybatis.properties +++ /dev/null @@ -1,3 +0,0 @@ -mybatis.typeAliasesPackage=com.ff.**.domain -mybatis.mapperLocations=classpath*:mapper/**/*Mapper.xml -mybatis.configLocation=classpath:mybatis/mybatis-config.xml diff --git a/ff-game/src/main/resources/config/test/redis.properties b/ff-game/src/main/resources/config/test/redis.properties deleted file mode 100644 index 2541864..0000000 --- a/ff-game/src/main/resources/config/test/redis.properties +++ /dev/null @@ -1,9 +0,0 @@ -spring.redis.host=192.168.50.11 -spring.redis.port=26379 -spring.redis.database=10 -spring.redis.password=reAa123456 -spring.redis.timeout=10s -spring.redis.lettuce.pool.min-idle=0 -spring.redis.lettuce.pool.max-idle=8 -spring.redis.lettuce.pool.max-active=8 -spring.redis.lettuce.pool.max-wait=-1ms diff --git a/ff-game/src/main/resources/config/test/xxljob.properties b/ff-game/src/main/resources/config/test/xxljob.properties deleted file mode 100644 index d1ddbc6..0000000 --- a/ff-game/src/main/resources/config/test/xxljob.properties +++ /dev/null @@ -1,9 +0,0 @@ -# XXL-Job配置 -xxl.job.admin.addresses=http://192.168.50.11:2980/xxl-job-admin/ -xxl.job.accessToken= -xxl.job.executor.appname=ff-admin-job-name -xxl.job.executor.address=http://192.168.50.28:13999 -xxl.job.executor.ip=192.168.50.28 -xxl.job.executor.port=13999 -xxl.job.executor.logpath=./logs/job -xxl.job.executor.logretentiondays=30 \ No newline at end of file diff --git a/ff-game/src/main/resources/i18n/messages.properties b/ff-game/src/main/resources/i18n/messages.properties deleted file mode 100644 index c10300d..0000000 --- a/ff-game/src/main/resources/i18n/messages.properties +++ /dev/null @@ -1,47 +0,0 @@ -#错误消息 -opration.success=操作成功 -opration.fail=操作失败 -not.null=* 必须填写 -user.jcaptcha.error=验证码错误 -user.jcaptcha.expire=验证码已失效 -user.not.exists=用户不存在/密码错误 -user.password.not.match=用户不存在/密码错误 -user.password.retry.limit.count=密码输入错误{0}次 -user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟 -user.password.delete=对不起,您的账号已被删除 -user.blocked=用户已封禁,请联系管理员 -role.blocked=角色已封禁,请联系管理员 -login.blocked=很遗憾,访问IP已被列入系统黑名单 -user.logout.success=退出成功 - -length.not.valid=长度必须在{min}到{max}个字符之间 - -user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 -user.password.not.valid=* 5-50个字符 - -user.email.not.valid=邮箱格式错误 -user.mobile.phone.number.not.valid=手机号格式错误 -user.login.success=登录成功 -user.register.success=注册成功 -user.notfound=请重新登录 -user.forcelogout=管理员强制退出,请重新登录 -user.unknown.error=未知错误,请重新登录 - -##文件上传消息 -upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB! -upload.filename.exceed.length=上传的文件名最长{0}个字符 -upload.file.exception=本地文件上传异常 -upload.file.server.not.exist=文件服务不存在 - -##权限 -no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] -no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] -no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] -no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] -no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}] -no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] - - -##租户 -operation.tenant.account.already.used=租户账号已被使用,请更换租户账号 -operation.password.mismatch=两次密码不一致 \ No newline at end of file diff --git a/ff-game/src/main/resources/logback.xml b/ff-game/src/main/resources/logback.xml deleted file mode 100644 index 67659a6..0000000 --- a/ff-game/src/main/resources/logback.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - ${log.pattern} - - - - - - ${log.path}/sys-info.log - - - - ${log.path}/sys-info.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - INFO - - ACCEPT - - DENY - - - - - ${log.path}/sys-error.log - - - - ${log.path}/sys-error.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - ERROR - - ACCEPT - - DENY - - - - - - ${log.path}/sys-user.log - - - ${log.path}/sys-user.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ff-game/src/main/resources/mapper/agent/TenantAgentCommissionMapper.xml b/ff-game/src/main/resources/mapper/agent/TenantAgentCommissionMapper.xml deleted file mode 100644 index 69f363a..0000000 --- a/ff-game/src/main/resources/mapper/agent/TenantAgentCommissionMapper.xml +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - select id, - agent_withdrawal_id, - agent_id, - source_id, - source_type, - commission_type, - currency_code, - platform_code, - cost_balance, - merchant_balance, - balance, - commission_balance, - usdt_balance, - approval_status, - create_by, - create_time, - update_by, - update_time - from ff_tenant_agent_commission - - - - - - - - - - insert into ff_tenant_agent_commission - - - id, - - - agent_id, - - - source_id, - - - source_type, - - - commission_type, - - - currency_code, - - - platform—_code, - - - cost_balance, - - - merchant_balance, - - - balance, - - - commission_balance, - - - usdt_balance, - - - approval_status, - - - create_by, - - - create_time, - - - update_by, - - - update_time, - - - agent_withdrawal_id, - - - - - #{id}, - - - #{agentId}, - - - #{sourceId}, - - - #{sourceType}, - - - #{commissionType}, - - - #{currencyCode}, - - - #{platformCode}, - - - #{costBalance}, - - - #{merchantBalance}, - - - #{balance}, - - - #{commissionBalance}, - - - #{usdtBalance}, - - - #{approvalStatus}, - - - #{createBy}, - - - #{createTime}, - - - #{updateBy}, - - - #{updateTime}, - - - #{agentWithdrawalId}, - - - - - - update ff_tenant_agent_commission - - - agent_id = #{agentId}, - - - source_id = #{sourceId}, - - - source_type = #{sourceType}, - - - commission_type = #{commissionType}, - - - currency_code = #{currencyCode}, - - - platform—_code = #{platformCode}, - - - cost_balance = #{costBalance}, - - - merchant_balance = #{merchantBalance}, - - - balance = #{balance}, - - - commission_balance = #{commissionBalance}, - - - usdt_balance = #{usdtBalance}, - - - approval_status = #{approvalStatus}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - agent_withdrawal_id = #{agentWithdrawalId}, - - - where id = #{id} - - - - delete - from ff_tenant_agent_commission - where id = #{id} - - - - delete from ff_tenant_agent_commission where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/agent/TenantAgentInviteMapper.xml b/ff-game/src/main/resources/mapper/agent/TenantAgentInviteMapper.xml deleted file mode 100644 index 24931e0..0000000 --- a/ff-game/src/main/resources/mapper/agent/TenantAgentInviteMapper.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - select id, agent_id, balance, invite_type, quota_type, score_ratio, tenant_type, deposit_ratio, real_balance, invite_code, invite_url, create_by, create_time, update_by, update_time from ff_tenant_agent_invite - - - - - - - - - - - - insert into ff_tenant_agent_invite - - id, - agent_id, - balance, - invite_type, - quota_type, - score_ratio, - tenant_type, - deposit_ratio, - real_balance, - invite_code, - invite_url, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{agentId}, - #{balance}, - #{inviteType}, - #{quotaType}, - #{scoreRatio}, - #{tenantType}, - #{depositRatio}, - #{realBalance}, - #{inviteCode}, - #{inviteUrl}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_agent_invite - - agent_id = #{agentId}, - balance = #{balance}, - invite_type = #{inviteType}, - quota_type = #{quotaType}, - score_ratio = #{scoreRatio}, - tenant_type = #{tenantType}, - deposit_ratio = #{depositRatio}, - real_balance = #{realBalance}, - invite_code = #{inviteCode}, - invite_url = #{inviteUrl}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_agent_invite where id = #{id} - - - - delete from ff_tenant_agent_invite where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/agent/TenantAgentInvitePlatformMapper.xml b/ff-game/src/main/resources/mapper/agent/TenantAgentInvitePlatformMapper.xml deleted file mode 100644 index d6ec47a..0000000 --- a/ff-game/src/main/resources/mapper/agent/TenantAgentInvitePlatformMapper.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, invite_id, platform_code, currency_code, cost, use_cost, create_by, create_time, update_by, update_time from ff_tenant_agent_invite_platform - - - - - - - - insert into ff_tenant_agent_invite_platform - - id, - invite_id, - platform_code, - currency_code, - cost, - use_cost, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{inviteId}, - #{platformCode}, - #{currencyCode}, - #{cost}, - #{useCost}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_agent_invite_platform - - invite_id = #{inviteId}, - platform_code = #{platformCode}, - currency_code = #{currencyCode}, - cost = #{cost}, - use_cost = #{useCost}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_agent_invite_platform where id = #{id} - - - - delete from ff_tenant_agent_invite_platform where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/agent/TenantAgentInviteRegisterMapper.xml b/ff-game/src/main/resources/mapper/agent/TenantAgentInviteRegisterMapper.xml deleted file mode 100644 index c1b2cd7..0000000 --- a/ff-game/src/main/resources/mapper/agent/TenantAgentInviteRegisterMapper.xml +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id,order_id, agent_id, invite_code, account, password, balance, register_time, register_ip, register_ip_city, status, create_by, create_time, update_by, update_time from ff_tenant_agent_invite_register - - - - - - - - - - insert into ff_tenant_agent_invite_register - - id, - agent_id, - invite_code, - account, - password, - balance, - register_time, - register_ip, - register_ip_city, - status, - create_by, - create_time, - update_by, - update_time, - order_id, - - - #{id}, - #{agentId}, - #{inviteCode}, - #{account}, - #{password}, - #{balance}, - #{registerTime}, - #{registerIp}, - #{registerIpCity}, - #{status}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{orderId}, - - - - - update ff_tenant_agent_invite_register - - agent_id = #{agentId}, - invite_code = #{inviteCode}, - account = #{account}, - password = #{password}, - balance = #{balance}, - register_time = #{registerTime}, - register_ip = #{registerIp}, - register_ip_city = #{registerIpCity}, - status = #{status}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - order_id = #{orderId}, - - where id = #{id} - - - - delete from ff_tenant_agent_invite_register where id = #{id} - - - - delete from ff_tenant_agent_invite_register where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/agent/TenantAgentWithdrawalMapper.xml b/ff-game/src/main/resources/mapper/agent/TenantAgentWithdrawalMapper.xml deleted file mode 100644 index 247c713..0000000 --- a/ff-game/src/main/resources/mapper/agent/TenantAgentWithdrawalMapper.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, agent_id, commission_balance, currency_agreement, wallet_address, approval_status, create_by, create_time, update_by, update_time from ff_tenant_agent_withdrawal - - - - - - - - insert into ff_tenant_agent_withdrawal - - id, - agent_id, - commission_balance, - currency_agreement, - wallet_address, - approval_status, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{agentId}, - #{commissionBalance}, - #{currencyAgreement}, - #{walletAddress}, - #{approvalStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_agent_withdrawal - - agent_id = #{agentId}, - commission_balance = #{commissionBalance}, - currency_agreement = #{currencyAgreement}, - wallet_address = #{walletAddress}, - approval_status = #{approvalStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_agent_withdrawal where id = #{id} - - - - delete from ff_tenant_agent_withdrawal where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/CurrencyMapper.xml b/ff-game/src/main/resources/mapper/common/CurrencyMapper.xml deleted file mode 100644 index 7903797..0000000 --- a/ff-game/src/main/resources/mapper/common/CurrencyMapper.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - select id, - status, - country, - currency_code, - currency_sign, - game_rate, - currency_display, - currency_name, - full_name, - create_by, - create_time, - update_by, - update_time, - remark - from ff_currency - - - - - - - - insert into ff_currency - - - id, - - - status, - - - country, - - - currency_code, - - - currency_sign, - - - game_rate, - - - currency_display, - - - currency_name, - - - full_name, - - - create_by, - - - create_time, - - - update_by, - - - update_time, - - - remark, - - - - - #{id}, - - - #{status}, - - - #{country}, - - - #{currencyCode}, - - - #{currencySign}, - - - #{gameRate}, - - - #{currencyDisplay}, - - - #{currencyName}, - - - #{fullName}, - - - #{createBy}, - - - #{createTime}, - - - #{updateBy}, - - - #{updateTime}, - - - #{remark}, - - - - - - update ff_currency - - - status = #{status}, - - - country = #{country}, - - - currency_code = #{currencyCode}, - - - currency_sign = #{currencySign}, - - - game_rate = #{gameRate}, - - - currency_display = #{currencyDisplay}, - - - currency_name = #{currencyName}, - - - full_name = #{fullName}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - remark = #{remark}, - - - where id = #{id} - - - - delete - from ff_currency - where id = #{id} - - - - delete from ff_currency where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/LangMapper.xml b/ff-game/src/main/resources/mapper/common/LangMapper.xml deleted file mode 100644 index ecc9c20..0000000 --- a/ff-game/src/main/resources/mapper/common/LangMapper.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, name, country, lang_code, lang_status, create_by, create_time, update_by, update_time from ff_lang - - - - - - - - insert into ff_lang - id, - name, - country, - lang_code, - lang_status, - create_by, - create_time, - update_by, - update_time, - - #{id}, - #{name}, - #{country}, - #{langCode}, - #{langStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_lang - - name = #{name}, - country = #{country}, - lang_code = #{langCode}, - lang_status = #{langStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_lang where id = #{id} - - - - delete from ff_lang where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/TenantAgentPlatformMapper.xml b/ff-game/src/main/resources/mapper/common/TenantAgentPlatformMapper.xml deleted file mode 100644 index 4e34c04..0000000 --- a/ff-game/src/main/resources/mapper/common/TenantAgentPlatformMapper.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - select id, platform_code, currency_code, cost, use_cost, create_by, create_time, update_by, update_time from ff_tenant_agent_platform - - - - - - - - insert into ff_tenant_agent_platform - - id, - platform_code, - currency_code, - cost, - use_cost, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{platformCode}, - #{currencyCode}, - #{cost}, - #{useCost}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_agent_platform - - platform_code = #{platformCode}, - currency_code = #{currencyCode}, - cost = #{cost}, - use_cost = #{useCost}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_agent_platform where id = #{id} - - - - delete from ff_tenant_agent_platform where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml b/ff-game/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml deleted file mode 100644 index 398b666..0000000 --- a/ff-game/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - select id, - source_id, - tenant_key, - quota_type, - member_id, - platform_code, - currency_code, - is_out, - operation_type, - balance_before, - balance, - exchange_ratio, - exchange_money, - balance_after, - remark, - create_by, - create_time, - update_by, - update_time - from ff_tenant_game_quota_flow - - - - - - - - insert into ff_tenant_game_quota_flow - - - id, - - - tenant_key, - - - quota_type, - - - member_id, - - - platform_code, - - - currency_code, - - - is_out, - - - operation_type, - - - balance_before, - - - balance, - - - exchange_ratio, - - - exchange_money, - - - balance_after, - - - remark, - - - create_by, - - - create_time, - - - update_by, - - - update_time, - - - source_id, - - - - - #{id}, - - - #{tenantKey}, - - - #{quotaType}, - - - #{memberId}, - - - #{platformCode}, - - - #{currencyCode}, - - - #{isOut}, - - - #{operationType}, - - - #{balanceBefore}, - - - #{balance}, - - - #{exchangeRatio}, - - - #{exchangeMoney}, - - - #{balanceAfter}, - - - #{remark}, - - - #{createBy}, - - - #{createTime}, - - - #{updateBy}, - - - #{updateTime}, - - - #{sourceId}, - - - - - - update ff_tenant_game_quota_flow - - - tenant_key = #{tenantKey}, - - - quota_type = #{quotaType}, - - - member_id = #{memberId}, - - - platform_code = #{platformCode}, - - - currency_code = #{currencyCode}, - - - is_out = #{isOut}, - - - operation_type = #{operationType}, - - - balance_before = #{balanceBefore}, - - - balance = #{balance}, - - - exchange_ratio = #{exchangeRatio}, - - - exchange_money = #{exchangeMoney}, - - - balance_after = #{balanceAfter}, - - - remark = #{remark}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - source_id = #{sourceId}, - - - where id = #{id} - - - - delete - from ff_tenant_game_quota_flow - where id = #{id} - - - - delete from ff_tenant_game_quota_flow where id in - - #{id} - - - - - - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/TenantGameQuotaMapper.xml b/ff-game/src/main/resources/mapper/common/TenantGameQuotaMapper.xml deleted file mode 100644 index d08a88a..0000000 --- a/ff-game/src/main/resources/mapper/common/TenantGameQuotaMapper.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - select id, - tenant_key, - balance, - quota_type, - version, - create_by, - create_time, - update_by, - update_time - from ff_tenant_game_quota - - - - - - - - - - update ff_tenant_game_quota - set balance = #{balance}, - version =version + 1 - where tenant_key = #{tenantKey} - and quota_type = #{quotaType} - and version = #{version} - - - - insert into ff_tenant_game_quota - - - id, - - - tenant_key, - - - balance, - - - quota_type, - - - version, - - - create_by, - - - create_time, - - - update_by, - - - update_time, - - - - - #{id}, - - - #{tenantKey}, - - - #{balance}, - - - #{quotaType}, - - - #{version}, - - - #{createBy}, - - - #{createTime}, - - - #{updateBy}, - - - #{updateTime}, - - - - - - update ff_tenant_game_quota - - - tenant_key = #{tenantKey}, - - - balance = #{balance}, - - - quota_type = #{quotaType}, - - - version = #{version}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - where id = #{id} - - - - delete - from ff_tenant_game_quota - where id = #{id} - - - - delete from ff_tenant_game_quota where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/common/TenantQuotaExchangeMapper.xml b/ff-game/src/main/resources/mapper/common/TenantQuotaExchangeMapper.xml deleted file mode 100644 index 3c94702..0000000 --- a/ff-game/src/main/resources/mapper/common/TenantQuotaExchangeMapper.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - select id, currency_code, exchange_currency_code, exchange_rate, difference_type, difference_value, actual_balance, create_by, create_time, update_by, update_time from ff_tenant_quota_exchange - - - - - - - - insert into ff_tenant_quota_exchange - id, - currency_code, - exchange_currency_code, - exchange_rate, - difference_type, - difference_value, - actual_balance, - create_by, - create_time, - update_by, - update_time, - - #{id}, - #{currencyCode}, - #{exchangeCurrencyCode}, - #{exchangeRate}, - #{differenceType}, - #{differenceValue}, - #{actualBalance}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_quota_exchange - - currency_code = #{currencyCode}, - exchange_currency_code = #{exchangeCurrencyCode}, - exchange_rate = #{exchangeRate}, - difference_type = #{differenceType}, - difference_value = #{differenceValue}, - actual_balance = #{actualBalance}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - - - delete from ff_tenant_quota_exchange where id = #{id} - - - - delete from ff_tenant_quota_exchange where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml b/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml deleted file mode 100644 index 722c77e..0000000 --- a/ff-game/src/main/resources/mapper/game/GameBettingDetailsMapper.xml +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id,tenant_key, currency_code, member_id, game_code, game_id, game_type, platform_code, game_name, game_status, game_status_type, game_currency_code, account, round, `table`, seat, bet_content, wagers_id, wagers_time, bet_amount, payoff_time, payoff_amount, settlement_time, turnover, order_no, settlement_status, create_by, create_time, update_by, update_time from ff_game_betting_details - - - - - - - - - - - - insert into ff_game_betting_details - id, - tenant_key, - currency_code, - member_id, - game_code, - game_id, - game_type, - platform_code, - game_name, - game_status, - game_status_type, - game_currency_code, - account, - round, - table, - seat, - bet_content, - wagers_id, - wagers_time, - bet_amount, - payoff_time, - payoff_amount, - settlement_time, - turnover, - order_no, - settlement_status, - create_by, - create_time, - update_by, - update_time, - - #{id}, - #{tenantKey}, - #{currencyCode}, - #{memberId}, - #{gameCode}, - #{gameId}, - #{gameType}, - #{platformCode}, - #{gameName}, - #{gameStatus}, - #{gameStatusType}, - #{gameCurrencyCode}, - #{account}, - #{round}, - #{table}, - #{seat}, - #{betContent}, - #{wagersId}, - #{wagersTime}, - #{betAmount}, - #{payoffTime}, - #{payoffAmount}, - #{settlementTime}, - #{turnover}, - #{orderNo}, - #{settlementStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_game_betting_details - - tenant_key = #{tenantKey}, - currency_code = #{currencyCode}, - member_id = #{memberId}, - game_code = #{gameCode}, - game_id = #{gameId}, - game_type = #{gameType}, - platform_code = #{platformCode}, - game_name = #{gameName}, - game_status = #{gameStatus}, - game_status_type = #{gameStatusType}, - game_currency_code = #{gameCurrencyCode}, - account = #{account}, - round = #{round}, - table = #{table}, - seat = #{seat}, - bet_content = #{betContent}, - wagers_id = #{wagersId}, - wagers_time = #{wagersTime}, - bet_amount = #{betAmount}, - payoff_time = #{payoffTime}, - payoff_amount = #{payoffAmount}, - settlement_time = #{settlementTime}, - turnover = #{turnover}, - order_no = #{orderNo}, - settlement_status = #{settlementStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_game_betting_details where id = #{id} - - - - delete from ff_game_betting_details where id in - - #{id} - - - - delete from ff_game_betting_details where wagers_id in - - #{wagersId} - - - - - - - - - - insert into ff_game_betting_details - id, - tenant_key, game_id, currency_code, member_id, game_code, game_type, platform_code, - game_name, game_status, game_status_type, game_currency_code, `account`, - wagers_id, wagers_time, bet_amount, payoff_time, payoff_amount, - settlement_time, turnover, order_no, create_by, create_time, settlement_status, - update_by, update_time, round, `table`, seat, bet_content - - values - - #{item.id}, - #{item.tenantKey}, - #{item.gameId}, - #{item.currencyCode}, - #{item.memberId}, - #{item.gameCode}, - #{item.gameType}, - #{item.platformCode}, - #{item.gameName}, - #{item.gameStatus}, - #{item.gameStatusType}, - #{item.gameCurrencyCode}, - #{item.account}, - #{item.wagersId}, - #{item.wagersTime}, - #{item.betAmount}, - #{item.payoffTime}, - #{item.payoffAmount}, - #{item.settlementTime}, - #{item.turnover}, - #{item.orderNo}, - #{item.createBy}, - #{item.createTime}, - #{item.settlementStatus}, - #{item.updateBy}, - #{item.updateTime}, - #{item.round}, - #{item.table}, - #{item.seat}, - #{item.betContent} - - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml b/ff-game/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml deleted file mode 100644 index 306cb37..0000000 --- a/ff-game/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id, - tenant_key, - order_id, - currency_code, - transaction_id, - member_id, - platform_code, - balance, - quota, - coin_before, - coin_after, - currency_before, - currency_after, - exchange_type, - status, - create_by, - create_time, - update_by, - update_time, - step, - step_status - from ff_game_exchange_money - - - - - - - - - - - insert into ff_game_exchange_money - - - id, - - - tenant_key, - - - currency_code, - - - order_id, - - - transaction_id, - - - member_id, - - - platform_code, - - - balance, - - - quota, - - - coin_before, - - - coin_after, - - - currency_before, - - - currency_after, - - - exchange_type, - - - status, - - - create_by, - - - create_time, - - - update_by, - - - update_time, - - - step, - - - step_status, - - - - - #{id}, - - - #{tenantKey}, - - - #{currencyCode}, - - - #{orderId}, - - - #{transactionId}, - - - #{memberId}, - - - #{platformCode}, - - - #{balance}, - - - #{quota}, - - - #{coinBefore}, - - - #{coinAfter}, - - - #{currencyBefore}, - - - #{currencyAfter}, - - - #{exchangeType}, - - - #{status}, - - - #{createBy}, - - - #{createTime}, - - - #{updateBy}, - - - #{updateTime}, - - - #{step}, - - - #{stepStatus}, - - - - - - update ff_game_exchange_money - - - tenant_key = #{tenantKey}, - - - currency_code = #{currencyCode}, - - - order_id = #{orderId}, - - - transaction_id = #{transactionId}, - - - member_id = #{memberId}, - - - platform_code = #{platformCode}, - - - balance = #{balance}, - - - quota = #{quota}, - - - coin_before = #{coinBefore}, - - - coin_after = #{coinAfter}, - - - currency_before = #{currencyBefore}, - - - currency_after = #{currencyAfter}, - - - exchange_type = #{exchangeType}, - - - status = #{status}, - - - create_by = #{createBy}, - - - create_time = #{createTime}, - - - update_by = #{updateBy}, - - - update_time = #{updateTime}, - - - step = #{step}, - - - step_status = #{stepStatus}, - - - where id = #{id} - - - - delete - from ff_game_exchange_money - where id = #{id} - - - - delete from ff_game_exchange_money where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameFreeRecordMapper.xml b/ff-game/src/main/resources/mapper/game/GameFreeRecordMapper.xml deleted file mode 100644 index 104152f..0000000 --- a/ff-game/src/main/resources/mapper/game/GameFreeRecordMapper.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id, currency_code, platform_code, reference_id, member_id, member_account, game_id, send_time, expired_time, free_update_time, send_game, send_amount, used_amount, unused_amount, free_status, create_by, create_time, update_by, update_time from ff_game_free_record - - - - - - - - insert into ff_game_free_record - id, - currency_code, - platform_code, - reference_id, - member_id, - member_account, - game_id, - send_time, - expired_time, - free_update_time, - send_game, - send_amount, - used_amount, - unused_amount, - free_status, - create_by, - create_time, - update_by, - update_time, - - #{id}, - #{currencyCode}, - #{platformCode}, - #{referenceId}, - #{memberId}, - #{memberAccount}, - #{gameId}, - #{sendTime}, - #{expiredTime}, - #{freeUpdateTime}, - #{sendGame}, - #{sendAmount}, - #{usedAmount}, - #{unusedAmount}, - #{freeStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_game_free_record - - currency_code = #{currencyCode}, - platform_code = #{platformCode}, - reference_id = #{referenceId}, - member_id = #{memberId}, - member_account = #{memberAccount}, - game_id = #{gameId}, - send_time = #{sendTime}, - expired_time = #{expiredTime}, - free_update_time = #{freeUpdateTime}, - send_game = #{sendGame}, - send_amount = #{sendAmount}, - used_amount = #{usedAmount}, - unused_amount = #{unusedAmount}, - free_status = #{freeStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_game_free_record where id = #{id} - - - - delete from ff_game_free_record where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/GameMapper.xml b/ff-game/src/main/resources/mapper/game/GameMapper.xml deleted file mode 100644 index 48f1b77..0000000 --- a/ff-game/src/main/resources/mapper/game/GameMapper.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - select id, sort_no, game_code,ingress, game_source_type, game_name, freespin, demo_status, stop_status, create_by, create_time, update_by, update_time, name_info, game_id, platform_code, platform_type from ff_game - - - - - - - - - - - - - - - - - - insert into ff_game - id, - sort_no, - game_code, - ingress, - game_source_type, - game_name, - freespin, - demo_status, - stop_status, - create_by, - create_time, - update_by, - update_time, - name_info, - game_id, - platform_code, - platform_type, - - #{id}, - #{sortNo}, - #{gameCode}, - #{ingress}, - #{gameSourceType}, - #{gameName}, - #{freespin}, - #{demoStatus}, - #{stopStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{nameInfo, typeHandler=com.ff.base.handler.JsonListHandler,javaType=com.ff.game.domain.NameInfo}, - #{gameId}, - #{platformCode}, - #{platformType}, - - - - - update ff_game - - sort_no = #{sortNo}, - game_code = #{gameCode}, - ingress = #{ingress}, - game_source_type = #{gameSourceType}, - game_name = #{gameName}, - freespin = #{freespin}, - demo_status = #{demoStatus}, - stop_status = #{stopStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - name_info = #{nameInfo, typeHandler=com.ff.base.handler.JsonListHandler,javaType=com.ff.game.domain.NameInfo}, - game_id = #{gameId}, - platform_code = #{platformCode}, - platform_type = #{platformType}, - - where id = #{id} - - - - delete from ff_game where id = #{id} - - - - delete from ff_game where id in - - #{id} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/game/PlatformMapper.xml b/ff-game/src/main/resources/mapper/game/PlatformMapper.xml deleted file mode 100644 index 3955a3c..0000000 --- a/ff-game/src/main/resources/mapper/game/PlatformMapper.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - select * from ff_platform - - - - - - - insert into ff_platform - - id, - sort_no, - platform_code, - platform_name, - platform_info, - url_info, - - key_info, - lang_info, - currency_info, - ext_info, - - stop_status, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{sortNo} - #{platformCode}, - #{platformName}, - #{platformInfo}, - #{urlInfo}, - #{keyInfo}, - #{langInfo}, - #{currencyInfo}, - #{stopStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_platform - - sort_no = #{sortNo}, - platform_code = #{platformCode}, - platform_name = #{platformName}, - platform_info = #{platformInfo}, - url_info = #{urlInfo}, - - key_info = #{keyInfo}, - lang_info = #{langInfo}, - currency_info = #{currencyInfo}, - ext_info = #{extInfo}, - - stop_status = #{stopStatus}, - create_by = #{createBy}, - create_time = #{updateTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_platform where id = #{id} - - - - delete from ff_platform where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/member/MemberMapper.xml b/ff-game/src/main/resources/mapper/member/MemberMapper.xml deleted file mode 100644 index 7415509..0000000 --- a/ff-game/src/main/resources/mapper/member/MemberMapper.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, tenant_key, member_account, game_account, platform_code, currency_code, create_by, create_time, update_by, update_time from ff_member - - - - - - - - insert into ff_member - id, - tenant_key, - member_account, - game_account, - platform_code, - currency_code, - create_by, - create_time, - update_by, - update_time, - - #{id}, - #{tenantKey}, - #{memberAccount}, - #{gameAccount}, - #{platformCode}, - #{currencyCode}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_member - - tenant_key = #{tenantKey}, - member_account = #{memberAccount}, - game_account = #{gameAccount}, - platform_code = #{platformCode}, - currency_code = #{currencyCode}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_member where id = #{id} - - - - delete from ff_member where id in - - #{id} - - - - - - - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/sys/SysFeedbackMapper.xml b/ff-game/src/main/resources/mapper/sys/SysFeedbackMapper.xml deleted file mode 100644 index d4341a2..0000000 --- a/ff-game/src/main/resources/mapper/sys/SysFeedbackMapper.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - select id, user_type, user_id, title, phone, content, status, reply_content, create_by, create_time, update_by, update_time from ff_sys_feedback - - - - - - - - insert into ff_sys_feedback - - id, - user_type, - user_id, - title, - phone, - content, - status, - reply_content, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{userType}, - #{userId}, - #{title}, - #{phone}, - #{content}, - #{status}, - #{replyContent}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_sys_feedback - - user_type = #{userType}, - user_id = #{userId}, - title = #{title}, - phone = #{phone}, - content = #{content}, - status = #{status}, - reply_content = #{replyContent}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_sys_feedback where id = #{id} - - - - delete from ff_sys_feedback where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/sys/SysNoticeMapper.xml b/ff-game/src/main/resources/mapper/sys/SysNoticeMapper.xml deleted file mode 100644 index e340eb8..0000000 --- a/ff-game/src/main/resources/mapper/sys/SysNoticeMapper.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - select id, title, content, create_by, create_time, update_by, update_time from ff_sys_notice - - - - - - - - insert into ff_sys_notice - - id, - title, - content, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{title}, - #{content}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_sys_notice - - title = #{title}, - content = #{content}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_sys_notice where id = #{id} - - - - delete from ff_sys_notice where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/system/SysConfigMapper.xml b/ff-game/src/main/resources/mapper/system/SysConfigMapper.xml deleted file mode 100644 index 5befd53..0000000 --- a/ff-game/src/main/resources/mapper/system/SysConfigMapper.xml +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark - from sys_config - - - - - - - and config_id = #{configId} - - - and config_key = #{configKey} - - - - - - - - - - - - - - insert into sys_config ( - config_id, - config_name, - config_key, - config_value, - config_type, - create_by, - remark, - create_time - )values( - #{configId}, - #{configName}, - #{configKey}, - #{configValue}, - #{configType}, - #{createBy}, - #{remark}, - UNIX_TIMESTAMP() * 1000 - ) - - - - update sys_config - - config_name = #{configName}, - config_key = #{configKey}, - config_value = #{configValue}, - config_type = #{configType}, - update_by = #{updateBy}, - remark = #{remark}, - update_time = UNIX_TIMESTAMP() * 1000 - - where config_id = #{configId} - - - - update sys_config - - config_name = #{configName}, - config_value = #{configValue}, - config_type = #{configType}, - update_by = #{updateBy}, - remark = #{remark}, - update_time = UNIX_TIMESTAMP() * 1000 - - where config_key = #{configKey} - - - - delete from sys_config where config_id = #{configId} - - - - delete from sys_config where config_id in - - #{configId} - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysDatasourceMapper.xml b/ff-game/src/main/resources/mapper/system/SysDatasourceMapper.xml deleted file mode 100644 index fe37001..0000000 --- a/ff-game/src/main/resources/mapper/system/SysDatasourceMapper.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - select id, tenant_id, url,time_zone_name, username, password, driver_class_name, status, create_by, create_time, update_by, update_time, time_zone from sys_datasource - - - - - - - - - - insert into sys_datasource - - id, - tenant_id, - url, - username, - password, - driver_class_name, - status, - create_by, - create_time, - update_by, - update_time, - time_zone, - time_zone_name, - - - #{id}, - #{tenantId}, - #{url}, - #{username}, - #{password}, - #{driverClassName}, - #{status}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{timeZone}, - #{timeZoneName}, - - - - - update sys_datasource - - tenant_id = #{tenantId}, - url = #{url}, - username = #{username}, - password = #{password}, - driver_class_name = #{driverClassName}, - status = #{status}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - time_zone = #{timeZone}, - time_zone_name = #{timeZoneName}, - - where id = #{id} - - - - delete from sys_datasource where id = #{id} - - - - delete from sys_datasource where id in - - #{id} - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysDeptMapper.xml b/ff-game/src/main/resources/mapper/system/SysDeptMapper.xml deleted file mode 100644 index 80eb339..0000000 --- a/ff-game/src/main/resources/mapper/system/SysDeptMapper.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time - from sys_dept d - - - - - - - - - - - - - - - - - - - - insert into sys_dept( - dept_id, - parent_id, - dept_name, - ancestors, - order_num, - leader, - phone, - email, - status, - create_by, - create_time - )values( - #{deptId}, - #{parentId}, - #{deptName}, - #{ancestors}, - #{orderNum}, - #{leader}, - #{phone}, - #{email}, - #{status}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - - update sys_dept - - parent_id = #{parentId}, - dept_name = #{deptName}, - ancestors = #{ancestors}, - order_num = #{orderNum}, - leader = #{leader}, - phone = #{phone}, - email = #{email}, - status = #{status}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where dept_id = #{deptId} - - - - update sys_dept set ancestors = - - when #{item.deptId} then #{item.ancestors} - - where dept_id in - - #{item.deptId} - - - - - update sys_dept set status = '0' where dept_id in - - #{deptId} - - - - - update sys_dept set del_flag = '2' where dept_id = #{deptId} - - - diff --git a/ff-game/src/main/resources/mapper/system/SysDictDataMapper.xml b/ff-game/src/main/resources/mapper/system/SysDictDataMapper.xml deleted file mode 100644 index 5756669..0000000 --- a/ff-game/src/main/resources/mapper/system/SysDictDataMapper.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark - from sys_dict_data - - - - - - - - - - - - - - delete from sys_dict_data where dict_code = #{dictCode} - - - - delete from sys_dict_data where dict_code in - - #{dictCode} - - - - - update sys_dict_data - - dict_sort = #{dictSort}, - dict_label = #{dictLabel}, - dict_value = #{dictValue}, - dict_type = #{dictType}, - css_class = #{cssClass}, - list_class = #{listClass}, - is_default = #{isDefault}, - status = #{status}, - remark = #{remark}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where dict_code = #{dictCode} - - - - update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} - - - - insert into sys_dict_data( - dict_code, - dict_sort, - dict_label, - dict_value, - dict_type, - css_class, - list_class, - is_default, - status, - remark, - create_by, - create_time - )values( - #{dictCode}, - #{dictSort}, - #{dictLabel}, - #{dictValue}, - #{dictType}, - #{cssClass}, - #{listClass}, - #{isDefault}, - #{status}, - #{remark}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - diff --git a/ff-game/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ff-game/src/main/resources/mapper/system/SysDictTypeMapper.xml deleted file mode 100644 index 9884573..0000000 --- a/ff-game/src/main/resources/mapper/system/SysDictTypeMapper.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - select dict_id, dict_name, dict_type, status, create_by, create_time, remark - from sys_dict_type - - - - - - - - - - - - - - delete from sys_dict_type where dict_id = #{dictId} - - - - delete from sys_dict_type where dict_id in - - #{dictId} - - - - - update sys_dict_type - - dict_name = #{dictName}, - dict_type = #{dictType}, - status = #{status}, - remark = #{remark}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where dict_id = #{dictId} - - - - insert into sys_dict_type( - dict_id, - dict_name, - dict_type, - status, - remark, - create_by, - create_time - )values( - #{dictId}, - #{dictName}, - #{dictType}, - #{status}, - #{remark}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - diff --git a/ff-game/src/main/resources/mapper/system/SysLogininforMapper.xml b/ff-game/src/main/resources/mapper/system/SysLogininforMapper.xml deleted file mode 100644 index 5b36cee..0000000 --- a/ff-game/src/main/resources/mapper/system/SysLogininforMapper.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - insert into sys_logininfor (info_id, user_name, status, ipaddr, login_location, browser, os, msg, login_time) - values (#{infoId},#{userName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, UNIX_TIMESTAMP() * 1000) - - - - - - delete from sys_logininfor where info_id in - - #{infoId} - - - - - truncate table sys_logininfor - - - diff --git a/ff-game/src/main/resources/mapper/system/SysMenuMapper.xml b/ff-game/src/main/resources/mapper/system/SysMenuMapper.xml deleted file mode 100644 index e751c24..0000000 --- a/ff-game/src/main/resources/mapper/system/SysMenuMapper.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time - from sys_menu - - - - - - - - - - - - - - - - - - - - - - - - - - update sys_menu - - menu_name = #{menuName}, - parent_id = #{parentId}, - order_num = #{orderNum}, - path = #{path}, - component = #{component}, - `query` = #{query}, - route_name = #{routeName}, - is_frame = #{isFrame}, - is_cache = #{isCache}, - menu_type = #{menuType}, - visible = #{visible}, - status = #{status}, - perms = #{perms}, - icon = #{icon}, - remark = #{remark}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where menu_id = #{menuId} - - - - insert into sys_menu( - menu_id, - parent_id, - menu_name, - order_num, - path, - component, - `query`, - route_name, - is_frame, - is_cache, - menu_type, - visible, - status, - perms, - icon, - remark, - create_by, - create_time - )values( - #{menuId}, - #{parentId}, - #{menuName}, - #{orderNum}, - #{path}, - #{component}, - #{query}, - #{routeName}, - #{isFrame}, - #{isCache}, - #{menuType}, - #{visible}, - #{status}, - #{perms}, - #{icon}, - #{remark}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - - delete from sys_menu where menu_id = #{menuId} - - - diff --git a/ff-game/src/main/resources/mapper/system/SysOperLogMapper.xml b/ff-game/src/main/resources/mapper/system/SysOperLogMapper.xml deleted file mode 100644 index 992dd6e..0000000 --- a/ff-game/src/main/resources/mapper/system/SysOperLogMapper.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time - from sys_oper_log - - - - insert into sys_oper_log(oper_Id,title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time) - values (#{operId},#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName}, #{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, UNIX_TIMESTAMP() * 1000) - - - - - - delete from sys_oper_log where oper_id in - - #{operId} - - - - - - - truncate table sys_oper_log - - - diff --git a/ff-game/src/main/resources/mapper/system/SysPostMapper.xml b/ff-game/src/main/resources/mapper/system/SysPostMapper.xml deleted file mode 100644 index 4083fd7..0000000 --- a/ff-game/src/main/resources/mapper/system/SysPostMapper.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - select post_id, post_code, post_name, post_sort, status, create_by, create_time, remark - from sys_post - - - - - - - - - - - - - - - - - - update sys_post - - post_code = #{postCode}, - post_name = #{postName}, - post_sort = #{postSort}, - status = #{status}, - remark = #{remark}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where post_id = #{postId} - - - - insert into sys_post( - post_id, - post_code, - post_name, - post_sort, - status, - remark, - create_by, - create_time - )values( - #{postId}, - #{postCode}, - #{postName}, - #{postSort}, - #{status}, - #{remark}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - - delete from sys_post where post_id = #{postId} - - - - delete from sys_post where post_id in - - #{postId} - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ff-game/src/main/resources/mapper/system/SysRoleDeptMapper.xml deleted file mode 100644 index f3ff871..0000000 --- a/ff-game/src/main/resources/mapper/system/SysRoleDeptMapper.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - delete from sys_role_dept where role_id=#{roleId} - - - - - - delete from sys_role_dept where role_id in - - #{roleId} - - - - - insert into sys_role_dept(role_id, dept_id) values - - (#{item.roleId},#{item.deptId}) - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysRoleMapper.xml b/ff-game/src/main/resources/mapper/system/SysRoleMapper.xml deleted file mode 100644 index 3c7b118..0000000 --- a/ff-game/src/main/resources/mapper/system/SysRoleMapper.xml +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, - r.status, r.del_flag, r.create_time, r.remark - from sys_role r - left join sys_user_role ur on ur.role_id = r.role_id - left join sys_user u on u.user_id = ur.user_id - left join sys_dept d on u.dept_id = d.dept_id - - - - - - - - - - - - - - - - - - - - - - - insert into sys_role( - role_id, - role_name, - role_key, - role_sort, - data_scope, - menu_check_strictly, - dept_check_strictly, - status, - remark, - create_by, - create_time - )values( - #{roleId}, - #{roleName}, - #{roleKey}, - #{roleSort}, - #{dataScope}, - #{menuCheckStrictly}, - #{deptCheckStrictly}, - #{status}, - #{remark}, - #{createBy}, - UNIX_TIMESTAMP() * 1000 - ) - - - - update sys_role - - role_name = #{roleName}, - role_key = #{roleKey}, - role_sort = #{roleSort}, - data_scope = #{dataScope}, - menu_check_strictly = #{menuCheckStrictly}, - dept_check_strictly = #{deptCheckStrictly}, - status = #{status}, - remark = #{remark}, - update_by = #{updateBy}, - update_time = UNIX_TIMESTAMP() * 1000 - - where role_id = #{roleId} - - - - update sys_role set del_flag = '2' where role_id = #{roleId} - - - - update sys_role set del_flag = '2' where role_id in - - #{roleId} - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ff-game/src/main/resources/mapper/system/SysRoleMenuMapper.xml deleted file mode 100644 index 6ad872d..0000000 --- a/ff-game/src/main/resources/mapper/system/SysRoleMenuMapper.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - delete from sys_role_menu where role_id=#{roleId} - - - - delete from sys_role_menu where role_id in - - #{roleId} - - - - - insert into sys_role_menu(role_id, menu_id) values - - (#{item.roleId},#{item.menuId}) - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysUserMapper.xml b/ff-game/src/main/resources/mapper/system/SysUserMapper.xml deleted file mode 100644 index 58ab200..0000000 --- a/ff-game/src/main/resources/mapper/system/SysUserMapper.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, - d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status, - r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status - from sys_user u - left join sys_dept d on u.dept_id = d.dept_id - left join sys_user_role ur on u.user_id = ur.user_id - left join sys_role r on r.role_id = ur.role_id - - - - - - - - - - - - - - - - - - - - insert into sys_user( - user_id, - dept_id, - user_name, - nick_name, - email, - avatar, - phonenumber, - sex, - password, - status, - create_by, - remark, - create_time - )values( - #{userId}, - #{deptId}, - #{userName}, - #{nickName}, - #{email}, - #{avatar}, - #{phonenumber}, - #{sex}, - #{password}, - #{status}, - #{createBy}, - #{remark}, - UNIX_TIMESTAMP() * 1000 - ) - - - - update sys_user - - dept_id = #{deptId}, - user_name = #{userName}, - nick_name = #{nickName}, - email = #{email}, - phonenumber = #{phonenumber}, - sex = #{sex}, - avatar = #{avatar}, - password = #{password}, - status = #{status}, - login_ip = #{loginIp}, - login_date = #{loginDate}, - update_by = #{updateBy}, - remark = #{remark}, - update_time = UNIX_TIMESTAMP() * 1000 - - where user_id = #{userId} - - - - update sys_user set status = #{status} where user_id = #{userId} - - - - update sys_user set avatar = #{avatar} where user_name = #{userName} - - - - update sys_user set password = #{password} where user_name = #{userName} - - - - update sys_user set del_flag = '2' where user_id = #{userId} - - - - update sys_user set del_flag = '2' where user_id in - - #{userId} - - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysUserPostMapper.xml b/ff-game/src/main/resources/mapper/system/SysUserPostMapper.xml deleted file mode 100644 index 288504d..0000000 --- a/ff-game/src/main/resources/mapper/system/SysUserPostMapper.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - delete from sys_user_post where user_id=#{userId} - - - - - - delete from sys_user_post where user_id in - - #{userId} - - - - - insert into sys_user_post(user_id, post_id) values - - (#{item.userId},#{item.postId}) - - - - diff --git a/ff-game/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ff-game/src/main/resources/mapper/system/SysUserRoleMapper.xml deleted file mode 100644 index 2604c71..0000000 --- a/ff-game/src/main/resources/mapper/system/SysUserRoleMapper.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - delete from sys_user_role where user_id=#{userId} - - - - - - delete from sys_user_role where user_id in - - #{userId} - - - - - insert into sys_user_role(user_id, role_id) values - - (#{item.userId},#{item.roleId}) - - - - - delete from sys_user_role where user_id=#{userId} and role_id=#{roleId} - - - - delete from sys_user_role where role_id=#{roleId} and user_id in - - #{userId} - - - diff --git a/ff-game/src/main/resources/mapper/system/TenantAgentMapper.xml b/ff-game/src/main/resources/mapper/system/TenantAgentMapper.xml deleted file mode 100644 index b7ca06d..0000000 --- a/ff-game/src/main/resources/mapper/system/TenantAgentMapper.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - select id,currency_agreement,wallet_address, account, password, register_time, register_ip, register_ip_city, login_ip, login_data, tenant_status, create_by, create_time, update_by, update_time from ff_tenant_agent - - - - - - - - - - insert into ff_tenant_agent - - account, - password, - register_time, - register_ip, - register_ip_city, - login_ip, - login_data, - tenant_status, - create_by, - create_time, - update_by, - update_time, - currency_agreement, - wallet_address, - - - #{account}, - #{password}, - #{registerTime}, - #{registerIp}, - #{registerIpCity}, - #{loginIp}, - #{loginData}, - #{tenantStatus}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - #{currencyAgreement}, - #{walletAddress}, - - - - - update ff_tenant_agent - - account = #{account}, - password = #{password}, - register_time = #{registerTime}, - register_ip = #{registerIp}, - register_ip_city = #{registerIpCity}, - login_ip = #{loginIp}, - login_data = #{loginData}, - tenant_status = #{tenantStatus}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - currency_agreement = #{currencyAgreement}, - wallet_address = #{walletAddress}, - - where id = #{id} - - - - delete from ff_tenant_agent where id = #{id} - - - - delete from ff_tenant_agent where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/system/TenantPlatformMapper.xml b/ff-game/src/main/resources/mapper/system/TenantPlatformMapper.xml deleted file mode 100644 index 740541a..0000000 --- a/ff-game/src/main/resources/mapper/system/TenantPlatformMapper.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - select id, tenant_id, platform_code, currency_code, cost, use_cost, create_by, create_time, update_by, update_time from ff_tenant_platform - - - - - - - - - - - - - insert into ff_tenant_platform - - id, - tenant_id, - platform_code, - currency_code, - cost, - use_cost, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{tenantId}, - #{platformCode}, - #{currencyCode}, - #{cost}, - #{useCost}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_platform - - tenant_id = #{tenantId}, - platform_code = #{platformCode}, - currency_code = #{currencyCode}, - cost = #{cost}, - use_cost = #{useCost}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_platform where id = #{id} - - - - delete from ff_tenant_platform where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/system/TenantSecretKeyMapper.xml b/ff-game/src/main/resources/mapper/system/TenantSecretKeyMapper.xml deleted file mode 100644 index 96c6f8d..0000000 --- a/ff-game/src/main/resources/mapper/system/TenantSecretKeyMapper.xml +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id, tenant_key, password, register_time, register_ip, register_ip_city, login_ip, login_data, agent_id, tenant_sn, tenant_secret, tenant_status, quota_type, score_ratio, tenant_type, deposit_ratio, create_by, create_time, update_by, update_time from ff_tenant_secret_key - - - - - - - - insert into ff_tenant_secret_key - - id, - tenant_key, - password, - register_time, - register_ip, - register_ip_city, - login_ip, - login_data, - agent_id, - tenant_sn, - tenant_secret, - tenant_status, - quota_type, - score_ratio, - tenant_type, - deposit_ratio, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{tenantKey}, - #{password}, - #{registerTime}, - #{registerIp}, - #{registerIpCity}, - #{loginIp}, - #{loginData}, - #{agentId}, - #{tenantSn}, - #{tenantSecret}, - #{tenantStatus}, - #{quotaType}, - #{scoreRatio}, - #{tenantType}, - #{depositRatio}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_secret_key - - tenant_key = #{tenantKey}, - password = #{password}, - register_time = #{registerTime}, - register_ip = #{registerIp}, - register_ip_city = #{registerIpCity}, - login_ip = #{loginIp}, - login_data = #{loginData}, - agent_id = #{agentId}, - tenant_sn = #{tenantSn}, - tenant_secret = #{tenantSecret}, - tenant_status = #{tenantStatus}, - quota_type = #{quotaType}, - score_ratio = #{scoreRatio}, - tenant_type = #{tenantType}, - deposit_ratio = #{depositRatio}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - - - - - delete from ff_tenant_secret_key where id = #{id} - - - - - - delete from ff_tenant_secret_key where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mapper/system/TenantWhiteMapper.xml b/ff-game/src/main/resources/mapper/system/TenantWhiteMapper.xml deleted file mode 100644 index 2efcf14..0000000 --- a/ff-game/src/main/resources/mapper/system/TenantWhiteMapper.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - select id, tenant_id, white_ip, create_by, create_time, update_by, update_time from ff_tenant_white - - - - - - - - insert into ff_tenant_white - - id, - tenant_id, - white_ip, - create_by, - create_time, - update_by, - update_time, - - - #{id}, - #{tenantId}, - #{whiteIp}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update ff_tenant_white - - tenant_id = #{tenantId}, - white_ip = #{whiteIp}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from ff_tenant_white where id = #{id} - - - - delete from ff_tenant_white where id in - - #{id} - - - \ No newline at end of file diff --git a/ff-game/src/main/resources/mybatis/mybatis-config.xml b/ff-game/src/main/resources/mybatis/mybatis-config.xml deleted file mode 100644 index ac47c03..0000000 --- a/ff-game/src/main/resources/mybatis/mybatis-config.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 9b00045..0000000 --- a/pom.xml +++ /dev/null @@ -1,264 +0,0 @@ - - - 4.0.0 - - com.ff - ff - 0.0.1 - - xk-platform - FF管理系统 - - - 0.0.1 - UTF-8 - UTF-8 - 1.8 - 3.1.1 - 5.3.33 - 5.7.12 - 1.2.23 - 1.21 - 3.0.0 - 2.3.3 - 1.4.7 - 2.0.43 - 6.6.1 - 2.13.0 - 4.1.2 - 2.3 - 0.9.1 - 4.5.10 - 3.4.1 - 3.4.1 - 1.2.3 - 2.3.0 - 1.6.3 - - - - - - - - com.dtflys.forest - forest-spring-boot-starter - ${forest.version} - - - com.xuxueli - xxl-job-core - ${xxl-job.version} - - - - org.springframework - spring-framework-bom - ${spring-framework.version} - pom - import - - - - - org.springframework.security - spring-security-bom - ${spring-security.version} - pom - import - - - - - org.springframework.boot - spring-boot-dependencies - 2.5.15 - pom - import - - - - - com.alibaba - druid-spring-boot-starter - ${druid.version} - - - - - eu.bitwalker - UserAgentUtils - ${bitwalker.version} - - - - - com.github.pagehelper - pagehelper-spring-boot-starter - ${pagehelper.boot.version} - - - - - com.github.oshi - oshi-core - ${oshi.version} - - - - - io.springfox - springfox-boot-starter - ${swagger.version} - - - io.swagger - swagger-models - - - - - - - commons-io - commons-io - ${commons.io.version} - - - - - org.apache.poi - poi-ooxml - ${poi.version} - - - - - org.apache.httpcomponents - httpclient - ${http.version} - - - - com.squareup.okhttp3 - okhttp - ${okhttp.version} - - - - - org.apache.velocity - velocity-engine-core - ${velocity.version} - - - - - com.alibaba.fastjson2 - fastjson2 - ${fastjson.version} - - - - - io.jsonwebtoken - jjwt - ${jwt.version} - - - - - pro.fessional - kaptcha - ${kaptcha.version} - - - - - com.google.zxing - core - ${zxing.version} - - - com.google.zxing - javase - ${zxing.version} - - - - cn.licoy - encrypt-body-spring-boot-starter - ${encrypt.version} - - - - - com.ff - ff-game - ${ff.version} - - - - com.ff - ff-fetcher - ${ff.version} - - - - com.ff - ff-mysql-entity - ${ff.version} - - - - - - ff-game - ff-fetcher - ff-bean/ff-mysql - - pom - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - ${project.build.sourceEncoding} - - - - - - - - public - aliyun nexus - https://maven.aliyun.com/repository/public - - true - - - - - - - public - aliyun nexus - https://maven.aliyun.com/repository/public - - true - - - false - - - - - diff --git a/sh/linux/build.sh b/sh/linux/build.sh deleted file mode 100644 index f3cabf4..0000000 --- a/sh/linux/build.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -targetName=xk-admin -basePath=/opt/server/dist/${targetName} - -# 1. 切换项目根目录 -cd "$(dirname "$0")/../.." - -# 2. 切换分支(可选参数) -if [ $# -gt 0 ]; then - echo "切换分支: $1" - git fetch - git checkout $1 -fi - -# 3. 拉取最新代码 -echo "拉取最新代码..." -git pull - -# 4. Maven 构建 -echo "开始打包..." -mvn -Dmaven.test.skip=true clean package - -if [ $? -eq 0 ]; then - echo "打包成功,开始拷贝文件..." - - # 5. 创建目标目录 - mkdir -p ${basePath}/config - mkdir -p ${basePath}/dumps - - # 6. 拷贝构建产物 - cp ff-game/target/xk-*.jar ${basePath}/ - - # 7. 拷贝配置文件 - cp ff-game/src/main/resources/application-prod.yml ${basePath}/config - - # 8. 拷贝启动脚本 - cp ./start.sh ${basePath}/ - - echo "构建并部署完成,路径:${basePath}" - -else - echo "构建失败,请检查构建日志。" - exit 1 -fi diff --git a/sh/linux/nginx.sh b/sh/linux/nginx.sh deleted file mode 100644 index e221f8e..0000000 --- a/sh/linux/nginx.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# 检查是否提供了所有必要参数 -if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then - echo "Error: All three parameters are required." - exit 1 -fi - -# 域名 -rootUrl=$1 -# 租户名称 -tenantName=$2 -# 前端路径 -packUrl=$3 - - -# 执行构建命令 -cd "$packUrl" || { echo "Error: Failed to change directory to $packUrl"; exit 1; } - - - - - -# 执行构建命令 -npm install - -npm run build -- --tenant="$tenantName" - - - - -# 删除目标目录下的所有文件和子目录 -rm -rf "$rootUrl" - -# 执行复制命令 -cp -r "$packUrl/dist/" "$rootUrl" - -sudo nginx -s reload -# 打印成功信息 -echo "Build and copy completed for server: $rootUrl and tenant: $tenantName" diff --git a/sh/linux/start.sh b/sh/linux/start.sh deleted file mode 100644 index 16af22b..0000000 --- a/sh/linux/start.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -export JAVA_HOME=/usr/local/jdk1.8.0_171 -export PATH=$JAVA_HOME/bin:$PATH - -targetName=xk-admin - -pids=$(jps| grep ${targetName}.jar|awk '{print $1}') -for pid in $pids -do - kill -9 $pid -done -nohup java \ - -XX:+PrintGCDetails \ - -XX:+PrintGCDateStamps \ - -Xloggc:gc.log \ - -XX:+HeapDumpOnOutOfMemoryError \ - -XX:HeapDumpPath=./dumps \ - -XX:MetaspaceSize=256m \ - -XX:MaxMetaspaceSize=256m \ - -Xms1g \ - -Xmx2g \ - -Xmn1g \ - -Xss256k \ - -XX:SurvivorRatio=8 \ - -XX:+UseG1GC \ - -XX:MaxGCPauseMillis=200 \ - -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7004 \ - -jar ${targetName}.jar \ - --spring.profiles.active=prod & - - - - - - - - - - diff --git a/sh/win/build.bat b/sh/win/build.bat deleted file mode 100644 index f6305a2..0000000 --- a/sh/win/build.bat +++ /dev/null @@ -1,54 +0,0 @@ -@echo off -setlocal - -set targetName=xk-admin -set basePath=\opt\server\dist\%targetName% - -:: 1. 切换到项目根目录(当前脚本所在目录的上两级) -cd /d %~dp0 -cd .. -cd .. - -:: 2. 可选分支切换(如果提供了参数) -if not "%1"=="" ( - echo 切换分支: %1 - git fetch - git checkout %1 -) - -:: 3. 拉取最新代码 -echo 拉取最新代码... -git pull - -:: 4. Maven 构建 -echo 开始打包... -mvn -Dmaven.test.skip=true clean package - -if errorlevel 1 ( - echo 构建失败,请检查构建日志。 - exit /b 1 -) - -:: 5. 创建目标目录 -echo 创建目标目录... -mkdir "%basePath%\config" -mkdir "%basePath%\dumps" - -:: 6. 拷贝构建产物 -echo 拷贝 JAR 包... -for /f %%f in ('dir /b ff-game\target\xk-*.jar') do ( - copy "ff-game\target\%%f" "%basePath%\" -) - -:: 7. 拷贝配置文件 -echo 拷贝配置文件... -copy "ff-game\src\main\resources\application-prod.yml" "%basePath%\config\" - -:: 8. 拷贝启动脚本 -echo 拷贝启动脚本... -copy ".\start.bat" "%basePath%\" - -echo 构建并部署完成,路径:%basePath% - -endlocal -pause diff --git a/sql/ff-admin.sql b/sql/ff-admin.sql deleted file mode 100644 index 02503af..0000000 --- a/sql/ff-admin.sql +++ /dev/null @@ -1,2186 +0,0 @@ -/* - Navicat Premium Data Transfer - - Source Server : 本地 - Source Server Type : MySQL - Source Server Version : 80039 - Source Host : 192.168.1.29:3306 - Source Schema : ff-admin - - Target Server Type : MySQL - Target Server Version : 80039 - File Encoding : 65001 - - Date: 21/10/2024 10:26:04 -*/ - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for ff_currency --- ---------------------------- -DROP TABLE IF EXISTS `ff_currency`; -CREATE TABLE `ff_currency` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `currency_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种编码', - `market_currency_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '市场币种编码', - `currency_sign` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种符号', - `game_rate` decimal(10, 2) NULL DEFAULT NULL COMMENT '游戏汇率', - `currency_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种类型(字典ff_currency)', - `currency_aisle` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种通道', - `currency_display` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种展示内容', - `currency_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种名称', - `full_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '币种全称', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '币种表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_currency --- ---------------------------- -INSERT INTO `ff_currency` VALUES (1, 'USDT', 'USDT', 'U', 1.00, '1', 'USD', 'USDT', 'USDT', 'Tether', '', '2024-10-17 17:24:35', '', '2024-10-17 17:29:18', 'USDT'); -INSERT INTO `ff_currency` VALUES (2, 'VND', 'VND', '₫', 1000.00, '2', NULL, 'VND1000:1', '越南盾', 'Vietnamese Dong', '', '2024-10-17 17:30:03', '', NULL, '越南盾'); - --- ---------------------------- --- Table structure for ff_member --- ---------------------------- -DROP TABLE IF EXISTS `ff_member`; -CREATE TABLE `ff_member` ( - `id` bigint NOT NULL COMMENT '主键id', - `currency_type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '币种(字典ff_currency)', - `member_account` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '会员账号', - `real_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '会员姓名', - `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '账号密码', - `withdraw_password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '提现密码', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '账号状态(0正常 1手动冻结 2异常冻结 3禁止领取优惠 4禁止提现 5黑名单 6停用 7禁止进入游戏 8自我禁止-限制游戏 9自我禁止-限制参与优惠 10自我禁止-限制登录)', - `vip_id` bigint NULL DEFAULT NULL COMMENT 'vip id', - `level_id` bigint NULL DEFAULT NULL COMMENT '会员层级id', - `label_id` bigint NULL DEFAULT NULL COMMENT '会员标签id', - `agent_id` bigint NULL DEFAULT NULL COMMENT '上级代理id', - `agent_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上级代理账号', - `channel_id` bigint NULL DEFAULT NULL COMMENT '渠道id', - `registe_way` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册方式(字典ff_registe_way)', - `registe_time` datetime NULL DEFAULT NULL COMMENT '注册时间', - `registe_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '注册IP', - `registe_ip_city` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册ip的城市', - `registe_domain` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '注册域名', - `registe_device_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册设备类型(字典ff_device_type)', - `registe_device_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册设备号', - `registe_browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册浏览器信息', - `registe_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册链接url', - `registe_fingerprint` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '注册浏览器指纹', - `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '男:1 女:2', - `birthday` date NULL DEFAULT NULL COMMENT '生日', - `area_code` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号区号', - `phone_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', - `first_charge_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '首充金额', - `first_charge_time` datetime NULL DEFAULT NULL COMMENT '首充时间', - `last_login_date` datetime NULL DEFAULT NULL COMMENT '上次登录时间', - `last_login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '上次登录IP', - `login_date` datetime NULL DEFAULT NULL COMMENT '最后登录时间', - `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '最后登录IP', - `login_ip_city` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录ip的城市', - `login_domain` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '最后登录域名', - `login_device_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录设备类型(字典ff_device_type)', - `login_device_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录设备号', - `login_browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录浏览器信息', - `login_fingerprint` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录浏览器指纹', - `verify_way` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '验证方式(字典ff_verify_way)', - `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '会员邮箱', - `face_book_account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'facebook账号', - `telegram_account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'telegram账号', - `whatsapp_account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'whatsapp账号', - `zalo_account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'zalo账号', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '会员备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member --- ---------------------------- - --- ---------------------------- --- Table structure for ff_member_account --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_account`; -CREATE TABLE `ff_member_account` ( - `id` bigint NOT NULL COMMENT '主键id', - `account_type` tinyint NULL DEFAULT NULL COMMENT '账户类型(0.余额钱包 1.奖励钱包)', - `member_id` bigint NOT NULL COMMENT '会员id', - `member_account` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '会员账号', - `real_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '会员姓名', - `version` bigint NULL DEFAULT NULL COMMENT '版本号', - `currency_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '币种', - `balance` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '余额', - `block_balance` decimal(10, 2) NULL DEFAULT 0.00 COMMENT '冻结余额', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员账户表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_account --- ---------------------------- - --- ---------------------------- --- Table structure for ff_member_account_detail --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_account_detail`; -CREATE TABLE `ff_member_account_detail` ( - `id` bigint NOT NULL COMMENT '主键id', - `account_id` bigint NULL DEFAULT NULL COMMENT '账户id', - `member_id` bigint NULL DEFAULT NULL COMMENT '用户id', - `account_type` tinyint NULL DEFAULT NULL COMMENT '账户类型(0.余额钱包 1.奖励钱包)', - `change_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '账变大类(字典 \r\nff_account_change_type)', - `change_small_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '账变小类', - `change_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '变动金额', - `before_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '变动前余额', - `after_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '变动后余额', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员账户明细表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_account_detail --- ---------------------------- - --- ---------------------------- --- Table structure for ff_member_charge --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_charge`; -CREATE TABLE `ff_member_charge` ( - `id` bigint NOT NULL COMMENT '主键id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员充值表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_charge --- ---------------------------- - --- ---------------------------- --- Table structure for ff_member_label --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_label`; -CREATE TABLE `ff_member_label` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `order_num` int NULL DEFAULT 0 COMMENT '显示顺序', - `label_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '标签名称', - `icon_color` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标颜色', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员标签表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_label --- ---------------------------- -INSERT INTO `ff_member_label` VALUES (2, 1, '默认标签', '#1677fd', 'admin', '2024-10-14 14:18:31', 'admin', '2024-10-18 09:34:00', '默认标签'); - --- ---------------------------- --- Table structure for ff_member_level --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_level`; -CREATE TABLE `ff_member_level` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `level_type` tinyint NULL DEFAULT NULL COMMENT '0.自动层级 1.固定层级', - `level_name` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '层级名称', - `label_id` bigint NULL DEFAULT NULL COMMENT '会员标签表id', - `charge_count` int NULL DEFAULT NULL COMMENT '充值次数', - `charge_amount` decimal(10, 0) NULL DEFAULT NULL COMMENT '累计充值金额', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员层级表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_level --- ---------------------------- -INSERT INTO `ff_member_level` VALUES (3, 1, '测试测试', 2, NULL, NULL, 'admin', '2024-10-16 16:17:16', '', NULL, '1123123'); -INSERT INTO `ff_member_level` VALUES (4, 1, '刷子玩家', NULL, NULL, NULL, 'admin', '2024-10-16 16:30:57', '', NULL, '破解验证注册的玩家'); -INSERT INTO `ff_member_level` VALUES (5, 0, '默认层级', NULL, 0, 0, 'admin', '2024-10-16 16:32:41', '', NULL, '默认层级'); - --- ---------------------------- --- Table structure for ff_member_log --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_log`; -CREATE TABLE `ff_member_log` ( - `id` bigint NOT NULL COMMENT '主键id', - `member_id` bigint NULL DEFAULT NULL COMMENT '会员id', - `member_account` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '会员账号', - `operate_time` datetime NULL DEFAULT NULL COMMENT '操作时间', - `operate_project` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作项目(字典ff_log_operproject)', - `operate_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作类型(字典ff_oper_type)', - `before_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '变更前', - `after_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '变更后', - `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '登录IP', - `login_ip_city` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后登录ip的城市', - `login_device_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录设备类型(字典ff_device_type)', - `login_device_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录设备号', - `login_browser` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录浏览器信息', - `result` tinyint NULL DEFAULT NULL COMMENT '结果(0.成功 1.失败)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_log --- ---------------------------- - --- ---------------------------- --- Table structure for ff_member_vip --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_vip`; -CREATE TABLE `ff_member_vip` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `grade` int NOT NULL COMMENT '等级', - `currency_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '币种', - `icon_parent_style` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标父样式(字典ff_vip_icon_parent_style )', - `icon_style` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标样式(字典ff_vip_icon_style)', - `icon_color` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标颜色(字典ff_vip_icon_color)', - `day_draw_top` decimal(10, 2) NULL DEFAULT NULL COMMENT '每日提现金额上限(0 表示不限制)', - `day_draw_count_top` int NULL DEFAULT NULL COMMENT '每日提现笔数上限(0 表示不限制)', - `day_service_fee_free_count` int NULL DEFAULT NULL COMMENT '每日免手续费笔数', - `promotion_charge` decimal(10, 0) NULL DEFAULT NULL COMMENT '晋级需再充值', - `promotion_pour` decimal(10, 0) NULL DEFAULT NULL COMMENT '晋级需再打码', - `promotion_bonus` decimal(10, 0) NULL DEFAULT NULL COMMENT '晋级奖金', - `month_charge` decimal(10, 2) NULL DEFAULT NULL COMMENT '当月充值', - `month_pour` decimal(10, 2) NULL DEFAULT NULL COMMENT '当月打码', - `month_salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '当月俸禄', - `month_top` decimal(10, 2) NULL DEFAULT NULL COMMENT '当月累计封顶', - `week_charge` decimal(10, 2) NULL DEFAULT NULL COMMENT '当周充值', - `week_pour` decimal(10, 2) NULL DEFAULT NULL COMMENT '当周打码', - `week_salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '当周俸禄', - `week_top` decimal(10, 2) NULL DEFAULT NULL COMMENT '当周累计封顶', - `day_charge` decimal(10, 2) NULL DEFAULT NULL COMMENT '当日充值', - `day_pour` decimal(10, 2) NULL DEFAULT NULL COMMENT '当日打码', - `day_salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '日俸禄', - `day_top` decimal(10, 2) NULL DEFAULT NULL COMMENT '日累计封顶', - `member_count` bigint NULL DEFAULT NULL COMMENT '会员人数', - `member_update_time` datetime NULL DEFAULT NULL COMMENT '会员人数更新时间', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员vip等级表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_vip --- ---------------------------- -INSERT INTO `ff_member_vip` VALUES (1, 0, 'VND', '1', '5', '6', 0.00, 5, 5, 0, 0, 0, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0, '2024-10-21 10:00:00', 'admin', '2024-10-16 14:09:58', 'admin', '2024-10-19 17:14:46', NULL); -INSERT INTO `ff_member_vip` VALUES (2, 1, 'VND', '1', '10', '3', 2.00, 6, 5, 0, 60000, 1800, 0.00, 3000.00, 6.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0, '2024-10-21 10:00:00', 'admin', '2024-10-16 14:24:37', 'admin', '2024-10-19 17:14:46', NULL); - --- ---------------------------- --- Table structure for ff_member_vip_setup --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_vip_setup`; -CREATE TABLE `ff_member_vip_setup` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `keep_grade` tinyint NULL DEFAULT NULL COMMENT '保级开关(0.关闭 1.开启)', - `reward_switch` tinyint NULL DEFAULT NULL COMMENT '奖励开关(0.关闭 1.开启)', - `set_type` tinyint NULL DEFAULT NULL COMMENT '设置类型(0.日俸禄 1.周俸禄 2.月俸禄 3.日/周/月 公共设置 4.其他设置(包含保级、奖励开关))', - `draw_time` tinyint NULL DEFAULT NULL COMMENT '领取时间(0.次日 1.实时领取(影响留存) 2.每日 3.下周 4.每周 5.下月 6.每月)', - `draw_start_time` time NULL DEFAULT NULL COMMENT '领取开始时间(次日 实时 每日 下周 每周 下月 每月)', - `draw_end_time` time NULL DEFAULT NULL COMMENT '领取结束时间(每日 每周 每月)', - `repeat_draw` tinyint NULL DEFAULT NULL COMMENT '晋级时是否重复领取(0.可重复领取(含跨级部分) 1.只能领取最高一档)', - `week_day` tinyint NULL DEFAULT NULL COMMENT '每周第几日', - `month_day` tinyint NULL DEFAULT NULL COMMENT '每月第几日', - `expire_reward_day` int NULL DEFAULT NULL COMMENT '奖励领取过期天数', - `distribute_way` tinyint NULL DEFAULT NULL COMMENT '派发方式(0.玩家自领(过期自动到账) 1.玩家自领(过期自动作废))', - `prohibit_level` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_bin NULL DEFAULT NULL COMMENT '禁止参与层级(黑名单)', - `audit_multiple` decimal(10, 2) NULL DEFAULT NULL COMMENT '稽核倍数(玩家需要达到稽核倍数的流水,才能提现)', - `appoint_platform` tinyint NULL DEFAULT NULL COMMENT '奖金稽核指定平台(0.不限制 1.仅限以下勾选平台)', - `audit_platfrom_ids` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '稽核指定平台ids', - `vip_icon` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标样式', - `rule_type` tinyint NULL DEFAULT NULL COMMENT '规则类型 0.自定义 1.系统翻译', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '规则说明', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员vip等级公共设置表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_vip_setup --- ---------------------------- -INSERT INTO `ff_member_vip_setup` VALUES (1, NULL, NULL, 0, 1, '00:00:00', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2024-10-16 10:03:20', 'admin', '2024-10-16 13:32:45', NULL); -INSERT INTO `ff_member_vip_setup` VALUES (2, NULL, NULL, 1, 1, '00:00:00', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2024-10-16 10:03:20', 'admin', '2024-10-16 13:32:45', NULL); -INSERT INTO `ff_member_vip_setup` VALUES (3, NULL, NULL, 2, 1, '00:00:00', NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2024-10-16 10:03:20', 'admin', '2024-10-16 13:32:45', NULL); -INSERT INTO `ff_member_vip_setup` VALUES (4, NULL, NULL, 3, 1, '00:00:00', NULL, 0, NULL, NULL, 30, 1, NULL, NULL, NULL, NULL, NULL, NULL, 'admin', '2024-10-16 10:10:33', 'admin', '2024-10-16 13:32:45', NULL); -INSERT INTO `ff_member_vip_setup` VALUES (5, 0, 1, 4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1.00, 0, NULL, '1', 1, 'admin', '2024-10-16 10:19:35', 'admin', '2024-10-16 13:32:45', '1.晋级标准:满足VIP晋级要求(即充值或有效投注都满足条件),即可晋级相应VIP等级,获得相应晋级奖金,如连续晋级多级,可获得全部等级晋级奖金,奖金实时可领取;\n2.日俸禄:每日充值及有效投注满足当前等级日俸禄要求,可获得对应日俸禄奖金,如连续晋级多级,可获得全部等级日俸禄奖金,奖金实时可领取;\n3.周俸禄:每周充值及有效投注满足当前等级周俸禄要求,可获得对应周俸禄奖金,如连续晋级多级,可获得全部等级周俸禄奖金,奖金实时可领取;\n4.月俸禄:每月充值及有效投注满足当前等级月俸禄要求,可获得对应月俸禄奖金,如连续晋级多级,可获得全部等级月俸禄奖金,奖金实时可领取;\n5.奖励过期时间:获得的奖金仅保留30天,期间内未主动领取,则过期作废,例如:1月1日获得奖励,保留30天,则1月32日 00:00:00过期作废;\n6.稽核说明:VIP所赠送的奖金需1倍流水(即稽核、打码或有效投注)才能提现,打码不限游戏平台;\n7.活动声明:本功能仅限账号本人进行正常游戏投注,禁止租借账号、无风险投注(对赌、对刷、低赔刷水)、恶意套利、使用外挂程式、机器人、利用协议、漏洞、接口、群控或其他技术手段参与,一经查核属实,本平台有权终止会员登录、暂停会员使用网站、及没收奖金和不当盈利的权利,无需特别通知;\n8.解释说明:会员领取VIP奖励时,本平台将默认会员同意且遵守对应条件等相关规定,为避免文字理解歧义,本平台保有本活动最终解释权。'); - --- ---------------------------- --- Table structure for ff_member_withdraw --- ---------------------------- -DROP TABLE IF EXISTS `ff_member_withdraw`; -CREATE TABLE `ff_member_withdraw` ( - `id` bigint NOT NULL COMMENT '主键id', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '会员提现表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_member_withdraw --- ---------------------------- - --- ---------------------------- --- Table structure for ff_payment_channel --- ---------------------------- -DROP TABLE IF EXISTS `ff_payment_channel`; -CREATE TABLE `ff_payment_channel` ( - `id` bigint NOT NULL COMMENT '主键id', - `parent_id` bigint NULL DEFAULT NULL COMMENT '子渠道id 顶级分类该id为0', - `channel_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渠道名称', - `channel_icon` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '大类图标', - `blacklist_status` tinyint NULL DEFAULT NULL COMMENT '充值黑名单状态 0.关闭 1.开启', - `switch_status` tinyint NULL DEFAULT NULL COMMENT '开启状态 0.关闭 1.开启', - `custom_tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '大类角标', - `order_num` int NULL DEFAULT 0 COMMENT '显示顺序', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '通道表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_payment_channel --- ---------------------------- - --- ---------------------------- --- Table structure for ff_payment_third_channel --- ---------------------------- -DROP TABLE IF EXISTS `ff_payment_third_channel`; -CREATE TABLE `ff_payment_third_channel` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id', - `currency_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '币种', - `channel_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渠道名称', - `merch_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商户名称', - `merch_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商户code', - `merch_privateKey` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商户私钥', - `merch_publicKey` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商户公钥', - `notify_white_ips` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '三方回调ip(多个逗号隔开)', - `pay_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '下单地址', - `query_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '查询地址', - `show_encrypted_field` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '加密字段(如:merchant_key,platform_public_key,merchant_private_key,merchant_public_key,extended_info)', - `success_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成功code(如:{\\\"message\\\":\\\"success\\\",\\\"success\\\":true} 、SUCCESS 、success 、OK 、ok)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '第三方支付渠道表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_payment_third_channel --- ---------------------------- - --- ---------------------------- --- Table structure for ff_payment_third_channel_way --- ---------------------------- -DROP TABLE IF EXISTS `ff_payment_third_channel_way`; -CREATE TABLE `ff_payment_third_channel_way` ( - `id` bigint NOT NULL COMMENT '主键id', - `third_channel_id` bigint NULL DEFAULT NULL COMMENT '第三方通道id', - `channel_way_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第三方通道方式code', - `channel_way_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第三方通道方式名称', - `channel_way_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第三方通道类型', - `money_max` decimal(10, 2) NULL DEFAULT NULL COMMENT '最大限额', - `money_min` decimal(10, 2) NULL DEFAULT NULL COMMENT '最小限额', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '第三方通道方式表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of ff_payment_third_channel_way --- ---------------------------- - --- ---------------------------- --- Table structure for gen_table --- ---------------------------- -DROP TABLE IF EXISTS `gen_table`; -CREATE TABLE `gen_table` ( - `table_id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '表名称', - `table_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '表描述', - `sub_table_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '关联子表的表名', - `sub_table_fk_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '子表关联的外键名', - `class_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '实体类名称', - `tpl_category` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'crud' COMMENT '使用的模板(crud单表操作 tree树表操作)', - `tpl_web_type` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '前端模板类型(element-ui模版 element-plus模版)', - `package_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生成包路径', - `module_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生成模块名', - `business_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生成业务名', - `function_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生成功能名', - `function_author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生成功能作者', - `gen_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '生成代码方式(0zip压缩包 1自定义路径)', - `gen_path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '/' COMMENT '生成路径(不填默认项目路径)', - `options` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '其它生成选项', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`table_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成业务表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table --- ---------------------------- -INSERT INTO `gen_table` VALUES (2, 'ff_member_label', '会员标签表', NULL, NULL, 'MemberLabel', 'crud', 'element-plus', 'com.ff.member', 'member', 'label', '会员标签', 'liukang', '0', '/', '{\"parentMenuId\":3006}', 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12', NULL); -INSERT INTO `gen_table` VALUES (3, 'ff_member_level', '会员层级表', NULL, NULL, 'MemberLevel', 'crud', 'element-plus', 'com.ff.member', 'member', 'level', '会员层级', 'liukang', '0', '/', '{\"parentMenuId\":3006}', 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49', NULL); -INSERT INTO `gen_table` VALUES (4, 'ff_member_vip', '会员vip等级表', NULL, NULL, 'MemberVip', 'crud', 'element-plus', 'com.ff.member', 'member', 'vip', 'vip等级', 'liukang', '0', '/', '{\"parentMenuId\":3006}', 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46', NULL); -INSERT INTO `gen_table` VALUES (6, 'ff_member_vip_setup', '会员vip等级公共设置表', NULL, NULL, 'MemberVipSetup', 'crud', 'element-plus', 'com.ff.member', 'member', 'vipSetup', '会员vip等级公共设置', 'liukang', '0', '/', '{\"parentMenuId\":\"\"}', 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23', NULL); -INSERT INTO `gen_table` VALUES (7, 'ff_member_log', '会员日志表', NULL, NULL, 'MemberLog', 'crud', 'element-plus', 'com.ff.member', 'member', 'log', '会员日志', 'liukang', '0', '/', '{\"parentMenuId\":3006}', 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18', NULL); -INSERT INTO `gen_table` VALUES (8, 'ff_member', '会员表', NULL, NULL, 'Member', 'crud', 'element-plus', 'com.ff.member', 'member', 'member', '所有会员', 'liukang', '0', '/', '{\"parentMenuId\":3006}', 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42', NULL); -INSERT INTO `gen_table` VALUES (12, 'ff_currency', '币种表', NULL, NULL, 'Currency', 'crud', 'element-plus', 'com.ff.operation', 'operation', 'currency', '币种管理', 'liukang', '0', '/', '{\"parentMenuId\":3044}', 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08', NULL); - --- ---------------------------- --- Table structure for gen_table_column --- ---------------------------- -DROP TABLE IF EXISTS `gen_table_column`; -CREATE TABLE `gen_table_column` ( - `column_id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', - `table_id` bigint NULL DEFAULT NULL COMMENT '归属表编号', - `column_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '列名称', - `column_comment` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '列描述', - `column_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '列类型', - `java_type` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'JAVA类型', - `java_field` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'JAVA字段名', - `is_pk` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否主键(1是)', - `is_increment` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否自增(1是)', - `is_required` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否必填(1是)', - `is_insert` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否为插入字段(1是)', - `is_edit` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否编辑字段(1是)', - `is_list` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否列表字段(1是)', - `is_query` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否查询字段(1是)', - `query_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'EQ' COMMENT '查询方式(等于、不等于、大于、小于、范围)', - `html_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)', - `dict_type` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典类型', - `sort` int NULL DEFAULT NULL COMMENT '排序', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`column_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 252 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '代码生成业务表字段' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of gen_table_column --- ---------------------------- -INSERT INTO `gen_table_column` VALUES (11, 2, 'id', '主键id', 'bigint', 'Long', 'id', '1', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (12, 2, 'label_name', '标签名称', 'varchar(16)', 'String', 'labelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 3, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (13, 2, 'icon_color', '图标颜色', 'varchar(100)', 'String', 'iconColor', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (14, 2, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 5, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (15, 2, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 6, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (16, 2, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 7, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (17, 2, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 8, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (18, 2, 'remark', '描述', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 9, 'admin', '2024-10-14 09:53:09', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (19, 2, 'order_num', '显示顺序', 'int', 'Long', 'orderNum', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 2, '', '2024-10-14 10:52:39', '', '2024-10-14 14:26:12'); -INSERT INTO `gen_table_column` VALUES (20, 3, 'id', '主键id', 'bigint', 'Long', 'id', '1', '1', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (21, 3, 'level_type', '0.自动层级 1.固定层级', 'tinyint', 'Integer', 'levelType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', '', 2, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (22, 3, 'level_name', '层级名称', 'varchar(24)', 'String', 'levelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 3, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (23, 3, 'label_id', '会员标签表id', 'bigint', 'Long', 'labelId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (24, 3, 'label_name', '会员标签名称', 'varchar(16)', 'String', 'labelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 5, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (25, 3, 'charge_count', '充值次数', 'int', 'Integer', 'chargeCount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 6, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (26, 3, 'charge_amount', '累计充值金额', 'decimal(10,0)', 'Long', 'chargeAmount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (27, 3, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 8, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (28, 3, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 9, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (29, 3, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 10, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (30, 3, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 11, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (31, 3, 'remark', '描述', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 12, 'admin', '2024-10-14 14:24:30', '', '2024-10-14 14:25:49'); -INSERT INTO `gen_table_column` VALUES (32, 4, 'id', '主键id', 'bigint', 'Long', 'id', '1', '1', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (33, 4, 'grade', '等级', 'int', 'Integer', 'grade', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (34, 4, 'currency_type', '币种(字典ff_currency)', 'varchar(10)', 'String', 'currencyType', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'select', 'ff_currency', 3, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (35, 4, 'icon_parent_style', '图标父样式(字典ff_vip_icon_parent_style )', 'varchar(200)', 'String', 'iconParentStyle', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_vip_icon_parent_style', 4, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (36, 4, 'icon_style', '图标样式(字典ff_vip_icon_style)', 'varchar(200)', 'String', 'iconStyle', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_vip_icon_style', 5, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (37, 4, 'icon_color', '图标颜色(字典ff_vip_icon_color)', 'varchar(200)', 'String', 'iconColor', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_vip_icon_color', 6, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (38, 4, 'promotion_charge', '晋级需再充值', 'decimal(10,0)', 'BigDecimal', 'promotionCharge', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (39, 4, 'promotion_pour', '晋级需再打码', 'decimal(10,0)', 'BigDecimal', 'promotionPour', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 11, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (40, 4, 'promotion_bonus', '晋级奖金', 'decimal(10,0)', 'BigDecimal', 'promotionBonus', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 12, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (41, 4, 'month_charge', '当月充值', 'decimal(10,2)', 'BigDecimal', 'monthCharge', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 13, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (42, 4, 'month_pour', '当月打码', 'decimal(10,2)', 'BigDecimal', 'monthPour', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 14, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (43, 4, 'month_salary', '当月俸禄', 'decimal(10,2)', 'BigDecimal', 'monthSalary', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 15, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (44, 4, 'month_top', '当月累计封顶', 'decimal(10,2)', 'BigDecimal', 'monthTop', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 16, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (45, 4, 'week_charge', '当周充值', 'decimal(10,2)', 'BigDecimal', 'weekCharge', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 17, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (46, 4, 'week_pour', '当周打码', 'decimal(10,2)', 'BigDecimal', 'weekPour', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 18, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (47, 4, 'week_salary', '当周俸禄', 'decimal(10,2)', 'BigDecimal', 'weekSalary', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 19, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (48, 4, 'week_top', '当周累计封顶', 'decimal(10,2)', 'BigDecimal', 'weekTop', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 20, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (49, 4, 'day_charge', '当日充值', 'decimal(10,2)', 'BigDecimal', 'dayCharge', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 21, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (50, 4, 'day_pour', '当日打码', 'decimal(10,2)', 'BigDecimal', 'dayPour', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 22, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (51, 4, 'day_salary', '日俸禄', 'decimal(10,2)', 'BigDecimal', 'daySalary', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 23, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (52, 4, 'day_top', '日累计封顶', 'decimal(10,2)', 'BigDecimal', 'dayTop', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 24, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (53, 4, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 27, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (54, 4, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 28, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (55, 4, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 29, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (56, 4, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 30, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (57, 4, 'remark', '描述', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 31, 'admin', '2024-10-15 16:07:03', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (72, 6, 'id', '主键id', 'bigint', 'Long', 'id', '1', '1', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (73, 6, 'keep_grade', '保级开关(0.关闭 1.开启)', 'tinyint', 'Integer', 'keepGrade', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (74, 6, 'reward_switch', '奖励开关(0.关闭 1.开启)', 'tinyint', 'Integer', 'rewardSwitch', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (76, 6, 'draw_time', '领取时间(0.次日 1.实时领取(影响留存) 2.每日 3.下周 4.每周 5.下月 6.每月)', 'tinyint', 'Integer', 'drawTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (77, 6, 'draw_start_time', '领取开始时间(次日 实时 每日 下周 每周 下月 每月)', 'time', 'Date', 'drawStartTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 6, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (78, 6, 'draw_end_time', '领取结束时间(每日 每周 每月)', 'time', 'Date', 'drawEndTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 7, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (79, 6, 'repeat_draw', '晋级时是否重复领取(0.可重复领取(含跨级部分) 1.只能领取最高一档)', 'tinyint', 'Integer', 'repeatDraw', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (80, 6, 'week_day', '每周第几日', 'tinyint', 'Integer', 'weekDay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (81, 6, 'month_day', '每月第几日', 'tinyint', 'Integer', 'monthDay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (82, 6, 'expire_reward_day', '奖励领取过期天数', 'int', 'Integer', 'expireRewardDay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 11, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (83, 6, 'distribute_way', '派发方式(0.玩家自领(过期自动到账) 1.玩家自领(过期自动作废))', 'tinyint', 'Integer', 'distributeWay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 12, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (84, 6, 'prohibit_level', '禁止参与层级(黑名单)', 'varchar(1000)', 'String', 'prohibitLevel', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'textarea', '', 13, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (85, 6, 'audit_multiple', '稽核倍数(玩家需要达到稽核倍数的流水,才能提现)', 'decimal(10,2)', 'BigDecimal', 'auditMultiple', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 14, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (86, 6, 'appoint_platform', '奖金稽核指定平台(0.不限制 1.仅限以下勾选平台)', 'tinyint', 'Integer', 'appointPlatform', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 15, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (87, 6, 'audit_platfrom_ids', '稽核指定平台ids', 'varchar(1000)', 'String', 'auditPlatfromIds', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'textarea', '', 16, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (88, 6, 'vip_icon', '图标样式', 'varchar(10)', 'String', 'vipIcon', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 17, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (89, 6, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 19, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (90, 6, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 20, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (91, 6, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 21, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (92, 6, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 22, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (93, 6, 'remark', '规则说明', 'varchar(2000)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 23, 'admin', '2024-10-15 16:31:37', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (94, 7, 'id', '主键id', 'bigint', 'Long', 'id', '1', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (95, 7, 'member_id', '会员id', 'bigint', 'Long', 'memberId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (96, 7, 'member_account', '会员账号', 'varchar(16)', 'String', 'memberAccount', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (97, 7, 'operate_time', '操作时间', 'datetime', 'Date', 'operateTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 4, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (98, 7, 'operate_project', '操作项目(字典ff_log_operproject)', 'varchar(50)', 'String', 'operateProject', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_log_operproject', 5, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (99, 7, 'operate_type', '操作类型(字典ff_oper_type)', 'varchar(50)', 'String', 'operateType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_oper_type', 6, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (100, 7, 'before_data', '变更前', 'varchar(255)', 'String', 'beforeData', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (101, 7, 'after_data', '变更后', 'varchar(255)', 'String', 'afterData', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (102, 7, 'login_ip', '登录IP', 'varchar(128)', 'String', 'loginIp', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 9, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (103, 7, 'login_ip_city', '最后登录ip的城市', 'varchar(100)', 'String', 'loginIpCity', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (104, 7, 'login_device_type', '登录设备类型(字典ff_device_type)', 'varchar(100)', 'String', 'loginDeviceType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_device_type', 11, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (105, 7, 'login_device_num', '登录设备号', 'varchar(100)', 'String', 'loginDeviceNum', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 12, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (106, 7, 'login_browser', '登录浏览器信息', 'varchar(100)', 'String', 'loginBrowser', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 13, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (107, 7, 'result', '结果(0.成功 1.失败)', 'tinyint', 'Integer', 'result', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 14, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (108, 7, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 15, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (109, 7, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 16, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (110, 7, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 17, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (111, 7, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 18, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (112, 7, 'remark', '备注', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 19, 'admin', '2024-10-15 16:40:47', '', '2024-10-15 16:43:18'); -INSERT INTO `gen_table_column` VALUES (113, 8, 'id', '主键id', 'bigint', 'Long', 'id', '1', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (114, 8, 'currency_type', '币种(字典ff_currency)', 'varchar(10)', 'String', 'currencyType', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'select', 'ff_currency', 2, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (115, 8, 'member_account', '会员账号', 'varchar(16)', 'String', 'memberAccount', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (116, 8, 'real_name', '会员姓名', 'varchar(50)', 'String', 'realName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 4, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (117, 8, 'password', '账号密码', 'varchar(100)', 'String', 'password', '0', '0', '1', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (118, 8, 'withdraw_password', '提现密码', 'varchar(100)', 'String', 'withdrawPassword', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 6, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (119, 8, 'status', '账号状态(0正常 1手动冻结 2异常冻结 3禁止领取优惠 4禁止提现 5黑名单 6停用 7禁止进入游戏 8自我禁止-限制游戏 9自我禁止-限制参与优惠 10自我禁止-限制登录)', 'char(1)', 'String', 'status', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'radio', '', 7, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (120, 8, 'vip_id', 'vip id', 'bigint', 'Long', 'vipId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (121, 8, 'vip_name', 'vip等级名称', 'varchar(255)', 'String', 'vipName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 9, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (122, 8, 'level_id', '会员层级id', 'bigint', 'Long', 'levelId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 10, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (123, 8, 'level_name', '层级名称', 'varchar(24)', 'String', 'levelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 11, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (124, 8, 'label_id', '会员标签id', 'bigint', 'Long', 'labelId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 12, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (125, 8, 'label_name', '标签名称', 'varchar(16)', 'String', 'labelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 13, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (126, 8, 'agent_id', '上级代理id', 'bigint', 'Long', 'agentId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 14, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (127, 8, 'agent_account', '上级代理账号', 'varchar(255)', 'String', 'agentAccount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 15, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (128, 8, 'channel\n_id', '渠道id(注册来源)', 'bigint', 'Long', 'channel\nId', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 16, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (129, 8, 'channel_name', '渠道名称(注册来源)', 'varchar(255)', 'String', 'channelName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 17, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (130, 8, 'registe_way', '注册方式(字典ff_registe_way)', 'varchar(10)', 'String', 'registeWay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_registe_way', 18, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (131, 8, 'registe_time', '注册时间', 'datetime', 'Date', 'registeTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 19, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (132, 8, 'registe_ip', '注册IP', 'varchar(128)', 'String', 'registeIp', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 20, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (133, 8, 'registe_ip_city', '注册ip的城市', 'varchar(100)', 'String', 'registeIpCity', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 21, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (134, 8, 'registe_domain', '注册域名', 'varchar(128)', 'String', 'registeDomain', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 22, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (135, 8, 'registe_device_type', '注册设备类型(字典ff_device_type)', 'varchar(100)', 'String', 'registeDeviceType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_device_type', 23, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (136, 8, 'registe_device_num', '注册设备号', 'varchar(100)', 'String', 'registeDeviceNum', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 24, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (137, 8, 'registe_browser', '注册浏览器信息', 'varchar(100)', 'String', 'registeBrowser', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 25, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (138, 8, 'registe_url', '注册链接url', 'varchar(255)', 'String', 'registeUrl', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 26, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (139, 8, 'registe_fingerprint', '注册浏览器指纹', 'varchar(255)', 'String', 'registeFingerprint', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 27, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (140, 8, 'sex', '男:1 女:2', 'char(1)', 'String', 'sex', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', '', 28, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (141, 8, 'birthday', '生日', 'date', 'Date', 'birthday', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 29, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (142, 8, 'area_code', '手机号区号', 'varchar(10)', 'String', 'areaCode', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 30, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (143, 8, 'phone_number', '手机号', 'varchar(20)', 'String', 'phoneNumber', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 31, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (144, 8, 'first_charge_amount', '首充金额', 'decimal(10,2)', 'BigDecimal', 'firstChargeAmount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 32, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (145, 8, 'first_charge_time', '首充时间', 'datetime', 'Date', 'firstChargeTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 33, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (146, 8, 'last_login_date', '上次登录时间', 'datetime', 'Date', 'lastLoginDate', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 34, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (147, 8, 'last_login_ip', '上次登录IP', 'varchar(128)', 'String', 'lastLoginIp', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 35, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (148, 8, 'login_date', '最后登录时间', 'datetime', 'Date', 'loginDate', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 36, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (149, 8, 'login_ip', '最后登录IP', 'varchar(128)', 'String', 'loginIp', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 37, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (150, 8, 'login_ip_city', '最后登录ip的城市', 'varchar(100)', 'String', 'loginIpCity', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 38, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (151, 8, 'login_domain', '最后登录域名', 'varchar(128)', 'String', 'loginDomain', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 39, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (152, 8, 'login_device_type', '最后登录设备类型(字典ff_device_type)', 'varchar(100)', 'String', 'loginDeviceType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_device_type', 40, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (153, 8, 'login_device_num', '最后登录设备号', 'varchar(100)', 'String', 'loginDeviceNum', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 41, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (154, 8, 'login_browser', '最后登录浏览器信息', 'varchar(100)', 'String', 'loginBrowser', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 42, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (155, 8, 'login_fingerprint', '最后登录浏览器指纹', 'varchar(255)', 'String', 'loginFingerprint', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 43, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (156, 8, 'verify_way', '验证方式(字典ff_verify_way)', 'varchar(10)', 'String', 'verifyWay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', 'ff_verify_way', 44, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (157, 8, 'email', '会员邮箱', 'varchar(50)', 'String', 'email', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 45, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (158, 8, 'face_book_account', 'facebook账号', 'varchar(50)', 'String', 'faceBookAccount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 46, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (159, 8, 'telegram_account', 'telegram账号', 'varchar(50)', 'String', 'telegramAccount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 47, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (160, 8, 'whatsapp_account', 'whatsapp账号', 'varchar(50)', 'String', 'whatsappAccount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 48, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (161, 8, 'zalo_account', 'zalo账号', 'varchar(50)', 'String', 'zaloAccount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 49, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (162, 8, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 50, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (163, 8, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 51, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (164, 8, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 52, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (165, 8, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 53, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (166, 8, 'remark', '会员备注', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 54, 'admin', '2024-10-15 16:48:54', '', '2024-10-15 16:53:42'); -INSERT INTO `gen_table_column` VALUES (167, 6, 'set_type', '设置类型(0.日俸禄 1.周俸禄 2.月俸禄 3.日/周/月 公共设置 4.其他设置(包含保级、奖励开关))', 'tinyint', 'Integer', 'setType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', '', 4, '', '2024-10-16 09:59:34', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (168, 6, 'rule_type', '规则类型 0.自定义 1.系统翻译', 'tinyint', 'Integer', 'ruleType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', '', 18, '', '2024-10-16 10:24:43', '', '2024-10-16 10:25:23'); -INSERT INTO `gen_table_column` VALUES (169, 4, 'day_draw_top', '每日提现金额上限(0 表示不限制)', 'decimal(10,2)', 'BigDecimal', 'dayDrawTop', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 7, '', '2024-10-16 17:01:49', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (170, 4, 'day_draw_count_top', '每日提现笔数上限(0 表示不限制)', 'int', 'Integer', 'dayDrawCountTop', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 8, '', '2024-10-16 17:01:49', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (171, 4, 'day_service_fee_free_count', '每日免手续费笔数', 'int', 'Integer', 'dayServiceFeeFreeCount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 9, '', '2024-10-16 17:01:49', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (235, 4, 'member_count', '会员人数', 'bigint', 'Long', 'memberCount', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 25, '', '2024-10-17 14:56:08', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (236, 4, 'member_update_time', '会员人数更新时间', 'datetime', 'Date', 'memberUpdateTime', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'datetime', '', 26, '', '2024-10-17 14:56:08', '', '2024-10-17 14:56:46'); -INSERT INTO `gen_table_column` VALUES (237, 12, 'id', '主键id', 'bigint', 'Long', 'id', '1', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 1, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (238, 12, 'currency_code', '币种编码', 'varchar(50)', 'String', 'currencyCode', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 2, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (239, 12, 'market_currency_code', '市场币种编码', 'varchar(50)', 'String', 'marketCurrencyCode', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 3, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (240, 12, 'currency_sign', '币种符号', 'varchar(50)', 'String', 'currencySign', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 4, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (241, 12, 'game_rate', '游戏汇率', 'decimal(10,2)', 'BigDecimal', 'gameRate', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 5, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (242, 12, 'currency_type', '币种类型(字典ff_currency)', 'varchar(10)', 'String', 'currencyType', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'select', 'ff_currency', 6, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (243, 12, 'currency_aisle', '币种通道', 'varchar(50)', 'String', 'currencyAisle', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 7, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (244, 12, 'currency_display', '币种展示内容', 'varchar(100)', 'String', 'currencyDisplay', '0', '0', '0', '1', '1', '1', '1', 'EQ', 'input', '', 8, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (245, 12, 'currency_name', '币种名称', 'varchar(100)', 'String', 'currencyName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 9, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (246, 12, 'full_name', '币种全称', 'varchar(100)', 'String', 'fullName', '0', '0', '0', '1', '1', '1', '1', 'LIKE', 'input', '', 10, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (247, 12, 'create_by', '创建者', 'varchar(64)', 'String', 'createBy', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'input', '', 11, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (248, 12, 'create_time', '创建时间', 'datetime', 'Date', 'createTime', '0', '0', '0', '1', NULL, NULL, NULL, 'EQ', 'datetime', '', 12, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (249, 12, 'update_by', '更新者', 'varchar(64)', 'String', 'updateBy', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'input', '', 13, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (250, 12, 'update_time', '更新时间', 'datetime', 'Date', 'updateTime', '0', '0', '0', '1', '1', NULL, NULL, 'EQ', 'datetime', '', 14, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); -INSERT INTO `gen_table_column` VALUES (251, 12, 'remark', '描述', 'varchar(500)', 'String', 'remark', '0', '0', '0', '1', '1', '1', NULL, 'EQ', 'textarea', '', 15, 'admin', '2024-10-17 16:30:04', '', '2024-10-17 16:32:08'); - --- ---------------------------- --- Table structure for qrtz_blob_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_blob_triggers`; -CREATE TABLE `qrtz_blob_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - `blob_data` blob NULL COMMENT '存放持久化Trigger对象', - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'Blob类型的触发器表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_blob_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_calendars --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_calendars`; -CREATE TABLE `qrtz_calendars` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '日历名称', - `calendar` blob NOT NULL COMMENT '存放持久化calendar对象', - PRIMARY KEY (`sched_name`, `calendar_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '日历信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_calendars --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_cron_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_cron_triggers`; -CREATE TABLE `qrtz_cron_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - `cron_expression` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'cron表达式', - `time_zone_id` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '时区', - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'Cron类型的触发器表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_cron_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_fired_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_fired_triggers`; -CREATE TABLE `qrtz_fired_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `entry_id` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度器实例id', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度器实例名', - `fired_time` bigint NOT NULL COMMENT '触发的时间', - `sched_time` bigint NOT NULL COMMENT '定时器制定的时间', - `priority` int NOT NULL COMMENT '优先级', - `state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '状态', - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务名称', - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务组名', - `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否并发', - `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否接受恢复执行', - PRIMARY KEY (`sched_name`, `entry_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '已触发的触发器表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_fired_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_job_details --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_job_details`; -CREATE TABLE `qrtz_job_details` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务名称', - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组名', - `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '相关介绍', - `job_class_name` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '执行任务类名称', - `is_durable` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '是否持久化', - `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '是否并发', - `is_update_data` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '是否更新数据', - `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '是否接受恢复执行', - `job_data` blob NULL COMMENT '存放持久化job对象', - PRIMARY KEY (`sched_name`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '任务详细信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_job_details --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_locks --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_locks`; -CREATE TABLE `qrtz_locks` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `lock_name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '悲观锁名称', - PRIMARY KEY (`sched_name`, `lock_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '存储的悲观锁信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_locks --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_paused_trigger_grps --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; -CREATE TABLE `qrtz_paused_trigger_grps` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - PRIMARY KEY (`sched_name`, `trigger_group`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '暂停的触发器表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_paused_trigger_grps --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_scheduler_state --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_scheduler_state`; -CREATE TABLE `qrtz_scheduler_state` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '实例名称', - `last_checkin_time` bigint NOT NULL COMMENT '上次检查时间', - `checkin_interval` bigint NOT NULL COMMENT '检查间隔时间', - PRIMARY KEY (`sched_name`, `instance_name`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '调度器状态表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_scheduler_state --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_simple_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simple_triggers`; -CREATE TABLE `qrtz_simple_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - `repeat_count` bigint NOT NULL COMMENT '重复的次数统计', - `repeat_interval` bigint NOT NULL COMMENT '重复的间隔时间', - `times_triggered` bigint NOT NULL COMMENT '已经触发的次数', - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '简单触发器的信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_simple_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_simprop_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_simprop_triggers`; -CREATE TABLE `qrtz_simprop_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键', - `str_prop_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'String类型的trigger的第一个参数', - `str_prop_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'String类型的trigger的第二个参数', - `str_prop_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'String类型的trigger的第三个参数', - `int_prop_1` int NULL DEFAULT NULL COMMENT 'int类型的trigger的第一个参数', - `int_prop_2` int NULL DEFAULT NULL COMMENT 'int类型的trigger的第二个参数', - `long_prop_1` bigint NULL DEFAULT NULL COMMENT 'long类型的trigger的第一个参数', - `long_prop_2` bigint NULL DEFAULT NULL COMMENT 'long类型的trigger的第二个参数', - `dec_prop_1` decimal(13, 4) NULL DEFAULT NULL COMMENT 'decimal类型的trigger的第一个参数', - `dec_prop_2` decimal(13, 4) NULL DEFAULT NULL COMMENT 'decimal类型的trigger的第二个参数', - `bool_prop_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'Boolean类型的trigger的第一个参数', - `bool_prop_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'Boolean类型的trigger的第二个参数', - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '同步机制的行锁表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_simprop_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for qrtz_triggers --- ---------------------------- -DROP TABLE IF EXISTS `qrtz_triggers`; -CREATE TABLE `qrtz_triggers` ( - `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调度名称', - `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发器的名字', - `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发器所属组的名字', - `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_job_details表job_name的外键', - `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'qrtz_job_details表job_group的外键', - `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '相关介绍', - `next_fire_time` bigint NULL DEFAULT NULL COMMENT '上一次触发时间(毫秒)', - `prev_fire_time` bigint NULL DEFAULT NULL COMMENT '下一次触发时间(默认为-1表示不触发)', - `priority` int NULL DEFAULT NULL COMMENT '优先级', - `trigger_state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发器状态', - `trigger_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '触发器的类型', - `start_time` bigint NOT NULL COMMENT '开始时间', - `end_time` bigint NULL DEFAULT NULL COMMENT '结束时间', - `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '日程表名称', - `misfire_instr` smallint NULL DEFAULT NULL COMMENT '补偿执行的策略', - `job_data` blob NULL COMMENT '存放持久化job对象', - PRIMARY KEY (`sched_name`, `trigger_name`, `trigger_group`) USING BTREE, - INDEX `sched_name`(`sched_name`, `job_name`, `job_group`) USING BTREE, - CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `job_name`, `job_group`) REFERENCES `qrtz_job_details` (`sched_name`, `job_name`, `job_group`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '触发器详细信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of qrtz_triggers --- ---------------------------- - --- ---------------------------- --- Table structure for sys_config --- ---------------------------- -DROP TABLE IF EXISTS `sys_config`; -CREATE TABLE `sys_config` ( - `config_id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键', - `config_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '参数名称', - `config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '参数键名', - `config_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '参数键值', - `config_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'N' COMMENT '系统内置(Y是 N否)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`config_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '参数配置表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_config --- ---------------------------- -INSERT INTO `sys_config` VALUES (1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2024-10-09 15:44:02', 'admin', '2024-10-11 15:44:07', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'); -INSERT INTO `sys_config` VALUES (2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2024-10-09 15:44:02', '', NULL, '初始化密码 123456'); -INSERT INTO `sys_config` VALUES (3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', '2024-10-09 15:44:02', '', NULL, '深色主题theme-dark,浅色主题theme-light'); -INSERT INTO `sys_config` VALUES (4, '账号自助-验证码开关', 'sys.account.captchaEnabled', 'true', 'Y', 'admin', '2024-10-09 15:44:02', '', NULL, '是否开启验证码功能(true开启,false关闭)'); -INSERT INTO `sys_config` VALUES (5, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', '2024-10-09 15:44:02', '', NULL, '是否开启注册用户功能(true开启,false关闭)'); -INSERT INTO `sys_config` VALUES (6, '用户登录-黑名单列表', 'sys.login.blackIPList', '', 'Y', 'admin', '2024-10-09 15:44:02', '', NULL, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'); - --- ---------------------------- --- Table structure for sys_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_dept`; -CREATE TABLE `sys_dept` ( - `dept_id` bigint NOT NULL AUTO_INCREMENT COMMENT '部门id', - `parent_id` bigint NULL DEFAULT 0 COMMENT '父部门id', - `ancestors` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '祖级列表', - `dept_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '部门名称', - `order_num` int NULL DEFAULT 0 COMMENT '显示顺序', - `leader` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '负责人', - `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '联系电话', - `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '部门状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`dept_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '部门表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dept --- ---------------------------- -INSERT INTO `sys_dept` VALUES (100, 0, '0', 'FF科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); -INSERT INTO `sys_dept` VALUES (109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL); - --- ---------------------------- --- Table structure for sys_dict_data --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_data`; -CREATE TABLE `sys_dict_data` ( - `dict_code` bigint NOT NULL AUTO_INCREMENT COMMENT '字典编码', - `dict_sort` int NULL DEFAULT 0 COMMENT '字典排序', - `dict_label` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典标签', - `dict_value` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典键值', - `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典类型', - `css_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '样式属性(其他样式扩展)', - `list_class` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '表格回显样式', - `is_default` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'N' COMMENT '是否默认(Y是 N否)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 193 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '字典数据表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_data --- ---------------------------- -INSERT INTO `sys_dict_data` VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '性别男'); -INSERT INTO `sys_dict_data` VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '性别女'); -INSERT INTO `sys_dict_data` VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '性别未知'); -INSERT INTO `sys_dict_data` VALUES (4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '显示菜单'); -INSERT INTO `sys_dict_data` VALUES (5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '隐藏菜单'); -INSERT INTO `sys_dict_data` VALUES (6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '停用状态'); -INSERT INTO `sys_dict_data` VALUES (8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '停用状态'); -INSERT INTO `sys_dict_data` VALUES (10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '默认分组'); -INSERT INTO `sys_dict_data` VALUES (11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '系统分组'); -INSERT INTO `sys_dict_data` VALUES (12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '系统默认是'); -INSERT INTO `sys_dict_data` VALUES (13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '系统默认否'); -INSERT INTO `sys_dict_data` VALUES (14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '通知'); -INSERT INTO `sys_dict_data` VALUES (15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '公告'); -INSERT INTO `sys_dict_data` VALUES (16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '关闭状态'); -INSERT INTO `sys_dict_data` VALUES (18, 99, '其他', '0', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '其他操作'); -INSERT INTO `sys_dict_data` VALUES (19, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '新增操作'); -INSERT INTO `sys_dict_data` VALUES (20, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '修改操作'); -INSERT INTO `sys_dict_data` VALUES (21, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '删除操作'); -INSERT INTO `sys_dict_data` VALUES (22, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '授权操作'); -INSERT INTO `sys_dict_data` VALUES (23, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '导出操作'); -INSERT INTO `sys_dict_data` VALUES (24, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '导入操作'); -INSERT INTO `sys_dict_data` VALUES (25, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '强退操作'); -INSERT INTO `sys_dict_data` VALUES (26, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '生成操作'); -INSERT INTO `sys_dict_data` VALUES (27, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '清空操作'); -INSERT INTO `sys_dict_data` VALUES (28, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '正常状态'); -INSERT INTO `sys_dict_data` VALUES (29, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '停用状态'); -INSERT INTO `sys_dict_data` VALUES (100, 13, '#2bfa38', '#2bfa38', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:34:10', 'admin', '2024-10-14 11:02:16', '绿色'); -INSERT INTO `sys_dict_data` VALUES (101, 11, '#f59a23', '#f59a23', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:35:59', 'admin', '2024-10-14 11:03:15', '橙色'); -INSERT INTO `sys_dict_data` VALUES (102, 10, '#db301a', '#db301a', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:36:29', 'admin', '2024-10-14 11:03:18', '红色'); -INSERT INTO `sys_dict_data` VALUES (103, 9, '#4d42cf', '#4d42cf', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:37:18', 'admin', '2024-10-14 11:03:22', '深蓝'); -INSERT INTO `sys_dict_data` VALUES (104, 8, '#1677fd', '#1677fd', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:38:28', 'admin', '2024-10-14 11:03:27', '淡蓝'); -INSERT INTO `sys_dict_data` VALUES (105, 7, '#000000', '#000000', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:39:11', 'admin', '2024-10-14 11:03:31', '黑色'); -INSERT INTO `sys_dict_data` VALUES (106, 6, '#4cb5ff', '#4cb5ff', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:40:23', 'admin', '2024-10-14 11:03:35', '浅蓝'); -INSERT INTO `sys_dict_data` VALUES (107, 5, '#874ce8', '#874ce8', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:41:18', 'admin', '2024-10-14 11:03:39', '深紫'); -INSERT INTO `sys_dict_data` VALUES (108, 4, '#cd55ff', '#cd55ff', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:41:52', 'admin', '2024-10-14 11:03:43', '淡紫'); -INSERT INTO `sys_dict_data` VALUES (109, 3, '#26a17b', '#26a17b', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:42:29', 'admin', '2024-10-14 11:03:47', '墨绿'); -INSERT INTO `sys_dict_data` VALUES (110, 2, '#ea4e3d', '#ea4e3d', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:43:13', 'admin', '2024-10-14 11:03:51', '浅红'); -INSERT INTO `sys_dict_data` VALUES (111, 12, '#ff7097', '#ff7097', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-12 09:44:13', 'admin', '2024-10-14 11:03:08', '粉色 '); -INSERT INTO `sys_dict_data` VALUES (112, 0, 'USDT', '1', 'ff_currency', NULL, 'default', 'N', '0', 'admin', '2024-10-12 10:55:47', 'admin', '2024-10-17 16:55:09', 'USDT(USDT)'); -INSERT INTO `sys_dict_data` VALUES (113, 0, 'VND', '2', 'ff_currency', NULL, 'default', 'N', '0', 'admin', '2024-10-12 10:56:28', 'admin', '2024-10-17 16:55:16', '越南盾(VND1000:1)'); -INSERT INTO `sys_dict_data` VALUES (118, 0, '账号注册', '1', 'ff_registe_way', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:07:55', '', NULL, '账号注册'); -INSERT INTO `sys_dict_data` VALUES (119, 0, 'FaceBook注册', '2', 'ff_registe_way', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:08:21', '', NULL, 'FaceBook注册'); -INSERT INTO `sys_dict_data` VALUES (120, 0, 'APP-iOS', 'APP-iOS', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:24:29', 'admin', '2024-10-15 09:35:10', 'APP-iOS'); -INSERT INTO `sys_dict_data` VALUES (121, 0, 'H5-iOS', 'H5-iOS', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:25:18', 'admin', '2024-10-15 09:35:17', 'H5-iOS'); -INSERT INTO `sys_dict_data` VALUES (122, 0, 'APP-Android', 'APP-Android', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:25:43', 'admin', '2024-10-15 09:35:22', 'APP-Android'); -INSERT INTO `sys_dict_data` VALUES (123, 0, 'H5-Android', 'H5-Android', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:26:09', 'admin', '2024-10-15 09:35:27', 'H5-Android'); -INSERT INTO `sys_dict_data` VALUES (124, 0, 'PC-Windows', 'PC-Windows', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:26:41', 'admin', '2024-10-15 09:35:33', 'PC-Windows'); -INSERT INTO `sys_dict_data` VALUES (125, 0, 'PC-Mac', 'PC-Mac', 'ff_device_type', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:27:06', 'admin', '2024-10-15 09:35:38', 'PC-Mac'); -INSERT INTO `sys_dict_data` VALUES (126, 0, '无验证', '1', 'ff_verify_way', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:42:17', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (127, 0, '短信验证', '2', 'ff_verify_way', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:42:31', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (128, 0, '谷歌验证', '3', 'ff_verify_way', NULL, 'default', 'N', '0', 'admin', '2024-10-12 16:42:43', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (130, 1, '无图标', 'NO_ICON', 'ff_member_label_icon', NULL, 'default', 'N', '0', 'admin', '2024-10-14 11:04:21', 'admin', '2024-10-14 11:04:26', NULL); -INSERT INTO `sys_dict_data` VALUES (131, 1, 'color1', '1', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:25:07', 'admin', '2024-10-14 15:51:18', NULL); -INSERT INTO `sys_dict_data` VALUES (132, 2, 'color2', '2', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:26:03', 'admin', '2024-10-14 15:51:30', NULL); -INSERT INTO `sys_dict_data` VALUES (133, 3, 'color3', '3', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:26:37', 'admin', '2024-10-14 15:51:40', NULL); -INSERT INTO `sys_dict_data` VALUES (134, 4, 'color4', '4', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:27:26', 'admin', '2024-10-14 15:51:49', NULL); -INSERT INTO `sys_dict_data` VALUES (135, 5, 'color5', '5', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:28:09', 'admin', '2024-10-14 15:51:58', NULL); -INSERT INTO `sys_dict_data` VALUES (136, 6, 'color6', '6', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:29:18', 'admin', '2024-10-14 15:52:06', NULL); -INSERT INTO `sys_dict_data` VALUES (137, 7, 'color7', '7', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:39:22', 'admin', '2024-10-14 15:52:13', NULL); -INSERT INTO `sys_dict_data` VALUES (138, 8, 'color8', '8', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:39:50', 'admin', '2024-10-14 15:52:33', NULL); -INSERT INTO `sys_dict_data` VALUES (139, 9, 'color9', '9', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:40:45', 'admin', '2024-10-14 15:52:42', NULL); -INSERT INTO `sys_dict_data` VALUES (140, 10, 'color10', '10', 'ff_vip_icon_color', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:41:05', 'admin', '2024-10-14 15:52:53', NULL); -INSERT INTO `sys_dict_data` VALUES (141, 0, 'style_0', '0', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:42:52', 'admin', '2024-10-14 15:49:54', NULL); -INSERT INTO `sys_dict_data` VALUES (142, 1, 'style_1', '1', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:43:25', 'admin', '2024-10-14 15:49:59', NULL); -INSERT INTO `sys_dict_data` VALUES (143, 2, 'style_2', '2', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:44:15', 'admin', '2024-10-14 15:50:04', NULL); -INSERT INTO `sys_dict_data` VALUES (144, 3, 'style_3', '3', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:44:32', 'admin', '2024-10-14 15:50:08', NULL); -INSERT INTO `sys_dict_data` VALUES (145, 4, 'style_4', '4', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:45:13', 'admin', '2024-10-14 15:50:12', NULL); -INSERT INTO `sys_dict_data` VALUES (146, 5, 'style_5', '5', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:45:33', 'admin', '2024-10-14 15:50:16', NULL); -INSERT INTO `sys_dict_data` VALUES (147, 6, 'style_6', '6', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:46:39', 'admin', '2024-10-14 15:50:20', NULL); -INSERT INTO `sys_dict_data` VALUES (148, 7, 'style_7', '7', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:46:59', 'admin', '2024-10-14 15:50:25', NULL); -INSERT INTO `sys_dict_data` VALUES (149, 8, 'style_8', '8', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:48:13', 'admin', '2024-10-14 15:50:30', NULL); -INSERT INTO `sys_dict_data` VALUES (150, 9, 'style_9', '9', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:48:30', 'admin', '2024-10-14 15:50:35', NULL); -INSERT INTO `sys_dict_data` VALUES (151, 10, 'style_10', '10', 'ff_vip_icon_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 13:48:48', 'admin', '2024-10-19 09:55:39', NULL); -INSERT INTO `sys_dict_data` VALUES (152, 1, 'style1', '1', 'ff_vip_icon_parent_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 15:48:20', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (153, 2, 'style2', '2', 'ff_vip_icon_parent_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 15:48:38', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (154, 3, 'style3', '3', 'ff_vip_icon_parent_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 15:48:50', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (155, 4, 'style4', '4', 'ff_vip_icon_parent_style', NULL, 'default', 'N', '0', 'admin', '2024-10-14 15:49:01', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (156, 0, '姓名', '姓名', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:42:38', 'admin', '2024-10-15 10:04:41', NULL); -INSERT INTO `sys_dict_data` VALUES (157, 1, '手机号', '手机号', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:43:10', 'admin', '2024-10-15 10:04:46', NULL); -INSERT INTO `sys_dict_data` VALUES (158, 2, '账号状态', '账号状态', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:44:34', 'admin', '2024-10-15 10:04:51', NULL); -INSERT INTO `sys_dict_data` VALUES (159, 3, '银行卡', '银行卡', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:45:08', 'admin', '2024-10-15 10:04:55', NULL); -INSERT INTO `sys_dict_data` VALUES (160, 4, '账号密码', '账号密码', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:46:13', 'admin', '2024-10-15 10:05:01', NULL); -INSERT INTO `sys_dict_data` VALUES (161, 5, '忘记密码', '忘记密码', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:48:37', 'admin', '2024-10-15 10:05:06', NULL); -INSERT INTO `sys_dict_data` VALUES (162, 6, '提现密码', '提现密码', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:49:06', 'admin', '2024-10-15 10:05:11', NULL); -INSERT INTO `sys_dict_data` VALUES (163, 7, 'WhatsApp', 'WhatsApp', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:50:30', 'admin', '2024-10-15 10:05:16', NULL); -INSERT INTO `sys_dict_data` VALUES (164, 8, 'Facebook', 'Facebook', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:50:57', 'admin', '2024-10-15 10:05:20', NULL); -INSERT INTO `sys_dict_data` VALUES (165, 9, 'Telegram', 'Telegram', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:51:20', 'admin', '2024-10-15 10:05:24', NULL); -INSERT INTO `sys_dict_data` VALUES (166, 10, 'Zalo', 'Zalo', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:51:40', 'admin', '2024-10-15 10:05:30', NULL); -INSERT INTO `sys_dict_data` VALUES (167, 11, '邮箱地址', '邮箱地址', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:52:30', 'admin', '2024-10-15 10:05:34', NULL); -INSERT INTO `sys_dict_data` VALUES (168, 12, '手势密码', '手势密码', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:52:54', 'admin', '2024-10-15 10:05:38', NULL); -INSERT INTO `sys_dict_data` VALUES (169, 13, '谷歌验证', '谷歌验证', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:53:19', 'admin', '2024-10-15 10:05:43', NULL); -INSERT INTO `sys_dict_data` VALUES (170, 14, '密保问题', '密保问题', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:53:55', 'admin', '2024-10-15 10:05:50', NULL); -INSERT INTO `sys_dict_data` VALUES (171, 15, '会员层级', '会员层级', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:54:29', 'admin', '2024-10-15 10:05:56', NULL); -INSERT INTO `sys_dict_data` VALUES (172, 16, '上级代理', '上级代理', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:55:06', 'admin', '2024-10-15 10:06:01', NULL); -INSERT INTO `sys_dict_data` VALUES (173, 17, '登录', '登录', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:55:25', 'admin', '2024-10-15 10:06:05', NULL); -INSERT INTO `sys_dict_data` VALUES (174, 18, '登出', '登出', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:55:37', 'admin', '2024-10-15 10:06:09', NULL); -INSERT INTO `sys_dict_data` VALUES (175, 19, 'VIP等级', 'VIP等级', 'ff_log_operproject', NULL, 'default', 'N', '0', 'admin', '2024-10-15 09:56:18', 'admin', '2024-10-15 10:06:18', NULL); -INSERT INTO `sys_dict_data` VALUES (176, 0, '无', '无', 'ff_oper_type', NULL, 'default', 'N', '0', 'admin', '2024-10-15 10:11:57', '', NULL, NULL); -INSERT INTO `sys_dict_data` VALUES (177, 1, '新增', '新增', 'ff_oper_type', NULL, 'default', 'N', '0', 'admin', '2024-10-15 10:12:11', 'admin', '2024-10-15 10:12:24', NULL); -INSERT INTO `sys_dict_data` VALUES (178, 2, '修改', '修改', 'ff_oper_type', NULL, 'default', 'N', '0', 'admin', '2024-10-15 10:12:19', 'admin', '2024-10-15 10:12:32', NULL); -INSERT INTO `sys_dict_data` VALUES (179, 0, '资金切换', '0', 'ff_account_change_type', NULL, 'primary', 'N', '0', 'admin', '2024-10-18 13:06:45', 'admin', '2024-10-18 13:07:14', '资金切换'); -INSERT INTO `sys_dict_data` VALUES (180, 1, '会员充值', '1', 'ff_account_change_type', NULL, 'success', 'N', '0', 'admin', '2024-10-18 13:07:08', 'admin', '2024-10-18 13:07:18', '会员充值'); -INSERT INTO `sys_dict_data` VALUES (181, 2, '会员提现', '2', 'ff_account_change_type', NULL, 'info', 'N', '0', 'admin', '2024-10-18 13:07:39', '', NULL, '会员提现'); -INSERT INTO `sys_dict_data` VALUES (182, 3, '银商结算', '3', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:08:22', '', NULL, '银商结算'); -INSERT INTO `sys_dict_data` VALUES (183, 4, '资金修正', '4', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:08:38', 'admin', '2024-10-18 13:17:05', '资金修正'); -INSERT INTO `sys_dict_data` VALUES (184, 5, '活动', '5', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:09:03', '', NULL, '活动'); -INSERT INTO `sys_dict_data` VALUES (185, 6, '返水', '6', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:09:30', 'admin', '2024-10-18 13:09:43', '返水'); -INSERT INTO `sys_dict_data` VALUES (186, 7, '返佣', '7', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:10:02', '', NULL, '返佣'); -INSERT INTO `sys_dict_data` VALUES (187, 8, '任务', '8', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:10:31', 'admin', '2024-10-18 13:10:37', '任务'); -INSERT INTO `sys_dict_data` VALUES (188, 9, 'VIP奖励', '9', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:11:12', '', NULL, 'VIP奖励'); -INSERT INTO `sys_dict_data` VALUES (189, 10, '充值优惠', '10', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:11:31', '', NULL, '充值优惠'); -INSERT INTO `sys_dict_data` VALUES (190, 11, '俱乐部', '11', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:11:48', 'admin', '2024-10-18 13:11:52', '俱乐部'); -INSERT INTO `sys_dict_data` VALUES (191, 12, '奖励', '12', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:12:07', '', NULL, '奖励'); -INSERT INTO `sys_dict_data` VALUES (192, 13, '公积金', '13', 'ff_account_change_type', NULL, 'default', 'N', '0', 'admin', '2024-10-18 13:12:21', '', NULL, '公积金'); - --- ---------------------------- --- Table structure for sys_dict_type --- ---------------------------- -DROP TABLE IF EXISTS `sys_dict_type`; -CREATE TABLE `sys_dict_type` ( - `dict_id` bigint NOT NULL AUTO_INCREMENT COMMENT '字典主键', - `dict_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典名称', - `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '字典类型', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`dict_id`) USING BTREE, - UNIQUE INDEX `dict_type`(`dict_type`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 112 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '字典类型表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_dict_type --- ---------------------------- -INSERT INTO `sys_dict_type` VALUES (1, '用户性别', 'sys_user_sex', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '用户性别列表'); -INSERT INTO `sys_dict_type` VALUES (2, '菜单状态', 'sys_show_hide', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '菜单状态列表'); -INSERT INTO `sys_dict_type` VALUES (3, '系统开关', 'sys_normal_disable', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '系统开关列表'); -INSERT INTO `sys_dict_type` VALUES (4, '任务状态', 'sys_job_status', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '任务状态列表'); -INSERT INTO `sys_dict_type` VALUES (5, '任务分组', 'sys_job_group', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '任务分组列表'); -INSERT INTO `sys_dict_type` VALUES (6, '系统是否', 'sys_yes_no', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '系统是否列表'); -INSERT INTO `sys_dict_type` VALUES (7, '通知类型', 'sys_notice_type', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '通知类型列表'); -INSERT INTO `sys_dict_type` VALUES (8, '通知状态', 'sys_notice_status', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '通知状态列表'); -INSERT INTO `sys_dict_type` VALUES (9, '操作类型', 'sys_oper_type', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '操作类型列表'); -INSERT INTO `sys_dict_type` VALUES (10, '系统状态', 'sys_common_status', '0', 'admin', '2024-10-09 15:44:02', '', NULL, '登录状态列表'); -INSERT INTO `sys_dict_type` VALUES (100, '会员标签图标', 'ff_member_label_icon', '0', 'admin', '2024-10-12 09:30:11', '', NULL, '会员标签图标'); -INSERT INTO `sys_dict_type` VALUES (101, '币种', 'ff_currency', '0', 'admin', '2024-10-12 10:54:26', '', NULL, '币种'); -INSERT INTO `sys_dict_type` VALUES (103, '注册方式', 'ff_registe_way', '0', 'admin', '2024-10-12 16:07:28', '', NULL, '注册方式'); -INSERT INTO `sys_dict_type` VALUES (104, '设备类型', 'ff_device_type', '0', 'admin', '2024-10-12 16:23:28', '', NULL, '设备类型'); -INSERT INTO `sys_dict_type` VALUES (105, '会员验证方式', 'ff_verify_way', '0', 'admin', '2024-10-12 16:42:00', '', NULL, '会员验证方式'); -INSERT INTO `sys_dict_type` VALUES (106, 'vip等级图标颜色', 'ff_vip_icon_color', '0', 'admin', '2024-10-14 13:20:37', 'admin', '2024-10-14 15:55:14', 'vip等级图标颜色'); -INSERT INTO `sys_dict_type` VALUES (107, 'vip等级图标样式', 'ff_vip_icon_style', '0', 'admin', '2024-10-14 13:42:14', 'admin', '2024-10-14 15:55:09', 'vip等级图标样式'); -INSERT INTO `sys_dict_type` VALUES (108, 'vip等级图标父样式', 'ff_vip_icon_parent_style', '0', 'admin', '2024-10-14 15:44:59', 'admin', '2024-10-14 15:54:59', 'vip等级图标父样式'); -INSERT INTO `sys_dict_type` VALUES (109, '会员日志操作项目', 'ff_log_operproject', '0', 'admin', '2024-10-15 09:41:00', 'admin', '2024-10-15 10:09:51', '会员日志操作项目'); -INSERT INTO `sys_dict_type` VALUES (110, '会员操作类型', 'ff_oper_type', '0', 'admin', '2024-10-15 10:10:56', '', NULL, '会员操作类型'); -INSERT INTO `sys_dict_type` VALUES (111, '会员账户变动大类', 'ff_account_change_type', '0', 'admin', '2024-10-18 13:03:44', '', NULL, '会员账户变动大类'); - --- ---------------------------- --- Table structure for sys_job --- ---------------------------- -DROP TABLE IF EXISTS `sys_job`; -CREATE TABLE `sys_job` ( - `job_id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID', - `job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调用目标字符串', - `cron_expression` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT 'cron执行表达式', - `misfire_policy` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '3' COMMENT '计划执行错误策略(1立即执行 2执行一次 3放弃执行)', - `concurrent` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '1' COMMENT '是否并发执行(0允许 1禁止)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '状态(0正常 1暂停)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '备注信息', - PRIMARY KEY (`job_id`, `job_name`, `job_group`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 101 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '定时任务调度表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_job --- ---------------------------- -INSERT INTO `sys_job` VALUES (1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', '2024-10-09 15:44:02', '', NULL, ''); -INSERT INTO `sys_job` VALUES (2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin', '2024-10-09 15:44:02', '', NULL, ''); -INSERT INTO `sys_job` VALUES (3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?', '3', '1', '1', 'admin', '2024-10-09 15:44:02', '', NULL, ''); -INSERT INTO `sys_job` VALUES (100, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', '0 0/30 * ? * *', '1', '1', '0', 'admin', '2024-10-17 15:29:44', '', '2024-10-17 15:29:48', ''); - --- ---------------------------- --- Table structure for sys_job_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_job_log`; -CREATE TABLE `sys_job_log` ( - `job_log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务日志ID', - `job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务名称', - `job_group` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组名', - `invoke_target` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '调用目标字符串', - `job_message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '日志信息', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '执行状态(0正常 1失败)', - `exception_info` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '异常信息', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`job_log_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 106 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '定时任务调度日志表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_job_log --- ---------------------------- -INSERT INTO `sys_job_log` VALUES (1, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:12毫秒', '0', '', '2024-10-17 15:29:51'); -INSERT INTO `sys_job_log` VALUES (2, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:12毫秒', '0', '', '2024-10-17 15:30:00'); -INSERT INTO `sys_job_log` VALUES (3, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:23毫秒', '0', '', '2024-10-17 16:00:00'); -INSERT INTO `sys_job_log` VALUES (4, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-17 16:30:00'); -INSERT INTO `sys_job_log` VALUES (5, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:33毫秒', '0', '', '2024-10-17 17:00:00'); -INSERT INTO `sys_job_log` VALUES (6, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-17 17:30:00'); -INSERT INTO `sys_job_log` VALUES (7, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:26毫秒', '0', '', '2024-10-17 18:00:00'); -INSERT INTO `sys_job_log` VALUES (8, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:420毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (9, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:32毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (10, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (11, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (12, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (13, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (14, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:18毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (15, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (16, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:10毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (17, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (18, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:10毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (19, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (20, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (21, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (22, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (23, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (24, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (25, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (26, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (27, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (28, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (29, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (30, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:4毫秒', '0', '', '2024-10-18 09:01:05'); -INSERT INTO `sys_job_log` VALUES (31, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:4毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (32, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:9毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (33, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:8毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (34, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:7毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (35, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:6毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (36, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:4毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (37, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 09:01:06'); -INSERT INTO `sys_job_log` VALUES (38, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:27毫秒', '0', '', '2024-10-18 09:30:00'); -INSERT INTO `sys_job_log` VALUES (39, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:32毫秒', '0', '', '2024-10-18 10:00:00'); -INSERT INTO `sys_job_log` VALUES (40, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:29毫秒', '0', '', '2024-10-18 10:30:00'); -INSERT INTO `sys_job_log` VALUES (41, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:31毫秒', '0', '', '2024-10-18 11:00:00'); -INSERT INTO `sys_job_log` VALUES (42, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-18 11:30:00'); -INSERT INTO `sys_job_log` VALUES (43, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:33毫秒', '0', '', '2024-10-18 12:00:00'); -INSERT INTO `sys_job_log` VALUES (44, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:30毫秒', '0', '', '2024-10-18 13:01:32'); -INSERT INTO `sys_job_log` VALUES (45, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-18 13:01:32'); -INSERT INTO `sys_job_log` VALUES (46, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:35毫秒', '0', '', '2024-10-18 13:30:00'); -INSERT INTO `sys_job_log` VALUES (47, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:32毫秒', '0', '', '2024-10-18 14:00:00'); -INSERT INTO `sys_job_log` VALUES (48, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:36毫秒', '0', '', '2024-10-18 14:30:00'); -INSERT INTO `sys_job_log` VALUES (49, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:36毫秒', '0', '', '2024-10-18 15:00:00'); -INSERT INTO `sys_job_log` VALUES (50, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-18 15:30:00'); -INSERT INTO `sys_job_log` VALUES (51, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:29毫秒', '0', '', '2024-10-18 16:00:00'); -INSERT INTO `sys_job_log` VALUES (52, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:31毫秒', '0', '', '2024-10-18 16:30:00'); -INSERT INTO `sys_job_log` VALUES (53, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:22毫秒', '0', '', '2024-10-18 17:00:00'); -INSERT INTO `sys_job_log` VALUES (54, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:32毫秒', '0', '', '2024-10-18 17:30:00'); -INSERT INTO `sys_job_log` VALUES (55, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:11毫秒', '0', '', '2024-10-18 18:00:00'); -INSERT INTO `sys_job_log` VALUES (56, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:20毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (57, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:3毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (58, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (59, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (60, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (61, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (62, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (63, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (64, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (65, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (66, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (67, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (68, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (69, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (70, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (71, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (72, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (73, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (74, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (75, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (76, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (77, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (78, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (79, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (80, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (81, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:2毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (82, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (83, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (84, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (85, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 09:06:49'); -INSERT INTO `sys_job_log` VALUES (86, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:10毫秒', '0', '', '2024-10-19 09:30:00'); -INSERT INTO `sys_job_log` VALUES (87, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:9毫秒', '0', '', '2024-10-19 10:00:00'); -INSERT INTO `sys_job_log` VALUES (88, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-19 10:30:00'); -INSERT INTO `sys_job_log` VALUES (89, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:23毫秒', '0', '', '2024-10-19 11:00:00'); -INSERT INTO `sys_job_log` VALUES (90, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:29毫秒', '0', '', '2024-10-19 11:30:00'); -INSERT INTO `sys_job_log` VALUES (91, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-19 12:00:00'); -INSERT INTO `sys_job_log` VALUES (92, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:5毫秒', '0', '', '2024-10-19 13:02:42'); -INSERT INTO `sys_job_log` VALUES (93, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:1毫秒', '0', '', '2024-10-19 13:02:42'); -INSERT INTO `sys_job_log` VALUES (94, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:30毫秒', '0', '', '2024-10-19 13:30:00'); -INSERT INTO `sys_job_log` VALUES (95, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:30毫秒', '0', '', '2024-10-19 14:00:00'); -INSERT INTO `sys_job_log` VALUES (96, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:31毫秒', '0', '', '2024-10-19 14:30:00'); -INSERT INTO `sys_job_log` VALUES (97, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:33毫秒', '0', '', '2024-10-19 15:00:00'); -INSERT INTO `sys_job_log` VALUES (98, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:33毫秒', '0', '', '2024-10-19 15:30:00'); -INSERT INTO `sys_job_log` VALUES (99, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:9毫秒', '0', '', '2024-10-19 16:00:00'); -INSERT INTO `sys_job_log` VALUES (100, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:9毫秒', '0', '', '2024-10-19 16:30:00'); -INSERT INTO `sys_job_log` VALUES (101, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:28毫秒', '0', '', '2024-10-19 17:00:00'); -INSERT INTO `sys_job_log` VALUES (102, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:28毫秒', '0', '', '2024-10-19 17:30:00'); -INSERT INTO `sys_job_log` VALUES (103, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-19 18:00:00'); -INSERT INTO `sys_job_log` VALUES (104, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:46毫秒', '0', '', '2024-10-21 09:30:00'); -INSERT INTO `sys_job_log` VALUES (105, 'vip等级人数修改', 'SYSTEM', 'memberVipTask.updateMemberVipCount()', 'vip等级人数修改 总共耗时:34毫秒', '0', '', '2024-10-21 10:00:00'); - --- ---------------------------- --- Table structure for sys_logininfor --- ---------------------------- -DROP TABLE IF EXISTS `sys_logininfor`; -CREATE TABLE `sys_logininfor` ( - `info_id` bigint NOT NULL AUTO_INCREMENT COMMENT '访问ID', - `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '用户账号', - `ipaddr` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '登录IP地址', - `login_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '登录地点', - `browser` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '浏览器类型', - `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '操作系统', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '登录状态(0成功 1失败)', - `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '提示消息', - `login_time` datetime NULL DEFAULT NULL COMMENT '访问时间', - PRIMARY KEY (`info_id`) USING BTREE, - INDEX `idx_sys_logininfor_s`(`status`) USING BTREE, - INDEX `idx_sys_logininfor_lt`(`login_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 201 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_logininfor --- ---------------------------- -INSERT INTO `sys_logininfor` VALUES (100, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-09 16:02:10'); -INSERT INTO `sys_logininfor` VALUES (101, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-09 16:02:18'); -INSERT INTO `sys_logininfor` VALUES (102, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-09 17:29:40'); -INSERT INTO `sys_logininfor` VALUES (103, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-10 09:27:44'); -INSERT INTO `sys_logininfor` VALUES (104, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-10 10:30:25'); -INSERT INTO `sys_logininfor` VALUES (105, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-10 18:06:34'); -INSERT INTO `sys_logininfor` VALUES (106, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 11:39:25'); -INSERT INTO `sys_logininfor` VALUES (107, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 11:39:33'); -INSERT INTO `sys_logininfor` VALUES (108, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 12:14:13'); -INSERT INTO `sys_logininfor` VALUES (109, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 12:15:18'); -INSERT INTO `sys_logininfor` VALUES (110, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 13:07:38'); -INSERT INTO `sys_logininfor` VALUES (111, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 13:11:12'); -INSERT INTO `sys_logininfor` VALUES (112, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 13:11:16'); -INSERT INTO `sys_logininfor` VALUES (113, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 13:25:06'); -INSERT INTO `sys_logininfor` VALUES (114, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 13:26:09'); -INSERT INTO `sys_logininfor` VALUES (115, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 15:04:16'); -INSERT INTO `sys_logininfor` VALUES (116, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-11 15:13:55'); -INSERT INTO `sys_logininfor` VALUES (117, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-11 15:13:57'); -INSERT INTO `sys_logininfor` VALUES (118, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-11 15:14:00'); -INSERT INTO `sys_logininfor` VALUES (119, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-11 15:14:03'); -INSERT INTO `sys_logininfor` VALUES (120, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 15:14:06'); -INSERT INTO `sys_logininfor` VALUES (121, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 15:30:51'); -INSERT INTO `sys_logininfor` VALUES (122, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 15:30:56'); -INSERT INTO `sys_logininfor` VALUES (123, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 15:44:13'); -INSERT INTO `sys_logininfor` VALUES (124, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 15:44:16'); -INSERT INTO `sys_logininfor` VALUES (125, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 16:12:29'); -INSERT INTO `sys_logininfor` VALUES (126, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 17:17:13'); -INSERT INTO `sys_logininfor` VALUES (127, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 17:29:46'); -INSERT INTO `sys_logininfor` VALUES (128, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 17:29:49'); -INSERT INTO `sys_logininfor` VALUES (129, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-11 17:29:54'); -INSERT INTO `sys_logininfor` VALUES (130, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 17:30:13'); -INSERT INTO `sys_logininfor` VALUES (131, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-11 17:32:47'); -INSERT INTO `sys_logininfor` VALUES (132, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 09:12:16'); -INSERT INTO `sys_logininfor` VALUES (133, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 09:29:16'); -INSERT INTO `sys_logininfor` VALUES (134, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 10:53:45'); -INSERT INTO `sys_logininfor` VALUES (135, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-12 11:16:13'); -INSERT INTO `sys_logininfor` VALUES (136, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 11:16:16'); -INSERT INTO `sys_logininfor` VALUES (137, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-12 11:17:06'); -INSERT INTO `sys_logininfor` VALUES (138, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-12 11:17:09'); -INSERT INTO `sys_logininfor` VALUES (139, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 11:17:12'); -INSERT INTO `sys_logininfor` VALUES (140, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 11:42:49'); -INSERT INTO `sys_logininfor` VALUES (141, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 13:01:32'); -INSERT INTO `sys_logininfor` VALUES (142, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 13:05:29'); -INSERT INTO `sys_logininfor` VALUES (143, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 13:22:15'); -INSERT INTO `sys_logininfor` VALUES (144, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 14:33:11'); -INSERT INTO `sys_logininfor` VALUES (145, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 16:06:50'); -INSERT INTO `sys_logininfor` VALUES (146, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-12 17:48:32'); -INSERT INTO `sys_logininfor` VALUES (147, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 09:39:50'); -INSERT INTO `sys_logininfor` VALUES (148, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 09:52:48'); -INSERT INTO `sys_logininfor` VALUES (149, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 10:15:29'); -INSERT INTO `sys_logininfor` VALUES (150, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-14 10:19:18'); -INSERT INTO `sys_logininfor` VALUES (151, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 10:19:21'); -INSERT INTO `sys_logininfor` VALUES (152, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 13:01:16'); -INSERT INTO `sys_logininfor` VALUES (153, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 13:04:50'); -INSERT INTO `sys_logininfor` VALUES (154, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-14 14:19:46'); -INSERT INTO `sys_logininfor` VALUES (155, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 14:19:48'); -INSERT INTO `sys_logininfor` VALUES (156, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 15:19:52'); -INSERT INTO `sys_logininfor` VALUES (157, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 15:45:39'); -INSERT INTO `sys_logininfor` VALUES (158, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 16:48:13'); -INSERT INTO `sys_logininfor` VALUES (159, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 18:11:15'); -INSERT INTO `sys_logininfor` VALUES (160, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-14 18:17:04'); -INSERT INTO `sys_logininfor` VALUES (161, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 09:16:49'); -INSERT INTO `sys_logininfor` VALUES (162, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 09:17:04'); -INSERT INTO `sys_logininfor` VALUES (163, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-15 10:03:05'); -INSERT INTO `sys_logininfor` VALUES (164, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 10:03:07'); -INSERT INTO `sys_logininfor` VALUES (165, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 10:44:56'); -INSERT INTO `sys_logininfor` VALUES (166, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 10:47:51'); -INSERT INTO `sys_logininfor` VALUES (167, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 11:18:56'); -INSERT INTO `sys_logininfor` VALUES (168, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 12:29:23'); -INSERT INTO `sys_logininfor` VALUES (169, 'admin', '127.0.0.1', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:12:30'); -INSERT INTO `sys_logininfor` VALUES (170, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:15:32'); -INSERT INTO `sys_logininfor` VALUES (171, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码已失效', '2024-10-15 13:32:29'); -INSERT INTO `sys_logininfor` VALUES (172, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:32:32'); -INSERT INTO `sys_logininfor` VALUES (173, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-15 13:32:45'); -INSERT INTO `sys_logininfor` VALUES (174, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:32:48'); -INSERT INTO `sys_logininfor` VALUES (175, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-15 13:40:06'); -INSERT INTO `sys_logininfor` VALUES (176, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-15 13:43:45'); -INSERT INTO `sys_logininfor` VALUES (177, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-15 13:43:45'); -INSERT INTO `sys_logininfor` VALUES (178, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:44:42'); -INSERT INTO `sys_logininfor` VALUES (179, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 13:45:17'); -INSERT INTO `sys_logininfor` VALUES (180, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:20:50'); -INSERT INTO `sys_logininfor` VALUES (181, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:21:10'); -INSERT INTO `sys_logininfor` VALUES (182, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:21:19'); -INSERT INTO `sys_logininfor` VALUES (183, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:21:33'); -INSERT INTO `sys_logininfor` VALUES (184, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:23:46'); -INSERT INTO `sys_logininfor` VALUES (185, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:25:27'); -INSERT INTO `sys_logininfor` VALUES (186, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:33:15'); -INSERT INTO `sys_logininfor` VALUES (187, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-15 14:33:15'); -INSERT INTO `sys_logininfor` VALUES (188, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:38:11'); -INSERT INTO `sys_logininfor` VALUES (189, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '用户不存在/密码错误', '2024-10-15 14:39:20'); -INSERT INTO `sys_logininfor` VALUES (190, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 14:43:39'); -INSERT INTO `sys_logininfor` VALUES (191, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 14:43:49'); -INSERT INTO `sys_logininfor` VALUES (192, 'admin', '192.168.1.29', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 15:03:41'); -INSERT INTO `sys_logininfor` VALUES (193, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码已失效', '2024-10-15 16:01:03'); -INSERT INTO `sys_logininfor` VALUES (194, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-15 16:01:07'); -INSERT INTO `sys_logininfor` VALUES (195, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '退出成功', '2024-10-17 13:16:57'); -INSERT INTO `sys_logininfor` VALUES (196, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '1', '验证码错误', '2024-10-17 13:17:14'); -INSERT INTO `sys_logininfor` VALUES (197, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-17 13:17:21'); -INSERT INTO `sys_logininfor` VALUES (198, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-17 16:30:52'); -INSERT INTO `sys_logininfor` VALUES (199, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-19 16:56:35'); -INSERT INTO `sys_logininfor` VALUES (200, 'admin', '192.168.1.34', '内网IP', 'Chrome 12', 'Windows 10', '0', '登录成功', '2024-10-21 10:03:21'); - --- ---------------------------- --- Table structure for sys_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_menu`; -CREATE TABLE `sys_menu` ( - `menu_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', - `menu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', - `parent_id` bigint NULL DEFAULT 0 COMMENT '父菜单ID', - `order_num` int NULL DEFAULT 0 COMMENT '显示顺序', - `path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '路由地址', - `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '组件路径', - `query` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '路由参数', - `route_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '路由名称', - `is_frame` int NULL DEFAULT 1 COMMENT '是否为外链(0是 1否)', - `is_cache` int NULL DEFAULT 0 COMMENT '是否缓存(0缓存 1不缓存)', - `menu_type` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)', - `visible` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '菜单状态(0正常 1停用)', - `perms` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '权限标识', - `icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '#' COMMENT '菜单图标', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '备注', - PRIMARY KEY (`menu_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 3051 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_menu --- ---------------------------- -INSERT INTO `sys_menu` VALUES (1, '系统管理', 0, 8, 'system', NULL, '', '', 1, 0, 'M', '0', '0', '', 'system', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-17 09:45:32', '系统管理目录'); -INSERT INTO `sys_menu` VALUES (2, '系统监控', 0, 9, 'monitor', NULL, '', '', 1, 0, 'M', '0', '0', '', 'monitor', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-17 09:45:37', '系统监控目录'); -INSERT INTO `sys_menu` VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', '', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 'admin', '2024-10-09 15:44:01', '', NULL, '用户管理菜单'); -INSERT INTO `sys_menu` VALUES (101, '角色管理', 1, 2, 'role', 'system/role/index', '', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 'admin', '2024-10-09 15:44:01', '', NULL, '角色管理菜单'); -INSERT INTO `sys_menu` VALUES (102, '菜单管理', 1, 3, 'menu', 'system/menu/index', '', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'tree-table', 'admin', '2024-10-09 15:44:01', '', NULL, '菜单管理菜单'); -INSERT INTO `sys_menu` VALUES (103, '部门管理', 1, 4, 'dept', 'system/dept/index', '', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree', 'admin', '2024-10-09 15:44:01', '', NULL, '部门管理菜单'); -INSERT INTO `sys_menu` VALUES (104, '岗位管理', 1, 5, 'post', 'system/post/index', '', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 'admin', '2024-10-09 15:44:01', '', NULL, '岗位管理菜单'); -INSERT INTO `sys_menu` VALUES (105, '字典管理', 1, 6, 'dict', 'system/dict/index', '', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict', 'admin', '2024-10-09 15:44:01', '', NULL, '字典管理菜单'); -INSERT INTO `sys_menu` VALUES (106, '参数设置', 1, 7, 'config', 'system/config/index', '', '', 1, 0, 'C', '0', '0', 'system:config:list', 'edit', 'admin', '2024-10-09 15:44:01', '', NULL, '参数设置菜单'); -INSERT INTO `sys_menu` VALUES (108, '日志管理', 1, 9, 'log', '', '', '', 1, 0, 'M', '0', '0', '', 'log', 'admin', '2024-10-09 15:44:01', '', NULL, '日志管理菜单'); -INSERT INTO `sys_menu` VALUES (109, '在线用户', 2, 1, 'online', 'monitor/online/index', '', '', 1, 0, 'C', '1', '0', 'monitor:online:list', 'online', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:42:03', '在线用户菜单'); -INSERT INTO `sys_menu` VALUES (110, '定时任务', 2, 2, 'job', 'monitor/job/index', '', '', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', '2024-10-09 15:44:01', '', NULL, '定时任务菜单'); -INSERT INTO `sys_menu` VALUES (111, '数据监控', 2, 3, 'druid', 'monitor/druid/index', '', '', 1, 0, 'C', '1', '0', 'monitor:druid:list', 'druid', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:42:25', '数据监控菜单'); -INSERT INTO `sys_menu` VALUES (112, '服务监控', 2, 4, 'server', 'monitor/server/index', '', '', 1, 0, 'C', '1', '0', 'monitor:server:list', 'server', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:42:34', '服务监控菜单'); -INSERT INTO `sys_menu` VALUES (113, '缓存监控', 2, 5, 'cache', 'monitor/cache/index', '', '', 1, 0, 'C', '1', '0', 'monitor:cache:list', 'redis', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:42:39', '缓存监控菜单'); -INSERT INTO `sys_menu` VALUES (114, '缓存列表', 2, 6, 'cacheList', 'monitor/cache/list', '', '', 1, 0, 'C', '1', '0', 'monitor:cache:list', 'redis-list', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:42:44', '缓存列表菜单'); -INSERT INTO `sys_menu` VALUES (116, '代码生成', 2, 2, 'gen', 'tool/gen/index', '', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', '2024-10-09 15:44:01', '', NULL, '代码生成菜单'); -INSERT INTO `sys_menu` VALUES (500, '操作日志', 108, 1, 'operlog', 'monitor/operlog/index', '', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 'admin', '2024-10-09 15:44:01', '', NULL, '操作日志菜单'); -INSERT INTO `sys_menu` VALUES (501, '登录日志', 108, 2, 'logininfor', 'monitor/logininfor/index', '', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 'admin', '2024-10-09 15:44:01', '', NULL, '登录日志菜单'); -INSERT INTO `sys_menu` VALUES (1000, '用户查询', 100, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1001, '用户新增', 100, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1002, '用户修改', 100, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1003, '用户删除', 100, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1004, '用户导出', 100, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1005, '用户导入', 100, 6, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1006, '重置密码', 100, 7, '', '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1007, '角色查询', 101, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1008, '角色新增', 101, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1009, '角色修改', 101, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1010, '角色删除', 101, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1011, '角色导出', 101, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1012, '菜单查询', 102, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1013, '菜单新增', 102, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1014, '菜单修改', 102, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1015, '菜单删除', 102, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1016, '部门查询', 103, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1017, '部门新增', 103, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1018, '部门修改', 103, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1019, '部门删除', 103, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1020, '岗位查询', 104, 1, '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1021, '岗位新增', 104, 2, '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1022, '岗位修改', 104, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1023, '岗位删除', 104, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1024, '岗位导出', 104, 5, '', '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1025, '字典查询', 105, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1026, '字典新增', 105, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1027, '字典修改', 105, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1028, '字典删除', 105, 4, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1029, '字典导出', 105, 5, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1030, '参数查询', 106, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1031, '参数新增', 106, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1032, '参数修改', 106, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1033, '参数删除', 106, 4, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1034, '参数导出', 106, 5, '#', '', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1039, '操作查询', 500, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1040, '操作删除', 500, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1041, '日志导出', 500, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1042, '登录查询', 501, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1043, '登录删除', 501, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1044, '日志导出', 501, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1045, '账户解锁', 501, 4, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1046, '在线查询', 109, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1047, '批量强退', 109, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1048, '单条强退', 109, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1049, '任务查询', 110, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1050, '任务新增', 110, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1051, '任务修改', 110, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1052, '任务删除', 110, 4, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1053, '状态修改', 110, 5, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (1054, '任务导出', 110, 6, '#', '', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (2004, '接口文档', 2, 3, 'swagger', 'tool/swagger/index', NULL, '', 1, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', '2024-10-12 13:03:44', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3000, '生成查询', 116, 1, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3001, '生成修改', 116, 2, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3002, '生成删除', 116, 3, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3003, '导入代码', 116, 4, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3004, '预览代码', 116, 5, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3005, '生成代码', 116, 6, '#', '', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3006, '会员管理', 0, 3, 'member', NULL, NULL, '', 1, 0, 'M', '0', '0', '', 'user', 'admin', '2024-10-14 10:29:54', 'admin', '2024-10-17 09:46:06', ''); -INSERT INTO `sys_menu` VALUES (3007, '会员标签', 3006, 1, 'label', 'member/label/index', NULL, '', 1, 0, 'C', '0', '0', 'member:label:list', '#', 'admin', '2024-10-14 10:39:51', 'admin', '2024-10-14 10:47:56', '会员标签管理菜单'); -INSERT INTO `sys_menu` VALUES (3008, '会员标签管理查询', 3007, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:label:query', '#', 'admin', '2024-10-14 10:39:51', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3009, '会员标签管理新增', 3007, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:label:add', '#', 'admin', '2024-10-14 10:39:51', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3010, '会员标签管理修改', 3007, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:label:edit', '#', 'admin', '2024-10-14 10:39:51', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3011, '会员标签管理删除', 3007, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:label:remove', '#', 'admin', '2024-10-14 10:39:51', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3012, '会员标签管理导出', 3007, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:label:export', '#', 'admin', '2024-10-14 10:39:51', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3013, '会员层级', 3006, 2, 'level', 'member/level/index', NULL, '', 1, 0, 'C', '0', '0', 'member:level:list', '#', 'admin', '2024-10-14 14:29:00', 'admin', '2024-10-14 14:29:25', '会员层级菜单'); -INSERT INTO `sys_menu` VALUES (3014, '会员层级查询', 3013, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:level:query', '#', 'admin', '2024-10-14 14:29:00', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3015, '会员层级新增', 3013, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:level:add', '#', 'admin', '2024-10-14 14:29:00', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3016, '会员层级修改', 3013, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:level:edit', '#', 'admin', '2024-10-14 14:29:00', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3017, '会员层级删除', 3013, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:level:remove', '#', 'admin', '2024-10-14 14:29:00', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3018, '会员层级导出', 3013, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:level:export', '#', 'admin', '2024-10-14 14:29:00', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3019, 'VIP等级', 3006, 3, 'vip', 'member/vip/index', NULL, '', 1, 0, 'C', '0', '0', 'member:vip:list', '#', 'admin', '2024-10-15 16:21:35', 'admin', '2024-10-15 16:22:45', 'vip等级菜单'); -INSERT INTO `sys_menu` VALUES (3020, 'vip等级查询', 3019, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:vip:query', '#', 'admin', '2024-10-15 16:21:35', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3021, 'vip等级新增', 3019, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:vip:add', '#', 'admin', '2024-10-15 16:21:35', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3022, 'vip等级修改', 3019, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:vip:edit', '#', 'admin', '2024-10-15 16:21:35', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3023, 'vip等级删除', 3019, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:vip:remove', '#', 'admin', '2024-10-15 16:21:35', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3024, 'vip等级导出', 3019, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:vip:export', '#', 'admin', '2024-10-15 16:21:35', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3025, '会员日志', 3006, 4, 'log', 'member/log/index', NULL, '', 1, 0, 'C', '0', '0', 'member:log:list', '#', 'admin', '2024-10-15 16:45:54', 'admin', '2024-10-15 16:46:17', '会员日志菜单'); -INSERT INTO `sys_menu` VALUES (3026, '会员日志查询', 3025, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:log:query', '#', 'admin', '2024-10-15 16:45:54', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3027, '会员日志新增', 3025, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:log:add', '#', 'admin', '2024-10-15 16:45:54', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3028, '会员日志修改', 3025, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:log:edit', '#', 'admin', '2024-10-15 16:45:54', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3029, '会员日志删除', 3025, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:log:remove', '#', 'admin', '2024-10-15 16:45:54', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3030, '会员日志导出', 3025, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:log:export', '#', 'admin', '2024-10-15 16:45:54', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3031, '所有会员', 3006, 0, 'member', 'member/member/index', NULL, '', 1, 0, 'C', '0', '0', 'member:member:list', '#', 'admin', '2024-10-15 16:54:31', 'admin', '2024-10-15 16:54:55', '所有会员菜单'); -INSERT INTO `sys_menu` VALUES (3032, '所有会员查询', 3031, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:member:query', '#', 'admin', '2024-10-15 16:54:31', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3033, '所有会员新增', 3031, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:member:add', '#', 'admin', '2024-10-15 16:54:31', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3034, '所有会员修改', 3031, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:member:edit', '#', 'admin', '2024-10-15 16:54:31', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3035, '所有会员删除', 3031, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:member:remove', '#', 'admin', '2024-10-15 16:54:31', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3036, '所有会员导出', 3031, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'member:member:export', '#', 'admin', '2024-10-15 16:54:31', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3037, '报表统计', 0, 7, 'chart', NULL, NULL, '', 1, 0, 'M', '0', '0', NULL, 'chart', 'admin', '2024-10-17 09:47:09', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3044, '运营管理', 0, 1, 'operation', NULL, NULL, '', 1, 0, 'M', '0', '0', NULL, 'documentation', 'admin', '2024-10-17 16:28:58', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3045, '币种管理', 3044, 1, 'currency', 'operation/currency/index', NULL, '', 1, 0, 'C', '0', '0', 'operation:currency:list', '#', 'admin', '2024-10-17 16:32:41', '', NULL, '币种管理菜单'); -INSERT INTO `sys_menu` VALUES (3046, '币种管理查询', 3045, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'operation:currency:query', '#', 'admin', '2024-10-17 16:32:41', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3047, '币种管理新增', 3045, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'operation:currency:add', '#', 'admin', '2024-10-17 16:32:41', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3048, '币种管理修改', 3045, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'operation:currency:edit', '#', 'admin', '2024-10-17 16:32:41', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3049, '币种管理删除', 3045, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'operation:currency:remove', '#', 'admin', '2024-10-17 16:32:41', '', NULL, ''); -INSERT INTO `sys_menu` VALUES (3050, '币种管理导出', 3045, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'operation:currency:export', '#', 'admin', '2024-10-17 16:32:41', '', NULL, ''); - --- ---------------------------- --- Table structure for sys_oper_log --- ---------------------------- -DROP TABLE IF EXISTS `sys_oper_log`; -CREATE TABLE `sys_oper_log` ( - `oper_id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志主键', - `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '模块标题', - `business_type` int NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', - `method` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '方法名称', - `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '请求方式', - `operator_type` int NULL DEFAULT 0 COMMENT '操作类别(0其它 1后台用户 2手机端用户)', - `oper_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '操作人员', - `dept_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '部门名称', - `oper_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '请求URL', - `oper_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '主机地址', - `oper_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '操作地点', - `oper_param` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '请求参数', - `json_result` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '返回参数', - `status` int NULL DEFAULT 0 COMMENT '操作状态(0正常 1异常)', - `error_msg` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '错误消息', - `oper_time` datetime NULL DEFAULT NULL COMMENT '操作时间', - `cost_time` bigint NULL DEFAULT 0 COMMENT '消耗时间', - PRIMARY KEY (`oper_id`) USING BTREE, - INDEX `idx_sys_oper_log_bt`(`business_type`) USING BTREE, - INDEX `idx_sys_oper_log_s`(`status`) USING BTREE, - INDEX `idx_sys_oper_log_ot`(`oper_time`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 479 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_oper_log --- ---------------------------- -INSERT INTO `sys_oper_log` VALUES (100, '代码生成', 6, 'com.ruoyi.generator.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '127.0.0.1', '内网IP', '{\"tables\":\"sys_notice\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-09 16:31:15', 116); -INSERT INTO `sys_oper_log` VALUES (101, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:03', 33); -INSERT INTO `sys_oper_log` VALUES (102, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:03', 11); -INSERT INTO `sys_oper_log` VALUES (103, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:04', 13); -INSERT INTO `sys_oper_log` VALUES (104, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:04', 14); -INSERT INTO `sys_oper_log` VALUES (105, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:04', 12); -INSERT INTO `sys_oper_log` VALUES (106, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:04', 13); -INSERT INTO `sys_oper_log` VALUES (107, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:04', 12); -INSERT INTO `sys_oper_log` VALUES (108, '参数管理', 9, 'com.ruoyi.web.controller.system.SysConfigController.refreshCache()', 'DELETE', 1, 'admin', '研发部门', '/system/config/refreshCache', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:05', 14); -INSERT INTO `sys_oper_log` VALUES (109, '参数管理', 2, 'com.ruoyi.web.controller.system.SysConfigController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/config', '127.0.0.1', '内网IP', '{\"configId\":1,\"configKey\":\"sys.index.skinName\",\"configName\":\"主框架页-默认皮肤样式名称\",\"configType\":\"Y\",\"configValue\":\"skin-blue\",\"createBy\":\"admin\",\"createTime\":\"2024-10-09 15:44:02\",\"params\":{},\"remark\":\"蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-10 18:11:07', 19); -INSERT INTO `sys_oper_log` VALUES (110, '角色管理', 2, 'com.ff.system.SysRoleController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/role', '127.0.0.1', '内网IP', '{\"admin\":false,\"createTime\":\"2024-10-09 15:44:01\",\"dataScope\":\"2\",\"delFlag\":\"0\",\"deptCheckStrictly\":true,\"flag\":false,\"menuCheckStrictly\":true,\"menuIds\":[1,100,1000,1001,1002,1003,1004,1005,1006,101,1007,1008,1009,1010,1011,102,1012,1013,1014,1015,103,1016,1017,1018,1019,104,1020,1021,1022,1023,1024,105,1025,1026,1027,1028,1029,106,1030,1031,1032,1033,1034,108,500,1039,1040,1041,501,1042,1043,1044,1045,2,109,1046,1047,1048,110,1049,1050,1051,1052,1053,1054,111,112,113,114,3,115,116,1055,1056,1057,1058,1059,1060,117,4],\"params\":{},\"remark\":\"普通角色\",\"roleId\":2,\"roleKey\":\"common\",\"roleName\":\"普通角色\",\"roleSort\":2,\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:22:59', 78); -INSERT INTO `sys_oper_log` VALUES (111, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/107', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"存在子菜单,不允许删除\",\"code\":601}', 0, NULL, '2024-10-11 13:23:05', 3); -INSERT INTO `sys_oper_log` VALUES (112, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1038', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:23:13', 10); -INSERT INTO `sys_oper_log` VALUES (113, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1037', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:23:15', 11); -INSERT INTO `sys_oper_log` VALUES (114, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1036', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:23:18', 10); -INSERT INTO `sys_oper_log` VALUES (115, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1035', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:23:25', 11); -INSERT INTO `sys_oper_log` VALUES (116, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/107', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:23:28', 13); -INSERT INTO `sys_oper_log` VALUES (117, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/4', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"菜单已分配,不允许删除\",\"code\":601}', 0, NULL, '2024-10-11 13:41:27', 13); -INSERT INTO `sys_oper_log` VALUES (118, '角色管理', 2, 'com.ff.system.SysRoleController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/role', '127.0.0.1', '内网IP', '{\"admin\":false,\"createTime\":\"2024-10-09 15:44:01\",\"dataScope\":\"2\",\"delFlag\":\"0\",\"deptCheckStrictly\":true,\"flag\":false,\"menuCheckStrictly\":true,\"menuIds\":[1,100,1000,1001,1002,1003,1004,1005,1006,101,1007,1008,1009,1010,1011,102,1012,1013,1014,1015,103,1016,1017,1018,1019,104,1020,1021,1022,1023,1024,105,1025,1026,1027,1028,1029,106,1030,1031,1032,1033,1034,108,500,1039,1040,1041,501,1042,1043,1044,1045,2,109,1046,1047,1048,110,1049,1050,1051,1052,1053,1054,111,112,113,114,3,115,116,1055,1056,1057,1058,1059,1060,117],\"params\":{},\"remark\":\"普通角色\",\"roleId\":2,\"roleKey\":\"common\",\"roleName\":\"普通角色\",\"roleSort\":2,\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:41:36', 70); -INSERT INTO `sys_oper_log` VALUES (119, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/4', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:41:40', 16); -INSERT INTO `sys_oper_log` VALUES (120, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '127.0.0.1', '内网IP', '{\"children\":[],\"component\":\"monitor/online/index\",\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"online\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":109,\"menuName\":\"在线用户\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":2,\"path\":\"online\",\"perms\":\"monitor:online:list\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:42:04', 21); -INSERT INTO `sys_oper_log` VALUES (121, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '127.0.0.1', '内网IP', '{\"children\":[],\"component\":\"monitor/druid/index\",\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"druid\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":111,\"menuName\":\"数据监控\",\"menuType\":\"C\",\"orderNum\":3,\"params\":{},\"parentId\":2,\"path\":\"druid\",\"perms\":\"monitor:druid:list\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:42:25', 12); -INSERT INTO `sys_oper_log` VALUES (122, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '127.0.0.1', '内网IP', '{\"children\":[],\"component\":\"monitor/server/index\",\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"server\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":112,\"menuName\":\"服务监控\",\"menuType\":\"C\",\"orderNum\":4,\"params\":{},\"parentId\":2,\"path\":\"server\",\"perms\":\"monitor:server:list\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:42:34', 12); -INSERT INTO `sys_oper_log` VALUES (123, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '127.0.0.1', '内网IP', '{\"children\":[],\"component\":\"monitor/cache/index\",\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"redis\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":113,\"menuName\":\"缓存监控\",\"menuType\":\"C\",\"orderNum\":5,\"params\":{},\"parentId\":2,\"path\":\"cache\",\"perms\":\"monitor:cache:list\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:42:39', 14); -INSERT INTO `sys_oper_log` VALUES (124, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '127.0.0.1', '内网IP', '{\"children\":[],\"component\":\"monitor/cache/list\",\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"redis-list\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":114,\"menuName\":\"缓存列表\",\"menuType\":\"C\",\"orderNum\":6,\"params\":{},\"parentId\":2,\"path\":\"cacheList\",\"perms\":\"monitor:cache:list\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:42:44', 11); -INSERT INTO `sys_oper_log` VALUES (125, '角色管理', 2, 'com.ff.system.SysRoleController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/role', '127.0.0.1', '内网IP', '{\"admin\":false,\"createTime\":\"2024-10-09 15:44:01\",\"dataScope\":\"2\",\"delFlag\":\"0\",\"deptCheckStrictly\":true,\"flag\":false,\"menuCheckStrictly\":true,\"menuIds\":[1,100,1000,1001,1002,1003,1004,1005,1006,101,1007,1008,1009,1010,1011,102,1012,1013,1014,1015,103,1016,1017,1018,1019,104,1020,1021,1022,1023,1024,105,1025,1026,1027,1028,1029,106,1030,1031,1032,1033,1034,108,500,1039,1040,1041,501,1042,1043,1044,1045,2,109,1046,1047,1048,110,1049,1050,1051,1052,1053,1054,111,112,113,114],\"params\":{},\"remark\":\"普通角色\",\"roleId\":2,\"roleKey\":\"common\",\"roleName\":\"普通角色\",\"roleSort\":2,\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:43:54', 32); -INSERT INTO `sys_oper_log` VALUES (126, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/117', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:43:59', 11); -INSERT INTO `sys_oper_log` VALUES (127, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/115', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:15', 17); -INSERT INTO `sys_oper_log` VALUES (128, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/116', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"存在子菜单,不允许删除\",\"code\":601}', 0, NULL, '2024-10-11 13:44:22', 3); -INSERT INTO `sys_oper_log` VALUES (129, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1055', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:25', 19); -INSERT INTO `sys_oper_log` VALUES (130, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1056', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:27', 13); -INSERT INTO `sys_oper_log` VALUES (131, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1057', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:30', 17); -INSERT INTO `sys_oper_log` VALUES (132, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1058', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:34', 17); -INSERT INTO `sys_oper_log` VALUES (133, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1059', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:36', 17); -INSERT INTO `sys_oper_log` VALUES (134, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/1060', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:38', 18); -INSERT INTO `sys_oper_log` VALUES (135, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/116', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:40', 17); -INSERT INTO `sys_oper_log` VALUES (136, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 13:44:45', 16); -INSERT INTO `sys_oper_log` VALUES (137, '参数管理', 2, 'com.ff.system.SysConfigController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/config', '192.168.1.34', '内网IP', '{\"configId\":1,\"configKey\":\"sys.index.skinName\",\"configName\":\"主框架页-默认皮肤样式名称\",\"configType\":\"Y\",\"configValue\":\"skin-green\",\"createBy\":\"admin\",\"createTime\":\"2024-10-09 15:44:02\",\"params\":{},\"remark\":\"蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow\",\"updateBy\":\"admin\",\"updateTime\":\"2024-10-10 18:11:07\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 15:30:39', 23); -INSERT INTO `sys_oper_log` VALUES (138, '参数管理', 2, 'com.ff.system.SysConfigController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/config', '192.168.1.34', '内网IP', '{\"configId\":1,\"configKey\":\"sys.index.skinName\",\"configName\":\"主框架页-默认皮肤样式名称\",\"configType\":\"Y\",\"configValue\":\"skin-blue\",\"createBy\":\"admin\",\"createTime\":\"2024-10-09 15:44:02\",\"params\":{},\"remark\":\"蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow\",\"updateBy\":\"admin\",\"updateTime\":\"2024-10-11 15:30:39\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-11 15:44:07', 17); -INSERT INTO `sys_oper_log` VALUES (139, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"会员标签图标\",\"dictType\":\"ff_member_label_icon\",\"params\":{},\"remark\":\"会员标签图标\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:30:11', 20); -INSERT INTO `sys_oper_log` VALUES (140, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#2bfa38\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#2bfa38\",\"listClass\":\"default\",\"params\":{},\"remark\":\"绿色\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:34:11', 32); -INSERT INTO `sys_oper_log` VALUES (141, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#f59a23\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#f59a23\",\"listClass\":\"default\",\"params\":{},\"remark\":\"橙色\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:35:59', 20); -INSERT INTO `sys_oper_log` VALUES (142, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"cssClass\":\"\",\"default\":false,\"dictLabel\":\"#db301a\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#db301a\",\"listClass\":\"default\",\"params\":{},\"remark\":\"红色\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:36:29', 14); -INSERT INTO `sys_oper_log` VALUES (143, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#4d42cf\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#4d42cf\",\"listClass\":\"default\",\"params\":{},\"remark\":\"深蓝\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:37:18', 13); -INSERT INTO `sys_oper_log` VALUES (144, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#1677fd\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#1677fd\",\"listClass\":\"default\",\"params\":{},\"remark\":\"淡蓝\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:38:28', 35); -INSERT INTO `sys_oper_log` VALUES (145, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#000000\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#000000\",\"listClass\":\"default\",\"params\":{},\"remark\":\"黑色\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:39:11', 15); -INSERT INTO `sys_oper_log` VALUES (146, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#4cb5ff\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#4cb5ff\",\"listClass\":\"default\",\"params\":{},\"remark\":\"浅蓝\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:40:23', 37); -INSERT INTO `sys_oper_log` VALUES (147, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#874ce8\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#874ce8\",\"listClass\":\"default\",\"params\":{},\"remark\":\"深紫\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:41:18', 14); -INSERT INTO `sys_oper_log` VALUES (148, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#cd55ff\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#cd55ff\",\"listClass\":\"default\",\"params\":{},\"remark\":\"淡紫\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:41:52', 15); -INSERT INTO `sys_oper_log` VALUES (149, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#26a17b\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#26a17b\",\"listClass\":\"default\",\"params\":{},\"remark\":\"墨绿\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:42:29', 15); -INSERT INTO `sys_oper_log` VALUES (150, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#ea4e3d\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#ea4e3d\",\"listClass\":\"default\",\"params\":{},\"remark\":\"浅红\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:43:13', 14); -INSERT INTO `sys_oper_log` VALUES (151, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"#ff7097\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#ff7097\",\"listClass\":\"default\",\"params\":{},\"remark\":\"粉色 \",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 09:44:13', 32); -INSERT INTO `sys_oper_log` VALUES (152, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"币种\",\"dictType\":\"ff_currency\",\"params\":{},\"remark\":\"币种\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 10:54:26', 14); -INSERT INTO `sys_oper_log` VALUES (153, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"USDT(USDT)\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"remark\":\"USDT(USDT)\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 10:55:47', 32); -INSERT INTO `sys_oper_log` VALUES (154, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"越南盾(VND1000:1)\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"remark\":\"越南盾(VND1000:1)\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 10:56:28', 44); -INSERT INTO `sys_oper_log` VALUES (155, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"日元(JPY)\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"remark\":\"日元(JPY)\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 10:57:41', 30); -INSERT INTO `sys_oper_log` VALUES (156, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"测试菜单\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":101,\"path\":\"system/role/index\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:16:06', 20); -INSERT INTO `sys_oper_log` VALUES (157, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"system/role/index\",\"createTime\":\"2024-10-12 11:16:06\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2000,\"menuName\":\"测试菜单\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":101,\"path\":\"system/role/index\",\"perms\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:16:54', 10); -INSERT INTO `sys_oper_log` VALUES (158, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/2000', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:18:02', 31); -INSERT INTO `sys_oper_log` VALUES (159, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"测试\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":0,\"path\":\" \",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:18:57', 8); -INSERT INTO `sys_oper_log` VALUES (160, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"测试1\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":2001,\"path\":\" \",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:19:09', 6); -INSERT INTO `sys_oper_log` VALUES (161, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"测试2\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":2002,\"path\":\"system/role/index\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 11:19:22', 14); -INSERT INTO `sys_oper_log` VALUES (162, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"tool/swagger/index\",\"createBy\":\"admin\",\"icon\":\"swagger\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"接口文档\",\"menuType\":\"C\",\"orderNum\":3,\"params\":{},\"parentId\":2,\"path\":\"swagger\",\"perms\":\"tool:swagger:list\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 13:03:44', 59); -INSERT INTO `sys_oper_log` VALUES (163, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/2001', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"存在子菜单,不允许删除\",\"code\":601}', 0, NULL, '2024-10-12 13:42:01', 7); -INSERT INTO `sys_oper_log` VALUES (164, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/2003', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 13:42:09', 13); -INSERT INTO `sys_oper_log` VALUES (165, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/2002', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 13:42:10', 16); -INSERT INTO `sys_oper_log` VALUES (166, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/2001', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 13:42:12', 14); -INSERT INTO `sys_oper_log` VALUES (167, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"注册来源\",\"dictType\":\"ff_registe_source\",\"params\":{},\"remark\":\"注册来源\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:35:14', 30); -INSERT INTO `sys_oper_log` VALUES (168, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"官网\",\"dictSort\":0,\"dictType\":\"ff_registe_source\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"remark\":\"官网\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:37:06', 32); -INSERT INTO `sys_oper_log` VALUES (169, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"后台添加\",\"dictSort\":0,\"dictType\":\"ff_registe_source\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"remark\":\"后台添加\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:37:35', 15); -INSERT INTO `sys_oper_log` VALUES (170, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"kk1注册\",\"dictSort\":0,\"dictType\":\"ff_registe_source\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:38:18', 15); -INSERT INTO `sys_oper_log` VALUES (171, '字典类型', 3, 'com.ff.system.SysDictTypeController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/type/102', '192.168.1.34', '内网IP', '{}', NULL, 1, '注册来源已分配,不能删除', '2024-10-12 14:47:43', 39); -INSERT INTO `sys_oper_log` VALUES (172, '字典类型', 3, 'com.ff.system.SysDictDataController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/data/117', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:47:49', 20); -INSERT INTO `sys_oper_log` VALUES (173, '字典类型', 3, 'com.ff.system.SysDictDataController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/data/116', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:47:51', 17); -INSERT INTO `sys_oper_log` VALUES (174, '字典类型', 3, 'com.ff.system.SysDictDataController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/data/115', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:47:53', 15); -INSERT INTO `sys_oper_log` VALUES (175, '字典类型', 3, 'com.ff.system.SysDictTypeController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/type/102', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 14:47:58', 14); -INSERT INTO `sys_oper_log` VALUES (176, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"注册方式\",\"dictType\":\"ff_registe_way\",\"params\":{},\"remark\":\"注册方式\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:07:28', 8); -INSERT INTO `sys_oper_log` VALUES (177, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"账号注册\",\"dictSort\":0,\"dictType\":\"ff_registe_way\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"remark\":\"账号注册\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:07:55', 17); -INSERT INTO `sys_oper_log` VALUES (178, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"FaceBook注册\",\"dictSort\":0,\"dictType\":\"ff_registe_way\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"remark\":\"FaceBook注册\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:08:21', 13); -INSERT INTO `sys_oper_log` VALUES (179, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"设备类型\",\"dictType\":\"ff_device_type\",\"params\":{},\"remark\":\"设备类型\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:23:29', 42); -INSERT INTO `sys_oper_log` VALUES (180, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"APP-iOS\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"remark\":\"APP-iOS\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:24:29', 12); -INSERT INTO `sys_oper_log` VALUES (181, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"H5-iOS\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"remark\":\"H5-iOS\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:25:18', 11); -INSERT INTO `sys_oper_log` VALUES (182, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"APP-Android\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"remark\":\"APP-Android\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:25:43', 40); -INSERT INTO `sys_oper_log` VALUES (183, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"H5-Android\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"4\",\"listClass\":\"default\",\"params\":{},\"remark\":\"H5-Android\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:26:09', 13); -INSERT INTO `sys_oper_log` VALUES (184, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"PC-Windows\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"5\",\"listClass\":\"default\",\"params\":{},\"remark\":\"PC-Windows\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:26:41', 15); -INSERT INTO `sys_oper_log` VALUES (185, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"PC-Mac\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"6\",\"listClass\":\"default\",\"params\":{},\"remark\":\"PC-Mac\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:27:06', 11); -INSERT INTO `sys_oper_log` VALUES (186, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"会员验证方式\",\"dictType\":\"ff_verify_way\",\"params\":{},\"remark\":\"会员验证方式\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:42:00', 26); -INSERT INTO `sys_oper_log` VALUES (187, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"无验证\",\"dictSort\":0,\"dictType\":\"ff_verify_way\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:42:17', 15); -INSERT INTO `sys_oper_log` VALUES (188, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"短信验证\",\"dictSort\":0,\"dictType\":\"ff_verify_way\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:42:32', 12); -INSERT INTO `sys_oper_log` VALUES (189, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"谷歌验证\",\"dictSort\":0,\"dictType\":\"ff_verify_way\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-12 16:42:43', 12); -INSERT INTO `sys_oper_log` VALUES (190, '代码生成', 3, 'com.ff.gen.controller.GenController.remove()', 'DELETE', 1, 'admin', '研发部门', '/tool/gen/1', '127.0.0.1', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 09:51:20', 51); -INSERT INTO `sys_oper_log` VALUES (191, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 09:53:09', 56); -INSERT INTO `sys_oper_log` VALUES (192, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"0\",\"isRequired\":\"0\",\"javaField\":\"createBy\",\"javaType\":', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:14:21', 73); -INSERT INTO `sys_oper_log` VALUES (193, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:21\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:21\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:21\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:14:38', 88); -INSERT INTO `sys_oper_log` VALUES (194, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:38\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:38\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:14:38\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:21:55', 42); -INSERT INTO `sys_oper_log` VALUES (195, '用户管理', 2, 'com.ff.system.SysUserController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/user', '192.168.1.34', '内网IP', '{\"admin\":false,\"avatar\":\"\",\"createBy\":\"admin\",\"createTime\":\"2024-10-09 15:44:01\",\"delFlag\":\"0\",\"dept\":{\"ancestors\":\"0,100,101\",\"children\":[],\"deptId\":105,\"deptName\":\"测试部门\",\"leader\":\"若依\",\"orderNum\":3,\"params\":{},\"parentId\":101,\"status\":\"0\"},\"deptId\":105,\"email\":\"ry@qq.com\",\"loginDate\":\"2024-10-09 15:44:01\",\"loginIp\":\"127.0.0.1\",\"nickName\":\"若依\",\"params\":{},\"phonenumber\":\"15666666666\",\"postIds\":[2],\"remark\":\"测试员\",\"roleIds\":[2],\"roles\":[{\"admin\":false,\"dataScope\":\"2\",\"deptCheckStrictly\":false,\"flag\":false,\"menuCheckStrictly\":false,\"params\":{},\"roleId\":2,\"roleKey\":\"common\",\"roleName\":\"普通角色\",\"roleSort\":2,\"status\":\"0\"}],\"sex\":\"1\",\"status\":\"0\",\"updateBy\":\"admin\",\"userId\":2,\"userName\":\"ry\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:22:46', 38); -INSERT INTO `sys_oper_log` VALUES (196, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:21:55\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:21:55\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:21:55\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:23:04', 35); -INSERT INTO `sys_oper_log` VALUES (197, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:04\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:04\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:04\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:23:13', 37); -INSERT INTO `sys_oper_log` VALUES (198, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:13\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:13\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:13\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:23:30', 35); -INSERT INTO `sys_oper_log` VALUES (199, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:30\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:30\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:23:30\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:25:03', 30); -INSERT INTO `sys_oper_log` VALUES (200, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:25:03\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:25:03\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:25:03\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:27:04', 34); -INSERT INTO `sys_oper_log` VALUES (201, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:27:04\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:27:04\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:27:04\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:28:58', 55); -INSERT INTO `sys_oper_log` VALUES (202, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"icon\":\"user\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"会员管理\",\"menuType\":\"M\",\"orderNum\":0,\"params\":{},\"parentId\":0,\"path\":\"member\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:29:54', 22); -INSERT INTO `sys_oper_log` VALUES (203, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"FfMemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:28:58\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:28:58\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:28:58\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"ins', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:33:19', 31); -INSERT INTO `sys_oper_log` VALUES (204, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"MemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:19\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:19\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:19\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"inser', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:33:36', 30); -INSERT INTO `sys_oper_log` VALUES (205, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"MemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:36\",\"usableColumn\":false},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:36\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"iconColor\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:33:36\",\"usableColumn\":false},{\"capJavaField\":\"CreateBy\",\"columnComment\":\"创建者\",\"columnId\":14,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"inser', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:36:35', 52); -INSERT INTO `sys_oper_log` VALUES (206, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:36:39', 341); -INSERT INTO `sys_oper_log` VALUES (207, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:36:50', 85); -INSERT INTO `sys_oper_log` VALUES (208, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:37:46', 42); -INSERT INTO `sys_oper_log` VALUES (209, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:38:49', 153); -INSERT INTO `sys_oper_log` VALUES (210, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:41:08', 110); -INSERT INTO `sys_oper_log` VALUES (211, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/label/index\",\"createTime\":\"2024-10-14 10:39:51\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3007,\"menuName\":\"会员标签\",\"menuType\":\"C\",\"orderNum\":1,\"params\":{},\"parentId\":3006,\"path\":\"label\",\"perms\":\"member:label:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:47:56', 35); -INSERT INTO `sys_oper_log` VALUES (212, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_label', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:52:39', 93); -INSERT INTO `sys_oper_log` VALUES (213, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"MemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:52:39\",\"usableColumn\":false},{\"capJavaField\":\"OrderNum\",\"columnComment\":\"显示顺序\",\"columnId\":19,\"columnName\":\"order_num\",\"columnType\":\"int\",\"createBy\":\"\",\"createTime\":\"2024-10-14 10:52:39\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"orderNum\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":true,\"tableId\":2,\"updateBy\":\"\",\"usableColumn\":true},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:52:39\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 10:53:28', 53); -INSERT INTO `sys_oper_log` VALUES (214, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:53:47', 97); -INSERT INTO `sys_oper_log` VALUES (215, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_label\"}', NULL, 0, NULL, '2024-10-14 10:54:42', 85); -INSERT INTO `sys_oper_log` VALUES (216, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"无图标\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"empty\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:01:08', 34); -INSERT INTO `sys_oper_log` VALUES (217, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 11:01:08\",\"default\":false,\"dictCode\":129,\"dictLabel\":\"无图标\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"empty\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:01:33', 24); -INSERT INTO `sys_oper_log` VALUES (218, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:34:10\",\"default\":false,\"dictCode\":100,\"dictLabel\":\"#2bfa38\",\"dictSort\":13,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#2bfa38\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"绿色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:02:16', 18); -INSERT INTO `sys_oper_log` VALUES (219, '字典类型', 3, 'com.ff.system.SysDictDataController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/data/129', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:02:50', 22); -INSERT INTO `sys_oper_log` VALUES (220, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:44:13\",\"default\":false,\"dictCode\":111,\"dictLabel\":\"#ff7097\",\"dictSort\":12,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#ff7097\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"粉色 \",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:08', 20); -INSERT INTO `sys_oper_log` VALUES (221, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:35:59\",\"default\":false,\"dictCode\":101,\"dictLabel\":\"#f59a23\",\"dictSort\":11,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#f59a23\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"橙色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:15', 13); -INSERT INTO `sys_oper_log` VALUES (222, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:36:29\",\"default\":false,\"dictCode\":102,\"dictLabel\":\"#db301a\",\"dictSort\":10,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#db301a\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"红色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:18', 17); -INSERT INTO `sys_oper_log` VALUES (223, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:37:18\",\"default\":false,\"dictCode\":103,\"dictLabel\":\"#4d42cf\",\"dictSort\":9,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#4d42cf\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"深蓝\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:22', 14); -INSERT INTO `sys_oper_log` VALUES (224, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:38:28\",\"default\":false,\"dictCode\":104,\"dictLabel\":\"#1677fd\",\"dictSort\":8,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#1677fd\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"淡蓝\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:27', 15); -INSERT INTO `sys_oper_log` VALUES (225, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:39:11\",\"default\":false,\"dictCode\":105,\"dictLabel\":\"#000000\",\"dictSort\":7,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#000000\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"黑色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:31', 15); -INSERT INTO `sys_oper_log` VALUES (226, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:40:23\",\"default\":false,\"dictCode\":106,\"dictLabel\":\"#4cb5ff\",\"dictSort\":6,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#4cb5ff\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"浅蓝\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:35', 15); -INSERT INTO `sys_oper_log` VALUES (227, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:41:18\",\"default\":false,\"dictCode\":107,\"dictLabel\":\"#874ce8\",\"dictSort\":5,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#874ce8\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"深紫\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:39', 13); -INSERT INTO `sys_oper_log` VALUES (228, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:41:52\",\"default\":false,\"dictCode\":108,\"dictLabel\":\"#cd55ff\",\"dictSort\":4,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#cd55ff\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"淡紫\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:43', 16); -INSERT INTO `sys_oper_log` VALUES (229, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:42:29\",\"default\":false,\"dictCode\":109,\"dictLabel\":\"#26a17b\",\"dictSort\":3,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#26a17b\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"墨绿\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:47', 17); -INSERT INTO `sys_oper_log` VALUES (230, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 09:43:13\",\"default\":false,\"dictCode\":110,\"dictLabel\":\"#ea4e3d\",\"dictSort\":2,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"#ea4e3d\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"浅红\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:03:51', 12); -INSERT INTO `sys_oper_log` VALUES (231, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"无图标\",\"dictSort\":0,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"NO_ICON\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:04:22', 16); -INSERT INTO `sys_oper_log` VALUES (232, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 11:04:21\",\"default\":false,\"dictCode\":130,\"dictLabel\":\"无图标\",\"dictSort\":1,\"dictType\":\"ff_member_label_icon\",\"dictValue\":\"NO_ICON\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 11:04:26', 14); -INSERT INTO `sys_oper_log` VALUES (233, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"vip等级图标背景\",\"dictType\":\"ff_membervip_icon_bg\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:20:37', 19); -INSERT INTO `sys_oper_log` VALUES (234, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:20:37\",\"dictId\":106,\"dictName\":\"vip等级图标背景\",\"dictType\":\"ff_membervip_icon_bg\",\"params\":{},\"remark\":\"vip等级图标背景\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:20:42', 42); -INSERT INTO `sys_oper_log` VALUES (235, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:20:37\",\"dictId\":106,\"dictName\":\"vip等级图标颜色\",\"dictType\":\"ff_membervip_icon_color\",\"params\":{},\"remark\":\"vip等级图标颜色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:21:38', 59); -INSERT INTO `sys_oper_log` VALUES (236, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"浅绿\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color1.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:25:07', 25); -INSERT INTO `sys_oper_log` VALUES (237, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"深绿\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color2.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:26:03', 16); -INSERT INTO `sys_oper_log` VALUES (238, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:26:03\",\"default\":false,\"dictCode\":132,\"dictLabel\":\"深绿\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color2.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:26:11', 15); -INSERT INTO `sys_oper_log` VALUES (239, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"浅蓝\",\"dictSort\":3,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color3.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:26:37', 16); -INSERT INTO `sys_oper_log` VALUES (240, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"深蓝\",\"dictSort\":4,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color4.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:27:26', 17); -INSERT INTO `sys_oper_log` VALUES (241, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:26:03\",\"default\":false,\"dictCode\":132,\"dictLabel\":\"深绿\",\"dictSort\":2,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color2.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:27:32', 23); -INSERT INTO `sys_oper_log` VALUES (242, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:25:07\",\"default\":false,\"dictCode\":131,\"dictLabel\":\"浅绿\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color1.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:27:34', 14); -INSERT INTO `sys_oper_log` VALUES (243, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"橙\",\"dictSort\":5,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color5.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:28:09', 16); -INSERT INTO `sys_oper_log` VALUES (244, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:28:09\",\"default\":false,\"dictCode\":135,\"dictLabel\":\"橙色\",\"dictSort\":5,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color5.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:29:08', 15); -INSERT INTO `sys_oper_log` VALUES (245, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"咖色\",\"dictSort\":6,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color6.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:29:18', 14); -INSERT INTO `sys_oper_log` VALUES (246, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"深粉\",\"dictSort\":7,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color7.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:39:22', 36); -INSERT INTO `sys_oper_log` VALUES (247, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"深紫\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color8.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:39:50', 17); -INSERT INTO `sys_oper_log` VALUES (248, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:39:50\",\"default\":false,\"dictCode\":138,\"dictLabel\":\"深紫\",\"dictSort\":8,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color8.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:40:09', 19); -INSERT INTO `sys_oper_log` VALUES (249, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"红色\",\"dictSort\":9,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color9.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:40:45', 15); -INSERT INTO `sys_oper_log` VALUES (250, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"酷黑\",\"dictSort\":10,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconColor/style_1_vip_color10.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:41:05', 13); -INSERT INTO `sys_oper_log` VALUES (251, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"vip等级图标样式\",\"dictType\":\"ff_membervip_icon_style\",\"params\":{},\"remark\":\"vip等级图标样式\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:42:14', 34); -INSERT INTO `sys_oper_log` VALUES (252, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_0\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style0.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:42:52', 18); -INSERT INTO `sys_oper_log` VALUES (253, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_1\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style1.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:43:25', 15); -INSERT INTO `sys_oper_log` VALUES (254, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:43:25\",\"default\":false,\"dictCode\":142,\"dictLabel\":\"style_1\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style1.png\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:43:34', 15); -INSERT INTO `sys_oper_log` VALUES (255, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_2\",\"dictSort\":2,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style2.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:44:15', 11); -INSERT INTO `sys_oper_log` VALUES (256, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_3\",\"dictSort\":3,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style3.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:44:32', 13); -INSERT INTO `sys_oper_log` VALUES (257, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_4\",\"dictSort\":4,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style4.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:45:13', 19); -INSERT INTO `sys_oper_log` VALUES (258, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_5\",\"dictSort\":5,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style5.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:45:33', 14); -INSERT INTO `sys_oper_log` VALUES (259, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_6\",\"dictSort\":6,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style6.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:46:39', 34); -INSERT INTO `sys_oper_log` VALUES (260, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_7\",\"dictSort\":7,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style7.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:46:59', 15); -INSERT INTO `sys_oper_log` VALUES (261, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_8\",\"dictSort\":8,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style8.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:48:13', 31); -INSERT INTO `sys_oper_log` VALUES (262, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_9\",\"dictSort\":9,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style9.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:48:30', 12); -INSERT INTO `sys_oper_log` VALUES (263, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style_10\",\"dictSort\":10,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"https://zmidh4-1129-ppp.oss-accelerate.aliyuncs.com/siteadmin/active/style1/iconStyle/style_1_vip_style10.png\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:48:48', 17); -INSERT INTO `sys_oper_log` VALUES (264, '会员标签', 1, 'com.ff.member.controller.MemberLabelController.add()', 'POST', 1, 'admin', '研发部门', '/member/label', '192.168.1.34', '内网IP', '{\"createTime\":\"2024-10-14 13:49:34\",\"iconColor\":\"#4cb5ff\",\"labelName\":\"测试\",\"orderNum\":1,\"params\":{},\"remark\":\"测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试测是测试\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 13:49:34', 17); -INSERT INTO `sys_oper_log` VALUES (265, '会员标签', 3, 'com.ff.member.controller.MemberLabelController.remove()', 'DELETE', 1, 'admin', '研发部门', '/member/label/1', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:16:57', 16); -INSERT INTO `sys_oper_log` VALUES (266, '会员标签', 1, 'com.ff.member.controller.MemberLabelController.add()', 'POST', 1, 'admin', '研发部门', '/member/label', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:18:30\",\"iconColor\":\"#1677fd\",\"labelName\":\"测试测试\",\"orderNum\":1,\"params\":{},\"remark\":\"这是一个普通的描述\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:18:30', 18); -INSERT INTO `sys_oper_log` VALUES (267, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_level\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:24:30', 103); -INSERT INTO `sys_oper_log` VALUES (268, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"level\",\"className\":\"MemberLevel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":20,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"LevelType\",\"columnComment\":\"0.自动层级 1.固定层级\",\"columnId\":21,\"columnName\":\"level_type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"levelType\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"LevelName\",\"columnComment\":\"层级名称\",\"columnId\":22,\"columnName\":\"level_name\",\"columnType\":\"varchar(24)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"levelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"LabelId\",\"columnComment\":\"会员标签表id\",\"columnId\":23,\"columnName\":\"label_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:25:07', 59); -INSERT INTO `sys_oper_log` VALUES (269, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"level\",\"className\":\"MemberLevel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":20,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:25:07\",\"usableColumn\":false},{\"capJavaField\":\"LevelType\",\"columnComment\":\"0.自动层级 1.固定层级\",\"columnId\":21,\"columnName\":\"level_type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"levelType\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:25:07\",\"usableColumn\":false},{\"capJavaField\":\"LevelName\",\"columnComment\":\"层级名称\",\"columnId\":22,\"columnName\":\"level_name\",\"columnType\":\"varchar(24)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"levelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":3,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:25:07\",\"usableColumn\":false},{\"capJavaField\":\"LabelId\",\"columnComment\":\"会员标签表id\",\"columnId\":23,\"columnName\":\"label_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:24:30\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"inse', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:25:49', 48); -INSERT INTO `sys_oper_log` VALUES (270, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"MemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:53:28\",\"usableColumn\":false},{\"capJavaField\":\"OrderNum\",\"columnComment\":\"显示顺序\",\"columnId\":19,\"columnName\":\"order_num\",\"columnType\":\"int\",\"createBy\":\"\",\"createTime\":\"2024-10-14 10:52:39\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"orderNum\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":true,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:53:28\",\"usableColumn\":true},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 10:53:28\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:26:03', 33); -INSERT INTO `sys_oper_log` VALUES (271, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"label\",\"className\":\"MemberLabel\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":11,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:26:03\",\"usableColumn\":false},{\"capJavaField\":\"OrderNum\",\"columnComment\":\"显示顺序\",\"columnId\":19,\"columnName\":\"order_num\",\"columnType\":\"int\",\"createBy\":\"\",\"createTime\":\"2024-10-14 10:52:39\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"orderNum\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":true,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:26:03\",\"usableColumn\":true},{\"capJavaField\":\"LabelName\",\"columnComment\":\"标签名称\",\"columnId\":12,\"columnName\":\"label_name\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"labelName\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"LIKE\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":2,\"updateBy\":\"\",\"updateTime\":\"2024-10-14 14:26:03\",\"usableColumn\":false},{\"capJavaField\":\"IconColor\",\"columnComment\":\"图标颜色\",\"columnId\":13,\"columnName\":\"icon_color\",\"columnType\":\"varchar(100)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-14 09:53:09\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:26:12', 35); -INSERT INTO `sys_oper_log` VALUES (272, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_level\"}', NULL, 0, NULL, '2024-10-14 14:26:32', 106); -INSERT INTO `sys_oper_log` VALUES (273, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/level/index\",\"createTime\":\"2024-10-14 14:29:00\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3013,\"menuName\":\"会员层级\",\"menuType\":\"C\",\"orderNum\":2,\"params\":{},\"parentId\":3006,\"path\":\"level\",\"perms\":\"member:level:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 14:29:25', 27); -INSERT INTO `sys_oper_log` VALUES (274, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_level\"}', NULL, 0, NULL, '2024-10-14 14:44:22', 235); -INSERT INTO `sys_oper_log` VALUES (275, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"vip等级图标父样式\",\"dictType\":\"ff_membervip_icon_parent_style\",\"params\":{},\"remark\":\"vip等级图标父样式\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:44:59', 34); -INSERT INTO `sys_oper_log` VALUES (276, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style1\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_parent_style\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:48:20', 31); -INSERT INTO `sys_oper_log` VALUES (277, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style2\",\"dictSort\":2,\"dictType\":\"ff_membervip_icon_parent_style\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:48:38', 13); -INSERT INTO `sys_oper_log` VALUES (278, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style3\",\"dictSort\":3,\"dictType\":\"ff_membervip_icon_parent_style\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:48:50', 14); -INSERT INTO `sys_oper_log` VALUES (279, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"style4\",\"dictSort\":4,\"dictType\":\"ff_membervip_icon_parent_style\",\"dictValue\":\"4\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:49:01', 16); -INSERT INTO `sys_oper_log` VALUES (280, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:42:52\",\"default\":false,\"dictCode\":141,\"dictLabel\":\"style_0\",\"dictSort\":0,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:49:54', 19); -INSERT INTO `sys_oper_log` VALUES (281, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:43:25\",\"default\":false,\"dictCode\":142,\"dictLabel\":\"style_1\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:00', 16); -INSERT INTO `sys_oper_log` VALUES (282, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:44:15\",\"default\":false,\"dictCode\":143,\"dictLabel\":\"style_2\",\"dictSort\":2,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"2\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:04', 14); -INSERT INTO `sys_oper_log` VALUES (283, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:44:32\",\"default\":false,\"dictCode\":144,\"dictLabel\":\"style_3\",\"dictSort\":3,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"3\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:08', 16); -INSERT INTO `sys_oper_log` VALUES (284, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:45:13\",\"default\":false,\"dictCode\":145,\"dictLabel\":\"style_4\",\"dictSort\":4,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"4\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:12', 14); -INSERT INTO `sys_oper_log` VALUES (285, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:45:33\",\"default\":false,\"dictCode\":146,\"dictLabel\":\"style_5\",\"dictSort\":5,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"5\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:16', 13); -INSERT INTO `sys_oper_log` VALUES (286, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:46:39\",\"default\":false,\"dictCode\":147,\"dictLabel\":\"style_6\",\"dictSort\":6,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"6\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:20', 14); -INSERT INTO `sys_oper_log` VALUES (287, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:46:59\",\"default\":false,\"dictCode\":148,\"dictLabel\":\"style_7\",\"dictSort\":7,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"7\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:25', 13); -INSERT INTO `sys_oper_log` VALUES (288, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:48:13\",\"default\":false,\"dictCode\":149,\"dictLabel\":\"style_8\",\"dictSort\":8,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"8\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:30', 15); -INSERT INTO `sys_oper_log` VALUES (289, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:48:30\",\"default\":false,\"dictCode\":150,\"dictLabel\":\"style_9\",\"dictSort\":9,\"dictType\":\"ff_membervip_icon_style\",\"dictValue\":\"9\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:50:35', 15); -INSERT INTO `sys_oper_log` VALUES (290, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:25:07\",\"default\":false,\"dictCode\":131,\"dictLabel\":\"color1\",\"dictSort\":1,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:51:18', 18); -INSERT INTO `sys_oper_log` VALUES (291, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:26:03\",\"default\":false,\"dictCode\":132,\"dictLabel\":\"color2\",\"dictSort\":2,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"2\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:51:30', 12); -INSERT INTO `sys_oper_log` VALUES (292, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:26:37\",\"default\":false,\"dictCode\":133,\"dictLabel\":\"color3\",\"dictSort\":3,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"3\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:51:40', 16); -INSERT INTO `sys_oper_log` VALUES (293, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:27:26\",\"default\":false,\"dictCode\":134,\"dictLabel\":\"color4\",\"dictSort\":4,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"4\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:51:49', 15); -INSERT INTO `sys_oper_log` VALUES (294, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:28:09\",\"default\":false,\"dictCode\":135,\"dictLabel\":\"color5\",\"dictSort\":5,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"5\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:51:58', 13); -INSERT INTO `sys_oper_log` VALUES (295, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:29:18\",\"default\":false,\"dictCode\":136,\"dictLabel\":\"color6\",\"dictSort\":6,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"6\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:52:06', 16); -INSERT INTO `sys_oper_log` VALUES (296, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:39:22\",\"default\":false,\"dictCode\":137,\"dictLabel\":\"color7\",\"dictSort\":7,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"7\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:52:13', 9); -INSERT INTO `sys_oper_log` VALUES (297, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:39:50\",\"default\":false,\"dictCode\":138,\"dictLabel\":\"color8\",\"dictSort\":8,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"8\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:52:33', 13); -INSERT INTO `sys_oper_log` VALUES (298, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:40:45\",\"default\":false,\"dictCode\":139,\"dictLabel\":\"color9\",\"dictSort\":9,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"9\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:52:42', 16); -INSERT INTO `sys_oper_log` VALUES (299, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:41:05\",\"default\":false,\"dictCode\":140,\"dictLabel\":\"color10\",\"dictSort\":10,\"dictType\":\"ff_membervip_icon_color\",\"dictValue\":\"10\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:52:53', 12); -INSERT INTO `sys_oper_log` VALUES (300, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 15:44:59\",\"dictId\":108,\"dictName\":\"vip等级图标父样式\",\"dictType\":\"ff_vip_icon_parent_style\",\"params\":{},\"remark\":\"vip等级图标父样式\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:54:59', 38); -INSERT INTO `sys_oper_log` VALUES (301, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:42:14\",\"dictId\":107,\"dictName\":\"vip等级图标样式\",\"dictType\":\"ff_vip_icon_style\",\"params\":{},\"remark\":\"vip等级图标样式\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:55:09', 28); -INSERT INTO `sys_oper_log` VALUES (302, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:20:37\",\"dictId\":106,\"dictName\":\"vip等级图标颜色\",\"dictType\":\"ff_vip_icon_color\",\"params\":{},\"remark\":\"vip等级图标颜色\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-14 15:55:14', 33); -INSERT INTO `sys_oper_log` VALUES (303, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:24:29\",\"default\":false,\"dictCode\":120,\"dictLabel\":\"APP-iOS\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"APP-iOS\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"APP-iOS\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:11', 11); -INSERT INTO `sys_oper_log` VALUES (304, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:25:18\",\"default\":false,\"dictCode\":121,\"dictLabel\":\"H5-iOS\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"H5-iOS\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"H5-iOS\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:17', 11); -INSERT INTO `sys_oper_log` VALUES (305, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:25:43\",\"default\":false,\"dictCode\":122,\"dictLabel\":\"APP-Android\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"APP-Android\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"APP-Android\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:22', 7); -INSERT INTO `sys_oper_log` VALUES (306, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:26:09\",\"default\":false,\"dictCode\":123,\"dictLabel\":\"H5-Android\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"H5-Android\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"H5-Android\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:28', 13); -INSERT INTO `sys_oper_log` VALUES (307, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:26:41\",\"default\":false,\"dictCode\":124,\"dictLabel\":\"PC-Windows\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"PC-Windows\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"PC-Windows\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:33', 13); -INSERT INTO `sys_oper_log` VALUES (308, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 16:27:06\",\"default\":false,\"dictCode\":125,\"dictLabel\":\"PC-Mac\",\"dictSort\":0,\"dictType\":\"ff_device_type\",\"dictValue\":\"PC-Mac\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"PC-Mac\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:35:38', 19); -INSERT INTO `sys_oper_log` VALUES (309, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"会员日志操作项目\",\"dictType\":\"ff_log_oprproject\",\"params\":{},\"remark\":\"会员日志操作项目\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:41:00', 6); -INSERT INTO `sys_oper_log` VALUES (310, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"姓名\",\"dictSort\":0,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:42:38', 32); -INSERT INTO `sys_oper_log` VALUES (311, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"手机号\",\"dictSort\":1,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"1\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:43:10', 12); -INSERT INTO `sys_oper_log` VALUES (312, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:42:38\",\"default\":false,\"dictCode\":156,\"dictLabel\":\"姓名\",\"dictSort\":0,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:43:26', 8); -INSERT INTO `sys_oper_log` VALUES (313, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"账号状态\",\"dictSort\":2,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"2\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:44:34', 24); -INSERT INTO `sys_oper_log` VALUES (314, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"银行卡\",\"dictSort\":3,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:45:08', 12); -INSERT INTO `sys_oper_log` VALUES (315, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"cssClass\":\"\",\"default\":false,\"dictLabel\":\"账号密码\",\"dictSort\":4,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"4\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:46:13', 24); -INSERT INTO `sys_oper_log` VALUES (316, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"忘记密码\",\"dictSort\":5,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"5\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:48:37', 36); -INSERT INTO `sys_oper_log` VALUES (317, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"提现密码\",\"dictSort\":6,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"6\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:49:06', 11); -INSERT INTO `sys_oper_log` VALUES (318, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"WhatsApp\",\"dictSort\":7,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"7\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:50:30', 33); -INSERT INTO `sys_oper_log` VALUES (319, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"Facebook\",\"dictSort\":8,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"8\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:50:57', 13); -INSERT INTO `sys_oper_log` VALUES (320, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"Telegram\",\"dictSort\":9,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"9\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:51:20', 10); -INSERT INTO `sys_oper_log` VALUES (321, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"Zalo\",\"dictSort\":10,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"10\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:51:40', 8); -INSERT INTO `sys_oper_log` VALUES (322, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"邮箱地址\",\"dictSort\":11,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"11\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:52:30', 12); -INSERT INTO `sys_oper_log` VALUES (323, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"手势密码\",\"dictSort\":12,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"12\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:52:54', 12); -INSERT INTO `sys_oper_log` VALUES (324, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"谷歌验证\",\"dictSort\":13,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"13\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:53:19', 14); -INSERT INTO `sys_oper_log` VALUES (325, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"密保问题\",\"dictSort\":14,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"14\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:53:55', 13); -INSERT INTO `sys_oper_log` VALUES (326, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"会员层级\",\"dictSort\":15,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"15\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:54:29', 18); -INSERT INTO `sys_oper_log` VALUES (327, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"上级代理\",\"dictSort\":16,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"16\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:55:06', 12); -INSERT INTO `sys_oper_log` VALUES (328, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"登录\",\"dictSort\":17,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"17\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:55:25', 13); -INSERT INTO `sys_oper_log` VALUES (329, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"登出\",\"dictSort\":18,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"18\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:55:37', 10); -INSERT INTO `sys_oper_log` VALUES (330, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"VIP等级\",\"dictSort\":19,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"19\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 09:56:18', 11); -INSERT INTO `sys_oper_log` VALUES (331, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:42:38\",\"default\":false,\"dictCode\":156,\"dictLabel\":\"姓名\",\"dictSort\":0,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"姓名\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:04:41', 11); -INSERT INTO `sys_oper_log` VALUES (332, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:43:10\",\"default\":false,\"dictCode\":157,\"dictLabel\":\"手机号\",\"dictSort\":1,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"手机号\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:04:46', 14); -INSERT INTO `sys_oper_log` VALUES (333, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:44:34\",\"default\":false,\"dictCode\":158,\"dictLabel\":\"账号状态\",\"dictSort\":2,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"账号状态\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:04:51', 14); -INSERT INTO `sys_oper_log` VALUES (334, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:45:08\",\"default\":false,\"dictCode\":159,\"dictLabel\":\"银行卡\",\"dictSort\":3,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"银行卡\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:04:55', 12); -INSERT INTO `sys_oper_log` VALUES (335, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:46:13\",\"default\":false,\"dictCode\":160,\"dictLabel\":\"账号密码\",\"dictSort\":4,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"账号密码\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:01', 12); -INSERT INTO `sys_oper_log` VALUES (336, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:48:37\",\"default\":false,\"dictCode\":161,\"dictLabel\":\"忘记密码\",\"dictSort\":5,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"忘记密码\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:06', 11); -INSERT INTO `sys_oper_log` VALUES (337, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:49:06\",\"default\":false,\"dictCode\":162,\"dictLabel\":\"提现密码\",\"dictSort\":6,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"提现密码\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:11', 11); -INSERT INTO `sys_oper_log` VALUES (338, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:50:30\",\"default\":false,\"dictCode\":163,\"dictLabel\":\"WhatsApp\",\"dictSort\":7,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"WhatsApp\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:16', 12); -INSERT INTO `sys_oper_log` VALUES (339, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:50:57\",\"default\":false,\"dictCode\":164,\"dictLabel\":\"Facebook\",\"dictSort\":8,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"Facebook\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:20', 11); -INSERT INTO `sys_oper_log` VALUES (340, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:51:20\",\"default\":false,\"dictCode\":165,\"dictLabel\":\"Telegram\",\"dictSort\":9,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"Telegram\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:24', 10); -INSERT INTO `sys_oper_log` VALUES (341, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:51:40\",\"default\":false,\"dictCode\":166,\"dictLabel\":\"Zalo\",\"dictSort\":10,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"Zalo\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:30', 13); -INSERT INTO `sys_oper_log` VALUES (342, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:52:30\",\"default\":false,\"dictCode\":167,\"dictLabel\":\"邮箱地址\",\"dictSort\":11,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"邮箱地址\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:34', 15); -INSERT INTO `sys_oper_log` VALUES (343, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:52:54\",\"default\":false,\"dictCode\":168,\"dictLabel\":\"手势密码\",\"dictSort\":12,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"手势密码\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:38', 11); -INSERT INTO `sys_oper_log` VALUES (344, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:53:19\",\"default\":false,\"dictCode\":169,\"dictLabel\":\"谷歌验证\",\"dictSort\":13,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"谷歌验证\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:43', 12); -INSERT INTO `sys_oper_log` VALUES (345, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:53:55\",\"default\":false,\"dictCode\":170,\"dictLabel\":\"密保问题\",\"dictSort\":14,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"密保问题\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:50', 10); -INSERT INTO `sys_oper_log` VALUES (346, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:54:29\",\"default\":false,\"dictCode\":171,\"dictLabel\":\"会员层级\",\"dictSort\":15,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"会员层级\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:05:56', 15); -INSERT INTO `sys_oper_log` VALUES (347, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:55:06\",\"default\":false,\"dictCode\":172,\"dictLabel\":\"上级代理\",\"dictSort\":16,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"上级代理\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:06:01', 14); -INSERT INTO `sys_oper_log` VALUES (348, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:55:25\",\"default\":false,\"dictCode\":173,\"dictLabel\":\"登录\",\"dictSort\":17,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"登录\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:06:06', 10); -INSERT INTO `sys_oper_log` VALUES (349, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:55:37\",\"default\":false,\"dictCode\":174,\"dictLabel\":\"登出\",\"dictSort\":18,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"登出\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:06:09', 13); -INSERT INTO `sys_oper_log` VALUES (350, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:56:18\",\"default\":false,\"dictCode\":175,\"dictLabel\":\"VIP等级\",\"dictSort\":19,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"登出\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:06:13', 9); -INSERT INTO `sys_oper_log` VALUES (351, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:56:18\",\"default\":false,\"dictCode\":175,\"dictLabel\":\"VIP等级\",\"dictSort\":19,\"dictType\":\"ff_log_oprproject\",\"dictValue\":\"VIP等级\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:06:18', 10); -INSERT INTO `sys_oper_log` VALUES (352, '字典类型', 2, 'com.ff.system.SysDictTypeController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 09:41:00\",\"dictId\":109,\"dictName\":\"会员日志操作项目\",\"dictType\":\"ff_log_operproject\",\"params\":{},\"remark\":\"会员日志操作项目\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:09:51', 18); -INSERT INTO `sys_oper_log` VALUES (353, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"会员操作类型\",\"dictType\":\"ff_oper_type\",\"params\":{},\"remark\":\"会员操作类型\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:10:56', 29); -INSERT INTO `sys_oper_log` VALUES (354, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"无\",\"dictSort\":0,\"dictType\":\"ff_oper_type\",\"dictValue\":\"无\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:11:57', 10); -INSERT INTO `sys_oper_log` VALUES (355, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"新增\",\"dictSort\":0,\"dictType\":\"ff_oper_type\",\"dictValue\":\"新增\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:12:11', 10); -INSERT INTO `sys_oper_log` VALUES (356, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"修改\",\"dictSort\":0,\"dictType\":\"ff_oper_type\",\"dictValue\":\"修改\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:12:19', 12); -INSERT INTO `sys_oper_log` VALUES (357, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 10:12:11\",\"default\":false,\"dictCode\":177,\"dictLabel\":\"新增\",\"dictSort\":1,\"dictType\":\"ff_oper_type\",\"dictValue\":\"新增\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:12:24', 11); -INSERT INTO `sys_oper_log` VALUES (358, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-15 10:12:19\",\"default\":false,\"dictCode\":178,\"dictLabel\":\"修改\",\"dictSort\":2,\"dictType\":\"ff_oper_type\",\"dictValue\":\"修改\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 10:12:32', 11); -INSERT INTO `sys_oper_log` VALUES (359, '个人信息', 2, 'com.ff.system.SysProfileController.updateProfile()', 'PUT', 1, 'admin', '研发部门', '/system/user/profile', '192.168.1.29', '内网IP', '{\"admin\":false,\"email\":\"ry@163.com\",\"nickName\":\"FF\",\"params\":{},\"phonenumber\":\"15888888888\",\"sex\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 15:29:26', 19); -INSERT INTO `sys_oper_log` VALUES (360, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.29', '内网IP', '{\"tables\":\"ff_member_vip\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:07:03', 176); -INSERT INTO `sys_oper_log` VALUES (361, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.29', '内网IP', '{\"businessName\":\"vip\",\"className\":\"MemberVip\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":32,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Grade\",\"columnComment\":\"等级\",\"columnId\":33,\"columnName\":\"grade\",\"columnType\":\"int\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"grade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyType\",\"columnComment\":\"币种(字典ff_currency)\",\"columnId\":34,\"columnName\":\"currency_type\",\"columnType\":\"varchar(10)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"currencyType\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"IconParentStyle\",\"columnComment\":\"图标父样式(字典ff_vip_icon_parent_style\\t)\",\"columnId\":35,\"columnName\":\"icon_parent_style\",\"columnType\":\"varchar(200)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:09:16', 120); -INSERT INTO `sys_oper_log` VALUES (362, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"sys_role\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:12:37', 65); -INSERT INTO `sys_oper_log` VALUES (363, '代码生成', 3, 'com.ff.gen.controller.GenController.remove()', 'DELETE', 1, 'admin', '研发部门', '/tool/gen/5', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:15:12', 21); -INSERT INTO `sys_oper_log` VALUES (364, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip\"}', NULL, 0, NULL, '2024-10-15 16:20:50', 159); -INSERT INTO `sys_oper_log` VALUES (365, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/vip/index\",\"createTime\":\"2024-10-15 16:21:35\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3019,\"menuName\":\"vip等级\",\"menuType\":\"C\",\"orderNum\":3,\"params\":{},\"parentId\":3006,\"path\":\"vip\",\"perms\":\"member:vip:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:22:29', 16); -INSERT INTO `sys_oper_log` VALUES (366, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/vip/index\",\"createTime\":\"2024-10-15 16:21:35\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3019,\"menuName\":\"VIP等级\",\"menuType\":\"C\",\"orderNum\":3,\"params\":{},\"parentId\":3006,\"path\":\"vip\",\"perms\":\"member:vip:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:22:45', 11); -INSERT INTO `sys_oper_log` VALUES (367, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:31:37', 174); -INSERT INTO `sys_oper_log` VALUES (368, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vipSetup\",\"className\":\"MemberVipSetup\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":72,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"KeepGrade\",\"columnComment\":\"保级开关(0.关闭 1.开启)\",\"columnId\":73,\"columnName\":\"keep_grade\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"keepGrade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"RewardSwitch\",\"columnComment\":\"奖励开关(0.关闭 1.开启)\",\"columnId\":74,\"columnName\":\"reward_switch\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"rewardSwitch\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"SalaryType\",\"columnComment\":\"俸禄类型(0.日俸禄 1.周俸禄 2.月俸禄 3.日/周/月 公共设置 4.其他设置(包含保级、奖励开关))\",\"columnId\":75,\"columnName\":\"salary_type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isInc', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:37:32', 155); -INSERT INTO `sys_oper_log` VALUES (369, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', NULL, 0, NULL, '2024-10-15 16:37:38', 327); -INSERT INTO `sys_oper_log` VALUES (370, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_log\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:40:47', 62); -INSERT INTO `sys_oper_log` VALUES (371, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"log\",\"className\":\"MemberLog\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":94,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:40:47\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":7,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"MemberId\",\"columnComment\":\"会员id\",\"columnId\":95,\"columnName\":\"member_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:40:47\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"memberId\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":7,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"MemberAccount\",\"columnComment\":\"会员账号\",\"columnId\":96,\"columnName\":\"member_account\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:40:47\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"memberAccount\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":7,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"OperateTime\",\"columnComment\":\"操作时间\",\"columnId\":97,\"columnName\":\"operate_time\",\"columnType\":\"datetime\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:40:47\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"datetime\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:43:18', 62); -INSERT INTO `sys_oper_log` VALUES (372, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vip\",\"className\":\"MemberVip\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":32,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-15 16:09:16\",\"usableColumn\":false},{\"capJavaField\":\"Grade\",\"columnComment\":\"等级\",\"columnId\":33,\"columnName\":\"grade\",\"columnType\":\"int\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"grade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-15 16:09:16\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyType\",\"columnComment\":\"币种(字典ff_currency)\",\"columnId\":34,\"columnName\":\"currency_type\",\"columnType\":\"varchar(10)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_currency\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"currencyType\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-15 16:09:16\",\"usableColumn\":false},{\"capJavaField\":\"IconParentStyle\",\"columnComment\":\"图标父样式(字典ff_vip_icon_parent_style\\t)\",\"columnId\":35,\"columnName\":\"icon_parent_style\",\"columnType\":\"varchar(200)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_vip_i', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:44:40', 72); -INSERT INTO `sys_oper_log` VALUES (373, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_log\"}', NULL, 0, NULL, '2024-10-15 16:45:05', 131); -INSERT INTO `sys_oper_log` VALUES (374, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/log/index\",\"createTime\":\"2024-10-15 16:45:54\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3025,\"menuName\":\"会员日志\",\"menuType\":\"C\",\"orderNum\":4,\"params\":{},\"parentId\":3006,\"path\":\"log\",\"perms\":\"member:log:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:46:17', 23); -INSERT INTO `sys_oper_log` VALUES (375, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:48:54', 144); -INSERT INTO `sys_oper_log` VALUES (376, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"member\",\"className\":\"Member\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":113,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:48:54\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":8,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyType\",\"columnComment\":\"币种(字典ff_currency)\",\"columnId\":114,\"columnName\":\"currency_type\",\"columnType\":\"varchar(10)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:48:54\",\"dictType\":\"ff_currency\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"currencyType\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":8,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"MemberAccount\",\"columnComment\":\"会员账号\",\"columnId\":115,\"columnName\":\"member_account\",\"columnType\":\"varchar(16)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:48:54\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"memberAccount\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":8,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"RealName\",\"columnComment\":\"会员姓名\",\"columnId\":116,\"columnName\":\"real_name\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:48:54\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:53:42', 128); -INSERT INTO `sys_oper_log` VALUES (377, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member\"}', NULL, 0, NULL, '2024-10-15 16:53:49', 118); -INSERT INTO `sys_oper_log` VALUES (378, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"component\":\"member/member/index\",\"createTime\":\"2024-10-15 16:54:31\",\"icon\":\"#\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3031,\"menuName\":\"所有会员\",\"menuType\":\"C\",\"orderNum\":0,\"params\":{},\"parentId\":3006,\"path\":\"member\",\"perms\":\"member:member:list\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-15 16:54:55', 11); -INSERT INTO `sys_oper_log` VALUES (379, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_vip_setup', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 09:54:34', 197); -INSERT INTO `sys_oper_log` VALUES (380, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', NULL, 0, NULL, '2024-10-16 09:54:38', 304); -INSERT INTO `sys_oper_log` VALUES (381, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_vip_setup', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 09:59:34', 208); -INSERT INTO `sys_oper_log` VALUES (382, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vipSetup\",\"className\":\"MemberVipSetup\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":72,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 09:59:34\",\"usableColumn\":false},{\"capJavaField\":\"KeepGrade\",\"columnComment\":\"保级开关(0.关闭 1.开启)\",\"columnId\":73,\"columnName\":\"keep_grade\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"keepGrade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 09:59:34\",\"usableColumn\":false},{\"capJavaField\":\"RewardSwitch\",\"columnComment\":\"奖励开关(0.关闭 1.开启)\",\"columnId\":74,\"columnName\":\"reward_switch\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"rewardSwitch\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 09:59:34\",\"usableColumn\":false},{\"capJavaField\":\"SetType\",\"columnComment\":\"设置类型(0.日俸禄 1.周俸禄 2.月俸禄 3.日/周/月 公共设置 4.其他设置(包含保级、奖励开关))\",\"columnId\":167,\"columnName\":\"set_type\",\"columnType\":\"tinyint\",\"createBy\":\"\",\"createTime\":\"2024-10-16 09:59:34\",\"d', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 10:00:33', 101); -INSERT INTO `sys_oper_log` VALUES (383, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', NULL, 0, NULL, '2024-10-16 10:01:02', 280); -INSERT INTO `sys_oper_log` VALUES (384, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_vip_setup', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 10:24:43', 110); -INSERT INTO `sys_oper_log` VALUES (385, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vipSetup\",\"className\":\"MemberVipSetup\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":72,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 10:24:43\",\"usableColumn\":false},{\"capJavaField\":\"KeepGrade\",\"columnComment\":\"保级开关(0.关闭 1.开启)\",\"columnId\":73,\"columnName\":\"keep_grade\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"keepGrade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 10:24:43\",\"usableColumn\":false},{\"capJavaField\":\"RewardSwitch\",\"columnComment\":\"奖励开关(0.关闭 1.开启)\",\"columnId\":74,\"columnName\":\"reward_switch\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:31:37\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"rewardSwitch\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":6,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 10:24:43\",\"usableColumn\":false},{\"capJavaField\":\"SetType\",\"columnComment\":\"设置类型(0.日俸禄 1.周俸禄 2.月俸禄 3.日/周/月 公共设置 4.其他设置(包含保级、奖励开关))\",\"columnId\":167,\"columnName\":\"set_type\",\"columnType\":\"tinyint\",\"createBy\":\"\",\"createTime\":\"2024-10-16 09:59:34\",\"d', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 10:25:23', 70); -INSERT INTO `sys_oper_log` VALUES (386, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', NULL, 0, NULL, '2024-10-16 10:25:33', 133); -INSERT INTO `sys_oper_log` VALUES (387, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 11:33:11', 49); -INSERT INTO `sys_oper_log` VALUES (388, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 11:33:59', 9428); -INSERT INTO `sys_oper_log` VALUES (389, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '', '{\"msg\":\"奖励开关不能为空\",\"code\":500}', 0, NULL, '2024-10-16 11:35:30', 7); -INSERT INTO `sys_oper_log` VALUES (390, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '{\"rewardSwitch\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 11:35:50', 20); -INSERT INTO `sys_oper_log` VALUES (391, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '{\"rewardSwitch\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 11:35:58', 13); -INSERT INTO `sys_oper_log` VALUES (392, '会员vip等级公共设置奖励开关', 2, 'com.ff.member.controller.MemberVipSetupController.editRewardSwitch()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editRewardSwitch', '192.168.1.29', '内网IP', '{\"rewardSwitch\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 11:36:02', 6); -INSERT INTO `sys_oper_log` VALUES (393, '会员vip等级公共设置', 2, 'com.ff.member.controller.MemberVipSetupController.editMemberCommonSetUp()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editMemberCommonSetUp', '192.168.1.29', '内网IP', '[]', '{\"msg\":\"会员vip等级公共设置列表不能为空\",\"code\":500}', 0, NULL, '2024-10-16 13:22:51', 10); -INSERT INTO `sys_oper_log` VALUES (394, '会员vip等级公共设置', 2, 'com.ff.member.controller.MemberVipSetupController.editMemberCommonSetUp()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editMemberCommonSetUp', '192.168.1.29', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":1,\"params\":{},\"repeatDraw\":0,\"setType\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:14\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":2,\"params\":{},\"repeatDraw\":0,\"setType\":1,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:14\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":3,\"params\":{},\"repeatDraw\":0,\"setType\":2,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:14\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:10:33\",\"distributeWay\":1,\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"expireRewardDay\":30,\"id\":4,\"params\":{},\"repeatDraw\":0,\"setType\":3,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:14\"},{\"appointPlatform\":0,\"auditMultiple\":1.00,\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:19:35\",\"id\":5,\"keepGrade\":1,\"params\":{},\"remark\":\"1.晋级标准:满足VIP晋级要求(即充值或有效投注都满足条件),即可晋级相应VIP等级,获得相应晋级奖金,如连续晋级多级,可获得全部等级晋级奖金,奖金实时可领取;\\n2.日俸禄:每日充值及有效投注满足当前等级日俸禄要求,可获得对应日俸禄奖金,如连续晋级多级,可获得全部等级日俸禄奖金,奖金实时可领取;\\n3.周俸禄:每周充值及有效投注满足当前等级周俸禄要求,可获得对应周俸禄奖金,如连续晋级多级,可获得全部等级周俸禄奖金,奖金实时可领取;\\n4.月俸禄:每月充值及有效投注满足当前等级月俸禄要求,可获得对应月俸禄奖金,如连续晋级多级,可获得全部等级月俸禄奖金,奖金实时可领取;\\n5.奖励过期时间:获得的奖金仅保留30天,期间内未主动领取,则过期作废,例如:1月1日获得奖励,保留30天,则1月32日 00:00:00过期作废;\\n6.稽核说明:VIP所赠送的奖金需1倍流水(即稽核、打码或有效投注)才能提现,打码不限游戏平台;\\n7.活动声明:本功能仅限账号本人进行正常游戏投注,禁止租借账号、无风险投注(对赌、对刷、低赔刷水)、恶意套利、使用外挂程式、机器人、利用协议、漏洞、接口、群控或其他技术手段参与,一经查核属实,本平台有权终止会员登录、暂停会员使用网站、及没收奖金和不当盈利的权利,无需特别通知;\\n8.解释说明:会员领取VIP奖励时,本平台将默认会员同意且遵守对应条件等相关规定,为避免文字理解歧义,本平台保有本活动最终解释权。\",\"rewardSwitch\":1,\"ruleType\":1,\"setType\":4,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:14\",\"vipIcon\":\"1\"}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 13:32:14', 92); -INSERT INTO `sys_oper_log` VALUES (395, '会员vip等级公共设置', 2, 'com.ff.member.controller.MemberVipSetupController.editMemberCommonSetUp()', 'PUT', 1, 'admin', '研发部门', '/member/vipSetup/editMemberCommonSetUp', '192.168.1.29', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":1,\"params\":{},\"repeatDraw\":0,\"setType\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:44\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":2,\"params\":{},\"repeatDraw\":0,\"setType\":1,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:44\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:03:20\",\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"id\":3,\"params\":{},\"repeatDraw\":0,\"setType\":2,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:44\"},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:10:33\",\"distributeWay\":1,\"drawStartTime\":\"1970-01-01\",\"drawTime\":1,\"expireRewardDay\":30,\"id\":4,\"params\":{},\"repeatDraw\":0,\"setType\":3,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:44\"},{\"appointPlatform\":0,\"auditMultiple\":1.00,\"createBy\":\"admin\",\"createTime\":\"2024-10-16 10:19:35\",\"id\":5,\"keepGrade\":0,\"params\":{},\"remark\":\"1.晋级标准:满足VIP晋级要求(即充值或有效投注都满足条件),即可晋级相应VIP等级,获得相应晋级奖金,如连续晋级多级,可获得全部等级晋级奖金,奖金实时可领取;\\n2.日俸禄:每日充值及有效投注满足当前等级日俸禄要求,可获得对应日俸禄奖金,如连续晋级多级,可获得全部等级日俸禄奖金,奖金实时可领取;\\n3.周俸禄:每周充值及有效投注满足当前等级周俸禄要求,可获得对应周俸禄奖金,如连续晋级多级,可获得全部等级周俸禄奖金,奖金实时可领取;\\n4.月俸禄:每月充值及有效投注满足当前等级月俸禄要求,可获得对应月俸禄奖金,如连续晋级多级,可获得全部等级月俸禄奖金,奖金实时可领取;\\n5.奖励过期时间:获得的奖金仅保留30天,期间内未主动领取,则过期作废,例如:1月1日获得奖励,保留30天,则1月32日 00:00:00过期作废;\\n6.稽核说明:VIP所赠送的奖金需1倍流水(即稽核、打码或有效投注)才能提现,打码不限游戏平台;\\n7.活动声明:本功能仅限账号本人进行正常游戏投注,禁止租借账号、无风险投注(对赌、对刷、低赔刷水)、恶意套利、使用外挂程式、机器人、利用协议、漏洞、接口、群控或其他技术手段参与,一经查核属实,本平台有权终止会员登录、暂停会员使用网站、及没收奖金和不当盈利的权利,无需特别通知;\\n8.解释说明:会员领取VIP奖励时,本平台将默认会员同意且遵守对应条件等相关规定,为避免文字理解歧义,本平台保有本活动最终解释权。\",\"rewardSwitch\":1,\"ruleType\":1,\"setType\":4,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-16 13:32:44\",\"vipIcon\":\"1\"}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 13:32:44', 34); -INSERT INTO `sys_oper_log` VALUES (396, '用户管理', 5, 'com.ff.system.SysUserController.export()', 'POST', 1, 'admin', '研发部门', '/system/user/export', '192.168.1.34', '内网IP', '{\"pageSize\":\"10\",\"pageNum\":\"1\"}', NULL, 0, NULL, '2024-10-16 16:04:45', 853); -INSERT INTO `sys_oper_log` VALUES (397, '会员层级', 1, 'com.ff.member.controller.MemberLevelController.add()', 'POST', 1, 'admin', '研发部门', '/member/level', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 16:13:45\",\"id\":1,\"labelId\":2,\"levelName\":\"测试层级\",\"params\":{},\"remark\":\"这是一个测试层级\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 16:13:45', 19); -INSERT INTO `sys_oper_log` VALUES (398, '会员层级', 1, 'com.ff.member.controller.MemberLevelController.add()', 'POST', 1, 'admin', '研发部门', '/member/level', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 16:16:40\",\"id\":2,\"labelId\":2,\"levelName\":\"测试\",\"params\":{},\"remark\":\"123123\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 16:16:40', 10); -INSERT INTO `sys_oper_log` VALUES (399, '会员层级', 1, 'com.ff.member.controller.MemberLevelController.add()', 'POST', 1, 'admin', '研发部门', '/member/level', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 16:17:15\",\"id\":3,\"labelId\":2,\"levelName\":\"测试测试\",\"levelType\":1,\"params\":{},\"remark\":\"1123123\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 16:17:15', 9); -INSERT INTO `sys_oper_log` VALUES (400, '会员层级', 1, 'com.ff.member.controller.MemberLevelController.add()', 'POST', 1, 'admin', '研发部门', '/member/level', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 16:30:57\",\"id\":4,\"levelName\":\"刷子玩家\",\"levelType\":1,\"params\":{},\"remark\":\"破解验证注册的玩家\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 16:30:57', 24); -INSERT INTO `sys_oper_log` VALUES (401, '会员层级', 1, 'com.ff.member.controller.MemberLevelController.add()', 'POST', 1, 'admin', '研发部门', '/member/level', '192.168.1.34', '内网IP', '{\"chargeAmount\":0,\"chargeCount\":0,\"createBy\":\"admin\",\"createTime\":\"2024-10-16 16:32:40\",\"id\":5,\"levelName\":\"默认层级\",\"levelType\":0,\"params\":{},\"remark\":\"默认层级\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 16:32:40', 11); -INSERT INTO `sys_oper_log` VALUES (402, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip\"}', NULL, 0, NULL, '2024-10-16 16:44:17', 138); -INSERT INTO `sys_oper_log` VALUES (403, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip_setup\"}', NULL, 0, NULL, '2024-10-16 16:44:17', 65); -INSERT INTO `sys_oper_log` VALUES (404, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_vip', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 17:01:49', 190); -INSERT INTO `sys_oper_log` VALUES (405, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vip\",\"className\":\"MemberVip\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":32,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 17:01:49\",\"usableColumn\":false},{\"capJavaField\":\"Grade\",\"columnComment\":\"等级\",\"columnId\":33,\"columnName\":\"grade\",\"columnType\":\"int\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"grade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 17:01:49\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyType\",\"columnComment\":\"币种(字典ff_currency)\",\"columnId\":34,\"columnName\":\"currency_type\",\"columnType\":\"varchar(10)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_currency\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"currencyType\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-16 17:01:49\",\"usableColumn\":false},{\"capJavaField\":\"IconParentStyle\",\"columnComment\":\"图标父样式(字典ff_vip_icon_parent_style\\t)\",\"columnId\":35,\"columnName\":\"icon_parent_style\",\"columnType\":\"varchar(200)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_vip_i', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-16 17:02:39', 103); -INSERT INTO `sys_oper_log` VALUES (406, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip\"}', NULL, 0, NULL, '2024-10-16 17:02:46', 144); -INSERT INTO `sys_oper_log` VALUES (407, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"sys_excel_task\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:19:18', 164); -INSERT INTO `sys_oper_log` VALUES (408, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"task\",\"className\":\"SysExcelTask\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":172,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:19:18\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":9,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Type\",\"columnComment\":\"类型:1-导入,2-导出\",\"columnId\":173,\"columnName\":\"type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:19:18\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"type\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":9,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Status\",\"columnComment\":\"状态:0-初始,1-进行中,2-完成,3-失败\",\"columnId\":174,\"columnName\":\"status\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:19:18\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"radio\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"status\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":9,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"EstimateCount\",\"columnComment\":\"预估总记录数\",\"columnId\":175,\"columnName\":\"estimate_count\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:19:18\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:20:53', 117); -INSERT INTO `sys_oper_log` VALUES (409, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"sys_excel_task\"}', NULL, 0, NULL, '2024-10-17 09:21:49', 386); -INSERT INTO `sys_oper_log` VALUES (410, '代码生成', 3, 'com.ff.gen.controller.GenController.remove()', 'DELETE', 1, 'admin', '研发部门', '/tool/gen/9', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:34:23', 16); -INSERT INTO `sys_oper_log` VALUES (411, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"excel_task\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:34:28', 84); -INSERT INTO `sys_oper_log` VALUES (412, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"task\",\"className\":\"ExcelTask\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":193,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:34:27\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":10,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Type\",\"columnComment\":\"类型:1-导入,2-导出\",\"columnId\":194,\"columnName\":\"type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:34:27\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"type\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":10,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Status\",\"columnComment\":\"状态:0-初始,1-进行中,2-完成,3-失败\",\"columnId\":195,\"columnName\":\"status\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:34:27\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"radio\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"status\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":10,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"EstimateCount\",\"columnComment\":\"预估总记录数\",\"columnId\":196,\"columnName\":\"estimate_count\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:34:27\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:35:19', 64); -INSERT INTO `sys_oper_log` VALUES (413, '代码生成', 3, 'com.ff.gen.controller.GenController.remove()', 'DELETE', 1, 'admin', '研发部门', '/tool/gen/10', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:45:15', 38); -INSERT INTO `sys_oper_log` VALUES (414, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"system\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":1,\"menuName\":\"系统管理\",\"menuType\":\"M\",\"orderNum\":8,\"params\":{},\"parentId\":0,\"path\":\"system\",\"perms\":\"\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:45:32', 12); -INSERT INTO `sys_oper_log` VALUES (415, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createTime\":\"2024-10-09 15:44:01\",\"icon\":\"monitor\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":2,\"menuName\":\"系统监控\",\"menuType\":\"M\",\"orderNum\":9,\"params\":{},\"parentId\":0,\"path\":\"monitor\",\"perms\":\"\",\"query\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:45:37', 12); -INSERT INTO `sys_oper_log` VALUES (416, '菜单管理', 2, 'com.ff.system.SysMenuController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createTime\":\"2024-10-14 10:29:54\",\"icon\":\"user\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuId\":3006,\"menuName\":\"会员管理\",\"menuType\":\"M\",\"orderNum\":3,\"params\":{},\"parentId\":0,\"path\":\"member\",\"perms\":\"\",\"routeName\":\"\",\"status\":\"0\",\"updateBy\":\"admin\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:46:06', 12); -INSERT INTO `sys_oper_log` VALUES (417, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"icon\":\"chart\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"报表统计\",\"menuType\":\"M\",\"orderNum\":7,\"params\":{},\"parentId\":0,\"path\":\"chart\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:47:09', 13); -INSERT INTO `sys_oper_log` VALUES (418, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"excel_task\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:47:44', 87); -INSERT INTO `sys_oper_log` VALUES (419, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"task\",\"className\":\"ExcelTask\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":214,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"UserId\",\"columnComment\":\"用户ID\",\"columnId\":215,\"columnName\":\"user_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"userId\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"DeptId\",\"columnComment\":\"部门ID\",\"columnId\":216,\"columnName\":\"dept_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"deptId\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"Type\",\"columnComment\":\"类型:1-导入,2-导出\",\"columnId\":217,\"columnName\":\"type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"type\",\"javaType\":\"I', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:49:26', 58); -INSERT INTO `sys_oper_log` VALUES (420, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"task\",\"className\":\"ExcelTask\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":214,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 09:49:26\",\"usableColumn\":false},{\"capJavaField\":\"UserId\",\"columnComment\":\"用户ID\",\"columnId\":215,\"columnName\":\"user_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"userId\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 09:49:26\",\"usableColumn\":false},{\"capJavaField\":\"DeptId\",\"columnComment\":\"部门ID\",\"columnId\":216,\"columnName\":\"dept_id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"deptId\",\"javaType\":\"Long\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":11,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 09:49:26\",\"usableColumn\":false},{\"capJavaField\":\"Type\",\"columnComment\":\"类型:1-导入,2-导出\",\"columnId\":217,\"columnName\":\"type\",\"columnType\":\"tinyint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 09:47:44\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 09:49:49', 53); -INSERT INTO `sys_oper_log` VALUES (421, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"excel_task\"}', NULL, 0, NULL, '2024-10-17 09:49:52', 78); -INSERT INTO `sys_oper_log` VALUES (422, '代码生成', 2, 'com.ff.gen.controller.GenController.synchDb()', 'GET', 1, 'admin', '研发部门', '/tool/gen/synchDb/ff_member_vip', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 14:56:08', 245); -INSERT INTO `sys_oper_log` VALUES (423, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"vip\",\"className\":\"MemberVip\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":32,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":true,\"insert\":true,\"isIncrement\":\"1\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 14:56:08\",\"usableColumn\":false},{\"capJavaField\":\"Grade\",\"columnComment\":\"等级\",\"columnId\":33,\"columnName\":\"grade\",\"columnType\":\"int\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"grade\",\"javaType\":\"Integer\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":2,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 14:56:08\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyType\",\"columnComment\":\"币种(字典ff_currency)\",\"columnId\":34,\"columnName\":\"currency_type\",\"columnType\":\"varchar(10)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_currency\",\"edit\":true,\"htmlType\":\"select\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"1\",\"javaField\":\"currencyType\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":true,\"sort\":3,\"superColumn\":false,\"tableId\":4,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 14:56:08\",\"usableColumn\":false},{\"capJavaField\":\"IconParentStyle\",\"columnComment\":\"图标父样式(字典ff_vip_icon_parent_style\\t)\",\"columnId\":35,\"columnName\":\"icon_parent_style\",\"columnType\":\"varchar(200)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-15 16:07:03\",\"dictType\":\"ff_vip_i', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 14:56:46', 127); -INSERT INTO `sys_oper_log` VALUES (424, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_member_vip\"}', NULL, 0, NULL, '2024-10-17 14:56:56', 412); -INSERT INTO `sys_oper_log` VALUES (425, '代码生成', 3, 'com.ff.gen.controller.GenController.remove()', 'DELETE', 1, 'admin', '研发部门', '/tool/gen/11', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 14:59:29', 37); -INSERT INTO `sys_oper_log` VALUES (426, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3039', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:17', 30); -INSERT INTO `sys_oper_log` VALUES (427, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3040', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:19', 18); -INSERT INTO `sys_oper_log` VALUES (428, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3041', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:21', 14); -INSERT INTO `sys_oper_log` VALUES (429, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3042', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:23', 23); -INSERT INTO `sys_oper_log` VALUES (430, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3043', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:26', 15); -INSERT INTO `sys_oper_log` VALUES (431, '菜单管理', 3, 'com.ff.system.SysMenuController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/menu/3038', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:06:29', 15); -INSERT INTO `sys_oper_log` VALUES (432, '定时任务', 1, 'com.ff.quartz.controller.SysJobController.add()', 'POST', 1, 'admin', '研发部门', '/monitor/job', '192.168.1.34', '内网IP', '{\"concurrent\":\"1\",\"createBy\":\"admin\",\"cronExpression\":\"0 0/30 * ? * *\",\"invokeTarget\":\"memberVipTask.updateMemberVipCount()\",\"jobGroup\":\"SYSTEM\",\"jobId\":100,\"jobName\":\"vip等级人数修改\",\"misfirePolicy\":\"1\",\"nextValidTime\":\"2024-10-17 15:30:00\",\"params\":{},\"status\":\"1\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:29:44', 30); -INSERT INTO `sys_oper_log` VALUES (433, '定时任务', 2, 'com.ff.quartz.controller.SysJobController.changeStatus()', 'PUT', 1, 'admin', '研发部门', '/monitor/job/changeStatus', '192.168.1.34', '内网IP', '{\"jobId\":100,\"misfirePolicy\":\"0\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:29:48', 20); -INSERT INTO `sys_oper_log` VALUES (434, '定时任务', 2, 'com.ff.quartz.controller.SysJobController.run()', 'PUT', 1, 'admin', '研发部门', '/monitor/job/run', '192.168.1.34', '内网IP', '{\"jobGroup\":\"SYSTEM\",\"jobId\":100,\"misfirePolicy\":\"0\",\"params\":{}}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 15:29:51', 18); -INSERT INTO `sys_oper_log` VALUES (435, '菜单管理', 1, 'com.ff.system.SysMenuController.add()', 'POST', 1, 'admin', '研发部门', '/system/menu', '192.168.1.34', '内网IP', '{\"children\":[],\"createBy\":\"admin\",\"icon\":\"documentation\",\"isCache\":\"0\",\"isFrame\":\"1\",\"menuName\":\"运营管理\",\"menuType\":\"M\",\"orderNum\":1,\"params\":{},\"parentId\":0,\"path\":\"operation\",\"status\":\"0\",\"visible\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:28:58', 20); -INSERT INTO `sys_oper_log` VALUES (436, '代码生成', 6, 'com.ff.gen.controller.GenController.importTableSave()', 'POST', 1, 'admin', '研发部门', '/tool/gen/importTable', '192.168.1.34', '内网IP', '{\"tables\":\"ff_currency\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:30:04', 94); -INSERT INTO `sys_oper_log` VALUES (437, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"currency\",\"className\":\"FfCurrency\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":237,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyCode\",\"columnComment\":\"币种编码\",\"columnId\":238,\"columnName\":\"currency_code\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"currencyCode\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"MarketCurrencyCode\",\"columnComment\":\"市场币种编码\",\"columnId\":239,\"columnName\":\"market_currency_code\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"marketCurrencyCode\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"usableColumn\":false},{\"capJavaField\":\"CurrencySign\",\"columnComment\":\"币种符号\",\"columnId\":240,\"columnName\":\"currency_sign\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:30:45', 74); -INSERT INTO `sys_oper_log` VALUES (438, '代码生成', 2, 'com.ff.gen.controller.GenController.editSave()', 'PUT', 1, 'admin', '研发部门', '/tool/gen', '192.168.1.34', '内网IP', '{\"businessName\":\"currency\",\"className\":\"Currency\",\"columns\":[{\"capJavaField\":\"Id\",\"columnComment\":\"主键id\",\"columnId\":237,\"columnName\":\"id\",\"columnType\":\"bigint\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":false,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isPk\":\"1\",\"isRequired\":\"0\",\"javaField\":\"id\",\"javaType\":\"Long\",\"list\":false,\"params\":{},\"pk\":true,\"query\":false,\"queryType\":\"EQ\",\"required\":false,\"sort\":1,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 16:30:45\",\"usableColumn\":false},{\"capJavaField\":\"CurrencyCode\",\"columnComment\":\"币种编码\",\"columnId\":238,\"columnName\":\"currency_code\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"currencyCode\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":2,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 16:30:45\",\"usableColumn\":false},{\"capJavaField\":\"MarketCurrencyCode\",\"columnComment\":\"市场币种编码\",\"columnId\":239,\"columnName\":\"market_currency_code\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edit\":true,\"htmlType\":\"input\",\"increment\":false,\"insert\":true,\"isEdit\":\"1\",\"isIncrement\":\"0\",\"isInsert\":\"1\",\"isList\":\"1\",\"isPk\":\"0\",\"isQuery\":\"1\",\"isRequired\":\"0\",\"javaField\":\"marketCurrencyCode\",\"javaType\":\"String\",\"list\":true,\"params\":{},\"pk\":false,\"query\":true,\"queryType\":\"EQ\",\"required\":false,\"sort\":3,\"superColumn\":false,\"tableId\":12,\"updateBy\":\"\",\"updateTime\":\"2024-10-17 16:30:45\",\"usableColumn\":false},{\"capJavaField\":\"CurrencySign\",\"columnComment\":\"币种符号\",\"columnId\":240,\"columnName\":\"currency_sign\",\"columnType\":\"varchar(50)\",\"createBy\":\"admin\",\"createTime\":\"2024-10-17 16:30:04\",\"dictType\":\"\",\"edi', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:32:08', 74); -INSERT INTO `sys_oper_log` VALUES (439, '代码生成', 8, 'com.ff.gen.controller.GenController.batchGenCode()', 'GET', 1, 'admin', '研发部门', '/tool/gen/batchGenCode', '192.168.1.34', '内网IP', '{\"tables\":\"ff_currency\"}', NULL, 0, NULL, '2024-10-17 16:32:14', 274); -INSERT INTO `sys_oper_log` VALUES (440, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 10:55:47\",\"default\":false,\"dictCode\":112,\"dictLabel\":\"USDT\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"USDT(USDT)\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:55:09', 20); -INSERT INTO `sys_oper_log` VALUES (441, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 10:56:28\",\"default\":false,\"dictCode\":113,\"dictLabel\":\"VND\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"2\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"越南盾(VND1000:1)\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:55:16', 16); -INSERT INTO `sys_oper_log` VALUES (442, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-12 10:57:41\",\"default\":false,\"dictCode\":114,\"dictLabel\":\"JPY\",\"dictSort\":0,\"dictType\":\"ff_currency\",\"dictValue\":\"3\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"日元(JPY)\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 16:55:22', 17); -INSERT INTO `sys_oper_log` VALUES (443, '币种管理', 1, 'com.ff.operation.controller.CurrencyController.add()', 'POST', 1, 'admin', '研发部门', '/operation/currency', '192.168.1.34', '内网IP', '{\"createTime\":\"2024-10-17 17:24:35\",\"currencyAisle\":\"1\",\"currencyCode\":\"USDT\",\"currencyDisplay\":\"USDT100:1\",\"currencyName\":\"测试币种\",\"currencySign\":\"b\",\"currencyType\":\"1\",\"fullName\":\"testBi\",\"gameRate\":100,\"marketCurrencyCode\":\"test\",\"params\":{},\"remark\":\"测试描述\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:24:35', 20); -INSERT INTO `sys_oper_log` VALUES (444, '币种管理', 2, 'com.ff.operation.controller.CurrencyController.edit()', 'PUT', 1, 'admin', '研发部门', '/operation/currency', '192.168.1.34', '内网IP', '{\"createBy\":\"\",\"createTime\":\"2024-10-17 17:24:35\",\"currencyAisle\":\"USD\",\"currencyCode\":\"USDT\",\"currencyDisplay\":\"USDT1:1\",\"currencyName\":\"USDT\",\"currencySign\":\"U\",\"currencyType\":\"1\",\"fullName\":\"Tether\",\"gameRate\":1,\"id\":1,\"marketCurrencyCode\":\"USDT\",\"params\":{},\"remark\":\"USDT\",\"updateBy\":\"\",\"updateTime\":\"2024-10-17 17:28:12\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:28:13', 27); -INSERT INTO `sys_oper_log` VALUES (445, '币种管理', 2, 'com.ff.operation.controller.CurrencyController.edit()', 'PUT', 1, 'admin', '研发部门', '/operation/currency', '192.168.1.34', '内网IP', '{\"createBy\":\"\",\"createTime\":\"2024-10-17 17:24:35\",\"currencyAisle\":\"USD\",\"currencyCode\":\"USDT\",\"currencyDisplay\":\"USDT\",\"currencyName\":\"USDT\",\"currencySign\":\"U\",\"currencyType\":\"1\",\"fullName\":\"Tether\",\"gameRate\":1,\"id\":1,\"marketCurrencyCode\":\"USDT\",\"params\":{},\"remark\":\"USDT\",\"updateBy\":\"\",\"updateTime\":\"2024-10-17 17:29:01\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:29:01', 9); -INSERT INTO `sys_oper_log` VALUES (446, '币种管理', 2, 'com.ff.operation.controller.CurrencyController.edit()', 'PUT', 1, 'admin', '研发部门', '/operation/currency', '192.168.1.34', '内网IP', '{\"createBy\":\"\",\"createTime\":\"2024-10-17 17:24:35\",\"currencyAisle\":\"USD\",\"currencyCode\":\"USDT\",\"currencyDisplay\":\"USDT\",\"currencyName\":\"USDT\",\"currencySign\":\"U\",\"currencyType\":\"1\",\"fullName\":\"Tether\",\"gameRate\":1,\"id\":1,\"marketCurrencyCode\":\"USDT\",\"params\":{},\"remark\":\"USDT\",\"updateBy\":\"\",\"updateTime\":\"2024-10-17 17:29:17\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:29:17', 8); -INSERT INTO `sys_oper_log` VALUES (447, '币种管理', 1, 'com.ff.operation.controller.CurrencyController.add()', 'POST', 1, 'admin', '研发部门', '/operation/currency', '192.168.1.34', '内网IP', '{\"createTime\":\"2024-10-17 17:30:02\",\"currencyCode\":\"VND\",\"currencyDisplay\":\"VND1000:1\",\"currencyName\":\"越南盾\",\"currencySign\":\"₫\",\"currencyType\":\"2\",\"fullName\":\"Vietnamese Dong\",\"gameRate\":1000,\"marketCurrencyCode\":\"VND\",\"params\":{},\"remark\":\"越南盾\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:30:02', 11); -INSERT INTO `sys_oper_log` VALUES (448, '字典类型', 3, 'com.ff.system.SysDictDataController.remove()', 'DELETE', 1, 'admin', '研发部门', '/system/dict/data/114', '192.168.1.34', '内网IP', '{}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-17 17:30:39', 22); -INSERT INTO `sys_oper_log` VALUES (449, '会员标签', 2, 'com.ff.member.controller.MemberLabelController.edit()', 'PUT', 1, 'admin', '研发部门', '/member/label', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 14:18:31\",\"iconColor\":\"#1677fd\",\"id\":2,\"labelName\":\"默认标签\",\"orderNum\":1,\"params\":{},\"remark\":\"默认标签\",\"updateBy\":\"admin\",\"updateTime\":\"2024-10-18 09:33:59\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 09:33:59', 11); -INSERT INTO `sys_oper_log` VALUES (450, '字典类型', 1, 'com.ff.system.SysDictTypeController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/type', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"dictName\":\"会员账户变动大类\",\"dictType\":\"ff_account_change_type\",\"params\":{},\"remark\":\"会员账户变动大类\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:03:44', 16); -INSERT INTO `sys_oper_log` VALUES (451, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"资金切换\",\"dictSort\":0,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"0\",\"listClass\":\"default\",\"params\":{},\"remark\":\"资金切换\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:06:45', 28); -INSERT INTO `sys_oper_log` VALUES (452, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"会员充值\",\"dictSort\":1,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"1\",\"listClass\":\"primary\",\"params\":{},\"remark\":\"会员充值\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:07:08', 13); -INSERT INTO `sys_oper_log` VALUES (453, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:06:45\",\"default\":false,\"dictCode\":179,\"dictLabel\":\"资金切换\",\"dictSort\":0,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"0\",\"isDefault\":\"N\",\"listClass\":\"primary\",\"params\":{},\"remark\":\"资金切换\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:07:14', 14); -INSERT INTO `sys_oper_log` VALUES (454, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:07:08\",\"default\":false,\"dictCode\":180,\"dictLabel\":\"会员充值\",\"dictSort\":1,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"1\",\"isDefault\":\"N\",\"listClass\":\"success\",\"params\":{},\"remark\":\"会员充值\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:07:18', 11); -INSERT INTO `sys_oper_log` VALUES (455, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"会员提现\",\"dictSort\":2,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"2\",\"listClass\":\"info\",\"params\":{},\"remark\":\"会员提现\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:07:39', 14); -INSERT INTO `sys_oper_log` VALUES (456, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"银商结算\",\"dictSort\":3,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"3\",\"listClass\":\"default\",\"params\":{},\"remark\":\"银商结算\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:08:22', 13); -INSERT INTO `sys_oper_log` VALUES (457, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"资金修正\",\"dictSort\":4,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"4\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:08:38', 12); -INSERT INTO `sys_oper_log` VALUES (458, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"活动\",\"dictSort\":5,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"5\",\"listClass\":\"default\",\"params\":{},\"remark\":\"活动\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:09:03', 11); -INSERT INTO `sys_oper_log` VALUES (459, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"返水\",\"dictSort\":0,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"6\",\"listClass\":\"default\",\"params\":{},\"remark\":\"返水\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:09:30', 18); -INSERT INTO `sys_oper_log` VALUES (460, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:09:30\",\"default\":false,\"dictCode\":185,\"dictLabel\":\"返水\",\"dictSort\":6,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"6\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"返水\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:09:43', 16); -INSERT INTO `sys_oper_log` VALUES (461, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"返佣\",\"dictSort\":7,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"7\",\"listClass\":\"default\",\"params\":{},\"remark\":\"返佣\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:10:02', 12); -INSERT INTO `sys_oper_log` VALUES (462, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"任务\",\"dictSort\":0,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"8\",\"listClass\":\"default\",\"params\":{},\"remark\":\"任务\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:10:31', 14); -INSERT INTO `sys_oper_log` VALUES (463, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:10:31\",\"default\":false,\"dictCode\":187,\"dictLabel\":\"任务\",\"dictSort\":8,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"8\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"任务\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:10:37', 13); -INSERT INTO `sys_oper_log` VALUES (464, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"VIP奖励\",\"dictSort\":9,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"9\",\"listClass\":\"default\",\"params\":{},\"remark\":\"VIP奖励\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:11:12', 10); -INSERT INTO `sys_oper_log` VALUES (465, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"充值优惠\",\"dictSort\":10,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"10\",\"listClass\":\"default\",\"params\":{},\"remark\":\"充值优惠\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:11:31', 15); -INSERT INTO `sys_oper_log` VALUES (466, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"俱乐部\",\"dictSort\":11,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"11\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:11:48', 14); -INSERT INTO `sys_oper_log` VALUES (467, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:11:48\",\"default\":false,\"dictCode\":190,\"dictLabel\":\"俱乐部\",\"dictSort\":11,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"11\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"俱乐部\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:11:52', 11); -INSERT INTO `sys_oper_log` VALUES (468, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"奖励\",\"dictSort\":12,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"12\",\"listClass\":\"default\",\"params\":{},\"remark\":\"奖励\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:12:07', 19); -INSERT INTO `sys_oper_log` VALUES (469, '字典数据', 1, 'com.ff.system.SysDictDataController.add()', 'POST', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"default\":false,\"dictLabel\":\"公积金\",\"dictSort\":13,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"13\",\"listClass\":\"default\",\"params\":{},\"remark\":\"公积金\",\"status\":\"0\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:12:21', 14); -INSERT INTO `sys_oper_log` VALUES (470, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-18 13:08:38\",\"default\":false,\"dictCode\":183,\"dictLabel\":\"资金修正\",\"dictSort\":4,\"dictType\":\"ff_account_change_type\",\"dictValue\":\"4\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"remark\":\"资金修正\",\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 13:17:05', 14); -INSERT INTO `sys_oper_log` VALUES (471, 'vip等级', 2, 'com.ff.member.controller.MemberVipController.edit()', 'PUT', 1, 'admin', '研发部门', '/member/vip', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"2\",\"iconParentStyle\":\"1\",\"iconStyle\":\"0\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-18 17:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-18 17:59:53\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-18 17:59:53', 32); -INSERT INTO `sys_oper_log` VALUES (472, '字典数据', 2, 'com.ff.system.SysDictDataController.edit()', 'PUT', 1, 'admin', '研发部门', '/system/dict/data', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-14 13:48:48\",\"default\":false,\"dictCode\":151,\"dictLabel\":\"style_10\",\"dictSort\":10,\"dictType\":\"ff_vip_icon_style\",\"dictValue\":\"10\",\"isDefault\":\"N\",\"listClass\":\"default\",\"params\":{},\"status\":\"0\",\"updateBy\":\"admin\"}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 09:55:39', 13); -INSERT INTO `sys_oper_log` VALUES (473, 'vip等级', 2, 'com.ff.member.controller.MemberVipController.edit()', 'PUT', 1, 'admin', '研发部门', '/member/vip', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"3\",\"iconParentStyle\":\"1\",\"iconStyle\":\"10\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 14:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 14:58:32\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 14:58:32', 16); -INSERT INTO `sys_oper_log` VALUES (474, 'vip等级批量修改', 2, 'com.ff.member.controller.MemberVipController.batchEdit()', 'PUT', 1, 'admin', '研发部门', '/member/vip/batchEdit', '192.168.1.34', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:09:58\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":5,\"dayDrawTop\":1,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":0,\"iconColor\":\"1\",\"iconParentStyle\":\"1\",\"iconStyle\":\"0\",\"id\":1,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":0,\"monthSalary\":0,\"monthTop\":0,\"params\":{},\"promotionBonus\":0,\"promotionCharge\":0,\"promotionPour\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 16:33:12\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":2,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"3\",\"iconParentStyle\":\"1\",\"iconStyle\":\"10\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 16:33:12\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 16:33:12', 18); -INSERT INTO `sys_oper_log` VALUES (475, 'vip等级批量修改', 2, 'com.ff.member.controller.MemberVipController.batchEdit()', 'PUT', 1, 'admin', '研发部门', '/member/vip/batchEdit', '192.168.1.34', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:09:58\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":5,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":0,\"iconColor\":\"1\",\"iconParentStyle\":\"1\",\"iconStyle\":\"0\",\"id\":1,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":0,\"monthSalary\":0,\"monthTop\":0,\"params\":{},\"promotionBonus\":0,\"promotionCharge\":0,\"promotionPour\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 16:33:24\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":2,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"3\",\"iconParentStyle\":\"1\",\"iconStyle\":\"10\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 16:33:24\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 16:33:24', 13); -INSERT INTO `sys_oper_log` VALUES (476, 'vip等级', 2, 'com.ff.member.controller.MemberVipController.edit()', 'PUT', 1, 'admin', '研发部门', '/member/vip', '192.168.1.34', '内网IP', '{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:09:58\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":5,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":0,\"iconColor\":\"6\",\"iconParentStyle\":\"1\",\"iconStyle\":\"5\",\"id\":1,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":0,\"monthSalary\":0,\"monthTop\":0,\"params\":{},\"promotionBonus\":0,\"promotionCharge\":0,\"promotionPour\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 16:56:52\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 16:56:52', 6); -INSERT INTO `sys_oper_log` VALUES (477, 'vip等级批量修改', 2, 'com.ff.member.controller.MemberVipController.batchEdit()', 'PUT', 1, 'admin', '研发部门', '/member/vip/batchEdit', '192.168.1.34', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:09:58\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":5,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":0,\"iconColor\":\"6\",\"iconParentStyle\":\"1\",\"iconStyle\":\"5\",\"id\":1,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":0,\"monthSalary\":0,\"monthTop\":0,\"params\":{},\"promotionBonus\":0,\"promotionCharge\":0,\"promotionPour\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 17:14:38\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":2,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"3\",\"iconParentStyle\":\"1\",\"iconStyle\":\"10\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 17:14:38\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 17:14:38', 30); -INSERT INTO `sys_oper_log` VALUES (478, 'vip等级批量修改', 2, 'com.ff.member.controller.MemberVipController.batchEdit()', 'PUT', 1, 'admin', '研发部门', '/member/vip/batchEdit', '192.168.1.34', '内网IP', '[{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:09:58\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":5,\"dayDrawTop\":0,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":0,\"iconColor\":\"6\",\"iconParentStyle\":\"1\",\"iconStyle\":\"5\",\"id\":1,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":0,\"monthSalary\":0,\"monthTop\":0,\"params\":{},\"promotionBonus\":0,\"promotionCharge\":0,\"promotionPour\":0,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 17:14:46\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0},{\"createBy\":\"admin\",\"createTime\":\"2024-10-16 14:24:37\",\"currencyType\":\"VND\",\"dayCharge\":0,\"dayDrawCountTop\":6,\"dayDrawTop\":2,\"dayPour\":0,\"daySalary\":0,\"dayServiceFeeFreeCount\":5,\"dayTop\":0,\"grade\":1,\"iconColor\":\"3\",\"iconParentStyle\":\"1\",\"iconStyle\":\"10\",\"id\":2,\"memberCount\":0,\"memberUpdateTime\":\"2024-10-19 16:30:00\",\"monthCharge\":0,\"monthPour\":3000,\"monthSalary\":6,\"monthTop\":0,\"params\":{},\"promotionBonus\":1800,\"promotionCharge\":0,\"promotionPour\":60000,\"updateBy\":\"admin\",\"updateTime\":\"2024-10-19 17:14:46\",\"weekCharge\":0,\"weekPour\":0,\"weekSalary\":0,\"weekTop\":0}]', '{\"msg\":\"操作成功\",\"code\":200}', 0, NULL, '2024-10-19 17:14:46', 15); - --- ---------------------------- --- Table structure for sys_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_post`; -CREATE TABLE `sys_post` ( - `post_id` bigint NOT NULL AUTO_INCREMENT COMMENT '岗位ID', - `post_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '岗位编码', - `post_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '岗位名称', - `post_sort` int NOT NULL COMMENT '显示顺序', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '状态(0正常 1停用)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`post_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '岗位信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_post --- ---------------------------- -INSERT INTO `sys_post` VALUES (1, 'ceo', '董事长', 1, '0', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_post` VALUES (2, 'se', '项目经理', 2, '0', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_post` VALUES (3, 'hr', '人力资源', 3, '0', 'admin', '2024-10-09 15:44:01', '', NULL, ''); -INSERT INTO `sys_post` VALUES (4, 'user', '普通员工', 4, '0', 'admin', '2024-10-09 15:44:01', '', NULL, ''); - --- ---------------------------- --- Table structure for sys_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_role`; -CREATE TABLE `sys_role` ( - `role_id` bigint NOT NULL AUTO_INCREMENT COMMENT '角色ID', - `role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色名称', - `role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色权限字符串', - `role_sort` int NOT NULL COMMENT '显示顺序', - `data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '1' COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', - `menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示', - `dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`role_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role --- ---------------------------- -INSERT INTO `sys_role` VALUES (1, '超级管理员', 'admin', 1, '1', 1, 1, '0', '0', 'admin', '2024-10-09 15:44:01', '', NULL, '超级管理员'); -INSERT INTO `sys_role` VALUES (2, '普通角色', 'common', 2, '2', 1, 1, '0', '0', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-11 13:43:54', '普通角色'); - --- ---------------------------- --- Table structure for sys_role_dept --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_dept`; -CREATE TABLE `sys_role_dept` ( - `role_id` bigint NOT NULL COMMENT '角色ID', - `dept_id` bigint NOT NULL COMMENT '部门ID', - PRIMARY KEY (`role_id`, `dept_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色和部门关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_dept --- ---------------------------- -INSERT INTO `sys_role_dept` VALUES (2, 100); -INSERT INTO `sys_role_dept` VALUES (2, 101); -INSERT INTO `sys_role_dept` VALUES (2, 105); - --- ---------------------------- --- Table structure for sys_role_menu --- ---------------------------- -DROP TABLE IF EXISTS `sys_role_menu`; -CREATE TABLE `sys_role_menu` ( - `role_id` bigint NOT NULL COMMENT '角色ID', - `menu_id` bigint NOT NULL COMMENT '菜单ID', - PRIMARY KEY (`role_id`, `menu_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_role_menu --- ---------------------------- -INSERT INTO `sys_role_menu` VALUES (2, 1); -INSERT INTO `sys_role_menu` VALUES (2, 2); -INSERT INTO `sys_role_menu` VALUES (2, 100); -INSERT INTO `sys_role_menu` VALUES (2, 101); -INSERT INTO `sys_role_menu` VALUES (2, 102); -INSERT INTO `sys_role_menu` VALUES (2, 103); -INSERT INTO `sys_role_menu` VALUES (2, 104); -INSERT INTO `sys_role_menu` VALUES (2, 105); -INSERT INTO `sys_role_menu` VALUES (2, 106); -INSERT INTO `sys_role_menu` VALUES (2, 108); -INSERT INTO `sys_role_menu` VALUES (2, 109); -INSERT INTO `sys_role_menu` VALUES (2, 110); -INSERT INTO `sys_role_menu` VALUES (2, 111); -INSERT INTO `sys_role_menu` VALUES (2, 112); -INSERT INTO `sys_role_menu` VALUES (2, 113); -INSERT INTO `sys_role_menu` VALUES (2, 114); -INSERT INTO `sys_role_menu` VALUES (2, 500); -INSERT INTO `sys_role_menu` VALUES (2, 501); -INSERT INTO `sys_role_menu` VALUES (2, 1000); -INSERT INTO `sys_role_menu` VALUES (2, 1001); -INSERT INTO `sys_role_menu` VALUES (2, 1002); -INSERT INTO `sys_role_menu` VALUES (2, 1003); -INSERT INTO `sys_role_menu` VALUES (2, 1004); -INSERT INTO `sys_role_menu` VALUES (2, 1005); -INSERT INTO `sys_role_menu` VALUES (2, 1006); -INSERT INTO `sys_role_menu` VALUES (2, 1007); -INSERT INTO `sys_role_menu` VALUES (2, 1008); -INSERT INTO `sys_role_menu` VALUES (2, 1009); -INSERT INTO `sys_role_menu` VALUES (2, 1010); -INSERT INTO `sys_role_menu` VALUES (2, 1011); -INSERT INTO `sys_role_menu` VALUES (2, 1012); -INSERT INTO `sys_role_menu` VALUES (2, 1013); -INSERT INTO `sys_role_menu` VALUES (2, 1014); -INSERT INTO `sys_role_menu` VALUES (2, 1015); -INSERT INTO `sys_role_menu` VALUES (2, 1016); -INSERT INTO `sys_role_menu` VALUES (2, 1017); -INSERT INTO `sys_role_menu` VALUES (2, 1018); -INSERT INTO `sys_role_menu` VALUES (2, 1019); -INSERT INTO `sys_role_menu` VALUES (2, 1020); -INSERT INTO `sys_role_menu` VALUES (2, 1021); -INSERT INTO `sys_role_menu` VALUES (2, 1022); -INSERT INTO `sys_role_menu` VALUES (2, 1023); -INSERT INTO `sys_role_menu` VALUES (2, 1024); -INSERT INTO `sys_role_menu` VALUES (2, 1025); -INSERT INTO `sys_role_menu` VALUES (2, 1026); -INSERT INTO `sys_role_menu` VALUES (2, 1027); -INSERT INTO `sys_role_menu` VALUES (2, 1028); -INSERT INTO `sys_role_menu` VALUES (2, 1029); -INSERT INTO `sys_role_menu` VALUES (2, 1030); -INSERT INTO `sys_role_menu` VALUES (2, 1031); -INSERT INTO `sys_role_menu` VALUES (2, 1032); -INSERT INTO `sys_role_menu` VALUES (2, 1033); -INSERT INTO `sys_role_menu` VALUES (2, 1034); -INSERT INTO `sys_role_menu` VALUES (2, 1039); -INSERT INTO `sys_role_menu` VALUES (2, 1040); -INSERT INTO `sys_role_menu` VALUES (2, 1041); -INSERT INTO `sys_role_menu` VALUES (2, 1042); -INSERT INTO `sys_role_menu` VALUES (2, 1043); -INSERT INTO `sys_role_menu` VALUES (2, 1044); -INSERT INTO `sys_role_menu` VALUES (2, 1045); -INSERT INTO `sys_role_menu` VALUES (2, 1046); -INSERT INTO `sys_role_menu` VALUES (2, 1047); -INSERT INTO `sys_role_menu` VALUES (2, 1048); -INSERT INTO `sys_role_menu` VALUES (2, 1049); -INSERT INTO `sys_role_menu` VALUES (2, 1050); -INSERT INTO `sys_role_menu` VALUES (2, 1051); -INSERT INTO `sys_role_menu` VALUES (2, 1052); -INSERT INTO `sys_role_menu` VALUES (2, 1053); -INSERT INTO `sys_role_menu` VALUES (2, 1054); - --- ---------------------------- --- Table structure for sys_user --- ---------------------------- -DROP TABLE IF EXISTS `sys_user`; -CREATE TABLE `sys_user` ( - `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', - `dept_id` bigint NULL DEFAULT NULL COMMENT '部门ID', - `user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户账号', - `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户昵称', - `user_type` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '00' COMMENT '用户类型(00系统用户)', - `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '用户邮箱', - `phonenumber` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '手机号码', - `sex` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', - `avatar` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '头像地址', - `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '密码', - `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)', - `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', - `login_ip` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '最后登录IP', - `login_date` datetime NULL DEFAULT NULL COMMENT '最后登录时间', - `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', - `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - PRIMARY KEY (`user_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 100 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user --- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 103, 'admin', 'FF', '00', 'ry@163.com', '15888888888', '1', '', 'e016bdb8d3b8893dd05bf6124b2acf2a', '0', '0', '192.168.1.34', '2024-10-21 10:03:21', 'admin', '2024-10-09 15:44:01', '', '2024-10-21 10:03:21', '管理员'); -INSERT INTO `sys_user` VALUES (2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', 'e016bdb8d3b8893dd05bf6124b2acf2a', '0', '0', '127.0.0.1', '2024-10-09 15:44:01', 'admin', '2024-10-09 15:44:01', 'admin', '2024-10-14 10:22:46', '测试员'); - --- ---------------------------- --- Table structure for sys_user_post --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_post`; -CREATE TABLE `sys_user_post` ( - `user_id` bigint NOT NULL COMMENT '用户ID', - `post_id` bigint NOT NULL COMMENT '岗位ID', - PRIMARY KEY (`user_id`, `post_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户与岗位关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_post --- ---------------------------- -INSERT INTO `sys_user_post` VALUES (1, 1); -INSERT INTO `sys_user_post` VALUES (2, 2); - --- ---------------------------- --- Table structure for sys_user_role --- ---------------------------- -DROP TABLE IF EXISTS `sys_user_role`; -CREATE TABLE `sys_user_role` ( - `user_id` bigint NOT NULL COMMENT '用户ID', - `role_id` bigint NOT NULL COMMENT '角色ID', - PRIMARY KEY (`user_id`, `role_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_user_role --- ---------------------------- -INSERT INTO `sys_user_role` VALUES (1, 1); -INSERT INTO `sys_user_role` VALUES (2, 2); - -SET FOREIGN_KEY_CHECKS = 1;