diff --git a/ff-admin/src/main/java/com/ff/api/controller/ApiAgentController.java b/ff-admin/src/main/java/com/ff/api/controller/ApiAgentController.java index 6889fb6..93abc61 100644 --- a/ff-admin/src/main/java/com/ff/api/controller/ApiAgentController.java +++ b/ff-admin/src/main/java/com/ff/api/controller/ApiAgentController.java @@ -3,9 +3,14 @@ package com.ff.api.controller; import com.ff.annotation.CheckHeader; import com.ff.api.response.TenantInfoResponse; +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.QuotaType; +import com.ff.base.system.service.ISysDeptService; +import com.ff.base.system.service.ISysRoleService; +import com.ff.base.utils.SecurityUtils; +import com.ff.base.utils.StringUtils; import com.ff.base.utils.bean.BeanUtils; import com.ff.common.domain.TenantGameQuota; import com.ff.common.domain.TenantSecretKey; @@ -13,6 +18,7 @@ import com.ff.common.service.ITenantGameQuotaService; import com.ff.common.service.ITenantSecretKeyService; import com.ff.config.KeyConfig; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -34,16 +40,39 @@ public class ApiAgentController extends BaseController { @Resource private ITenantSecretKeyService tenantSecretKeyService; - @Resource - private KeyConfig keyConfig; + + @Resource + private ISysRoleService roleService; + + @Resource + private ISysDeptService deptService; + +// // /** // * 信息 // * // * @return {@link AjaxResult } // */ // @PostMapping("/create/tenant") -// public AjaxResult info(TenantSecretKey tenantSecretKey) { +// public AjaxResult createTenant(TenantSecretKey tenantSecretKey) { +// roleService.selectRoleList(tenantSecretKey) +// 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)); +// // tenantSecretKey.setAgentId(getUserId()); // tenantSecretKeyService.insertTenantSecretKey(tenantSecretKey); // return AjaxResult.success(tenantInfoResponse); diff --git a/ff-admin/src/main/java/com/ff/api/controller/ApiGameController.java b/ff-admin/src/main/java/com/ff/api/controller/ApiGameController.java index 117df18..1292148 100644 --- a/ff-admin/src/main/java/com/ff/api/controller/ApiGameController.java +++ b/ff-admin/src/main/java/com/ff/api/controller/ApiGameController.java @@ -203,6 +203,7 @@ public class ApiGameController extends BaseController { ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder() .agentId(gameSecretKey.getCode()) .agentKey(gameSecretKey.getKey()) + .orderId(gameExchangeBalanceRequest.getOrderId()) .account(member.getGameAccount()) .tenantKey(tenantSecretKey.getTenantKey()) .quota(quota) @@ -459,6 +460,7 @@ public class ApiGameController extends BaseController { ExchangeTransferMoneyRequestDTO exchangeTransferMoneyRequestDTO = ExchangeTransferMoneyRequestDTO.builder() .agentId(gameSecretKey.getCode()) .agentKey(gameSecretKey.getKey()) + .orderId(gameExchangeBalanceAllRequest.getOrderId()) .amount(BigDecimal.ONE) .tenantKey(tenantSecretKey.getTenantKey()) .account(member.getGameAccount()) diff --git a/ff-admin/src/main/java/com/ff/api/request/AgentCreateTenant.java b/ff-admin/src/main/java/com/ff/api/request/AgentCreateTenant.java index 7463fcf..8a8ffe6 100644 --- a/ff-admin/src/main/java/com/ff/api/request/AgentCreateTenant.java +++ b/ff-admin/src/main/java/com/ff/api/request/AgentCreateTenant.java @@ -1,9 +1,11 @@ package com.ff.api.request; +import com.ff.base.annotation.Excel; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; /** * 代理创建租户 @@ -16,4 +18,29 @@ public class AgentCreateTenant implements Serializable { private static final long serialVersionUID = -5561068216486978354L; + /** + * 账户 + */ + private String account; + /** + * 密码 + */ + private String password; + /** + * 确认密码 + */ + private String confirmPassword; + + /** 额度类型 TenantQuotaType 枚举 */ + private Integer quotaType; + + /** 买分比例 */ + @Excel(name = "买分比例") + private BigDecimal scoreRatio; + + /** 租户类型 TenantType 枚举 */ + private Integer tenantType; + + /** 透支比例 */ + private BigDecimal depositRatio; } diff --git a/ff-admin/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java index 6392be7..2d22ed6 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameCancelFreeSpinRequest.java @@ -1,6 +1,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Max; import javax.validation.constraints.Min; @@ -21,18 +22,21 @@ public class GameCancelFreeSpinRequest implements Serializable { * 货币代码 */ @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-admin/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java index 8fb6354..c8ccaed 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameCreateFreeSpinRequest.java @@ -5,6 +5,8 @@ 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; @@ -26,18 +28,21 @@ public class GameCreateFreeSpinRequest implements Serializable { * 玩家账号 (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; /** @@ -53,6 +58,7 @@ public class GameCreateFreeSpinRequest implements Serializable { * */ @NotNull(message = "freeSpinValidity不能为空") + @Min(value = 1, message = "freeSpinValidity最小值为1") private Long freeSpinValidity; /** diff --git a/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java index 408d24e..5616718 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceAllRequest.java @@ -29,7 +29,11 @@ public class GameExchangeBalanceAllRequest implements Serializable { private String account; - + /** + * 订单id + */ + @NotBlank(message = "orderId不能为空") + private String orderId; /** 币种编码 */ diff --git a/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java index f27711a..77b0c0e 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameExchangeBalanceRequest.java @@ -27,23 +27,33 @@ public class GameExchangeBalanceRequest implements Serializable { * 账户 */ @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 = 0, message = "amount最小值为0") + @Max(value = 999999999, message = "amount最大值为999999999") private BigDecimal amount; /** 币种编码 */ @NotBlank(message = "currencyCode不能为空") + @Length(max = 32, message = "currencyCode长度不能超过32个字符") private String currencyCode; /** diff --git a/ff-admin/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java index d00f95b..d86a2b3 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameGetBetRecordRequest.java @@ -2,6 +2,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Max; import javax.validation.constraints.Min; @@ -25,12 +26,14 @@ public class GameGetBetRecordRequest implements Serializable { * 货币代码 */ @NotBlank(message = "currencyCode不能为空") + @Length(max = 32, message = "currencyCode长度不能超过32个字符") private String currencyCode; /** * 平台代码 */ @NotBlank(message = "platformCode不能为空") + @Length(max = 64, message = "platformCode长度不能超过64个字符") private String platformCode; /** diff --git a/ff-admin/src/main/java/com/ff/api/request/GameGetDetailRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameGetDetailRequest.java index 1f6ba5d..7034369 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameGetDetailRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameGetDetailRequest.java @@ -26,12 +26,14 @@ public class GameGetDetailRequest implements Serializable { * 平台代码 */ @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-admin/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java index 8556df0..8497bd8 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameGetFreeSpinDashflowRequest.java @@ -3,6 +3,7 @@ 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; @@ -24,12 +25,14 @@ public class GameGetFreeSpinDashflowRequest implements Serializable { * 货币代码 */ @NotBlank(message = "currencyCode不能为空") + @Length(max = 32, message = "currencyCode长度不能超过32个字符") private String currencyCode; /** * 平台代码 */ @NotBlank(message = "platformCode不能为空") + @Length(max = 64, message = "platformCode长度不能超过64个字符") private String platformCode; diff --git a/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java index 00575d0..7a2b68d 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberAllRequest.java @@ -1,6 +1,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -20,12 +21,14 @@ public class GameKickMemeberAllRequest implements Serializable { * 玩家游戏平台 */ @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-admin/src/main/java/com/ff/api/request/GameKickMemeberRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberRequest.java index 0e950ac..791dd50 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameKickMemeberRequest.java @@ -26,18 +26,21 @@ public class GameKickMemeberRequest implements Serializable { * 玩家账号 */ @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-admin/src/main/java/com/ff/api/request/GameLoginRequest.java b/ff-admin/src/main/java/com/ff/api/request/GameLoginRequest.java index 0837ab1..cc85df7 100644 --- a/ff-admin/src/main/java/com/ff/api/request/GameLoginRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/GameLoginRequest.java @@ -1,6 +1,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -22,18 +23,21 @@ public class GameLoginRequest implements Serializable { * 货币代码 */ @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; /** diff --git a/ff-admin/src/main/java/com/ff/api/request/MemberCreateApiRequest.java b/ff-admin/src/main/java/com/ff/api/request/MemberCreateApiRequest.java index 768e55d..ea2a2c5 100644 --- a/ff-admin/src/main/java/com/ff/api/request/MemberCreateApiRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/MemberCreateApiRequest.java @@ -2,6 +2,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -19,14 +20,17 @@ 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; } diff --git a/ff-admin/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java b/ff-admin/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java index fb5ef8e..4347009 100644 --- a/ff-admin/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/MemberInfoAllApiRequest.java @@ -2,6 +2,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -21,6 +22,7 @@ public class MemberInfoAllApiRequest implements Serializable{ * 账户 */ @NotBlank(message = "account不能为空") + @Length(max = 64, message = "account长度不能超过64个字符") private String account; /** diff --git a/ff-admin/src/main/java/com/ff/api/request/MemberInfoApiRequest.java b/ff-admin/src/main/java/com/ff/api/request/MemberInfoApiRequest.java index 2200a88..962420c 100644 --- a/ff-admin/src/main/java/com/ff/api/request/MemberInfoApiRequest.java +++ b/ff-admin/src/main/java/com/ff/api/request/MemberInfoApiRequest.java @@ -2,6 +2,7 @@ package com.ff.api.request; import lombok.Data; +import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -19,14 +20,17 @@ 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-admin/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java b/ff-admin/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java new file mode 100644 index 0000000..662b270 --- /dev/null +++ b/ff-admin/src/main/java/com/ff/common/controller/TenantQuotaExchangeController.java @@ -0,0 +1,104 @@ +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-admin/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java b/ff-admin/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java index e50a5fd..1a7c1e2 100644 --- a/ff-admin/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java +++ b/ff-admin/src/main/java/com/ff/common/domain/TenantGameQuotaFlow.java @@ -37,6 +37,17 @@ public class TenantGameQuotaFlow extends BaseEntity @Excel(name = "用户账号id") private Long memberId; + + /** 平台 */ + @Excel(name = "平台") + private String platformCode; + + /** 币种代码 */ + @Excel(name = "币种代码") + private String currencyCode; + + + /** 充值类型 false 扣除 true 充值 */ @Excel(name = "充值类型 false 扣除 true 充值") private Boolean isOut; @@ -53,6 +64,15 @@ public class TenantGameQuotaFlow extends BaseEntity @Excel(name = "游戏额度") private BigDecimal balance; + /** 兑换比例 */ + @Excel(name = "兑换比例") + private BigDecimal exchangeRatio; + + /** 兑换金额 */ + @Excel(name = "兑换金额") + private BigDecimal exchangeMoney; + + /** 游戏额度之后 */ @Excel(name = "游戏额度之后") private BigDecimal balanceAfter; diff --git a/ff-admin/src/main/java/com/ff/common/domain/TenantQuotaExchange.java b/ff-admin/src/main/java/com/ff/common/domain/TenantQuotaExchange.java new file mode 100644 index 0000000..078c76a --- /dev/null +++ b/ff-admin/src/main/java/com/ff/common/domain/TenantQuotaExchange.java @@ -0,0 +1,53 @@ +package com.ff.common.domain; + +import java.math.BigDecimal; +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; + +/** + * 币种汇率对象 ff_tenant_quota_exchange + * + * @author shi + * @date 2025-02-21 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TenantQuotaExchange extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键id */ + private Long id; + + /** 币种编码 */ + @Excel(name = "币种编码") + private String currencyCode; + + /** 兑换币种编码 */ + @Excel(name = "兑换币种编码") + private String exchangeCurrencyCode; + + /** 市场兑换金额 */ + @Excel(name = "市场兑换金额") + private BigDecimal exchangeRate; + + /** 汇率差 1百分比 2 固定值 */ + @Excel(name = "汇率差 1百分比 2 固定值") + private Integer differenceType; + + /** 汇率差值 */ + @Excel(name = "汇率差值") + private BigDecimal differenceValue; + + /** 实际兑换金额 */ + @Excel(name = "实际兑换金额") + private BigDecimal actualBalance; + + +} diff --git a/ff-admin/src/main/java/com/ff/common/dto/BalanceChangesDTO.java b/ff-admin/src/main/java/com/ff/common/dto/BalanceChangesDTO.java index 0f79a07..6f136f4 100644 --- a/ff-admin/src/main/java/com/ff/common/dto/BalanceChangesDTO.java +++ b/ff-admin/src/main/java/com/ff/common/dto/BalanceChangesDTO.java @@ -48,4 +48,9 @@ public class BalanceChangesDTO implements Serializable { /** 操作类型 OperationType枚举 */ private Integer operationType; + + /** + * 汇率 传值计算 + */ + private BigDecimal actualBalance; } diff --git a/ff-admin/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java b/ff-admin/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java index 945c066..f2a3a28 100644 --- a/ff-admin/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java +++ b/ff-admin/src/main/java/com/ff/common/mapper/TenantGameQuotaFlowMapper.java @@ -67,5 +67,5 @@ public interface TenantGameQuotaFlowMapper * @param tenantGameQuotaFlow 租户游戏配额流 * @return {@link BigDecimal } */ - BigDecimal getBalanceByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); + BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); } diff --git a/ff-admin/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java b/ff-admin/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java new file mode 100644 index 0000000..a2f373e --- /dev/null +++ b/ff-admin/src/main/java/com/ff/common/mapper/TenantQuotaExchangeMapper.java @@ -0,0 +1,72 @@ +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-admin/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java b/ff-admin/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java index 3f0eb11..b4aa7d6 100644 --- a/ff-admin/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java +++ b/ff-admin/src/main/java/com/ff/common/service/ITenantGameQuotaFlowService.java @@ -66,5 +66,5 @@ public interface ITenantGameQuotaFlowService * @param tenantGameQuotaFlow 租户游戏配额流 * @return {@link BigDecimal } */ - BigDecimal getBalanceByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); + BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow); } diff --git a/ff-admin/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java b/ff-admin/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java new file mode 100644 index 0000000..38e70b5 --- /dev/null +++ b/ff-admin/src/main/java/com/ff/common/service/ITenantQuotaExchangeService.java @@ -0,0 +1,72 @@ +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-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java b/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java index de12c51..46032b4 100644 --- a/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java +++ b/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaFlowServiceImpl.java @@ -102,7 +102,7 @@ public class TenantGameQuotaFlowServiceImpl implements ITenantGameQuotaFlowServi * @return {@link BigDecimal } */ @Override - public BigDecimal getBalanceByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow) { - return tenantGameQuotaFlowMapper.getBalanceByMemberId(tenantGameQuotaFlow); + public BigDecimal getExchangeMoneyByMemberId(TenantGameQuotaFlow tenantGameQuotaFlow) { + return tenantGameQuotaFlowMapper.getExchangeMoneyByMemberId(tenantGameQuotaFlow); } } diff --git a/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java b/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java index 4920385..7f9f85a 100644 --- a/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java +++ b/ff-admin/src/main/java/com/ff/common/service/impl/TenantGameQuotaServiceImpl.java @@ -1,6 +1,7 @@ package com.ff.common.service.impl; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; import java.util.Map; @@ -13,10 +14,12 @@ import com.ff.base.utils.NumberUtils; import com.ff.base.utils.QuotaUtils; import com.ff.base.utils.StringUtils; import com.ff.common.domain.TenantGameQuotaFlow; +import com.ff.common.domain.TenantQuotaExchange; import com.ff.common.domain.TenantSecretKey; import com.ff.common.dto.BalanceChangesDTO; import com.ff.common.dto.GameBalanceExchange; import com.ff.common.service.ITenantGameQuotaFlowService; +import com.ff.common.service.ITenantQuotaExchangeService; import com.ff.common.service.ITenantSecretKeyService; import com.ff.game.api.IGamesService; import com.ff.game.api.request.MemberInfoRequestDTO; @@ -65,6 +68,11 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { @Autowired private Map gamesService; + + @Resource + private ITenantQuotaExchangeService tenantQuotaExchangeService; + + /** * 查询租户游戏配额 * @@ -77,7 +85,6 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { } - /** * 查询租户游戏配额列表 * @@ -147,10 +154,15 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { 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 = tenantGameQuota.getBalance(); + BigDecimal balanceAfter; //判断是充值还是扣除 if (balanceChangesDTO.getIsOut()) { balanceAfter = NumberUtil.add(balanceBefore, balance); @@ -159,8 +171,8 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { } //判断剩余额度是否大于0 TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(balanceChangesDTO.getTenantKey()); - if (TenantType.DEPOSIT.getCode().equals(tenantSecretKey.getTenantType())) { - TenantGameQuota depositQuota = tenantGameQuotaMapper.selectTenantGameQuotaByTenantKey(balanceChangesDTO.getTenantKey(), QuotaUtils.getReputationQuota(balanceChangesDTO.getQuotaType())); + 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 { @@ -184,6 +196,8 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { .tenantKey(balanceChangesDTO.getTenantKey()) .isOut(balanceChangesDTO.getIsOut()) .balanceAfter(balanceAfter) + .exchangeRatio(balanceChangesDTO.getActualBalance()) + .exchangeMoney(balanceChangesDTO.getBalance()) .memberId(balanceChangesDTO.getMemberId()) .balance(balance) .balanceBefore(balanceBefore) @@ -209,6 +223,10 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { // 检查平台密钥是否存在,否则抛出异常 ApiException.notNull(gameSecretKey, ErrorCode.CURRENCY_NOT_EXIST.getCode()); + TenantQuotaExchange tenantQuotaExchange = tenantQuotaExchangeService.getTenantQuotaExchange(Constants.USDT, gameBalanceExchange.getCurrencyCode()); + ApiException.notNull(tenantQuotaExchange, ErrorCode.CURRENCY_EXCHANGE.getCode()); + + // 获取租户信息 TenantSecretKey tenantSecretKey = tenantSecretKeyService.selectTenantSecretKeyByTenantKey(gameBalanceExchange.getTenantKey()); // 获取用户信息 @@ -242,13 +260,13 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { balanceRequestAmount = iGamesService.getMemberInfo(gamesBaseRequestDTO).getBalance(); // 计算累计转入和转出金额 - BigDecimal balanceInto = tenantGameQuotaFlowService.getBalanceByMemberId(TenantGameQuotaFlow.builder() + BigDecimal balanceInto = tenantGameQuotaFlowService.getExchangeMoneyByMemberId(TenantGameQuotaFlow.builder() .isOut(Boolean.TRUE) .quotaType(quotaType) .tenantKey(gameBalanceExchange.getTenantKey()) .memberId(member.getId()) .build()); - BigDecimal balanceOut = tenantGameQuotaFlowService.getBalanceByMemberId(TenantGameQuotaFlow.builder() + BigDecimal balanceOut = tenantGameQuotaFlowService.getExchangeMoneyByMemberId(TenantGameQuotaFlow.builder() .isOut(Boolean.FALSE) .quotaType(quotaType) .tenantKey(gameBalanceExchange.getTenantKey()) @@ -280,6 +298,7 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { // 进行租户余额调整 this.balanceChanges(BalanceChangesDTO.builder() .isOut(isOut) + .actualBalance(tenantQuotaExchange.getActualBalance()) .tenantKey(gameBalanceExchange.getTenantKey()) .balance(balanceRequestAmount) .memberId(member.getId()) @@ -325,6 +344,7 @@ public class TenantGameQuotaServiceImpl implements ITenantGameQuotaService { if (balanceRequestAmount.compareTo(BigDecimal.ZERO) > 0) { this.balanceChanges(BalanceChangesDTO.builder() .isOut(Boolean.FALSE) + .actualBalance(tenantQuotaExchange.getActualBalance()) .tenantKey(tenantSecretKey.getTenantKey()) .balance(balanceRequestAmount) .memberId(member.getId()) diff --git a/ff-admin/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java b/ff-admin/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java new file mode 100644 index 0000000..ddc8126 --- /dev/null +++ b/ff-admin/src/main/java/com/ff/common/service/impl/TenantQuotaExchangeServiceImpl.java @@ -0,0 +1,108 @@ +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.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.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-admin/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java b/ff-admin/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java index 1bb1cbb..e8368a6 100644 --- a/ff-admin/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java +++ b/ff-admin/src/main/java/com/ff/game/api/jili/service/impl/GamesJILIServiceImpl.java @@ -298,12 +298,19 @@ public class GamesJILIServiceImpl implements IGamesService { Member member = memberService.selectMemberByGameAccount(exchangeTransferMoneyRequestDTO.getAccount()); String transactionId = GamePlatforms.JILI.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()) diff --git a/ff-admin/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java b/ff-admin/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java index 3142f4d..b9b1dfa 100644 --- a/ff-admin/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java +++ b/ff-admin/src/main/java/com/ff/game/api/request/ExchangeTransferMoneyRequestDTO.java @@ -32,7 +32,10 @@ public class ExchangeTransferMoneyRequestDTO extends GamesBaseRequestDTO { */ private String tenantKey; - + /** + * 订单id + */ + private String orderId; /** * 金额 */ diff --git a/ff-admin/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java b/ff-admin/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java index d374529..e9a74f0 100644 --- a/ff-admin/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java +++ b/ff-admin/src/main/java/com/ff/game/api/xk/service/impl/GamesXKServiceImpl.java @@ -308,10 +308,19 @@ public class GamesXKServiceImpl implements IGamesService { String systemByCode = gameSecretKeyService.findSystemByCode(exchangeTransferMoneyRequestDTO.getAgentId(), GamePlatforms.XK.getInfo()); 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()) diff --git a/ff-admin/src/main/java/com/ff/game/domain/GameExchangeMoney.java b/ff-admin/src/main/java/com/ff/game/domain/GameExchangeMoney.java index c7d60d2..a3a20f8 100644 --- a/ff-admin/src/main/java/com/ff/game/domain/GameExchangeMoney.java +++ b/ff-admin/src/main/java/com/ff/game/domain/GameExchangeMoney.java @@ -37,6 +37,11 @@ public class GameExchangeMoney extends BaseEntity @Excel(name = "第三方交易id") private String transactionId; + /** + * 订单id + */ + private String orderId; + /** 会员id */ @Excel(name = "会员id") private Long memberId; diff --git a/ff-admin/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml b/ff-admin/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml index 20f306d..546f89e 100644 --- a/ff-admin/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml +++ b/ff-admin/src/main/resources/mapper/common/TenantGameQuotaFlowMapper.xml @@ -3,16 +3,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + + + + @@ -22,23 +26,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, tenant_key, quota_type, member_id, is_out, operation_type, balance_before, balance, balance_after, remark, create_by, create_time, update_by, update_time from ff_tenant_game_quota_flow + select 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 - + - select ifnull(sum(balance),0) from ff_tenant_game_quota_flow + + + + + and currency_code = #{currencyCode} + and exchange_currency_code = #{exchangeCurrencyCode} + and exchange_rate = #{exchangeRate} + and difference_type = #{differenceType} + and difference_value = #{differenceValue} + and actual_balance = #{actualBalance} + + + + + + + insert into ff_tenant_quota_exchange + + currency_code, + exchange_currency_code, + exchange_rate, + difference_type, + difference_value, + actual_balance, + create_by, + create_time, + update_by, + update_time, + + + #{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-admin/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml b/ff-admin/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml index 5c2d9b2..c841553 100644 --- a/ff-admin/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml +++ b/ff-admin/src/main/resources/mapper/game/GameExchangeMoneyMapper.xml @@ -7,6 +7,7 @@ + @@ -26,13 +27,14 @@ - select id, tenant_key, 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 from ff_game_exchange_money + 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 from ff_game_exchange_money