32 Commits

Author SHA1 Message Date
lijianlin 01aa48136b Merge branch 'milestone-20251104-现金管理二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20251104110749-现金管理二期 6 days ago
lijianlin 6387f004d3 11-20 地区财务,修复至正确查看收款地区或提交地区 6 days ago
huangqizhen 5b79fbd5be Merge remote-tracking branch 'origin/milestone-20251104-现金管理二期' into milestone-20251104-现金管理二期 6 days ago
huangqizhen 6e46b85a2f 11.20bug 6 days ago
lijianlin ea9ad0370f Merge branch 'milestone-20251104-现金管理二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20251104110749-现金管理二期 6 days ago
lijianlin 0565955c4d 11-20 地区财务,改为可以看到本地区提交的非本地区收款的已通过订单 6 days ago
lijianlin ce727926ef Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20251104110749-现金管理二期' into milestone-20251104-现金管理二期 6 days ago
lijianlin 45ab3873fb 11-20 收款bug修复 金额校验 小黄车骨架 6 days ago
sunjiabei 740aab5a58 Merge remote-tracking branch 'origin/milestone-20251104-现金管理二期' into milestone-20251104-现金管理二期 6 days ago
huangqizhen dca5251872 Merge branch 'refs/heads/milestone-20251104-现金管理二期' into huangqizheng/feature-20251119150446-退款合并后 6 days ago
huangqizhen 1cc2c448dd 11.20导出修复字段 6 days ago
sunjiabei 59d8cb82cd 11月20日正则表达式 6 days ago
sunjiabei f6bd1c691d 11月20日汇总 6 days ago
huangqizhen 641c32fbfb 修改币种与数量未除100的问题 6 days ago
huangqizhen 3225233ec0 Merge branch 'refs/heads/huangqizheng/feature-20251119150446-退款合并后' into milestone-20251104-现金管理二期 6 days ago
sunjiabei 1e26812c6a 11月19日活动更新 6 days ago
huangqizhen 13218a0ae9 修改币种与数量未除100的问题 6 days ago
sunjiabei d380903fb2 11月19日活动更新 7 days ago
sunjiabei 4d7f47a6c2 11月19日活动更新 7 days ago
sunjiabei 9d777d7b8b 11月19日活动新增 7 days ago
huangqizhen 2c5fb3fdc2 执行人姓名 7 days ago
huangqizhen 66b8e9bbaf Merge branch 'refs/heads/huangqizheng/feature-20251119150446-退款合并后' into milestone-20251104-现金管理二期 7 days ago
huangqizhen a95dfe37c0 合并代码2 7 days ago
lijianlin c1d11fc43e 11-19 收款消息发送 7 days ago
lijianlin bcaa35085d Merge branch 'milestone-20251104-现金管理二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20251104110749-现金管理二期 7 days ago
huangqizhen d05fe1001f 合并代码 7 days ago
huangqizhen 5253b135c2 Merge remote-tracking branch 'origin/milestone-20251104-现金管理二期' into milestone-20251104-现金管理二期 7 days ago
lijianlin 5157323c47 11-19找回auditMapper丢失的代码 7 days ago
huangqizhen 2810ab6f27 Merge branch 'huangqizheng/feature-20251104113536-现金管理二期退款修改' into milestone-20251104-现金管理二期 7 days ago
huangqizhen c28d3adf00 制造冲突 7 days ago
huangqizhen 2fb7a10683 Merge branch 'refs/heads/huangqizheng/feature-20251104113536-现金管理二期退款修改' into milestone-20251104-现金管理二期 7 days ago
huangqizhen fe2a507e66 11.17 消息推送1 7 days ago
  1. 18
      src/main/java/com/example/demo/controller/bean/BeanConsumeController.java
  2. 14
      src/main/java/com/example/demo/controller/cash/Bank.java
  3. 63
      src/main/java/com/example/demo/domain/entity/BeanConsumeCart.java
  4. 63
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeCart.java
  5. 34
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeCartVo.java
  6. 56
      src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java
  7. 1
      src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java
  8. 1
      src/main/java/com/example/demo/domain/vo/cash/CashRecordRefund.java
  9. 2
      src/main/java/com/example/demo/domain/vo/cash/LhlAudit.java
  10. 1
      src/main/java/com/example/demo/domain/vo/coin/Page.java
  11. 2
      src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java
  12. 2
      src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
  13. 2
      src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
  14. 4
      src/main/java/com/example/demo/mapper/coin/AuditMapper.java
  15. 1
      src/main/java/com/example/demo/mapper/coin/MarketMapper.java
  16. 2
      src/main/java/com/example/demo/mapper/coin/RechargeActivityCenterMapper.java
  17. 4
      src/main/java/com/example/demo/service/bean/BeanConsumeService.java
  18. 9
      src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java
  19. 29
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  20. 330
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
  21. 10
      src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java
  22. 24
      src/main/resources/cashMapper/CashCollectionMapper.xml
  23. 10
      src/main/resources/cashMapper/CashRefundMapper.xml
  24. 7
      src/main/resources/jindouMapper/BeanConsumeMapper.xml
  25. 34
      src/main/resources/mapper/AuditMapper.xml
  26. 1
      src/main/resources/mapper/MarketMapper.xml
  27. 19
      src/main/resources/mapper/RechargeActivityCenterMapper.xml

18
src/main/java/com/example/demo/controller/bean/BeanConsumeController.java

@ -111,6 +111,24 @@ public class BeanConsumeController {
return Result.error(e.toString());
}}
//筛选查询小黄车消费记录
@PostMapping("/selectCartBy")
public Result selectCartBy(@RequestBody Page page){
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanConsumeService.selectCartBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeCart()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.toString());
}
}
//消费合计数
@PostMapping("sumConsumeGold")
public BeanConsumeGold sumConsumeGold(@RequestBody Page page) {

14
src/main/java/com/example/demo/controller/cash/Bank.java

@ -0,0 +1,14 @@
package com.example.demo.controller.cash;
/**
* @program: gold-java
* @ClassName Bank
* @description:
* @author: Double
* @create: 202511-17 13:31
* @Version 1.0
**/
public class Bank {
}

63
src/main/java/com/example/demo/domain/entity/BeanConsumeCart.java

@ -0,0 +1,63 @@
package com.example.demo.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @program: gold-java
* @ClassName BeanConsumeCart
* @description:
* @author: Ethan
* @create: 202511-20 10:28
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeCart {
private Integer id;
private String nickname; // 姓名
private String phone; // 电话
private Integer jwcode; // 精网号
private Integer productId; // 产品 ID
private BigDecimal totalMoney; // 应付金额
private BigDecimal money; // 实际付款金额
private BigDecimal coupon; // 优惠券金额
private String tradeNo; // 订单号
private Integer payWay; // 1微信 2支付宝 3金币 4金豆
private Integer payType; // 1一次支付 2多次支付
private String payAccount; // 收款账户
private Integer pid; // 关联的订单
private Integer type; // 1全款 2定金 3尾款
private Integer state; // 1新订单 2成功支付 3取消支付 4退款 5多笔支付支付进行中
private String liveName; // 直播间名称
private Integer liveId; // 直播间 id
private Integer channelId; // 频道 id
private Integer classId; // 班级 ID
private String sourceName; // 班级或频道名称
private Integer platform; // 1 app 2 h5
private Integer devicePlatform; // 1 pc 2 手机
private String demo; // 备用字段
private Integer from; // 1直播间 2crm
private Integer teacherJwcode; // 讲师标识
private String teacherName; // 讲师名字
private String oaAccount; // 班主任标识
private String oaName; // 班主任名字
private String anchorMark; // 号主标识
private String anchorName; // 号主名称
private String transactionId; // 支付成功第三方交易号
private String transactionNo; // 备用交易号
private Integer productVersion; // 1半年 2终免
private Integer autoUpdate; // 是否同步过 0否 1是
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime createdAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime updatedAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime tradeTime; // 支付成功时间
}

63
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeCart.java

@ -0,0 +1,63 @@
package com.example.demo.domain.vo.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @program: gold-java
* @ClassName BeanConsumeCart
* @description:
* @author: Ethan
* @create: 202511-20 10:28
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeCart {
private Integer id;
private String nickname; // 姓名
private String phone; // 电话
private Integer jwcode; // 精网号
private Integer productId; // 产品 ID
private BigDecimal totalMoney; // 应付金额
private BigDecimal money; // 实际付款金额
private BigDecimal coupon; // 优惠券金额
private String tradeNo; // 订单号
private Integer payWay; // 1微信 2支付宝 3金币 4金豆
private Integer payType; // 1一次支付 2多次支付
private String payAccount; // 收款账户
private Integer pid; // 关联的订单
private Integer type; // 1全款 2定金 3尾款
private Integer state; // 1新订单 2成功支付 3取消支付 4退款 5多笔支付支付进行中
private String liveName; // 直播间名称
private Integer liveId; // 直播间 id
private Integer channelId; // 频道 id
private Integer classId; // 班级 ID
private String sourceName; // 班级或频道名称
private Integer platform; // 1 app 2 h5
private Integer devicePlatform; // 1 pc 2 手机
private String demo; // 备用字段
private Integer from; // 1直播间 2crm
private Integer teacherJwcode; // 讲师标识
private String teacherName; // 讲师名字
private String oaAccount; // 班主任标识
private String oaName; // 班主任名字
private String anchorMark; // 号主标识
private String anchorName; // 号主名称
private String transactionId; // 支付成功第三方交易号
private String transactionNo; // 备用交易号
private Integer productVersion; // 1半年 2终免
private Integer autoUpdate; // 是否同步过 0否 1是
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime createdAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime updatedAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime tradeTime; // 支付成功时间
}

34
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeCartVo.java

@ -0,0 +1,34 @@
package com.example.demo.domain.vo.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @program: gold-java
* @ClassName BeanConsumeCartVo
* @description:
* @author: Ethan
* @create: 202511-20 15:41
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeCartVo {
private Integer id;
private String nickname; // 姓名
private Integer jwcode; // 精网号
private Integer productId; // 产品 ID
private String productName; //产品名称
private String market; //用户地区
private BigDecimal totalMoney; // 应付金额
private String liveName; // 直播间名称
private String sourceName; // 班级或频道名称
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime tradeTime; // 支付成功时间
}

56
src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java

@ -1,6 +1,7 @@
package com.example.demo.domain.vo.cash;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -23,31 +24,52 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
public class CashRecordDTO{
@ExcelIgnore
private String activity;// 活动
@ExcelProperty("商品名称")
private String goodsName;// 商品名称
@ExcelProperty("商品数量")
private Integer goodsNum;// 商品数量
@ExcelProperty("商品单位")
private String numUnit;// 商品单位
@ExcelIgnore
private BigDecimal gold;//永久金币
@ExcelIgnore
private BigDecimal free;//免费金币
@ExcelIgnore
private String paymentCurrency;// 支付币种
@ExcelIgnore
private BigDecimal paymentAmount;// 支付金额
@ExcelIgnore
private String receivedCurrency;// 收款币种
@ExcelIgnore
private BigDecimal receivedAmount;// 收款金额
@ExcelIgnore
private BigDecimal handlingCharge;// 手续费
@ExcelIgnore
private String payBankCode;// 付款银行
@ExcelIgnore
private String payType;// 支付方式
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelIgnore
private LocalDateTime payTime;// 付款时间
@ExcelIgnore
private String receivedMarket;// 收款地区
@ExcelIgnore
private String payVoucher;// 支付凭证
@ExcelIgnore
private String payRemark;// 支付备注
//提交人
@ExcelIgnore
private String paySubmitter;
//提交人
@ExcelProperty("提交人")
private String Submitter;
//审核人
@ExcelIgnore
private String audit;
//到账日期
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private LocalDateTime receivedTime;
@ExcelIgnore
@ -59,42 +81,51 @@ public class CashRecordDTO{
/**
* 序号
*/
@ExcelProperty("序号")
private Integer id;
/**
* 精网号
*/
@ExcelProperty("精网号")
private Integer jwcode;
/**
* 姓名
*/
@ExcelProperty("姓名")
private String userName;
@ExcelIgnore
private String name;
/**
* 所属地区
*/
@ExcelProperty("所属地区")
private Integer market;
/**
* 金币订单号
*/
@ExcelIgnore
private String orderCode;
/**
* 银行流水订单号
*/
@ExcelIgnore
private String bankCode;
/**
* 永久金币
*/
@ExcelIgnore
private BigDecimal permanentGold;
/**
* 免费金币
*/
@ExcelIgnore
private BigDecimal freeGold;
/**
@ -115,6 +146,7 @@ public class CashRecordDTO{
30总部财务待审核32总部财务驳回
40执行人待处理41执行人已处理退款结束
*/
@ExcelProperty("订单状态")
private Integer status;
/**
@ -126,85 +158,101 @@ public class CashRecordDTO{
/**
* 提交人地区
*/
@ExcelIgnore
private String submitterMarket;
/**
* 转账凭证
*/
@ExcelIgnore
private String voucher;
/**
* 备注
*/
@ExcelProperty("备注")
private String remark;
/**
* 驳回理由
*/
@ExcelIgnore
private String rejectReason;
/**
* 退款备注理由,客服填写
*/
@ExcelProperty("退款备注")
private String refundReason;
/**
* 退款方式0全额/1部分
*/
@ExcelProperty("退款方式")
private Integer refundModel;
/**
* 退款执行人OA号
*/
@ExcelIgnore
private Integer executor;
/**
* 退款途径
*/
@ExcelIgnore
private String refundChannels;
/**
* 退款日期到天
*/
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date refundTime;
/**
* 退款备注执行人填写
*/
@ExcelIgnore
private String refundRemark;
/**
* 退款截图
*/
@ExcelIgnore
private String refundVoucher;
/**
* 创建时间
*/
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
/**
* 更新时间
*/
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime;
/**
* 审核时间
*/
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime;
/**
* 退款币种
*/
@ExcelIgnore
private String refundCurrency;
/**
* 退款金额
*/
@ExcelIgnore
private String refundAmount;
/**
@ -218,9 +266,13 @@ public class CashRecordDTO{
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@ExcelIgnore
private String submitterName;
@ExcelIgnore
private String auditName;
@ExcelIgnore
private String executorName;
@ExcelIgnore
private String marketName;
@ExcelIgnore
private List<Integer> statuses;
@ -229,9 +281,13 @@ public class CashRecordDTO{
@ExcelIgnore
private String currentTaskId; // 当前任务ID
@ExcelIgnore
private String areaServise;
@ExcelIgnore
private String areaFinance;
@ExcelIgnore
private String areaCharge;
@ExcelIgnore
private String headFinance;
@ExcelIgnore
private String sortField;

1
src/main/java/com/example/demo/domain/vo/cash/CashRecordDone.java

@ -118,6 +118,7 @@ public class CashRecordDone {
private Date sTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date eTime; // 结束时间
private Integer relatedId;
}

1
src/main/java/com/example/demo/domain/vo/cash/CashRecordRefund.java

@ -201,5 +201,6 @@ public class CashRecordRefund {
private Date eTime; // 结束时间
private Integer partRefundGold;
private Integer partRefundFree;
private BigDecimal handlingCharge;
}

2
src/main/java/com/example/demo/domain/vo/cash/LhlAudit.java

@ -20,5 +20,5 @@ public class LhlAudit {
private String areaServise;//
private String areaFinance;
private String areaCharge;
private String headFinace;
private String headFinance;
}

1
src/main/java/com/example/demo/domain/vo/coin/Page.java

@ -36,6 +36,7 @@ public class Page {
private BeanConsumeLive beanConsumeLive; //直播金豆消费
private BeanConsumeFan beanConsumeFan; //铁粉金豆消费
private BeanConsumeArticle beanConsumeArticle; //文章金豆消费
private BeanConsumeCart beanConsumeCart; //小黄车金豆消费
private BeanSystemRechargeInfo beanSystemRechargeInfo; //金豆充值信息
private BeanOnlineRechargeInfo beanOnlineRechargeInfo; //金豆充值信息
private BeanConsumeGold beanConsumeGold; //金豆消费合计数

2
src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java

@ -25,6 +25,8 @@ public interface BeanConsumeMapper {
List<BeanConsumeFan> selectFanBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan);
//筛选查询文章消费
List<BeanConsumeArticle> selectArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle);
//筛选查询小黄车消费
List<BeanConsumeCartVo> selectCartBy(BeanConsumeCart beanConsumeCart);
//查询金豆直播消费金额
BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//查询金豆铁粉消费金额

2
src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java

@ -21,7 +21,7 @@ import java.util.Set;
**/
@Mapper
public interface CashCollectionMapper {
//ceshi
//根据jwcode获取所属地区
String getMarketByJwcode(@Param("jwcode") Integer jwcode);
//新增收款订单

2
src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java

@ -34,7 +34,7 @@ public interface CashRefundMapper {
//获取各阶段审核人
LhlAudit getAudit(Integer id);
List<CashRecordDTO> exSelect(CashRecordDTO cashRecordDTO);
//获取审核人
List<LhlAudit> getAuditBatch(Set<Integer> auditIds);
//根据id查订单信息
CashRecordDTO selectById(Integer id);

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

@ -49,6 +49,8 @@ public interface AuditMapper {
String getName(Integer auditId);
//更新首充日期
void updateFirstRecharge(Integer jwcode);
//获取审核人id对应人名
List<Admin> getNamesByIds(Set<Integer> submitterIds);
List<Admin> getNamesByJwcodes(Set<Integer> executorIds);
}

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

@ -18,5 +18,6 @@ public interface MarketMapper {
Market getMarketIdDao(String country);
Market getMarketIdBytype(String market);
String getMarketById(String market);
//获取市场id
List<Market> getMarketByIds(@Param("marketIds") Set<Integer> marketIds);
}

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

@ -31,6 +31,8 @@ public interface RechargeActivityCenterMapper {
// 更新活动
void updateActivity(RechargeActivity activity);
// 更新活动地区
void updateActivityArea(RechargeActivity activity);
// 删除活动
void deleteActivity(RechargeActivity activity);

4
src/main/java/com/example/demo/service/bean/BeanConsumeService.java

@ -36,6 +36,6 @@ public interface BeanConsumeService {
//获取直播频道
List<String> getLiveChannel();
//筛选查询小黄车消费
Object selectCartBy(Integer pageNum, Integer pageSize, BeanConsumeCart beanConsumeCart);
}

9
src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java

@ -172,7 +172,13 @@ public class BeanConsumeServiceImpl implements BeanConsumeService {
List<BeanConsumeArticle> beanConsumeArticles = beanConsumeMapper.selectArticleBy(beanConsumeArticle);
return new PageInfo<>(beanConsumeArticles);
}
//筛选查询小黄车消费
@Override
public Object selectCartBy(Integer pageNum, Integer pageSize, BeanConsumeCart beanConsumeCart) {
PageHelper.startPage(pageNum, pageSize);
List<BeanConsumeCartVo> beanConsumeCarts = beanConsumeMapper.selectCartBy(beanConsumeCart);
return new PageInfo<>(beanConsumeCarts);
}
@Override
public BeanConsumeGold sumConsumeGold(Page page) {
BeanConsumeGold gold = new BeanConsumeGold();
@ -203,4 +209,5 @@ public class BeanConsumeServiceImpl implements BeanConsumeService {
}
}

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

@ -61,13 +61,13 @@ public class CashCollectionServiceImpl implements CashCollectionService {
if (cashCollection.getJwcode() < 10000000 || cashCollection.getJwcode() > 99999999) {
throw new IllegalArgumentException("精网号必须为8位");
}
if (cashCollection.getName() == null) {
if (cashCollection.getName() == null || cashCollection.getName().isEmpty()){
throw new IllegalArgumentException("客户姓名不能为空");
}
if (cashCollection.getActivity() == null) {
if (cashCollection.getActivity() == null || cashCollection.getActivity().isEmpty()) {
throw new IllegalArgumentException("活动不能为空");
}
if (cashCollection.getGoodsName() == null) {
if (cashCollection.getGoodsName() == null|| cashCollection.getGoodsName().isEmpty()) {
throw new IllegalArgumentException("商品名不能为空");
}
if (cashCollection.getGoodsName().equals("金币充值")) {
@ -79,20 +79,20 @@ public class CashCollectionServiceImpl implements CashCollectionService {
if (cashCollection.getGoodNum() == 0) {
throw new IllegalArgumentException("产品数量不能为空");
}
if (cashCollection.getNumUnit() == null) {
if (cashCollection.getNumUnit() == null|| cashCollection.getNumUnit().isEmpty()) {
throw new IllegalArgumentException("数量单位不能为空");
}
}
if (cashCollection.getPaymentCurrency() == null) {
if (cashCollection.getPaymentCurrency() == null || cashCollection.getPaymentCurrency().isEmpty()) {
throw new IllegalArgumentException("支付币种不能为空");
}
if (cashCollection.getPaymentAmount() == null || cashCollection.getPaymentAmount().compareTo(BigDecimal.ZERO) == 0) {
throw new IllegalArgumentException("支付金额不能为空");
}
if (cashCollection.getPayType() == null) {
if (cashCollection.getPayType() == null|| cashCollection.getPayType().isEmpty()) {
throw new IllegalArgumentException("支付方式不能为空");
}
if (cashCollection.getReceivedMarket() == null) {
if (cashCollection.getReceivedMarket() == null||cashCollection.getReceivedMarket().isEmpty()) {
throw new IllegalArgumentException("到账地区不能为空");
}
if (cashCollection.getPayTime() == null) {
@ -132,8 +132,8 @@ public class CashCollectionServiceImpl implements CashCollectionService {
message.setJwcode(cashRecord.getJwcode());
message.setName(cashRecord.getName());
message.setStatus(cashRecord.getStatus());
message.setDesc(cashRecord.getJwcode()+"用户有条退款订单需审核");
message.setTitle("现金退款--新增退款");
message.setDesc(cashRecord.getJwcode()+"用户有条款订单需审核");
message.setTitle("现金收款--新增收款");
message.setType(1);
message.setTypeId(cashRecord.getId());
message.setMarket(Integer.valueOf(cashRecord.getMarket()));
@ -260,12 +260,13 @@ public class CashCollectionServiceImpl implements CashCollectionService {
if (cashCollection.getStatus() == 0 || cashCollection.getStatus() == 2) {
cashCollection.setReceivedMarket(null);
}
//状态为已通过和Link通过时按收款地区筛选
if (cashCollection.getStatus() == 13) {
cashCollection.setSubmitterMarket(null);
}
//状态为已通过和Link通过时满足收款地区或提交人地区即可
/* if (cashCollection.getStatus() == 13) {
cashCollection.setSubmitterId(null);
//状态为46已通过和已退款满足收款地区或提交人地区即可
}*/
//状态为13 或46已通过或已完成和已退款满足收款地区或提交人地区即可
cashCollection.setSubmitterId(null);
}
if (cashCollection.getCashRoleId() == 0) {

330
src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

@ -1,15 +1,16 @@
package com.example.demo.serviceImpl.cash;
import com.example.demo.domain.entity.Admin;
import com.example.demo.Util.BusinessException;
import com.example.demo.Util.GoldTistV2;
import com.example.demo.config.RabbitMQConfig;
import com.example.demo.domain.entity.Market;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.cash.CashRecordDTO;
import com.example.demo.domain.vo.cash.CashRecordDone;
import com.example.demo.domain.vo.cash.CashRecordRefund;
import com.example.demo.domain.vo.cash.CashRefundMessage;
import com.example.demo.domain.vo.cash.*;
import com.example.demo.domain.vo.coin.Messages;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.exception.SystemException;
import com.example.demo.mapper.cash.CashCollectionMapper;
import com.example.demo.mapper.cash.CashRefundMapper;
import com.example.demo.mapper.coin.AuditMapper;
import com.example.demo.mapper.coin.MarketMapper;
@ -18,31 +19,29 @@ import com.example.demo.mapper.coin.RefundMapper;
import com.example.demo.service.cash.RefundService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static org.apache.commons.lang3.StringUtils.substring;
/**
* @program: GOLD
* @ClassName CashRefundServiceImpl
* @description: 处理退款相关业务逻辑
* @description:
* @author: huangqizhen
* @create: 202509-28 15:02
* @Version 1.0
**/
@Service
@Transactional
public class CashRefundServiceImpl implements RefundService {
@Autowired
@ -57,16 +56,116 @@ public class CashRefundServiceImpl implements RefundService {
private RabbitTemplate rabbitTemplate;
@Autowired
private OperationLogMapper operationLogMapper;
@Autowired
private CashCollectionMapper cashCollectionMapper;
@Override
public PageInfo<CashRecordDTO> select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.select(cashRecordDTO);
if (list.isEmpty()) {
return new PageInfo<>(list);
}
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
Set<Integer> executorIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
if (item.getExecutor() != null) executorIds.add(item.getExecutor());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
Map<String, String> executorNameMap = auditMapper.getNamesByJwcodes(executorIds)
.stream().collect(Collectors.toMap(Admin::getAccount, Admin::getAdminName));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
String executorName = executorNameMap.get(String.valueOf(item.getExecutor()));
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
item.setExecutorName(executorName != null ? executorName : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinance());
}
});
return new PageInfo<>(list);
}
// 添加退款订单
private void processCashCollection(CashRecordDTO item, CashCollection cashCollection) {
// 设置默认值
Integer freeGold = cashCollection.getFreeGold() != null ? cashCollection.getFreeGold() : 0;
Integer permanentGold = cashCollection.getPermanentGold() != null ? cashCollection.getPermanentGold() : 0;
BigDecimal free = new BigDecimal(freeGold).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
BigDecimal permanent = new BigDecimal(permanentGold).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
item.setGold(permanent);
item.setFree(free);
item.setActivity(cashCollection.getActivity());
item.setPaymentCurrency(cashCollection.getPaymentCurrency());
if(cashCollection.getPaymentCurrency() != null){
item.setPaymentAmount(cashCollection.getPaymentAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));}
else item.setPaymentAmount(cashCollection.getPaymentAmount());
item.setReceivedCurrency(cashCollection.getReceivedCurrency());
if (cashCollection.getReceivedCurrency() != null){
item.setReceivedAmount(cashCollection.getReceivedAmount().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));}
else item.setReceivedAmount(cashCollection.getReceivedAmount());
item.setPayType(cashCollection.getPayType());
item.setPayTime(cashCollection.getPayTime());
item.setPayBankCode(cashCollection.getBankCode());
item.setPaySubmitter(cashCollection.getSubmitterName());
item.setAudit(cashCollection.getAuditName());
item.setReceivedTime(cashCollection.getReceivedTime());
item.setPayVoucher(cashCollection.getVoucher());
item.setPayRemark(cashCollection.getRemark());
item.setHandlingCharge(cashCollection.getHandlingCharge().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
// 处理金币金额
if (item.getPermanentGold() != null) {
item.setPermanentGold(item.getPermanentGold().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
}
if (item.getFreeGold() != null) {
item.setFreeGold(item.getFreeGold().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
}
}
@Override
public int add(CashRecordRefund cashRecordRefund) throws Exception {
if(cashRecordRefund.getJwcode()==null){
@ -78,12 +177,15 @@ public class CashRefundServiceImpl implements RefundService {
if(cashRecordRefund.getRefundReason()== null){
throw new Exception("请填写退款理由") ;
}
if (cashRecordRefund.getHandlingCharge()== null){
throw new Exception("请先填写手续费") ;
}
CashRecordDone cashRecordDonetwo = new CashRecordDone();
cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise());
cashRefundMapper.addAudit(cashRecordDonetwo);
cashRecordRefund.setAuditId(cashRecordDonetwo.getId());
// cashRecordRefund.setStatus(10);
cashRecordRefund.setStatus(10);
//生成订单号后半部分
String orderNumber = cashRecordRefund.getOrderCode();
//构建订单信息
@ -91,7 +193,7 @@ public class CashRefundServiceImpl implements RefundService {
cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket()))));
cashRefundMapper.insert(cashRecordRefund);
CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setId(cashRecordRefund.getId());
cashRecordDone1.setId(cashRecordRefund.getOriginalOrderId());
cashRecordDone1.setStatus(6);
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null)
cashRefundMapper.updateStatus(cashRecordDone1);
@ -110,9 +212,9 @@ public class CashRefundServiceImpl implements RefundService {
rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message);
return Result.success("提交成功").getCode();
}
// 更新退款订单信息
@Override
public int update(CashRecordDone cashRecordDone) throws Exception {
if (cashRecordDone.getJwcode()== null) {
@ -134,13 +236,11 @@ public class CashRefundServiceImpl implements RefundService {
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
}
// 撤回退款订单
@Override
public int withdraw(CashRecordDone cashRecordDone) {
return cashRefundMapper.withdraw(cashRecordDone.getId());
}
// 审核退款订单
@Override
public int review(CashRecordDone cashRecordDone) throws Exception {
if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){
@ -148,12 +248,12 @@ public class CashRefundServiceImpl implements RefundService {
throw new RuntimeException("未输入订单号");
}
CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setId(cashRecordDone.getRelatedId());
cashRecordDone1.setOrderCode(cashRecordDone.getOrderCode().substring(2));
cashRecordDone1.setStatus(4);
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
cashRefundMapper.updateStatus(cashRecordDone1);
}
}
}}
cashRefundMapper.updateAudit(cashRecordDone);
int result = cashRefundMapper.review(cashRecordDone);
CashRecordDTO cashRecordDTO = cashRefundMapper.selectById(cashRecordDone.getId());
@ -164,7 +264,7 @@ public class CashRefundServiceImpl implements RefundService {
message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核");
message.setTitle("现金退款--新增退款");
message.setTitle("现金退款--当地退款审核");
message.setType(1);
message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket());
@ -177,7 +277,6 @@ public class CashRefundServiceImpl implements RefundService {
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
}
// 执行退款操作
@Override
public int executor(CashRecordDone cashRecordDone) throws Exception {
if(cashRecordDone.getRefundVoucher()== null){
@ -199,17 +298,14 @@ public class CashRefundServiceImpl implements RefundService {
throw new RuntimeException("未输入退款金额");
}
int result = cashRefundMapper.executor(cashRecordDone);
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
}
// 更新退款订单状态
@Override
public int updateStatus(CashRecordDone cashRecordDone) {
return cashRefundMapper.updateStatus(cashRecordDone);
}
// 最终审核退款订单
@Override
public int finalreview(CashRecordDone cashRecordDone) {
if(cashRecordDone.getPermanentGold()== null){
@ -224,8 +320,7 @@ public class CashRefundServiceImpl implements RefundService {
cashRecordDone1.setStatus(4);
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null){
cashRefundMapper.updateStatus(cashRecordDone1);
}
}
}}
if (cashRecordDone.getGoodsName() != null &&cashRecordDone.getStatus() ==40 &&
(cashRecordDone.getGoodsName().equals("金币充值") ||
cashRecordDone.getGoodsName().contains("金币充值"))) {
@ -266,8 +361,7 @@ public class CashRefundServiceImpl implements RefundService {
auditMapper.updateUserGold(user);
GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 58, //退款免费+永久金币-充值
(double) (userGoldRecord.getFreeDecember()+userGoldRecord.getFreeJune()+userGoldRecord.getPermanentGold() ) /100,
userGoldRecord.getRemark(), (double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");
}
userGoldRecord.getRemark(),(double) userGoldRecord.getPermanentGold() / 100, auditName, "退款金币充值");}
cashRefundMapper.updateAudit(cashRecordDone);
int result = cashRefundMapper.review(cashRecordDone);
@ -279,7 +373,7 @@ public class CashRefundServiceImpl implements RefundService {
message.setName(cashRecordDTO.getName());
message.setStatus(cashRecordDTO.getStatus());
message.setDesc(cashRecordDTO.getJwcode()+"用户有条退款订单需审核");
message.setTitle("现金退款--新增退款");
message.setTitle("现金退款--执行人退款提交");
message.setType(1);
message.setTypeId(cashRecordDTO.getId());
message.setMarket(cashRecordDTO.getMarket());
@ -291,51 +385,169 @@ public class CashRefundServiceImpl implements RefundService {
return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();
}
// 辅助方法根据状态码获取状态描述
private String getStatusDescription(Integer status) {
switch (status) {
case 10:
return "地区财务待审核";
case 11:
return "地区财务手动撤回待编辑提交";
case 12:
return "地区财务驳回";
case 20:
return "地区负责人待审核";
case 22:
return "地区负责人驳回";
case 30:
return "总部财务待审核";
case 32:
return "总部财务驳回";
case 40:
return "执行人待处理";
case 41:
return "执行人已处理,退款结束";
default:
return "未知状态";
}
}
// 财务查询退款订单列表
@Override
public PageInfo<CashRecordDTO> financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.financeSelect(cashRecordDTO);
if (list.isEmpty()) {
return new PageInfo<>(list);
}
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
Set<Integer> executorIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
if (item.getExecutor() != null) executorIds.add(item.getExecutor());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
Map<String, String> executorNameMap = auditMapper.getNamesByJwcodes(executorIds)
.stream().collect(Collectors.toMap(Admin::getAccount, Admin::getAdminName));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
String executorName = executorNameMap.get(String.valueOf(item.getExecutor()));
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
item.setExecutorName(executorName != null ? executorName : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinance());
}
});
return new PageInfo<>(list);
}
@Override
public PageInfo<CashRecordDTO> exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) {
PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashRecordDTO> list = cashRefundMapper.exSelect(cashRecordDTO);
System.out.println( list);
if (list.isEmpty()) {
return new PageInfo<>(list);
}
// 批量收集ID
Set<Integer> relatedIds = new HashSet<>();
Set<Integer> marketIds = new HashSet<>();
Set<Integer> submitterIds = new HashSet<>();
Set<Integer> auditIds = new HashSet<>();
Set<Integer> executorIds = new HashSet<>();
list.forEach(item -> {
if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId());
if (item.getMarket() != null) marketIds.add(item.getMarket());
if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId());
if (item.getAuditId() != null) auditIds.add(item.getAuditId());
if (item.getExecutor() != null) executorIds.add(item.getExecutor());
});
// 批量查询
Map<Integer, CashCollection> cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds)
.stream().collect(Collectors.toMap(CashCollection::getId, Function.identity()));
Map<Integer, String> marketNameMap = marketMapper.getMarketByIds(marketIds)
.stream().collect(Collectors.toMap(Market::getId, Market::getName));
Map<Integer, String> submitterNameMap = auditMapper.getNamesByIds(submitterIds)
.stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName));
Map<Integer, LhlAudit> auditMap = cashRefundMapper.getAuditBatch(auditIds)
.stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity()));
Map<String, String> executorNameMap = auditMapper.getNamesByJwcodes(executorIds)
.stream().collect(Collectors.toMap(Admin::getAccount, Admin::getAdminName));
// 处理数据
list.forEach(item -> {
CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId());
if (cashCollection != null) {
processCashCollection(item, cashCollection);
}
String marketName = marketNameMap.get(item.getMarket());
String submitter = submitterNameMap.get(item.getSubmitterId());
LhlAudit lhlAudit = auditMap.get(item.getAuditId());
String executorName = executorNameMap.get(String.valueOf(item.getExecutor()));
item.setMarketName(marketName != null ? marketName : "");
item.setSubmitter(submitter != null ? submitter : "");
item.setExecutorName(executorName != null ? executorName : "");
if (lhlAudit != null) {
item.setAreaServise(lhlAudit.getAreaServise());
item.setAreaFinance(lhlAudit.getAreaFinance());
item.setAreaCharge(lhlAudit.getAreaCharge());
item.setHeadFinance(lhlAudit.getHeadFinance());
}
});
return new PageInfo<>(list);
}
@Override
public void addOnline(CashRecordRefund cashRecordRefund) {
if(cashRecordRefund.getJwcode()==null){
throw new BusinessException("未输入精网号") ;
}
if(cashRecordRefund.getRefundModel()== null){
throw new BusinessException("请填充退款类型") ;
}
if(cashRecordRefund.getRefundReason()== null){
throw new BusinessException("请填写退款理由") ;
}
CashRecordDone cashRecordDonetwo = new CashRecordDone();
cashRecordDonetwo.setAreaServise(cashRecordRefund.getAreaServise());
cashRefundMapper.addAudit(cashRecordDonetwo);
cashRecordRefund.setAuditId(cashRecordDonetwo.getId());
cashRecordRefund.setStatus(20);
//生成订单号后半部分
String orderNumber = cashRecordRefund.getOrderCode();
//构建订单信息
cashRecordRefund.setOrderCode("TK" + orderNumber); //订单号
cashRecordRefund.setMarket(String.valueOf(Integer.valueOf(marketMapper.getMarketId(cashRecordRefund.getMarket()))));
cashRefundMapper.insert(cashRecordRefund);
CashRecordDone cashRecordDone1 = new CashRecordDone();
cashRecordDone1.setId(cashRecordRefund.getId());
cashRecordDone1.setStatus(6);
if (cashRecordDone1.getId()!=null||cashRecordDone1.getOrderCode()!= null)
cashRefundMapper.updateStatus(cashRecordDone1);
else throw new SystemException("提交失败") ;
}
}

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

