Browse Source
Merge branch 'refs/heads/huangqizheng/feature-20251104113536-现金管理二期退款修改' into milestone-20251016-现金管理
Merge branch 'refs/heads/huangqizheng/feature-20251104113536-现金管理二期退款修改' into milestone-20251016-现金管理
# Conflicts: # src/main/java/com/example/demo/mapper/coin/AuditMapper.java # src/main/resources/mapper/AuditMapper.xmlmilestone-20251016-现金管理
56 changed files with 2335 additions and 283 deletions
-
15pom.xml
-
4src/main/java/com/example/demo/Export/ExportService.java
-
44src/main/java/com/example/demo/Export/ExportServiceImpl.java
-
46src/main/java/com/example/demo/config/AppConfig.java
-
13src/main/java/com/example/demo/controller/cash/CashCollectionController.java
-
101src/main/java/com/example/demo/controller/cash/CashRefundController.java
-
38src/main/java/com/example/demo/controller/coin/ExportController.java
-
192src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java
-
17src/main/java/com/example/demo/controller/coin/RoleController.java
-
39src/main/java/com/example/demo/domain/DTO/CashDTO.java
-
36src/main/java/com/example/demo/domain/DTO/FinanceDTO.java
-
1src/main/java/com/example/demo/domain/entity/CashRecord.java
-
35src/main/java/com/example/demo/domain/entity/RechargeActivity.java
-
1src/main/java/com/example/demo/domain/vo/bean/BeanAuditInfo.java
-
2src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java
-
2src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java
-
2src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java
-
1src/main/java/com/example/demo/domain/vo/bean/BeanUser.java
-
1src/main/java/com/example/demo/domain/vo/cash/CashCollection.java
-
248src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java
-
203src/main/java/com/example/demo/domain/vo/cash/CashRecordRefund.java
-
24src/main/java/com/example/demo/domain/vo/cash/LhlAudit.java
-
13src/main/java/com/example/demo/domain/vo/coin/IdName.java
-
3src/main/java/com/example/demo/domain/vo/coin/Page.java
-
65src/main/java/com/example/demo/domain/vo/coin/RechargeActivity.java
-
2src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java
-
2src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java
-
1src/main/java/com/example/demo/domain/vo/coin/RoleVo.java
-
9src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
-
15src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
-
5src/main/java/com/example/demo/mapper/coin/AuditMapper.java
-
5src/main/java/com/example/demo/mapper/coin/MarketMapper.java
-
35src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java
-
2src/main/java/com/example/demo/mapper/live/LiveMapper.java
-
5src/main/java/com/example/demo/service/cash/CashCollectionService.java
-
14src/main/java/com/example/demo/service/cash/RefundService.java
-
4src/main/java/com/example/demo/service/coin/ExportExcelService.java
-
34src/main/java/com/example/demo/service/coin/RechargeActivityCenterService.java
-
2src/main/java/com/example/demo/service/coin/RoleService.java
-
36src/main/java/com/example/demo/service/listen/CashListener.java
-
36src/main/java/com/example/demo/service/listen/FinanceListener.java
-
36src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
-
299src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
-
45src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
-
134src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java
-
18src/main/java/com/example/demo/serviceImpl/coin/RoleServiceImpl.java
-
58src/main/resources/cashMapper/CashCollectionMapper.xml
-
426src/main/resources/cashMapper/CashRefundMapper.xml
-
12src/main/resources/jindouMapper/BeanConsumeMapper.xml
-
8src/main/resources/jindouMapper/BeanUser.xml
-
15src/main/resources/liveMapper/LiveMapper.xml
-
72src/main/resources/mapper/AuditMapper.xml
-
3src/main/resources/mapper/BeanAuditMapper.xml
-
9src/main/resources/mapper/MarketMapper.xml
-
110src/main/resources/mapper/RechargeActivityCenterMapper.xml
-
16src/main/resources/mapper/RoleMapper.xml
@ -0,0 +1,192 @@ |
|||
package com.example.demo.controller.coin; |
|||
|
|||
import com.example.demo.config.interfac.Log; |
|||
import com.example.demo.domain.vo.coin.Page; |
|||
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.util.ObjectUtils; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: gold-java |
|||
* @ClassName RechargeActivityCenterController |
|||
* @description: 充值活动中心管理 |
|||
* @author: Double |
|||
* @create: 2025−11-04 14:23 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@RestController |
|||
@RequestMapping("/admin/coin/rechargeActivityCenter") |
|||
@RequiredArgsConstructor |
|||
@Slf4j |
|||
@CrossOrigin |
|||
public class RechargeActivityCenterController { |
|||
|
|||
@Autowired |
|||
private RechargeActivityCenterService rechargeActivityCenterService; |
|||
|
|||
|
|||
/** |
|||
* 导出用户权限数据 |
|||
* |
|||
* @param page 导出请求参数) |
|||
* @return 导出结果(成功返回活动信息,失败返回错误信息) |
|||
* @throws NullPointerException 当参数为空时抛出(如activity为null、关键属性为null) |
|||
* @throws IllegalArgumentException 当参数无效时抛出(如活动ID非法、参数格式错误) |
|||
*/ |
|||
@Log("条件查询充值活动") |
|||
@PostMapping("/queryActivity") |
|||
public Result queryActivity(@RequestBody Page page) { |
|||
try { |
|||
//校验参数 |
|||
if (ObjectUtils.isEmpty(page.getPageNum())) { |
|||
return Result.error("页码数为空!"); |
|||
} |
|||
if (ObjectUtils.isEmpty(page.getPageSize())) { |
|||
return Result.error("页大小为空!"); |
|||
} |
|||
if (page.getRechargeActivity() == null) { |
|||
return Result.error("查询失败:活动信息不能为空"); |
|||
} |
|||
return Result.success(rechargeActivityCenterService.queryActivity(page.getPageNum(), page.getPageSize(),page.getRechargeActivity())); |
|||
} catch (NullPointerException e) { |
|||
log.error("查询活动失败:空指针异常", e); |
|||
return Result.error("查询失败:数据为空"); |
|||
} catch (IllegalArgumentException e) { |
|||
log.error("查询活动失败:参数异常", e); |
|||
return Result.error("查询失败:" + e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 新增充值活动 |
|||
* |
|||
* @param activity 充值活动请求参数(包含活动名称、活动规则等信息) |
|||
* @return 新增结果(成功返回提示信息,失败返回错误原因) |
|||
* @throws NullPointerException 当请求参数为空时抛出(如activity为null、活动名称等关键属性为null) |
|||
* @throws IllegalArgumentException 当请求参数无效时抛出(如活动名称为空字符串、参数格式不符合要求等) |
|||
*/ |
|||
@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("添加失败:活动名称不能为空"); |
|||
} |
|||
if (activity.getBusinessBelong() == null || activity.getBusinessBelong().trim().isEmpty()) { |
|||
return Result.error("添加失败:业绩归属地不能为空"); |
|||
}else if (activity.getBusinessBelong().equals("活动归属地")) { |
|||
if (activity.getArea() == null || activity.getArea().trim().isEmpty()) { |
|||
return Result.error("添加失败:地区不能为空"); |
|||
} |
|||
} |
|||
if (activity.getStartTime() == null) { |
|||
return Result.error("添加失败:活动开始时间不能为空"); |
|||
} |
|||
if (activity.getEndTime() == null) { |
|||
return Result.error("添加失败:活动结束时间不能为空"); |
|||
} |
|||
if (activity.getEndTime().before(activity.getStartTime())) { |
|||
return Result.error("添加失败:活动结束时间必须晚于活动开始时间"); |
|||
} |
|||
if (activity.getCreator() == null || activity.getCreator().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()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 更新充值活动 |
|||
* |
|||
* @param activity 充值活动更新参数(包含活动ID、待更新的活动名称等信息) |
|||
* @return 更新结果(成功返回提示信息,失败返回错误原因) |
|||
* @throws NullPointerException 当请求参数为空时抛出(如activity为null、活动ID、活动名称等关键属性为null) |
|||
* @throws IllegalArgumentException 当请求参数无效时抛出(如活动名称为空字符串、活动ID格式错误等) |
|||
*/ |
|||
@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("添加失败:活动名称不能为空"); |
|||
} |
|||
if (activity.getBusinessBelong() == null || activity.getBusinessBelong().trim().isEmpty()) { |
|||
return Result.error("添加失败:业绩归属地不能为空"); |
|||
}else if (activity.getBusinessBelong().equals("活动归属地")) { |
|||
if (activity.getArea() == null || activity.getArea().trim().isEmpty()) { |
|||
return Result.error("添加失败:地区不能为空"); |
|||
} |
|||
} |
|||
if (activity.getStartTime() == null) { |
|||
return Result.error("添加失败:活动开始时间不能为空"); |
|||
} |
|||
if (activity.getEndTime() == null) { |
|||
return Result.error("添加失败:活动结束时间不能为空"); |
|||
} |
|||
if (activity.getEndTime().before(activity.getStartTime())) { |
|||
return Result.error("添加失败:活动结束时间必须晚于活动开始时间"); |
|||
} |
|||
if (activity.getCreator() == null || activity.getCreator().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()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 删除充值活动 |
|||
* |
|||
* @param activity 待删除的充值活动ID |
|||
* @return 删除结果(成功返回提示信息,失败返回错误原因) |
|||
* @throws NullPointerException 当活动ID为空时抛出(如id为null) |
|||
* @throws IllegalArgumentException 当活动ID无效时抛出(如id为负数、非整数格式等不符合业务要求的情况) |
|||
*/ |
|||
@Log("删除充值活动") |
|||
@PostMapping("/deleteActivity") |
|||
public Result deleteActivity(@RequestBody RechargeActivity activity) { |
|||
try { |
|||
if (activity.getId() == null) { |
|||
return Result.error("删除失败:活动ID不能为空"); |
|||
} |
|||
rechargeActivityCenterService.deleteActivity(activity); |
|||
return Result.success("删除活动成功"); |
|||
} catch (NullPointerException e) { |
|||
log.error("删除活动失败:空指针异常", e); |
|||
return Result.error("删除失败:数据为空"); |
|||
} catch (IllegalArgumentException e) { |
|||
log.error("删除活动失败:参数异常", e); |
|||
return Result.error("删除失败:" + e.getMessage()); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,39 @@ |
|||
package com.example.demo.domain.DTO; |
|||
|
|||
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; |
|||
import com.example.demo.domain.vo.cash.CashCollection; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName CashDTO |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-09 09:26 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class CashDTO { |
|||
private String token; |
|||
private String url = ""; |
|||
private String fileName = ""; |
|||
private Integer sort = 0; |
|||
private String field = ""; |
|||
private Integer account; |
|||
private Integer type = 13; //类型 |
|||
private Integer state = 0; //状态 |
|||
private String text = ""; //关键词搜索 |
|||
private Integer dataNum = 0; |
|||
private String deptid = ""; |
|||
|
|||
@NotNull(message = "page不能为空") |
|||
private Integer page = 1; |
|||
@NotNull(message = "pageSize不能为空") |
|||
private Integer pageSize = 20; |
|||
private CashCollection cashCollection; |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.example.demo.domain.DTO; |
|||
|
|||
import com.example.demo.domain.vo.cash.CashRecordDTO; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName FinanceDTO |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-06 21:22 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class FinanceDTO { |
|||
private String token; |
|||
private String url = ""; |
|||
private String fileName = ""; |
|||
private Integer sort = 0; |
|||
private String field = ""; |
|||
private Integer account; |
|||
private Integer type = 12; //类型 |
|||
private Integer state = 0; //状态 |
|||
private String text = ""; //关键词搜索 |
|||
private Integer dataNum = 0; |
|||
private String deptid = ""; |
|||
private CashRecordDTO cashRecordDTO; |
|||
|
|||
@NotNull(message = "page不能为空") |
|||
private Integer page = 1; |
|||
@NotNull(message = "pageSize不能为空") |
|||
private Integer pageSize = 5000; |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
package com.example.demo.domain.entity; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* @program: gold-java |
|||
* @ClassName RechargeActivity |
|||
* @description: |
|||
* @author: Ethan |
|||
* @create: 2025−11-04 11:48 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
public class RechargeActivity { |
|||
private Integer id; //活动id |
|||
private String activityName; //活动名称 |
|||
private String businessBelong; //业绩归属地 |
|||
private Integer status; //状态 0未开始 1进行中 2已结束(不是实时更新的,仅展示,不要拿这个做校验) |
|||
private Integer creator; //添加人 |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime startTime; // 开始时间(到秒) |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime endTime; // 结束时间(到秒) |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime createTime; // 创建日期(到秒) |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime updateTime; // 更新日期(到秒) |
|||
} |
|||
@ -0,0 +1,248 @@ |
|||
package com.example.demo.domain.vo.cash; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnore; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.time.LocalDateTime; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName CashRecordDTO |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-04 17:03 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class CashRecordDTO{ |
|||
private String activity;// 活动 |
|||
private String goodsName;// 商品名称 |
|||
private Integer goodsNum;// 商品数量 |
|||
private String numUnit;// 商品单位 |
|||
private BigDecimal gold;//永久金币 |
|||
private BigDecimal free;//免费金币 |
|||
private String paymentCurrency;// 支付币种 |
|||
private BigDecimal paymentAmount;// 支付金额 |
|||
private String receivedCurrency;// 收款币种 |
|||
private BigDecimal receivedAmount;// 收款金额 |
|||
private BigDecimal handlingCharge;// 手续费 |
|||
private String payBankCode;// 付款银行 |
|||
private String payType;// 支付方式 |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime payTime;// 付款时间 |
|||
private String receivedMarket;// 收款地区 |
|||
private String payVoucher;// 支付凭证 |
|||
private String payRemark;// 支付备注 |
|||
//提交人 |
|||
private String paySubmitter; |
|||
//提交人 |
|||
private String Submitter; |
|||
//审核人 |
|||
private String audit; |
|||
//到账日期 |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private LocalDateTime receivedTime; |
|||
@ExcelIgnore |
|||
private List<String> goodsNames;// 商品名称 |
|||
@ExcelIgnore |
|||
private List<String> markets;// 地区 |
|||
|
|||
|
|||
/** |
|||
* 序号 |
|||
*/ |
|||
private Integer id; |
|||
|
|||
/** |
|||
* 精网号 |
|||
*/ |
|||
private Integer jwcode; |
|||
|
|||
/** |
|||
* 姓名 |
|||
*/ |
|||
private String userName; |
|||
private String name; |
|||
|
|||
/** |
|||
* 所属地区 |
|||
*/ |
|||
private Integer market; |
|||
|
|||
/** |
|||
* 金币订单号 |
|||
*/ |
|||
private String orderCode; |
|||
|
|||
/** |
|||
* 银行流水订单号 |
|||
*/ |
|||
private String bankCode; |
|||
|
|||
/** |
|||
* 永久金币 |
|||
*/ |
|||
private BigDecimal permanentGold; |
|||
|
|||
/** |
|||
* 免费金币 |
|||
*/ |
|||
private BigDecimal freeGold; |
|||
|
|||
/** |
|||
* 审核人id |
|||
*/ |
|||
@ExcelIgnore |
|||
private Integer auditId; |
|||
|
|||
/** |
|||
* 订单状态(1位代表收款,2位代表退款) |
|||
0:线下财务待审核;1:线下财务审核通过待填手续费;2线下财务审核驳回;5:手动撤回待编辑提交 |
|||
3:link线上财务复核待填手续费 |
|||
4:收款流程全部结束 |
|||
6:退款 |
|||
--------------------------------------------- |
|||
10:地区财务待审核;11:地区财务手动撤回待编辑提交12:地区财务驳回; |
|||
20:地区负责人待审核;22:地区负责人驳回; |
|||
30:总部财务待审核;32:总部财务驳回; |
|||
40:执行人待处理;41:执行人已处理,退款结束 |
|||
*/ |
|||
private Integer status; |
|||
|
|||
/** |
|||
* 提交人id |
|||
*/ |
|||
@ExcelIgnore |
|||
private Integer submitterId; |
|||
|
|||
/** |
|||
* 提交人地区 |
|||
*/ |
|||
private String submitterMarket; |
|||
|
|||
/** |
|||
* 转账凭证 |
|||
*/ |
|||
private String voucher; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
/** |
|||
* 驳回理由 |
|||
*/ |
|||
private String rejectReason; |
|||
|
|||
/** |
|||
* 退款备注(理由),客服填写 |
|||
*/ |
|||
private String refundReason; |
|||
|
|||
/** |
|||
* 退款方式(0全额/1部分) |
|||
*/ |
|||
private Integer refundModel; |
|||
|
|||
/** |
|||
* 退款执行人OA号 |
|||
*/ |
|||
private Integer executor; |
|||
|
|||
/** |
|||
* 退款途径 |
|||
*/ |
|||
private String refundChannels; |
|||
|
|||
/** |
|||
* 退款日期(到天) |
|||
*/ |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date refundTime; |
|||
|
|||
/** |
|||
* 退款备注(执行人填写) |
|||
*/ |
|||
private String refundRemark; |
|||
|
|||
/** |
|||
* 退款截图 |
|||
*/ |
|||
private String refundVoucher; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
@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 auditTime; |
|||
|
|||
/** |
|||
* 退款币种 |
|||
*/ |
|||
private String refundCurrency; |
|||
|
|||
/** |
|||
* 退款金额 |
|||
*/ |
|||
private String refundAmount; |
|||
|
|||
/** |
|||
* 关联收款id |
|||
*/ |
|||
@ExcelIgnore |
|||
private Integer relatedId; |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date startTime; // 开始时间 |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date endTime; // 结束时间 |
|||
private String submitterName; |
|||
private String auditName; |
|||
private String executorName; |
|||
private String marketName; |
|||
@ExcelIgnore |
|||
private List<Integer> statuses; |
|||
@ExcelIgnore |
|||
private String processInstanceId; // 流程实例ID |
|||
@ExcelIgnore |
|||
private String currentTaskId; // 当前任务ID |
|||
|
|||
private String areaServise; |
|||
private String areaFinance; |
|||
private String areaCharge; |
|||
private String headFinance; |
|||
@ExcelIgnore |
|||
private String sortField; |
|||
@ExcelIgnore |
|||
private String sortOrder; |
|||
|
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date sTime; // 开始时间 |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date eTime; // 结束时间 |
|||
|
|||
} |
|||
@ -0,0 +1,203 @@ |
|||
package com.example.demo.domain.vo.cash; |
|||
|
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnore; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* |
|||
* @TableName cash_record_refund |
|||
*/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class CashRecordRefund { |
|||
/** |
|||
* 序号 |
|||
*/ |
|||
private Integer id; |
|||
|
|||
/** |
|||
* 精网号 |
|||
*/ |
|||
private Integer jwcode; |
|||
|
|||
/** |
|||
* 姓名 |
|||
*/ |
|||
private String userName; |
|||
private String name; |
|||
|
|||
/** |
|||
* 所属地区 |
|||
*/ |
|||
private String market; |
|||
|
|||
/** |
|||
* 金币订单号 |
|||
*/ |
|||
private String orderCode; |
|||
|
|||
/** |
|||
* 银行流水订单号 |
|||
*/ |
|||
private String bankCode; |
|||
|
|||
/** |
|||
* 永久金币 |
|||
*/ |
|||
private Integer permanentGold; |
|||
|
|||
/** |
|||
* 免费金币 |
|||
*/ |
|||
private Integer freeGold; |
|||
|
|||
/** |
|||
* 审核人id |
|||
*/ |
|||
private Integer auditId; |
|||
|
|||
/** |
|||
* 订单状态(1位代表收款,2位代表退款) |
|||
0:线下财务待审核;1:线下财务审核通过待填手续费;2线下财务审核驳回;5:手动撤回待编辑提交 |
|||
3:link线上财务复核待填手续费 |
|||
4:收款流程全部结束 |
|||
6:退款 |
|||
--------------------------------------------- |
|||
10:地区财务待审核;11:地区财务手动撤回待编辑提交12:地区财务驳回; |
|||
20:地区负责人待审核;22:地区负责人驳回; |
|||
30:总部财务待审核;32:总部财务驳回; |
|||
40:执行人待处理;41:执行人已处理,退款结束 |
|||
*/ |
|||
private Integer status; |
|||
|
|||
/** |
|||
* 提交人id |
|||
*/ |
|||
private Integer submitterId; |
|||
|
|||
/** |
|||
* 提交人地区 |
|||
*/ |
|||
private String submitterMarket; |
|||
|
|||
/** |
|||
* 转账凭证 |
|||
*/ |
|||
private String voucher; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
/** |
|||
* 驳回理由 |
|||
*/ |
|||
private String rejectReason; |
|||
|
|||
/** |
|||
* 退款备注(理由),客服填写 |
|||
*/ |
|||
private String refundReason; |
|||
|
|||
/** |
|||
* 退款方式(0全额/1部分) |
|||
*/ |
|||
private Integer refundModel; |
|||
|
|||
/** |
|||
* 退款执行人OA号 |
|||
*/ |
|||
private Integer executor; |
|||
|
|||
/** |
|||
* 退款途径 |
|||
*/ |
|||
private String refundChannels; |
|||
|
|||
/** |
|||
* 退款日期(到天) |
|||
*/ |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date refundTime; |
|||
|
|||
/** |
|||
* 退款备注(执行人填写) |
|||
*/ |
|||
private String refundRemark; |
|||
|
|||
/** |
|||
* 退款截图 |
|||
*/ |
|||
private String refundVoucher; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
@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 auditTime; |
|||
|
|||
/** |
|||
* 退款币种 |
|||
*/ |
|||
private String refundCurrency; |
|||
|
|||
/** |
|||
* 退款金额 |
|||
*/ |
|||
private String refundAmount; |
|||
|
|||
/** |
|||
* 关联收款id |
|||
*/ |
|||
private Integer relatedId; |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date startTime; // 开始时间 |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date endTime; // 结束时间 |
|||
private String submitterName; |
|||
private String auditName; |
|||
private String executorName; |
|||
private String marketName; |
|||
private List<Integer> statuses; |
|||
|
|||
private String processInstanceId; // 流程实例ID |
|||
private String currentTaskId; // 当前任务ID |
|||
|
|||
private String areaServise; |
|||
private String areaFinance; |
|||
private String areaCharge; |
|||
private String headFinance; |
|||
private String sortField; |
|||
private String sortOrder; |
|||
@ExcelIgnore |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date sTime; // 开始时间 |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") |
|||
private Date eTime; // 结束时间 |
|||
private Integer partRefundGold; |
|||
private Integer partRefundFree; |
|||
|
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package com.example.demo.domain.vo.cash; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName LhlAudit |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-05 16:45 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Data |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class LhlAudit { |
|||
private Integer id; |
|||
private String areaServise;// |
|||
private String areaFinance; |
|||
private String areaCharge; |
|||
private String headFinace; |
|||
} |
|||
@ -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 IdName { |
|||
private Integer id; |
|||
private String name; |
|||
} |
|||
@ -0,0 +1,65 @@ |
|||
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: 2025−10-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; // 业绩归属地 |
|||
|
|||
private String area; // 地区 |
|||
|
|||
@ExcelProperty("地区") |
|||
private String areaName; // 地区名 |
|||
|
|||
@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; // 活动状态(进行中、已结束、未开始) |
|||
|
|||
private String creator; // 添加人 |
|||
|
|||
@ExcelProperty("添加人") |
|||
private String creatorName; // 添加人名字 |
|||
|
|||
@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; // 活动时间 |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
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: 2025−10-28 14:42 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Mapper |
|||
public interface RechargeActivityCenterMapper { |
|||
|
|||
// 查询所有活动(用于批量更新状态) |
|||
List<RechargeActivity> listActivities(); |
|||
|
|||
// 根据ID查询活动 |
|||
List<RechargeActivity> queryActivity(RechargeActivity activity); |
|||
|
|||
// 新增活动 |
|||
void addActivity(RechargeActivity activity); |
|||
|
|||
// 更新活动 |
|||
void updateActivity(RechargeActivity activity); |
|||
|
|||
// 删除活动 |
|||
void deleteActivity(RechargeActivity activity); |
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
package com.example.demo.service.coin; |
|||
|
|||
import com.example.demo.domain.vo.coin.RechargeActivity; |
|||
import com.github.pagehelper.PageInfo; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: gold-java |
|||
* @ClassName RechargeActivityCenterService |
|||
* @description: 充值活动中心服务接口 |
|||
* @author: Double |
|||
* @create: 2025−10-28 14:40 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
public interface RechargeActivityCenterService { |
|||
|
|||
|
|||
// 根据ID查询活动 |
|||
PageInfo<RechargeActivity> queryActivity(Integer pageNum, Integer pageSize, RechargeActivity activity); |
|||
|
|||
// 新增活动 |
|||
void addActivity(RechargeActivity activity); |
|||
|
|||
// 更新活动 |
|||
void updateActivity(RechargeActivity activity); |
|||
|
|||
// 更新状态 |
|||
void updateStatus(); |
|||
|
|||
// 删除活动 |
|||
void deleteActivity(RechargeActivity activity); |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.example.demo.service.listen; |
|||
|
|||
import com.example.demo.Util.RedisUtil; |
|||
import com.example.demo.service.coin.ExportExcelService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName CashListener |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-09 09:42 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Component |
|||
public class CashListener extends BaseMessageListener<String> { |
|||
@Autowired |
|||
private ExportExcelService exportExcelService; |
|||
|
|||
protected CashListener(RedisUtil redisQueueUtil) { |
|||
super(redisQueueUtil, "cash:queue:export_queue"); |
|||
} |
|||
|
|||
@Override |
|||
protected void handleMessage(String message) { |
|||
validateMessage( message); |
|||
try { |
|||
Thread.sleep(5000); |
|||
exportExcelService.CashExcel(message); |
|||
} catch (Exception e) { |
|||
handleException(e, message); |
|||
|
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.example.demo.service.listen; |
|||
|
|||
import com.example.demo.Util.RedisUtil; |
|||
import com.example.demo.service.coin.ExportExcelService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
/** |
|||
* @program: GOLD |
|||
* @ClassName FinanceListener |
|||
* @description: |
|||
* @author: huangqizhen |
|||
* @create: 2025−11-06 21:35 |
|||
* @Version 1.0 |
|||
**/ |
|||
@Component |
|||
public class FinanceListener extends BaseMessageListener<String>{ |
|||
@Autowired |
|||
private ExportExcelService exportExcelService; |
|||
|
|||
@Autowired |
|||
public FinanceListener(RedisUtil redisQueueUtil) { |
|||
super(redisQueueUtil, "finance:queue:export_queue"); |
|||
} |
|||
|
|||
@Override |
|||
protected void handleMessage(String message) { |
|||
validateMessage( message); |
|||
try { |
|||
Thread.sleep(5000); |
|||
exportExcelService.FinanceExcel(message); |
|||
} catch (Exception e) { |
|||
handleException(e, message); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,134 @@ |
|||
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 com.github.pagehelper.PageHelper; |
|||
import com.github.pagehelper.PageInfo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @program: gold-java |
|||
* @ClassName RechargeActivityCenterServiceImpl |
|||
* @description: 充值活动中心服务实现类 |
|||
* @author: Double |
|||
* @create: 2025−10-28 14:40 |
|||
* @Version 1.0 |
|||
**/ |
|||
|
|||
@Service |
|||
public class RechargeActivityCenterServiceImpl implements RechargeActivityCenterService { |
|||
|
|||
@Autowired |
|||
private RechargeActivityCenterMapper rechargeActivityCenterMapper; |
|||
|
|||
|
|||
// 根据ID查询活动 |
|||
@Override |
|||
public PageInfo<RechargeActivity> queryActivity(Integer pageNum, Integer pageSize, RechargeActivity activity) { |
|||
updateStatus(); |
|||
PageHelper.startPage(pageNum, pageSize); |
|||
List<RechargeActivity> activityList = rechargeActivityCenterMapper.queryActivity(activity); |
|||
return new PageInfo<>(activityList); |
|||
} |
|||
|
|||
// 新增活动 |
|||
@Override |
|||
public void addActivity(RechargeActivity activity) { |
|||
Date startTime = activity.getStartTime(); |
|||
Date endTime = activity.getEndTime(); |
|||
|
|||
//获取当前系统时间(本地时间,与活动时间时区保持一致) |
|||
Date now = new Date(); |
|||
|
|||
//时间范围判断,设置对应状态 |
|||
if (now.before(startTime)) { |
|||
// 当前时间 < 开始时间 → 未开始(状态0) |
|||
activity.setStatus("0"); |
|||
} else if (now.after(endTime)) { |
|||
// 当前时间 > 结束时间 → 已结束(状态2) |
|||
activity.setStatus("2"); |
|||
} else { |
|||
// 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1) |
|||
activity.setStatus("1"); |
|||
} |
|||
rechargeActivityCenterMapper.addActivity(activity); |
|||
} |
|||
|
|||
// 更新活动 |
|||
@Override |
|||
public void updateActivity(RechargeActivity activity) { |
|||
Date startTime = activity.getStartTime(); |
|||
Date endTime = activity.getEndTime(); |
|||
|
|||
//获取当前系统时间(本地时间,与活动时间时区保持一致) |
|||
Date now = new Date(); |
|||
|
|||
//时间范围判断,设置对应状态 |
|||
if (now.before(startTime)) { |
|||
// 当前时间 < 开始时间 → 未开始(状态0) |
|||
activity.setStatus("0"); |
|||
} else if (now.after(endTime)) { |
|||
// 当前时间 > 结束时间 → 已结束(状态2) |
|||
activity.setStatus("2"); |
|||
} else { |
|||
// 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1) |
|||
activity.setStatus("1"); |
|||
} |
|||
rechargeActivityCenterMapper.updateActivity(activity); |
|||
} |
|||
|
|||
@Override |
|||
public void updateStatus() { |
|||
// 查询所有活动 |
|||
List<RechargeActivity> activityList = rechargeActivityCenterMapper.listActivities(); |
|||
|
|||
if (activityList == null || activityList.isEmpty()) { |
|||
return; |
|||
} |
|||
|
|||
Date now = new Date(); |
|||
|
|||
// 遍历所有活动,更新状态 |
|||
for (RechargeActivity activity : activityList) { |
|||
Date startTime = activity.getStartTime(); |
|||
Date endTime = activity.getEndTime(); |
|||
|
|||
// 跳过时间为空的活动 |
|||
if (startTime == null || endTime == null) { |
|||
continue; |
|||
} |
|||
|
|||
String newStatus; |
|||
|
|||
// 时间范围判断,设置对应状态 |
|||
if (now.before(startTime)) { |
|||
// 当前时间 < 开始时间 → 未开始(状态0) |
|||
newStatus = "0"; |
|||
} else if (now.after(endTime)) { |
|||
// 当前时间 > 结束时间 → 已结束(状态2) |
|||
newStatus = "2"; |
|||
} else { |
|||
// 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1) |
|||
newStatus = "1"; |
|||
} |
|||
|
|||
// 只有当状态发生变化时才更新 |
|||
if (!newStatus.equals(activity.getStatus())) { |
|||
activity.setStatus(newStatus); |
|||
rechargeActivityCenterMapper.updateActivity(activity); |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 删除活动 |
|||
@Override |
|||
public void deleteActivity(RechargeActivity activity) { |
|||
rechargeActivityCenterMapper.deleteActivity(activity); |
|||
} |
|||
} |
|||
@ -0,0 +1,110 @@ |
|||
<?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="listActivities" resultType="com.example.demo.domain.vo.coin.RechargeActivity"> |
|||
SELECT |
|||
ra.id, |
|||
ra.start_time as startTime, |
|||
ra.end_time as endTime, |
|||
ra.status as status |
|||
FROM recharge_activity ra |
|||
WHERE ra.flag = 1 |
|||
ORDER BY ra.update_time DESC |
|||
</select> |
|||
|
|||
<!-- 查询活动 --> |
|||
<select id="queryActivity" resultType="com.example.demo.domain.vo.coin.RechargeActivity"> |
|||
SELECT |
|||
ra.id, |
|||
ra.activity_name as activityName, |
|||
ra.business_belong as businessBelong, |
|||
ra.area, |
|||
m.name as areaName, |
|||
ra.start_time as startTime, |
|||
ra.end_time as endTime, |
|||
ra.status, |
|||
ra.creator, |
|||
a.admin_name as creatorName, |
|||
ra.create_time as createTime, |
|||
ra.update_time as updateTime |
|||
FROM recharge_activity ra |
|||
LEFT JOIN admin a on a.id = ra.creator |
|||
LEFT JOIN market m on m.id = ra.area |
|||
<where> |
|||
ra.flag = 1 |
|||
<if test="activityName != null and activityName != ''"> |
|||
AND ra.activity_name = #{activityName} |
|||
</if> |
|||
<if test="businessBelong != null and businessBelong != ''"> |
|||
AND ra.business_belong = #{businessBelong} |
|||
</if> |
|||
|
|||
<if test="endTime != null"> |
|||
AND #{endTime} >= ra.end_time |
|||
</if> |
|||
<if test="startTime != null"> |
|||
AND ra.start_time >= #{startTime} |
|||
</if> |
|||
<if test="area != null"> |
|||
AND ra.area = #{area} |
|||
</if> |
|||
</where> |
|||
<trim prefix="ORDER BY" suffixOverrides=","> |
|||
ra.update_time DESC |
|||
</trim> |
|||
</select> |
|||
|
|||
<!-- 新增活动 --> |
|||
<insert id="addActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity"> |
|||
INSERT INTO recharge_activity ( |
|||
activity_name, |
|||
business_belong, |
|||
area, |
|||
start_time, |
|||
end_time, |
|||
status, |
|||
creator, |
|||
create_time |
|||
) VALUES ( |
|||
#{activityName}, |
|||
#{businessBelong}, |
|||
#{area}, |
|||
#{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="area != null">area = #{area},</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> |
|||
|
|||
<!-- 删除活动 --> |
|||
<!-- 删除活动 --> |
|||
<update id="deleteActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity"> |
|||
UPDATE recharge_activity |
|||
<set> |
|||
flag = 0, |
|||
update_time = NOW() |
|||
</set> |
|||
WHERE id = #{id} |
|||
</update> |
|||
|
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue