Browse Source

Merge branch 'sunjiabei/feature-20251021102635-银行接口' into milestone-20251104-现金管理二期

huangqizheng/feature-20251104113536-现金管理二期退款修改
sunjiabei 3 weeks ago
parent
commit
e48050ee76
  1. 15
      pom.xml
  2. 28
      src/main/java/com/example/demo/DemoApplicationBank.java
  3. 28
      src/main/java/com/example/demo/bank/Server.java
  4. 46
      src/main/java/com/example/demo/config/AppConfig.java
  5. 44
      src/main/java/com/example/demo/controller/cash/BankController.java
  6. 118
      src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java
  7. 21
      src/main/java/com/example/demo/domain/DTO/BankDTO.java
  8. 30
      src/main/java/com/example/demo/domain/DTO/PaymentDTO.java
  9. 19
      src/main/java/com/example/demo/domain/vo/cash/Bank.java
  10. 58
      src/main/java/com/example/demo/domain/vo/coin/RechargeActivity.java
  11. 33
      src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java
  12. 18
      src/main/java/com/example/demo/service/cash/BankService.java
  13. 30
      src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java
  14. 137
      src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java
  15. 50
      src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java
  16. 74
      src/main/resources/mapper/RechargeActivityCenterMapper.xml

15
pom.xml

@ -166,6 +166,21 @@
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.stripe</groupId>
<artifactId>stripe-java</artifactId>
<version>30.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
<!--配置多环境打包-->

28
src/main/java/com/example/demo/DemoApplicationBank.java

