diff --git a/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java b/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java index ed77c18..a7b31bc 100644 --- a/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java +++ b/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java @@ -1,6 +1,7 @@ package com.example.demo.controller.coin; import com.example.demo.config.interfac.Log; +import com.example.demo.domain.vo.coin.AreaInfo; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.RechargeActivity; import com.example.demo.domain.vo.coin.Result; @@ -264,6 +265,53 @@ public class RechargeActivityCenterController { } /** + * 根据活动 ID 查询归属地 + * + * @param activity 充值活动请求参数(包含活动 ID) + * @return 查询结果(成功返回归属地信息,失败返回错误信息) + * @throws NullPointerException 当活动 ID 为空时抛出 + * @throws IllegalArgumentException 当活动 ID 无效时抛出 + */ + @Log("查询活动归属地") + @PostMapping("/queryActivityArea") + public Result queryActivityArea(@RequestBody RechargeActivity activity, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + if (activity.getId() == null) { + String errorMsg = languageTranslationUtil.translate("查询失败:活动 ID 不能为空", lang); + return Result.error(errorMsg); + } + + AreaInfo result = rechargeActivityCenterService.queryActivityAreaById(activity.getId()); + + // 如果 area 为 "0",直接返回 + if ("0".equals(result.getArea())) { + return Result.success(result); + } + + // 对返回结果进行多语言转换 + if (result.getArea() != null && !result.getArea().isEmpty()) { + result.setArea(languageTranslationUtil.translate(result.getArea(), lang)); + } + if (result.getAreaName() != null && !result.getAreaName().isEmpty()) { + result.setAreaName(languageTranslationUtil.translate(result.getAreaName(), lang)); + } + + return Result.success(result); + } catch (NullPointerException e) { + log.error("查询活动归属地失败:空指针异常", e); + String errorMsg = languageTranslationUtil.translate("查询失败:数据为空", lang); + return Result.error(errorMsg); + } catch (IllegalArgumentException e) { + log.error("查询活动归属地失败:参数异常", e); + String errorMsg = languageTranslationUtil.translate("查询失败:" + e.getMessage(), lang); + return Result.error(errorMsg); + } + } + + /** * 转换充值活动的多语言字段 */ private void translateRechargeActivities(com.github.pagehelper.PageInfo pageInfo, String lang) { diff --git a/src/main/java/com/example/demo/domain/vo/coin/AreaInfo.java b/src/main/java/com/example/demo/domain/vo/coin/AreaInfo.java new file mode 100644 index 0000000..849dc13 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/coin/AreaInfo.java @@ -0,0 +1,13 @@ +package com.example.demo.domain.vo.coin; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AreaInfo { + private String area; // 归属地 ID + private String areaName; // 归属地名称 +} diff --git a/src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java b/src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java index 9ddd306..54ea90e 100644 --- a/src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java @@ -23,9 +23,13 @@ public interface RechargeActivityCenterMapper { // 根据ID查询活动 List queryActivity(RechargeActivity activity); + // 根据活动名称查询活动 RechargeActivity queryActivityByName(RechargeActivity activity); + // 根据活动 ID 查询活动归属地 + RechargeActivity queryActivityAreaById(@Param("id") Integer id); + // 新增活动 void addActivity(RechargeActivity activity); diff --git a/src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java b/src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java index 5e97a88..3beb7fd 100644 --- a/src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java +++ b/src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java @@ -1,5 +1,6 @@ package com.example.demo.service.coin; +import com.example.demo.domain.vo.coin.AreaInfo; import com.example.demo.domain.vo.coin.RechargeActivity; import com.github.pagehelper.PageInfo; @@ -31,4 +32,7 @@ public interface RechargeActivityCenterService { // 删除活动 void deleteActivity(RechargeActivity activity); + + // 根据活动 ID 查询归属地 + AreaInfo queryActivityAreaById(Integer id); } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java index 51c28e5..6c6f3c5 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java @@ -1,5 +1,6 @@ package com.example.demo.serviceImpl.coin; +import com.example.demo.domain.vo.coin.AreaInfo; import com.example.demo.domain.vo.coin.RechargeActivity; import com.example.demo.mapper.coin.RechargeActivityCenterMapper; import com.example.demo.service.coin.RechargeActivityCenterService; @@ -165,4 +166,20 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter public void deleteActivity(RechargeActivity activity) { rechargeActivityCenterMapper.deleteActivity(activity); } + + // 根据活动 ID 查询归属地 + @Override + public AreaInfo queryActivityAreaById(Integer id) { + RechargeActivity activity = rechargeActivityCenterMapper.queryActivityAreaById(id); + if (activity == null || activity.getArea() == null) { + AreaInfo result = new AreaInfo(); + result.setArea("0"); + result.setAreaName(null); + return result; + } + AreaInfo areaInfo = new AreaInfo(); + areaInfo.setArea(activity.getArea()); + areaInfo.setAreaName(activity.getAreaName()); + return areaInfo; + } } \ No newline at end of file diff --git a/src/main/resources/mapper/RechargeActivityCenterMapper.xml b/src/main/resources/mapper/RechargeActivityCenterMapper.xml index bb05bf7..0d66cdb 100644 --- a/src/main/resources/mapper/RechargeActivityCenterMapper.xml +++ b/src/main/resources/mapper/RechargeActivityCenterMapper.xml @@ -120,7 +120,6 @@ - UPDATE recharge_activity @@ -130,4 +129,14 @@ WHERE id = #{id} + + + \ No newline at end of file