diff --git a/rc-scheduling/pom.xml b/rc-scheduling/pom.xml
index d414f286..86115c63 100644
--- a/rc-scheduling/pom.xml
+++ b/rc-scheduling/pom.xml
@@ -38,14 +38,20 @@
spring-boot-starter-jdbc
-
- mysql
- mysql-connector-java
- ${mysql-connector-java.version}
-
-
-
- org.yaml
+
+ mysql
+ mysql-connector-java
+ ${mysql-connector-java.version}
+
+
+
+ p6spy
+ p6spy
+ ${p6spy.version}
+
+
+
+ org.yaml
snakeyaml
${snakeyaml.version}
@@ -113,10 +119,11 @@
true
- 3.0.4
- 2.2
- 8.0.33
-
+ 3.0.4
+ 2.2
+ 8.0.33
+ 3.8.5
+
rc-dependencies
diff --git a/rc-scheduling/src/main/resources/application-local.yml b/rc-scheduling/src/main/resources/application-local.yml
index 3212ed01..b2816ff9 100644
--- a/rc-scheduling/src/main/resources/application-local.yml
+++ b/rc-scheduling/src/main/resources/application-local.yml
@@ -23,5 +23,5 @@ feign:
elasticjob:
reg-center:
- server-lists: 127.0.0.1:2181
+ server-lists: zookeeper:2181
namespace: rc-scheduling-local
diff --git a/rc-scheduling/src/main/resources/bootstrap.yml b/rc-scheduling/src/main/resources/bootstrap.yml
index c372d743..b309e8b0 100644
--- a/rc-scheduling/src/main/resources/bootstrap.yml
+++ b/rc-scheduling/src/main/resources/bootstrap.yml
@@ -27,6 +27,10 @@ spring:
config:
import:
- optional:nacos:application.@register.file-extension@
+ - optional:nacos:rds-config.@register.file-extension@?group=@config.group.common@
+ - optional:nacos:redis-config.@register.file-extension@?group=@config.group.common@
+ - optional:nacos:external.@register.file-extension@?refresh=true&group=@config.group.common@
+ - optional:nacos:rocketmq.@register.file-extension@?group=@config.group.common@
- optional:nacos:framework-config.@register.file-extension@?refresh=true&group=@config.group.common@
logging:
diff --git a/rc-service-game/game-fruit/src/main/resources/bootstrap.yml b/rc-service-game/game-fruit/src/main/resources/bootstrap.yml
index 9e2dc041..15149b55 100644
--- a/rc-service-game/game-fruit/src/main/resources/bootstrap.yml
+++ b/rc-service-game/game-fruit/src/main/resources/bootstrap.yml
@@ -25,12 +25,14 @@ spring:
cache:
ttl: 5s
- config:
- import:
- - optional:nacos:application.@register.file-extension@?refresh=true&group=@artifactId@
- - optional:nacos:application-${spring-profile.active}.@register.file-extension@?refresh=true&group=@artifactId@
- - optional:nacos:${spring.application.name}-${spring-profile.active}.@register.file-extension@?refresh=true&group=@artifactId@
- - optional:nacos:rocketmq.@register.file-extension@?group=@config.group.common@
+ config:
+ import:
+ - optional:nacos:application.@register.file-extension@?refresh=true&group=@artifactId@
+ - optional:nacos:application-${spring-profile.active}.@register.file-extension@?refresh=true&group=@artifactId@
+ - optional:nacos:${spring.application.name}-${spring-profile.active}.@register.file-extension@?refresh=true&group=@artifactId@
+ - optional:nacos:rds-config.@register.file-extension@?group=@config.group.common@
+ - optional:nacos:redis-config.@register.file-extension@?group=@config.group.common@
+ - optional:nacos:rocketmq.@register.file-extension@?group=@config.group.common@
# - optional:nacos:external.@register.file-extension@?refresh=true&group=@config.group.common@
- optional:nacos:framework-config.@register.file-extension@?refresh=true&group=@config.group.common@
diff --git a/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/material/gift/api/GiftConfigClientApi.java b/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/material/gift/api/GiftConfigClientApi.java
index 04c3d1c3..e1e0a62b 100644
--- a/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/material/gift/api/GiftConfigClientApi.java
+++ b/rc-service/rc-inner-api/other-inner/other-inner-api/src/main/java/com/red/circle/other/inner/endpoint/material/gift/api/GiftConfigClientApi.java
@@ -89,16 +89,23 @@ public interface GiftConfigClientApi {
@PostMapping("/saveGift")
ResultResponse saveGift(@RequestBody GiftConfigDTO giftConfig);
- /**
- * 上下架礼物.
- */
- @GetMapping("/switchDelStatus")
- ResultResponse switchDelStatus(@RequestParam("id") Long id,
- @RequestParam("status") Boolean status);
-
- /**
- * 礼物列表.
- */
+ /**
+ * 上下架礼物.
+ */
+ @GetMapping("/switchDelStatus")
+ ResultResponse switchDelStatus(@RequestParam("id") Long id,
+ @RequestParam("status") Boolean status);
+
+ /**
+ * 批量追加当前平台所有礼物区域.
+ */
+ @PostMapping("/addAllGiftRegion")
+ ResultResponse addAllGiftRegion(@RequestParam("sysOrigin") String sysOrigin,
+ @RequestParam("regionId") String regionId);
+
+ /**
+ * 礼物列表.
+ */
@GetMapping("/listByTab")
ResultResponse> listByTab(@RequestParam("sysOrigin") String sysOrigin,
@RequestParam("giftTab") String giftTab);
diff --git a/rc-service/rc-service-console/console-adapter/src/main/java/com/red/circle/console/adapter/app/sys/SysGiftConfigRestController.java b/rc-service/rc-service-console/console-adapter/src/main/java/com/red/circle/console/adapter/app/sys/SysGiftConfigRestController.java
index 85417d38..98172f32 100644
--- a/rc-service/rc-service-console/console-adapter/src/main/java/com/red/circle/console/adapter/app/sys/SysGiftConfigRestController.java
+++ b/rc-service/rc-service-console/console-adapter/src/main/java/com/red/circle/console/adapter/app/sys/SysGiftConfigRestController.java
@@ -1,8 +1,9 @@
package com.red.circle.console.adapter.app.sys;
-import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
-import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
+import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftRegionAddCmd;
import com.red.circle.console.app.service.app.sys.SysGiftConfigService;
import com.red.circle.console.infra.annotations.OpsOperationReqLog;
import com.red.circle.framework.dto.PageResult;
@@ -57,17 +58,35 @@ public class SysGiftConfigRestController extends BaseController {
sysGiftConfigService.updateGift(param);
}
- @OpsOperationReqLog(value = "新增礼物信息")
- @PostMapping
- public void addGift(@RequestBody SysGiftConfigCO param) {
- param.setCreateUser(getReqUserId());
- param.setDel(Boolean.TRUE);
- sysGiftConfigService.addGift(param);
- }
-
- /**
- * 上下架礼物.
- */
+ @OpsOperationReqLog(value = "新增礼物信息")
+ @PostMapping
+ public void addGift(@RequestBody SysGiftConfigCO param) {
+ param.setCreateUser(getReqUserId());
+ param.setDel(Boolean.TRUE);
+ sysGiftConfigService.addGift(param);
+ }
+
+ /**
+ * 批量追加当前平台所有礼物区域.
+ */
+ @OpsOperationReqLog(value = "批量追加礼物区域")
+ @PostMapping("/regions/add-all")
+ public void addAllGiftRegion(@RequestBody GiftRegionAddCmd param) {
+ sysGiftConfigService.addAllGiftRegion(param);
+ }
+
+ /**
+ * 兼容旧前端入口,实际逻辑仍然是追加区域.
+ */
+ @OpsOperationReqLog(value = "批量追加礼物区域")
+ @PostMapping("/regions/transfer-all")
+ public void addAllGiftRegionCompatible(@RequestBody GiftRegionAddCmd param) {
+ sysGiftConfigService.addAllGiftRegion(param);
+ }
+
+ /**
+ * 上下架礼物.
+ */
@GetMapping("/switch/{id}/{status}")
public void deleteGift(@PathVariable("id") Long id,
@PathVariable("status") Boolean status) {
diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigServiceImpl.java
index 6622373a..94f0cd8a 100644
--- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigServiceImpl.java
+++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigServiceImpl.java
@@ -3,9 +3,10 @@ package com.red.circle.console.app.service.app.sys;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.red.circle.common.business.core.ImageSizeConst;
-import com.red.circle.console.app.convertor.sys.GiftAppConvertor;
-import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
-import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
+import com.red.circle.console.app.convertor.sys.GiftAppConvertor;
+import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftRegionAddCmd;
import com.red.circle.console.infra.enums.sys.SysGiftTypeEnum;
import com.red.circle.console.inner.error.ConsoleErrorCode;
import com.red.circle.external.inner.endpoint.oss.OssServiceClient;
@@ -155,15 +156,31 @@ public class SysGiftConfigServiceImpl implements SysGiftConfigService {
}
@Override
- public List listByTabV2(GiftConsoleQryCmd query) {
- return ResponseAssert.requiredSuccess(
- giftConfigClient.listByTabV2(giftAppConvertor.toGiftQryCmd(query)));
- }
-
- @Override
- public List listByExpiredTime(Timestamp now) {
- return giftAppConvertor.toSysGiftConfigCOList(ResponseAssert.requiredSuccess(giftConfigClient.listByExpiredTime(now)));
- }
+ public List listByTabV2(GiftConsoleQryCmd query) {
+ return ResponseAssert.requiredSuccess(
+ giftConfigClient.listByTabV2(giftAppConvertor.toGiftQryCmd(query)));
+ }
+
+ @Override
+ public void addAllGiftRegion(GiftRegionAddCmd param) {
+ ResponseAssert.notNull(GiftErrorCode.BAD_REQUEST, param);
+ ResponseAssert.isTrue(GiftErrorCode.BAD_REQUEST, StringUtils.isNotBlank(param.getSysOrigin()));
+ ResponseAssert.isTrue(GiftErrorCode.BAD_REQUEST, StringUtils.isNotBlank(param.getRegionId()));
+
+ Map mapRegion = ResponseAssert.requiredSuccess(
+ regionConfigClient.mapRegionNameBySysOrigin(param.getSysOrigin()));
+ ResponseAssert.isTrue(GiftErrorCode.BAD_REQUEST, mapRegion.containsKey(param.getRegionId()));
+
+ ResponseAssert.isTrue(CommonErrorCode.UPDATE_FAILURE,
+ ResponseAssert.requiredSuccess(giftConfigClient.addAllGiftRegion(
+ param.getSysOrigin(), param.getRegionId())));
+ giftConfigClient.removeGiftCache();
+ }
+
+ @Override
+ public List listByExpiredTime(Timestamp now) {
+ return giftAppConvertor.toSysGiftConfigCOList(ResponseAssert.requiredSuccess(giftConfigClient.listByExpiredTime(now)));
+ }
private Function getGiftConfigVOFunction(
Map mapRegion, Map userMap) {
diff --git a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/cmd/app/sys/GiftRegionAddCmd.java b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/cmd/app/sys/GiftRegionAddCmd.java
new file mode 100644
index 00000000..792623a8
--- /dev/null
+++ b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/dto/cmd/app/sys/GiftRegionAddCmd.java
@@ -0,0 +1,27 @@
+package com.red.circle.console.app.dto.cmd.app.sys;
+
+import java.io.Serial;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 礼物区域批量追加参数.
+ */
+@Data
+@Accessors(chain = true)
+public class GiftRegionAddCmd implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 归属系统.
+ */
+ private String sysOrigin;
+
+ /**
+ * 要追加的区域ID.
+ */
+ private String regionId;
+}
diff --git a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigService.java b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigService.java
index a3d3d6b1..c2fd5a5b 100644
--- a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigService.java
+++ b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/app/sys/SysGiftConfigService.java
@@ -1,7 +1,8 @@
package com.red.circle.console.app.service.app.sys;
-import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
-import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
+import com.red.circle.console.app.dto.clienobject.sys.SysGiftConfigCO;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftRegionAddCmd;
+import com.red.circle.console.app.dto.cmd.app.sys.GiftConsoleQryCmd;
import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.inner.model.dto.material.GiftConfigDTO;
import java.sql.Timestamp;
@@ -54,10 +55,15 @@ public interface SysGiftConfigService {
*/
void pushPairCpGiveGiftId(Long giftId, String sysOrigin);
- /**
- * 礼物列表.
- */
- List listByTabV2(GiftConsoleQryCmd query);
-
- List listByExpiredTime(Timestamp now);
-}
+ /**
+ * 礼物列表.
+ */
+ List listByTabV2(GiftConsoleQryCmd query);
+
+ /**
+ * 批量追加当前平台所有礼物区域.
+ */
+ void addAllGiftRegion(GiftRegionAddCmd param);
+
+ List listByExpiredTime(Timestamp now);
+}
diff --git a/rc-service/rc-service-external/external-inner-endpoint/src/main/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImpl.java b/rc-service/rc-service-external/external-inner-endpoint/src/main/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImpl.java
index dea56b3d..52f1e825 100644
--- a/rc-service/rc-service-external/external-inner-endpoint/src/main/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImpl.java
+++ b/rc-service/rc-service-external/external-inner-endpoint/src/main/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImpl.java
@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service;
public class ImGroupClientServiceImpl implements ImGroupClientService {
private static final Integer GROUP_ALREADY_EXISTS_ERROR_CODE = 10025;
+ private static final Integer GROUP_ALREADY_USED_ERROR_CODE = 10021;
private final RcMessageProperties rcMessageProperties;
private final ImGroupMemberService imGroupMemberService;
@@ -179,8 +180,9 @@ public class ImGroupClientServiceImpl implements ImGroupClientService {
if (Objects.equals(errorCode, 0)) {
return true;
}
- if (Objects.equals(errorCode, GROUP_ALREADY_EXISTS_ERROR_CODE)) {
- log.warn("createAVChatRoomGroup duplicate groupId={}, treat as success", cmd.getGroupId());
+ if (isGroupAlreadyExists(errorCode, response)) {
+ log.warn("createAVChatRoomGroup duplicate groupId={}, errorCode={}, treat as success",
+ cmd.getGroupId(), errorCode);
return true;
}
@@ -212,6 +214,36 @@ public class ImGroupClientServiceImpl implements ImGroupClientService {
}
}
+ boolean isGroupAlreadyExists(Integer errorCode, String res) {
+ if (Objects.equals(errorCode, GROUP_ALREADY_EXISTS_ERROR_CODE)
+ || Objects.equals(errorCode, GROUP_ALREADY_USED_ERROR_CODE)) {
+ return true;
+ }
+
+ String errorInfo = parseErrorInfo(res);
+ if (StringUtils.isBlank(errorInfo)) {
+ return false;
+ }
+
+ String normalizedErrorInfo = errorInfo.toLowerCase();
+ return normalizedErrorInfo.contains("group id in use")
+ || normalizedErrorInfo.contains("group id has been used");
+ }
+
+ String parseErrorInfo(String res) {
+ try {
+ JsonObject jsonObject = JsonParser.parseString(res).getAsJsonObject();
+ if (Objects.isNull(jsonObject) || !jsonObject.has("ErrorInfo")
+ || jsonObject.get("ErrorInfo").isJsonNull()) {
+ return null;
+ }
+ return jsonObject.get("ErrorInfo").getAsString();
+ } catch (Exception ex) {
+ log.warn("parseErrorInfo fail res={}", res, ex);
+ return null;
+ }
+ }
+
boolean recoverRoomGroup(String groupId) {
String normalizedGroupId = Objects.isNull(groupId) ? null : groupId.trim();
if (!isRecoverableRoomGroupId(normalizedGroupId)) {
diff --git a/rc-service/rc-service-external/external-inner-endpoint/src/test/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImplTest.java b/rc-service/rc-service-external/external-inner-endpoint/src/test/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImplTest.java
index 227d2cc7..0bb68b53 100644
--- a/rc-service/rc-service-external/external-inner-endpoint/src/test/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImplTest.java
+++ b/rc-service/rc-service-external/external-inner-endpoint/src/test/java/com/red/circle/external/inner/service/message/impl/ImGroupClientServiceImplTest.java
@@ -94,6 +94,56 @@ class ImGroupClientServiceImplTest {
assertTrue(created);
}
+ @Test
+ void createAvChatRoomGroupShouldTreatUsedGroupAsSuccess() {
+ ImGroupManagerService imGroupManagerService = mock(ImGroupManagerService.class);
+ @SuppressWarnings("unchecked")
+ RcHttpClient.ResponseMono responseMono = mock(RcHttpClient.ResponseMono.class);
+ when(imGroupManagerService.createGroup(any())).thenReturn(responseMono);
+ when(responseMono.block())
+ .thenReturn("{\"ErrorCode\":10021,\"ErrorInfo\":\"group id has been used!\"}");
+
+ ImGroupClientServiceImpl service = new ImGroupClientServiceImpl(
+ mock(RcMessageProperties.class),
+ mock(ImGroupMemberService.class),
+ mock(ImGroupMessageService.class),
+ imGroupManagerService,
+ mock(RoomManagerClient.class)
+ );
+
+ boolean created = service.createAVChatRoomGroup(new CreateGroupCmd()
+ .setOwnerAccount("2048587544039321602")
+ .setGroupId("1001859")
+ .setName("10025"));
+
+ assertTrue(created);
+ }
+
+ @Test
+ void createAvChatRoomGroupShouldTreatDuplicateErrorInfoAsSuccess() {
+ ImGroupManagerService imGroupManagerService = mock(ImGroupManagerService.class);
+ @SuppressWarnings("unchecked")
+ RcHttpClient.ResponseMono responseMono = mock(RcHttpClient.ResponseMono.class);
+ when(imGroupManagerService.createGroup(any())).thenReturn(responseMono);
+ when(responseMono.block())
+ .thenReturn("{\"ErrorCode\":99999,\"ErrorInfo\":\"group id has been used!\"}");
+
+ ImGroupClientServiceImpl service = new ImGroupClientServiceImpl(
+ mock(RcMessageProperties.class),
+ mock(ImGroupMemberService.class),
+ mock(ImGroupMessageService.class),
+ imGroupManagerService,
+ mock(RoomManagerClient.class)
+ );
+
+ boolean created = service.createAVChatRoomGroup(new CreateGroupCmd()
+ .setOwnerAccount("2048587544039321602")
+ .setGroupId("1001859")
+ .setName("10025"));
+
+ assertTrue(created);
+ }
+
private static final class TestableImGroupClientServiceImpl extends ImGroupClientServiceImpl {
private boolean createResult;
diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/GiftConfigService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/GiftConfigService.java
index c7a41421..b0935ecf 100644
--- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/GiftConfigService.java
+++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/GiftConfigService.java
@@ -117,14 +117,19 @@ public interface GiftConfigService extends BaseService {
*/
Boolean updateGift(GiftConfig giftConfigDTO);
- /**
- * 上下架礼物.
- */
- Boolean switchDelStatus(Long id, Boolean status);
-
- /**
- * 礼物列表.
- */
+ /**
+ * 上下架礼物.
+ */
+ Boolean switchDelStatus(Long id, Boolean status);
+
+ /**
+ * 批量追加当前平台所有礼物区域.
+ */
+ Boolean addAllGiftRegion(String sysOrigin, String regionId);
+
+ /**
+ * 礼物列表.
+ */
List listByTab(String sysOrigin, String giftTab);
/**
diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/impl/GiftConfigServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/impl/GiftConfigServiceImpl.java
index efde03d0..432c6d9a 100644
--- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/impl/GiftConfigServiceImpl.java
+++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/gift/impl/GiftConfigServiceImpl.java
@@ -15,11 +15,12 @@ import com.red.circle.other.inner.model.cmd.sys.GiftQryCmd;
import com.red.circle.tool.core.collection.CollectionUtils;
import com.red.circle.tool.core.num.NumUtils;
import com.red.circle.tool.core.text.StringUtils;
-import java.sql.Timestamp;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -236,14 +237,55 @@ public class GiftConfigServiceImpl extends BaseServiceImpl listByTab(String sysOrigin, String giftTab) {
+ public Boolean switchDelStatus(Long id, Boolean status) {
+ return update().set(GiftConfig::getDel, status)
+ .eq(GiftConfig::getId, id)
+ .execute();
+ }
+
+ @Override
+ public Boolean addAllGiftRegion(String sysOrigin, String regionId) {
+ if (StringUtils.isBlank(sysOrigin) || StringUtils.isBlank(regionId)) {
+ return Boolean.FALSE;
+ }
+ List giftConfigs = query()
+ .select(GiftConfig::getId, GiftConfig::getRegions)
+ .eq(GiftConfig::getSysOrigin, sysOrigin)
+ .list();
+ if (CollectionUtils.isEmpty(giftConfigs)) {
+ return Boolean.TRUE;
+ }
+
+ List needUpdateGifts = giftConfigs.stream()
+ .map(giftConfig -> buildGiftRegionAppend(giftConfig, regionId))
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ return CollectionUtils.isEmpty(needUpdateGifts) || updateBatchById(needUpdateGifts);
+ }
+
+ private GiftConfig buildGiftRegionAppend(GiftConfig giftConfig, String regionId) {
+ String nextRegions = appendRegion(giftConfig.getRegions(), regionId);
+ if (Objects.equals(nextRegions, giftConfig.getRegions())) {
+ return null;
+ }
+ return new GiftConfig()
+ .setId(giftConfig.getId())
+ .setRegions(nextRegions);
+ }
+
+ private String appendRegion(String regions, String regionId) {
+ if (StringUtils.isBlank(regions)) {
+ return regionId;
+ }
+ LinkedHashSet regionSet = Stream.of(regions.split(","))
+ .map(String::trim)
+ .filter(StringUtils::isNotBlank)
+ .collect(Collectors.toCollection(LinkedHashSet::new));
+ return regionSet.add(regionId) ? String.join(",", regionSet) : regions;
+ }
+
+ @Override
+ public List listByTab(String sysOrigin, String giftTab) {
return Optional.ofNullable(query()
.eq(GiftConfig::getSysOrigin, sysOrigin)
.eq(GiftConfig::getGiftTab, giftTab)
diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/material/gift/GiftConfigClientEndpoint.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/material/gift/GiftConfigClientEndpoint.java
index 5cf838d4..56df65c5 100644
--- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/material/gift/GiftConfigClientEndpoint.java
+++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/endpoint/material/gift/GiftConfigClientEndpoint.java
@@ -84,12 +84,17 @@ public class GiftConfigClientEndpoint implements GiftConfigClientApi {
}
@Override
- public ResultResponse switchDelStatus(Long id, Boolean status) {
- return ResultResponse.success(giftConfigClientService.switchDelStatus(id, status));
- }
-
- @Override
- public ResultResponse> listByTab(String sysOrigin, String giftTab) {
+ public ResultResponse switchDelStatus(Long id, Boolean status) {
+ return ResultResponse.success(giftConfigClientService.switchDelStatus(id, status));
+ }
+
+ @Override
+ public ResultResponse addAllGiftRegion(String sysOrigin, String regionId) {
+ return ResultResponse.success(giftConfigClientService.addAllGiftRegion(sysOrigin, regionId));
+ }
+
+ @Override
+ public ResultResponse> listByTab(String sysOrigin, String giftTab) {
return ResultResponse.success(giftConfigClientService.listByTab(sysOrigin, giftTab));
}
diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/GiftConfigClientService.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/GiftConfigClientService.java
index 8d7e32f5..07bca206 100644
--- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/GiftConfigClientService.java
+++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/GiftConfigClientService.java
@@ -68,14 +68,19 @@ public interface GiftConfigClientService {
*/
Boolean saveGift(GiftConfigDTO giftConfig);
- /**
- * 上下架礼物.
- */
- Boolean switchDelStatus(Long id, Boolean status);
-
- /**
- * 礼物列表.
- */
+ /**
+ * 上下架礼物.
+ */
+ Boolean switchDelStatus(Long id, Boolean status);
+
+ /**
+ * 批量追加当前平台所有礼物区域.
+ */
+ Boolean addAllGiftRegion(String sysOrigin, String regionId);
+
+ /**
+ * 礼物列表.
+ */
List listByTab(String sysOrigin, String giftTab);
/**
diff --git a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/impl/GiftConfigClientServiceImpl.java b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/impl/GiftConfigClientServiceImpl.java
index 44a1d0cd..f2f97d5a 100644
--- a/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/impl/GiftConfigClientServiceImpl.java
+++ b/rc-service/rc-service-other/other-inner-endpoint/src/main/java/com/red/circle/other/app/inner/service/material/gift/impl/GiftConfigClientServiceImpl.java
@@ -86,12 +86,17 @@ public class GiftConfigClientServiceImpl implements GiftConfigClientService {
}
@Override
- public Boolean switchDelStatus(Long id, Boolean status) {
- return giftConfigService.switchDelStatus(id, status);
- }
-
- @Override
- public List listByTab(String sysOrigin, String giftTab) {
+ public Boolean switchDelStatus(Long id, Boolean status) {
+ return giftConfigService.switchDelStatus(id, status);
+ }
+
+ @Override
+ public Boolean addAllGiftRegion(String sysOrigin, String regionId) {
+ return giftConfigService.addAllGiftRegion(sysOrigin, regionId);
+ }
+
+ @Override
+ public List listByTab(String sysOrigin, String giftTab) {
return giftInnerConvertor.toListGiftConfigDTO(giftConfigService.listByTab(sysOrigin, giftTab));
}