@ -0,0 +1,28 @@
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling // 启用调度功能
@SpringBootApplication
@MapperScan(basePackages = "com.example.demo.mapper.coin", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.pay", sqlSessionTemplateRef = "mysql3SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.cms", sqlSessionTemplateRef = "mysql4SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.live", sqlSessionTemplateRef = "mysql5SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.sqlserver", sqlSessionTemplateRef = "sqlserver1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.cash", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
public class DemoApplicationBank {
public static void main(String[] args) {
System.setProperty("https.protocols", "TLSv1,TLSv1.2,TLSv1.3");
// 设置客户端协议版本
System.setProperty("jdk.tls.client.protocols", "TLSv1,TLSv1.2,TLSv1.3");
SpringApplication.run(DemoApplication.class, args);
}
}

28
src/main/java/com/example/demo/bank/Server.java

@ -0,0 +1,28 @@
package com.example.demo.bank;
import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.*;
import com.stripe.param.*;
public class Server {
public static void main(String[] args) throws StripeException {
// Stripe.apiKey = "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";
// BalanceTransactionListParams params =
// BalanceTransactionListParams.builder().setLimit(3L).build();
// BalanceTransactionCollection balanceTransactions = BalanceTransaction.list(params);
// System.out.println(balanceTransactions);
// BalanceTransaction balanceTransaction =
// BalanceTransaction.retrieve("txn_3SNkDjJHMNYcqBc01q4yHgvq");
// System.out.println(balanceTransaction);
// Charge resource = Charge.retrieve("ch_3MrVHGLkdIwHu7ix1mN3zEiP");
// ChargeCaptureParams params = ChargeCaptureParams.builder().build();
// Charge charge = resource.capture(params);
// System.out.println(charge);
// ChargeListParams params = ChargeListParams.builder().setLimit(1L).build();
// ChargeCollection charges = Charge.list(params);
// System.out.println(charges);
}
}

46
src/main/java/com/example/demo/config/AppConfig.java

@ -2,16 +2,60 @@ package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
@Configuration
public class AppConfig {
@Bean
public RestTemplate restTemplate() {
public RestTemplate restTemplate() throws NoSuchAlgorithmException, KeyManagementException {
RestTemplate restTemplate = new RestTemplate();
// 配置SSL支持
restTemplate.setRequestFactory(createSSLRequestFactory());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
return restTemplate;
}
/**
* 创建支持SSL的HTTP请求工厂
*/
private ClientHttpRequestFactory createSSLRequestFactory() throws NoSuchAlgorithmException, KeyManagementException {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
// 创建主机名验证器信任所有主机
HostnameVerifier allHostsValid = (hostname, session) -> true;
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(30000); // 30秒连接超时
factory.setReadTimeout(60000); // 60秒读取超时
return factory;
}
}

44
src/main/java/com/example/demo/controller/cash/BankController.java

@ -0,0 +1,44 @@
package com.example.demo.controller.cash;
import com.example.demo.config.interfac.Log;
import com.example.demo.domain.DTO.BankDTO;
import com.example.demo.domain.vo.cash.Bank;
import com.example.demo.domain.vo.coin.AuditRequest;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.cash.BankService;
import com.example.demo.service.cash.CashAuditService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @program: gold-java
* @ClassName BankController
* @description:
* @author: Double
* @create: 202510-27 10:50
* @Version 1.0
**/
@RestController
@RequestMapping("/admin/cash/bank")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class BankController {
@Autowired
private BankService bankService;
//payment银行接口
@Log("payment银行接口")
@PostMapping("/payment")
public Result getPayment(@RequestBody Bank bank){
try {
BankDTO bankDTO = bankService.getPayment(bank);
return Result.success(bankDTO);
}catch (Exception e){
return Result.error(e.getMessage());
}}
}

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

@ -0,0 +1,118 @@
package com.example.demo.controller.coin;
import com.example.demo.config.interfac.Log;
import com.example.demo.domain.vo.coin.RechargeActivity;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.RechargeActivityCenterService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName RechargeActivityCenterController
* @description: 充值活动中心管理
* @author: Double
* @create: 202510-28 14:23
* @Version 1.0
**/
@RestController
@RequestMapping("/admin/coin/rechargeActivityCenter")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class RechargeActivityCenterController {
@Autowired
private RechargeActivityCenterService rechargeActivityCenterService;
// 查询活动
@Log("根据ID查询充值活动")
@PostMapping("/selectActivity")
public Result selectActivity(@RequestBody RechargeActivity activity) {
try {
RechargeActivity selectResult = rechargeActivityCenterService.selectActivityById(activity);
if (selectResult == null) {
return Result.error("查询失败:未找到该活动");
}
return Result.success(selectResult);
} catch (NullPointerException e) {
log.error("查询活动失败:空指针异常,ID={}", activity.getId(), e);
return Result.error("查询失败:数据为空");
} catch (IllegalArgumentException e) {
log.error("查询活动失败:参数异常,ID={}", activity.getId(), e);
return Result.error("查询失败:" + e.getMessage());
}
}
//
@Log("新增充值活动")
@PostMapping("/addActivity")
public Result addActivity(@RequestBody RechargeActivity activity) {
try {
if (activity == null) {
return Result.error("添加失败:活动信息不能为空");
}
if (activity.getActivityName() == null || activity.getActivityName().trim().isEmpty()) {
return Result.error("添加失败:活动名称不能为空");
}
rechargeActivityCenterService.addActivity(activity);
return Result.success("添加活动成功");
} catch (NullPointerException e) {
log.error("添加活动失败:空指针异常", e);
return Result.error("添加失败:数据为空");
} catch (IllegalArgumentException e) {
log.error("添加活动失败:参数异常", e);
return Result.error("添加失败:" + e.getMessage());
}
}
// 更新活动
@Log("更新充值活动")
@PostMapping("/updateActivity")
public Result updateActivity(@RequestBody RechargeActivity activity) {
try {
if (activity == null) {
return Result.error("更新失败:活动信息不能为空");
}
if (activity.getId() == null) {
return Result.error("更新失败:活动ID不能为空");
}
if (activity.getActivityName() == null || activity.getActivityName().trim().isEmpty()) {
return Result.error("更新失败:活动名称不能为空");
}
rechargeActivityCenterService.updateActivity(activity);
return Result.success("更新活动成功");
} catch (NullPointerException e) {
log.error("更新活动失败:空指针异常", e);
return Result.error("更新失败:数据为空");
} catch (IllegalArgumentException e) {
log.error("更新活动失败:参数异常", e);
return Result.error("更新失败:" + e.getMessage());
}
}
// 删除活动
@Log("删除充值活动")
@PostMapping("/deleteActivity")
public Result deleteActivity(@RequestParam Integer id) {
try {
if (id == null) {
return Result.error("删除失败:活动ID不能为空");
}
rechargeActivityCenterService.deleteActivity(id);
return Result.success("删除活动成功");
} catch (NullPointerException e) {
log.error("删除活动失败:空指针异常,ID={}", id, e);
return Result.error("删除失败:数据为空");
} catch (IllegalArgumentException e) {
log.error("删除活动失败:参数异常,ID={}", id, e);
return Result.error("删除失败:" + e.getMessage());
}
}
}

21
src/main/java/com/example/demo/domain/DTO/BankDTO.java

@ -0,0 +1,21 @@
package com.example.demo.domain.DTO;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @program: gold-java
* @ClassName BankDTO
* @description:
* @author: Double
* @create: 202510-27 11:16
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class BankDTO {
private List<PaymentDTO> paymentDTOList;
}

30
src/main/java/com/example/demo/domain/DTO/PaymentDTO.java

@ -0,0 +1,30 @@
package com.example.demo.domain.DTO;
/**
* @program: gold-java
* @ClassName PaymentDTO
* @description:
* @author: Double
* @create: 202510-27 13:35
* @Version 1.0
**/
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class PaymentDTO {
private String type;
private String provider;
private String request_reference;
private String merchant_reference;
private String provider_reference;
private String currency;
private String order_amount;
private String charge;
private String net_amount;
private String status;
private String created_time;
private String completed_time;
}

19
src/main/java/com/example/demo/domain/vo/cash/Bank.java

@ -0,0 +1,19 @@
package com.example.demo.domain.vo.cash;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BankDTO
* @description:
* @author: Double
* @create: 202510-27 11:11
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Bank {
private String time = "";
}

58
src/main/java/com/example/demo/domain/vo/coin/RechargeActivity.java

@ -0,0 +1,58 @@
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName RechargeActivity
* @description: 充值活动信息VO类
* @author: Double
* @create: 202510-28 15:00
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RechargeActivity {
@ExcelProperty("活动ID")
private Integer id; // 活动唯一标识
@ExcelProperty("活动名称")
private String activityName; // 活动名称
@ExcelProperty("业绩归属地")
private String businessBelong; // 业绩归属地
@ExcelProperty("活动开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 活动开始时间
@ExcelProperty("活动结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 活动结束时间
@ExcelProperty("活动状态")
private String status; // 活动状态进行中已结束未开始
@ExcelProperty("添加人")
private String creator; // 添加人
@ExcelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@ExcelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime; // 更新时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date activityTime; // 活动时间
}

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

@ -0,0 +1,33 @@
package com.example.demo.mapper.coin;
import com.example.demo.domain.vo.coin.RechargeActivity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @program: gold-java
* @ClassName RechargeActivityCenterMapper
* @description: 充值活动中心Mapper接口
* @author: Double
* @create: 202510-28 14:42
* @Version 1.0
**/
@Mapper
public interface RechargeActivityCenterMapper {
// 根据ID查询活动
RechargeActivity selectActivityById(RechargeActivity activity);
// 新增活动
void addActivity(RechargeActivity activity);
// 更新活动
void updateActivity(RechargeActivity activity);
// 删除活动
void deleteActivity(@Param("id") Integer id);
}

18
src/main/java/com/example/demo/service/cash/BankService.java

@ -0,0 +1,18 @@
package com.example.demo.service.cash;
import com.example.demo.domain.DTO.BankDTO;
import com.example.demo.domain.vo.cash.Bank;
/**
* @program: gold-java
* @ClassName BankService
* @description:
* @author: Double
* @create: 202510-27 11:17
* @Version 1.0
**/
public interface BankService {
BankDTO getPayment(Bank bank);
}

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

@ -0,0 +1,30 @@
package com.example.demo.service.coin;
import com.example.demo.domain.vo.coin.RechargeActivity;
import java.util.List;
/**
* @program: gold-java
* @ClassName RechargeActivityCenterService
* @description: 充值活动中心服务接口
* @author: Double
* @create: 202510-28 14:40
* @Version 1.0
**/
public interface RechargeActivityCenterService {
// 根据ID查询活动
RechargeActivity selectActivityById(RechargeActivity activity);
// 新增活动
void addActivity(RechargeActivity activity);
// 更新活动
void updateActivity(RechargeActivity activity);
// 删除活动
void deleteActivity(Integer id);
}

137
src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java

@ -0,0 +1,137 @@
package com.example.demo.serviceImpl.cash;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.domain.DTO.BankDTO;
import com.example.demo.domain.DTO.PaymentDTO;
import com.example.demo.domain.vo.cash.Bank;
import com.example.demo.service.cash.BankService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* @program: gold-java
* @ClassName BankServiceImpl
* @description:
* @author: Double
* @create: 202510-27 11:18
* @Version 1.0
**/
@Service
@Slf4j
public class BankServiceImpl implements BankService {
// 第三方API地址
private static final String API_URL = "https://gateway.pa-sys.com/v1.1/reconciliation/519e26b2-8145-418c-b3e7-c1e88e52b946/settlement";
// 签名密钥
private static final String SECRET = "8987d1b8-1d82-4b15-af06-828d0b12076f";
// 注入RestTemplate用于HTTP请求需在Spring配置类中定义
private final RestTemplate restTemplate;
public BankServiceImpl(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public BankDTO getPayment(Bank bank) {
try {
// 1. 准备参数
String settlementDate = bank.getTime(); // 从Bank对象获取time作为settlement_date
String network = "FPS"; // 固定值
// 2. 生成签名
Map<String, String> params = new TreeMap<>(); // 按key升序排序
params.put("settlement_date", settlementDate);
params.put("network", network);
String signSource = buildQueryString(params) + SECRET;
String sign = sha512(signSource);
// 3. 构建form-data请求参数
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("settlement_date", settlementDate);
formData.add("network", network);
formData.add("sign", sign);
// 4. 发送HTTP POST请求优化显式设置multipart/form-data的字符集
HttpHeaders headers = new HttpHeaders();
// 补充charset=UTF-8避免部分服务器对编码敏感
headers.setContentType(new MediaType("multipart", "form-data", StandardCharsets.UTF_8));
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formData, headers);
// 调用第三方API使用配置好SSL协议的RestTemplate
ResponseEntity<String> response = restTemplate.exchange(
API_URL,
HttpMethod.POST,
requestEntity,
String.class
);
if (response.getStatusCode().is2xxSuccessful()) {
String responseBody = response.getBody();
log.info("第三方API响应: {}", responseBody);
// 解析JSON获取payload.transactions数组
JSONObject jsonObject = JSON.parseObject(responseBody);
JSONArray transactions = jsonObject.getJSONObject("payload").getJSONArray("transactions");
// 创建BankDTO并设置paymentDTOList
BankDTO bankDTO = new BankDTO();
List<PaymentDTO> paymentDTOList = transactions.toJavaList(PaymentDTO.class);
bankDTO.setPaymentDTOList(paymentDTOList);
return bankDTO;
} else {
throw new RuntimeException("API请求失败,状态码: " + response.getStatusCodeValue());
}
} catch (Exception e) {
log.error("payment银行接口处理失败", e);
throw new RuntimeException("处理失败: " + e.getMessage());
}
}
/**
* http_build_query的查询字符串key=value&key=value
*/
private String buildQueryString(Map<String, String> params) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if (sb.length() > 0) {
sb.append("&");
}
sb.append(entry.getKey()).append("=").append(entry.getValue());
}
return sb.toString();
}
/**
* SHA512加密
*/
private String sha512(String content) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] bytes = md.digest(content.getBytes(StandardCharsets.UTF_8));
// 转换为十六进制字符串
StringBuilder hexStr = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
hexStr.append('0');
}
hexStr.append(hex);
}
return hexStr.toString();
}
}

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

