5 Commits

  1. 48
      src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java
  2. 3
      src/main/java/com/example/demo/domain/entity/CashRecord.java
  3. 13
      src/main/java/com/example/demo/domain/vo/coin/AreaInfo.java
  4. 4
      src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java
  5. 1
      src/main/java/com/example/demo/mapper/coin/UserMapper.java
  6. 4
      src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java
  7. 12
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  8. 17
      src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java
  9. 4
      src/main/resources/cashMapper/CashCollectionMapper.xml
  10. 11
      src/main/resources/mapper/RechargeActivityCenterMapper.xml
  11. 6
      src/main/resources/mapper/UserMapper.xml

48
src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java

@ -1,6 +1,7 @@
package com.example.demo.controller.coin; package com.example.demo.controller.coin;
import com.example.demo.config.interfac.Log; 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.Page;
import com.example.demo.domain.vo.coin.RechargeActivity; import com.example.demo.domain.vo.coin.RechargeActivity;
import com.example.demo.domain.vo.coin.Result; 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<RechargeActivity> pageInfo, String lang) { private void translateRechargeActivities(com.github.pagehelper.PageInfo<RechargeActivity> pageInfo, String lang) {

3
src/main/java/com/example/demo/domain/entity/CashRecord.java

@ -83,7 +83,8 @@ public class CashRecord implements Serializable {
private LocalDateTime refundTime; // 退款日期到天 private LocalDateTime refundTime; // 退款日期到天
private String refundRemark; // 退款备注执行人填写 private String refundRemark; // 退款备注执行人填写
private String refundVoucher; // 退款截图 private String refundVoucher; // 退款截图
private Integer performanceMarket; // 业绩地区
private String performanceMarketName; // 业绩地区名称
// 系统字段 // 系统字段
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime createTime; private LocalDateTime createTime;

13
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; // 归属地名称
}

4
src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java

@ -23,9 +23,13 @@ public interface RechargeActivityCenterMapper {
// 根据ID查询活动 // 根据ID查询活动
List<RechargeActivity> queryActivity(RechargeActivity activity); List<RechargeActivity> queryActivity(RechargeActivity activity);
// 根据活动名称查询活动 // 根据活动名称查询活动
RechargeActivity queryActivityByName(RechargeActivity activity); RechargeActivity queryActivityByName(RechargeActivity activity);
// 根据活动 ID 查询活动归属地
RechargeActivity queryActivityAreaById(@Param("id") Integer id);
// 新增活动 // 新增活动
void addActivity(RechargeActivity activity); void addActivity(RechargeActivity activity);

1
src/main/java/com/example/demo/mapper/coin/UserMapper.java

@ -40,6 +40,7 @@ public interface UserMapper {
//查找用户全部信息 //查找用户全部信息
User selectAllUser(String jwcode); User selectAllUser(String jwcode);
User selectUserMarket(String jwcode);
//查找用户的首充日期 //查找用户的首充日期
Date getFirstRecharge(String jwcode); Date getFirstRecharge(String jwcode);

4
src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java

@ -1,5 +1,6 @@
package com.example.demo.service.coin; package com.example.demo.service.coin;
import com.example.demo.domain.vo.coin.AreaInfo;
import com.example.demo.domain.vo.coin.RechargeActivity; import com.example.demo.domain.vo.coin.RechargeActivity;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -31,4 +32,7 @@ public interface RechargeActivityCenterService {
// 删除活动 // 删除活动
void deleteActivity(RechargeActivity activity); void deleteActivity(RechargeActivity activity);
// 根据活动 ID 查询归属地
AreaInfo queryActivityAreaById(Integer id);
} }

12
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -7,6 +7,7 @@ import com.example.demo.domain.DTO.AddFundsDTO;
import com.example.demo.domain.DTO.PerformanceDTO; import com.example.demo.domain.DTO.PerformanceDTO;
import com.example.demo.domain.entity.*; import com.example.demo.domain.entity.*;
import com.example.demo.domain.vo.cash.*; import com.example.demo.domain.vo.cash.*;
import com.example.demo.domain.vo.coin.AreaInfo;
import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Messages; import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.domain.vo.coin.Result; import com.example.demo.domain.vo.coin.Result;
@ -14,6 +15,7 @@ import com.example.demo.mapper.cash.CashCollectionMapper;
import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.MarketMapper;
import com.example.demo.mapper.coin.UserMapper; import com.example.demo.mapper.coin.UserMapper;
import com.example.demo.service.cash.CashCollectionService; import com.example.demo.service.cash.CashCollectionService;
import com.example.demo.service.coin.RechargeActivityCenterService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -55,6 +57,8 @@ public class CashCollectionServiceImpl implements CashCollectionService {
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
private LanguageTranslationUtil languageTranslationUtil; private LanguageTranslationUtil languageTranslationUtil;
@Autowired
private RechargeActivityCenterService rechargeActivityCenterService;
//新增收款订单 //新增收款订单
@Override @Override
@ -105,7 +109,7 @@ public class CashCollectionServiceImpl implements CashCollectionService {
if (cashCollection.getPayTime() == null) { if (cashCollection.getPayTime() == null) {
throw new IllegalArgumentException("付款时间不能为空"); throw new IllegalArgumentException("付款时间不能为空");
} }
AreaInfo areaInfo = rechargeActivityCenterService.queryActivityAreaById(Integer.parseInt(cashCollection.getActivity()));
// 校验钱包 ID 和到账地区的对应关系 // 校验钱包 ID 和到账地区的对应关系
validateWalletAndMarket(cashCollection.getWalletId(), cashCollection.getReceivedMarket()); validateWalletAndMarket(cashCollection.getWalletId(), cashCollection.getReceivedMarket());
@ -135,6 +139,12 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setSubmitterMarket(cashCollection.getSubmitterMarket()); cashRecord.setSubmitterMarket(cashCollection.getSubmitterMarket());
cashRecord.setOrderType(1); //订单类型1-收款 cashRecord.setOrderType(1); //订单类型1-收款
cashRecord.setMarket(cashCollection.getMarket()); cashRecord.setMarket(cashCollection.getMarket());
if(areaInfo.getArea().equals("0")){
cashRecord.setPerformanceMarket(Integer.valueOf(cashCollection.getMarket()));
}else {
cashRecord.setPerformanceMarket(Integer.valueOf(areaInfo.getArea()));
}
//地区根据 jwcode 插入 //地区根据 jwcode 插入
//cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode())); //cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode()));
//插入新收款订单 //插入新收款订单

17
src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java

@ -1,5 +1,6 @@
package com.example.demo.serviceImpl.coin; 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.domain.vo.coin.RechargeActivity;
import com.example.demo.mapper.coin.RechargeActivityCenterMapper; import com.example.demo.mapper.coin.RechargeActivityCenterMapper;
import com.example.demo.service.coin.RechargeActivityCenterService; import com.example.demo.service.coin.RechargeActivityCenterService;
@ -165,4 +166,20 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
public void deleteActivity(RechargeActivity activity) { public void deleteActivity(RechargeActivity activity) {
rechargeActivityCenterMapper.deleteActivity(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;
}
} }

4
src/main/resources/cashMapper/CashCollectionMapper.xml

@ -6,12 +6,12 @@
<insert id="add" parameterType="com.example.demo.domain.entity.CashRecord" <insert id="add" parameterType="com.example.demo.domain.entity.CashRecord"
useGeneratedKeys="true" keyProperty="id"> useGeneratedKeys="true" keyProperty="id">
insert into insert into
cash_record_collection(order_type,jwcode,name,market,activity,
cash_record_collection(order_type,jwcode,name,market,activity,performance_market,
order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold, order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold,
payment_currency,payment_amount,received_market, payment_currency,payment_amount,received_market,
pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time, pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time,
voucher,remark,wallet_id) voucher,remark,wallet_id)
values(#{orderType},#{jwcode},#{name},#{market},#{activity},
values(#{orderType},#{jwcode},#{name},#{market},#{activity},#{performanceMarket},
#{orderCode},#{bankCode},#{goodsName},#{goodNum},#{numUnit},#{permanentGold},#{freeGold},#{paymentCurrency}, #{orderCode},#{bankCode},#{goodsName},#{goodNum},#{numUnit},#{permanentGold},#{freeGold},#{paymentCurrency},
#{paymentAmount},#{receivedMarket},#{payType},#{payTime}, #{paymentAmount},#{receivedMarket},#{payType},#{payTime},
#{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark},#{walletId}) #{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark},#{walletId})

11
src/main/resources/mapper/RechargeActivityCenterMapper.xml

@ -120,7 +120,6 @@
</update> </update>
<!-- 删除活动 --> <!-- 删除活动 -->
<!-- 删除活动 -->
<update id="deleteActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity"> <update id="deleteActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity">
UPDATE recharge_activity UPDATE recharge_activity
<set> <set>
@ -130,4 +129,14 @@
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<!-- 根据活动 ID 查询归属地 -->
<select id="queryActivityAreaById" resultType="com.example.demo.domain.vo.coin.RechargeActivity">
SELECT
ra.area as area,
m.name as areaName
FROM recharge_activity ra
LEFT JOIN market m on m.id = ra.area
WHERE ra.id = #{id} AND ra.flag = 1
</select>
</mapper> </mapper>

6
src/main/resources/mapper/UserMapper.xml

@ -88,6 +88,12 @@
FROM user FROM user
WHERE jwcode = #{jwcode} WHERE jwcode = #{jwcode}
</select> </select>
<select id="selectUserMarket" resultType="com.example.demo.domain.entity.User">
SELECT
market AS "market"
FROM user
WHERE jwcode = #{jwcode}
</select>
<!-- 根据精网号查询金币余额 --> <!-- 根据精网号查询金币余额 -->
<select id="selectGold" resultType="com.example.demo.domain.vo.coin.GoldUser"> <select id="selectGold" resultType="com.example.demo.domain.vo.coin.GoldUser">
SELECT SELECT

Loading…
Cancel
Save