@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
/**
@ -28,7 +29,7 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
@Autowired
private RechargeActivityCenterMapper rechargeActivityCenterMapper;
private static final String ACTIVITY_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:\"'()《》【】——~,.:;!'()\\[\\]-_&+=]{1,50}$";
private static final String ACTIVITY_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:\"'()《》【】——~,.:;!'()\\[\\]-_&+=]{1,100}$";
private static final Pattern ACTIVITY_NAME_PATTERN = Pattern.compile(ACTIVITY_NAME_REGEX);
// 根据ID查询活动
@Override
@ -43,8 +44,8 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
@Override
public void addActivity(RechargeActivity activity) {
if (activity.getActivityName().length() > 50) {
throw new IllegalArgumentException("活动名称不能超过50个字符");
if (activity.getActivityName().length() > 100) {
throw new IllegalArgumentException("活动名称不能超过100个字符");
}
RechargeActivity activityByName = rechargeActivityCenterMapper.queryActivityByName(activity);
if (activityByName != null) {
@ -95,6 +96,9 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
activity.setStatus("1");
}
rechargeActivityCenterMapper.updateActivity(activity);
if(Objects.equals(activity.getBusinessBelong(), "客户归属地")){
rechargeActivityCenterMapper.updateActivityArea(activity);
}
}
@Override

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

@ -62,23 +62,14 @@
<update id="complete">
UPDATE cash_record_collection
<set>
<if test="cashRecordCollection.handlingCharge != null ">
handling_charge = #{cashRecordCollection.handlingCharge},
</if>
<if test="cashRecordCollection.receivedCurrency != null and cashRecordCollection.receivedCurrency != ''">
received_currency = #{cashRecordCollection.receivedCurrency},
</if>
<if test="cashRecordCollection.receivedAmount != null and cashRecordCollection.receivedAmount != ''">
<if test="cashRecordCollection.receivedAmount != 0">
received_amount = #{cashRecordCollection.receivedAmount},
</if>
<if test="cashRecordCollection.receivedTime != null">
received_time = #{cashRecordCollection.receivedTime},
</if>
<if test="cashRecordCollection.paymentCurrency != null and cashRecordCollection.paymentCurrency != ''">
payment_currency = #{cashRecordCollection.paymentCurrency},
</if>
<!-- 关键:null 就不拼这一列 -->
<if test="cashRecordCollection.paymentAmount != null">
<if test="cashRecordCollection.paymentAmount != 0">
payment_amount = #{cashRecordCollection.paymentAmount},
</if>
<!-- 只有 这些字段全部非空才更新状态 -->
@ -154,7 +145,7 @@
</if>
<!-- 其他原有条件不变 -->
<choose>
<when test="cashCollection.status != null and cashCollection.status == 46">
<when test="cashCollection.status != null and (cashCollection.status == 46||cashCollection.status == 13)">
<if test="cashCollection.receivedMarket != null and cashCollection.receivedMarket != ''">
AND (cr.received_market = #{cashCollection.receivedMarket}
<if test="cashCollection.submitterMarket != null and cashCollection.submitterMarket != ''">
@ -254,20 +245,25 @@
left join recharge_activity ra on ra.id = cr.activity
where cr.id=#{id}
</select>
<!--根据id查询收款订单-->
<select id="selectBatchIds" resultType="com.example.demo.domain.vo.cash.CashCollection">
select
cr.id, cr.jwcode, cr.name, cr.market,
cr.order_code, cr.bank_code, cr.goods_name, cr.good_num, cr.num_unit, cr.permanent_gold, cr.free_gold,
cr.payment_currency, cr.payment_amount, cr.received_currency, cr.received_amount, cr.handling_charge,
cr.payment_amount, cr.received_amount, cr.handling_charge,
cr.pay_type, cr.received_market, cr.pay_time, cr.received_time, cr.audit_id, cr.status, cr.submitter_id,
cr.submitter_market, cr.voucher, cr.remark, cr.audit_time,
a1.admin_name as submitterName,
a2.admin_name as auditName,
ra.activity_name as activity
ra.activity_name as activity,
r1.rate_name as paymentCurrency,
r2.rate_name as receivedCurrency
from cash_record_collection cr
left join admin a1 on cr.submitter_id = a1.id
left join admin a2 on cr.audit_id = a2.id
left join recharge_activity ra on ra.id = cr.activity
left join rate r1 on r1.id = cr.payment_currency
left join rate r2 on r2.id = cr.received_currency
where 1 = 0
<if test="relatedIds != null and relatedIds.size() > 0">
OR cr.id IN

10
src/main/resources/cashMapper/CashRefundMapper.xml

@ -14,7 +14,6 @@
free_gold,
submitter_id,
submitter_market,
voucher,
remark,
reject_reason,
refund_reason,
@ -39,7 +38,6 @@
#{partRefundFree},
#{submitterId},
#{submitterMarket},
#{voucher},
#{remark},
#{rejectReason},
#{refundReason},
@ -232,6 +230,7 @@
crc.num_unit,
crr.refund_model,
crr.submitter_id,
crr.executor,
crr.refund_reason,
crr.remark,
crr.status,
@ -319,8 +318,9 @@
crr.refund_currency,
crr.refund_amount,
crr.refund_channels,
crr.voucher,
crr.refund_voucher,
crr.refund_time,
crr.executor,
crr.status,
crr.audit_id,
crr.submitter_id,
@ -371,7 +371,7 @@
and crc.`refund_time` BETWEEN #{startTime} AND #{endTime}
</if>
<if test=" submitterId!= null">
and crr.submitter_id = #{submitterId}
and crr.executor = #{executor}
</if>
</where>
<choose>
@ -383,7 +383,7 @@
</otherwise>
</choose>
</select>
<!-- 批量获取审核人信息 -->
<select id="getAuditBatch" resultType="com.example.demo.domain.vo.cash.LhlAudit">
SELECT *
FROM lhl_audit

7
src/main/resources/jindouMapper/BeanConsumeMapper.xml

@ -329,6 +329,12 @@
</choose>
) as t
</select>
<!--筛选查询小黄车消费数据-->
<select id="selectCartBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeCartVo">
select
co.nickname,co.jwcode,m.name AS market,co.product_id,co.total_money,co.live_name,co.source_name,co.trade_time
</select>
<!--获取直播礼物-->
<select id="getLiveGift" resultType="java.lang.String">
@ -354,5 +360,4 @@
AND content IS NOT NULL AND pay_type in (1,2,3,4,5)
</select>
</mapper>

34
src/main/resources/mapper/AuditMapper.xml

@ -187,4 +187,38 @@
<update id="updateFirstRecharge">
update user set first_recharge = now() where jwcode = #{jwcode} and first_recharge is null
</update>
<!--根据订单号查订单-->
<select id="selectAllOrderByOrderCode" resultType="com.example.demo.domain.entity.UserGoldRecord">
select * from user_gold_record where order_code = #{orderCode} and flag=1
ORDER BY create_time DESC
limit 1
</select>
<select id="getAdminMarket" resultType="java.lang.String">
</select>
<!--根据订单号查未审核订单-->
<select id="selectOrderByOrderCode" resultType="com.example.demo.domain.entity.UserGoldRecord">
select * from user_gold_record
where order_code = #{orderCode} and audit_status = 0
and flag=1
ORDER BY create_time DESC
limit 1
</select>
<select id="getNamesByJwcodes" resultType="com.example.demo.domain.entity.Admin">
select account, admin_name from admin
<where>
<if test="executorIds != null and executorIds.size() > 0">
account in
<foreach collection="executorIds" item="account" open="(" separator="," close=")">
#{account}
</foreach>
</if>
<if test="executorIds == null or executorIds.size() == 0">
1=0
</if>
</where>
</select>
</mapper>

1
src/main/resources/mapper/MarketMapper.xml

@ -38,6 +38,7 @@
<select id="getMarketById" resultType="java.lang.String">
select name from market where id=#{market}
</select>
<!-- 根据ID列表查询市场名称 -->
<select id="getMarketByIds" resultType="com.example.demo.domain.entity.Market">
select id, name from market
where 1 = 0

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

@ -98,18 +98,27 @@
<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="activityName != null and activityName != ''">activity_name = #{activityName},</if>
<if test="businessBelong != null and businessBelong != ''">business_belong = #{businessBelong},</if>
<if test="area != null and area != ''">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>
<if test="status != null and status != ''">status = #{status},</if>
<if test="creator != null and creator != ''">creator = #{creator},</if>
update_time = NOW()
</set>
WHERE id = #{id}
</update>
<!-- 更新活动 -->
<update id="updateActivityArea" parameterType="com.example.demo.domain.vo.coin.RechargeActivity">
UPDATE recharge_activity
<set>
area = null
</set>
WHERE id = #{id}
</update>
<!-- 删除活动 -->
<!-- 删除活动 -->
<update id="deleteActivity" parameterType="com.example.demo.domain.vo.coin.RechargeActivity">

Loading…
Cancel
Save