@ -0,0 +1,50 @@
package com.example.demo.serviceImpl.coin;
import com.example.demo.domain.vo.coin.RechargeActivity;
import com.example.demo.mapper.coin.RechargeActivityCenterMapper;
import com.example.demo.service.coin.RechargeActivityCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @program: gold-java
* @ClassName RechargeActivityCenterServiceImpl
* @description: 充值活动中心服务实现类
* @author: Double
* @create: 202510-28 14:40
* @Version 1.0
**/
@Service
public class RechargeActivityCenterServiceImpl implements RechargeActivityCenterService {
@Autowired
private RechargeActivityCenterMapper rechargeActivityCenterMapper;
// 根据ID查询活动
@Override
public RechargeActivity selectActivityById(RechargeActivity activity) {
return rechargeActivityCenterMapper.selectActivityById(activity);
}
// 新增活动
@Override
public void addActivity(RechargeActivity activity) {
rechargeActivityCenterMapper.addActivity(activity);
}
// 更新活动
@Override
public void updateActivity(RechargeActivity activity) {
rechargeActivityCenterMapper.updateActivity(activity);
}
// 删除活动
@Override
public void deleteActivity(Integer id) {
rechargeActivityCenterMapper.deleteActivity(id);
}
}

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

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.coin.RechargeActivityCenterMapper">
<!-- 查询活动 -->
<select id="selectActivityById" resultType="com.example.demo.domain.vo.coin.RechargeActivity">
SELECT
id,
activity_name as activityName,
business_belong as businessBelong,
start_time as startTime,
end_time as endTime,
status,
creator,
create_time as createTime,
update_time as updateTime
FROM recharge_activity
<where>
<if test="activityName != null and activityName != ''">
AND activity_name = #{activityName}
</if>
<if test="activityTime != null">
AND end_time >= #{activityTime}
AND #{activityTime} >= start_time
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
create_time DESC
</trim>
</select>
<!-- 新增活动 -->
<insert id="addActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity">
INSERT INTO recharge_activity (
activity_name,
business_belong,
start_time,
end_time,
status,
creator,
create_time
) VALUES (
#{activityName},
#{businessBelong},
#{startTime},
#{endTime},
#{status},
#{creator},
NOW()
)
</insert>
<!-- 更新活动 -->
<update id="updateActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity">
UPDATE recharge_activity
<set>
<if test="activityName != null">activity_name = #{activityName},</if>
<if test="businessBelong != null">business_belong = #{businessBelong},</if>
<if test="startTime != null">start_time = #{startTime},</if>
<if test="endTime != null">end_time = #{endTime},</if>
<if test="status != null">status = #{status},</if>
<if test="creator != null">creator = #{creator},</if>
update_time = NOW()
</set>
WHERE id = #{id}
</update>
<!-- 删除活动 -->
<delete id="deleteActivity">
DELETE FROM recharge_activity
WHERE id = #{id}
</delete>
</mapper>
Loading…
Cancel
Save