diff --git a/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java b/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java index 1b0589e..013c73c 100644 --- a/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java +++ b/ff-base/src/main/java/com/ff/base/constant/CacheConstants.java @@ -92,6 +92,8 @@ public class CacheConstants { */ public static final String MeiTian_GAMES = "meitian_games:"; + + public static final String Platform = "platform:"; } diff --git a/ff-base/src/main/java/com/ff/base/enums/GamePlatforms.java b/ff-base/src/main/java/com/ff/base/enums/GamePlatforms.java index e7eefcf..19a1227 100644 --- a/ff-base/src/main/java/com/ff/base/enums/GamePlatforms.java +++ b/ff-base/src/main/java/com/ff/base/enums/GamePlatforms.java @@ -11,23 +11,21 @@ public enum GamePlatforms { FC("FC", "FC"), SA("SA", "SA"), DG("DG", "DG"), - MeiTian("MeiTian","美天棋牌"), + MT("MT", "美天棋牌"), AE("AE", "AE"), ; private final String code; private final String info; - GamePlatforms(String code, String info) - { + GamePlatforms(String code, String info) { this.code = code; this.info = info; } - public static List getCodes() - { - List result=new ArrayList<>(); + public static List getCodes() { + List result = new ArrayList<>(); GamePlatforms[] values = GamePlatforms.values(); for (GamePlatforms value : values) { result.add(value.getCode()); @@ -35,13 +33,11 @@ public enum GamePlatforms { return result; } - public String getCode() - { + public String getCode() { return code; } - public String getInfo() - { + public String getInfo() { return info; } diff --git a/ff-base/src/main/java/com/ff/base/enums/PlatformType.java b/ff-base/src/main/java/com/ff/base/enums/PlatformType.java index 272c646..06385cf 100644 --- a/ff-base/src/main/java/com/ff/base/enums/PlatformType.java +++ b/ff-base/src/main/java/com/ff/base/enums/PlatformType.java @@ -21,7 +21,8 @@ public enum PlatformType { VIDEO(6, "视讯"), LOTTERY(7, "彩票"), SPORTS(8, "体育"), - HUNTING(9, "捕猎"); + HUNTING(9, "捕猎"), + BaiRen(10, "百人场"); private final int code; private final String name; diff --git a/ff-base/src/main/java/com/ff/base/handler/JsonHandler.java b/ff-base/src/main/java/com/ff/base/handler/JsonHandler.java new file mode 100644 index 0000000..df3da7b --- /dev/null +++ b/ff-base/src/main/java/com/ff/base/handler/JsonHandler.java @@ -0,0 +1,59 @@ +package com.ff.base.handler; + +import com.alibaba.fastjson2.JSON; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * mybatis json字段转换 + * + * @author cengy + */ +public class JsonHandler extends BaseTypeHandler { + private final Class type; + + + public JsonHandler(Class type) { + if (type == null) { + throw new IllegalArgumentException("Type argument cannot be null"); + } + this.type = type; + } + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, JSON.toJSONString(parameter)); + } + + @Override + public T getNullableResult(ResultSet rs, String columnName) throws SQLException { + String json = rs.getString(columnName); + if (json != null) { + return JSON.parseObject(json, type); + } + return null; + } + + @Override + public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String json = rs.getString(columnIndex); + if (json != null) { + return JSON.parseObject(json, type); + } + return null; + } + + @Override + public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String json = cs.getString(columnIndex); + if (json != null) { + return JSON.parseObject(json, type); + } + return null; + } +} diff --git a/ff-base/src/main/java/com/ff/base/handler/JsonListHandler.java b/ff-base/src/main/java/com/ff/base/handler/JsonListHandler.java new file mode 100644 index 0000000..da2d651 --- /dev/null +++ b/ff-base/src/main/java/com/ff/base/handler/JsonListHandler.java @@ -0,0 +1,64 @@ +package com.ff.base.handler; + +import com.alibaba.fastjson2.JSON; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +/** + * mybatis json字段转换 + * + * @author cengy + */ +public class JsonListHandler extends BaseTypeHandler> { + private final Class type; + + public JsonListHandler(Class type) { + if (type == null) { + throw new IllegalArgumentException("Type argument cannot be null"); + } + this.type = type; + } + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + // Convert the List to JSON string + String json = JSON.toJSONString(parameter); + ps.setString(i, json); + + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + + String json = rs.getString(columnName); + if (json == null) { + return null; + } + return JSON.parseArray(json, type); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String json = rs.getString(columnIndex); + if (json == null) { + return null; + } + return JSON.parseArray(json, type); + + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String json = cs.getString(columnIndex); + if (json == null) { + return null; + } + return JSON.parseArray(json, type); + } +} diff --git a/ff-base/src/main/java/com/ff/base/utils/sign/Md5Utils.java b/ff-base/src/main/java/com/ff/base/utils/sign/Md5Utils.java index 4fa3b0e..aeb5378 100644 --- a/ff-base/src/main/java/com/ff/base/utils/sign/Md5Utils.java +++ b/ff-base/src/main/java/com/ff/base/utils/sign/Md5Utils.java @@ -4,7 +4,6 @@ import com.ff.base.constant.Constants; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sun.misc.BASE64Encoder; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; @@ -15,27 +14,23 @@ import java.security.NoSuchAlgorithmException; * * @author ff */ -public class Md5Utils -{ +public class Md5Utils { private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); - private static byte[] md5(String s) - { + private static byte[] md5(String s) { MessageDigest algorithm; - try - { + try { algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(s.getBytes("UTF-8")); byte[] messageDigest = algorithm.digest(); return messageDigest; - } - catch (Exception e) - { + } catch (Exception e) { log.error("MD5 Error...", e); } return null; } + public static String md5New(String input) { try { MessageDigest md = MessageDigest.getInstance("MD5"); @@ -63,30 +58,24 @@ public class Md5Utils return null; } String result = ""; - try{ + try { MessageDigest md5 = MessageDigest.getInstance("MD5"); - BASE64Encoder base64en = new BASE64Encoder(); - result = base64en.encode(md5.digest(str.getBytes(StandardCharsets.UTF_8))); - }catch (Exception e){ - log.error("encoderByMd5...{0}", str, e); + result = Base64.encode(md5.digest(str.getBytes(StandardCharsets.UTF_8))); + } catch (Exception e) { + log.error("encoderByMd5...{}", str, e); } - return result; } - private static final String toHex(byte hash[]) - { - if (hash == null) - { + private static final String toHex(byte hash[]) { + if (hash == null) { return null; } StringBuffer buf = new StringBuffer(hash.length * 2); int i; - for (i = 0; i < hash.length; i++) - { - if ((hash[i] & 0xff) < 0x10) - { + for (i = 0; i < hash.length; i++) { + if ((hash[i] & 0xff) < 0x10) { buf.append("0"); } buf.append(Long.toString(hash[i] & 0xff, 16)); @@ -94,15 +83,11 @@ public class Md5Utils return buf.toString(); } - public static String hash(String s) - { - try - { - return new String(toHex(md5(Constants.PASS_PREFIX +s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); - } - catch (Exception e) - { - log.error("not supported charset...{}", e); + public static String hash(String s) { + try { + return new String(toHex(md5(Constants.PASS_PREFIX + s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } catch (Exception e) { + log.error("not supported charset...", e); return s; } } diff --git a/ff-game/pom.xml b/ff-game/pom.xml index 5d435ed..0751207 100644 --- a/ff-game/pom.xml +++ b/ff-game/pom.xml @@ -16,7 +16,6 @@ - org.springframework.boot diff --git a/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java b/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java index 0b0d82b..a1964ef 100644 --- a/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java +++ b/ff-game/src/main/java/com/ff/config/ContentRefreshedEventListener.java @@ -5,6 +5,7 @@ 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; @@ -34,6 +35,9 @@ public class ContentRefreshedEventListener implements ApplicationListener implements Serializable { +} diff --git a/ff-game/src/main/java/com/ff/game/domain/KeyInfo.java b/ff-game/src/main/java/com/ff/game/domain/KeyInfo.java new file mode 100644 index 0000000..2b671a4 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/KeyInfo.java @@ -0,0 +1,21 @@ +package com.ff.game.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 其它字段按需加 + * + * @author cengy + */ +@Data +public class KeyInfo implements Serializable { + + private String code; + private String key; + private String currency; + private String password; + private String providerCode; + +} diff --git a/ff-game/src/main/java/com/ff/game/domain/LangInfo.java b/ff-game/src/main/java/com/ff/game/domain/LangInfo.java new file mode 100644 index 0000000..3ef380d --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/LangInfo.java @@ -0,0 +1,14 @@ +package com.ff.game.domain; + +import java.io.Serializable; +import java.util.HashMap; + +/** + * @author cengy + */ +public class LangInfo extends HashMap implements Serializable { + + public String get(String lang) { + return super.get(lang); + } +} diff --git a/ff-game/src/main/java/com/ff/game/domain/Platform.java b/ff-game/src/main/java/com/ff/game/domain/Platform.java new file mode 100644 index 0000000..9d818b7 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/Platform.java @@ -0,0 +1,38 @@ +package com.ff.game.domain; + +import com.ff.base.core.domain.BaseEntity; +import lombok.Data; + +import java.util.List; + +/** + * @author cengy + */ +@Data +public class Platform extends BaseEntity { + + /** + * 排序 + */ + private Integer sortNo; + /** + * 平台code + */ + private String platformCode; + /** + * 平台名称 + */ + private String platformName; + + /** + * 状态:true:启用 false:停用 + */ + private Boolean stopStatus; + + private List platformInfo; + private List keyInfo; + private LangInfo langInfo; + private CurrencyInfo currencyInfo; + private UrlInfo urlInfo; + +} diff --git a/ff-game/src/main/java/com/ff/game/domain/PlatformInfo.java b/ff-game/src/main/java/com/ff/game/domain/PlatformInfo.java new file mode 100644 index 0000000..b236435 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/PlatformInfo.java @@ -0,0 +1,15 @@ +package com.ff.game.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author cengy + */ +@Data +public class PlatformInfo implements Serializable { + private String code; + private String name; + private int type; +} diff --git a/ff-game/src/main/java/com/ff/game/domain/UrlInfo.java b/ff-game/src/main/java/com/ff/game/domain/UrlInfo.java new file mode 100644 index 0000000..c8f3f96 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/domain/UrlInfo.java @@ -0,0 +1,16 @@ +package com.ff.game.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author cengy + */ +@Data +public class UrlInfo implements Serializable { + + private String url; + private String loginUrl; + private String hallCode; +} 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 new file mode 100644 index 0000000..c6664b1 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/mapper/PlatformMapper.java @@ -0,0 +1,24 @@ +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/IPlatformService.java b/ff-game/src/main/java/com/ff/game/service/IPlatformService.java new file mode 100644 index 0000000..2a8b704 --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/IPlatformService.java @@ -0,0 +1,27 @@ +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/PlatformServiceImpl.java b/ff-game/src/main/java/com/ff/game/service/impl/PlatformServiceImpl.java new file mode 100644 index 0000000..6dd8f6b --- /dev/null +++ b/ff-game/src/main/java/com/ff/game/service/impl/PlatformServiceImpl.java @@ -0,0 +1,79 @@ +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/sports/api/fb/address/FbAddress.java b/ff-game/src/main/java/com/ff/sports/api/fb/address/FbAddress.java new file mode 100644 index 0000000..62ba9ec --- /dev/null +++ b/ff-game/src/main/java/com/ff/sports/api/fb/address/FbAddress.java @@ -0,0 +1,29 @@ +package com.ff.sports.api.fb.address; + +import com.dtflys.forest.callback.AddressSource; +import com.dtflys.forest.http.ForestAddress; +import com.dtflys.forest.http.ForestRequest; +import com.ff.base.system.service.ISysConfigService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +/** + * @author shi + * @date 2025/02/10 + */ +@Component +public class FbAddress implements AddressSource { + + public static final String API_BASE_URL = "fb.api.base.url"; + @Resource + private ISysConfigService configService; + + + @Override + public ForestAddress getAddress(ForestRequest request) { + String apiBaseUrl = configService.selectConfigByKey(API_BASE_URL); + return new ForestAddress("https", apiBaseUrl, 443, "services"); + } +} \ No newline at end of file diff --git a/ff-game/src/main/java/com/ff/sports/fb/A.java b/ff-game/src/main/java/com/ff/sports/fb/A.java new file mode 100644 index 0000000..badc18a --- /dev/null +++ b/ff-game/src/main/java/com/ff/sports/fb/A.java @@ -0,0 +1,7 @@ +package com.ff.sports.fb; + +/** + * @author cengy + */ +public class A { +} diff --git a/ff-game/src/main/resources/mapper/game/PlatformMapper.xml b/ff-game/src/main/resources/mapper/game/PlatformMapper.xml new file mode 100644 index 0000000..25282eb --- /dev/null +++ b/ff-game/src/main/resources/mapper/game/PlatformMapper.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + 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, + 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}, + 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