diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java index f5d6b54..3d0a779 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeTypeEnum.java @@ -2,20 +2,10 @@ package com.bonus.canteen.core.account.constants; public enum AccTradeTypeEnum { RECHARGE(10, "充值"), - RECHARGE_GIFT(11, "赠送"), - REVOKE_RECHARGE_GIFT(12, "撤销赠送"), - REVOKE_RECHARGE(40, "撤销充值"), SUBSIDY(20, "补贴"), - REVOKE_SUBSIDY(50, "撤销补贴"), CLEAR(100, "清空"), - LUCK_MONEY(140, "红包发放"), WITHDRAW(30, "提现"), - TRANSFER_OUT(60, "转出"), - TRANSFER_IN(70, "转入"), - FREEZE(80, "冻结"), - UN_FREEZE(90, "解冻"), CONSUME(110, "消费"), - CONSUME_REPAIR(120, "消费补扣"), CONSUME_REFUND(130, "消费退款"); private final Integer key; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java index 8414a40..272322d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccInfoDetailsVO.java @@ -68,4 +68,6 @@ public class AccInfoDetailsVO { private BigDecimal frozenWallet; @ApiModelProperty("补贴冻结金额") private BigDecimal frozenSub; + @ApiModelProperty("物理卡号") + private String serialNum; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java index ed93f24..1a25da8 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java @@ -1,5 +1,6 @@ package com.bonus.canteen.core.account.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -29,9 +30,11 @@ public class AccOperationHistoryServiceImpl extends ServiceImpl selectAccOperationHistory(AccOperationQueryParam param) { String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); List operationRecordList = this.baseMapper.queryPageAccOperationRecord(param, encryptedSearchValue); - operationRecordList = operationRecordList.stream().peek(accOperationRecord -> { - accOperationRecord.setPhone(SM4EncryptUtils.sm4Decrypt(accOperationRecord.getPhone())); - }).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(operationRecordList)) { + operationRecordList = operationRecordList.stream().peek(accOperationRecord -> { + accOperationRecord.setPhone(SM4EncryptUtils.sm4Decrypt(accOperationRecord.getPhone())); + }).collect(Collectors.toList()); + } return operationRecordList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java index ceef5c4..b558f96 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java @@ -1,5 +1,6 @@ package com.bonus.canteen.core.account.service.impl; +import cn.hutool.core.collection.CollUtil; import com.bonus.canteen.core.account.constants.AccTradeTypeEnum; import com.bonus.canteen.core.account.domain.AccTrade; import com.bonus.canteen.core.account.domain.bo.TradeAndWallerInfo; @@ -19,6 +20,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; /** * 账户交易记录Service业务层处理 @@ -136,7 +138,13 @@ public class AccTradeServiceImpl implements IAccTradeService { @Override public List queryAccOperationList(AccWalletOperationQueryParam param) { String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); - return accTradeMapper.queryAccOperationList(param, encryptedSearchValue); + List list = accTradeMapper.queryAccOperationList(param, encryptedSearchValue); + if(CollUtil.isNotEmpty(list)) { + list = list.stream().peek(operation -> { + operation.setPhoneNumber(SM4EncryptUtils.sm4Decrypt(operation.getPhoneNumber())); + }).collect(Collectors.toList()); + } + return list; } @Override diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccReportController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccReportController.java new file mode 100644 index 0000000..8e14cca --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/controller/AccReportController.java @@ -0,0 +1,88 @@ +package com.bonus.canteen.core.report.controller; + +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.service.AccReportService; +import com.bonus.canteen.core.report.service.TradeReportService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +/** + * 交易报表 + * + * @author ruoyi + * @date 2025-04-14 + */ +@Controller +@RequestMapping("/report/acc") +public class AccReportController extends BaseController +{ + @Autowired + private AccReportService accReportService; + + @ApiOperation("查询交易流水") + @PostMapping("/balance") + @ResponseBody + public TableDataInfo balanceList(@RequestBody AccountInfoQueryParam accountInfoQueryParam) + { + startPage(); + List list = accReportService.balanceList(accountInfoQueryParam); + return getDataTable(list); + } + + @ApiOperation("查询账户余额统计") + @PostMapping({"/balance/sum"}) + public AjaxResult queryAccInfoBalanceSum(@RequestBody AccountInfoQueryParam accountInfoQueryParam) { + return AjaxResult.success(this.accReportService.balanceListSum(accountInfoQueryParam)); + } + @ApiOperation("充值方式汇总") + @PostMapping("/recharge") + @ResponseBody + public TableDataInfo rechargeCount(@RequestBody RechargeRecordParam param) + { + startPage(); + List list = accReportService.rechargeCount(param); + return getDataTable(list); + } + + @ApiOperation("取款汇总") + @PostMapping("/withdraw") + @ResponseBody + public TableDataInfo withdrawCount(@RequestBody WithdrawRecordParam param) + { + startPage(); + List list = accReportService.selectWithdrawRecord(param); + return getDataTable(list); + } + + @ApiOperation("组织收支汇总") + @PostMapping("/dept/income-outcome") + @ResponseBody + public TableDataInfo deptIncomeOutcome(@RequestBody DeptIncomeOutcomeParam param) + { + startPage(); + List list = accReportService.selectDeptIncomeOutcome(param); + return getDataTable(list); + } + + @ApiOperation("个人收支汇总") + @PostMapping("/user/income-outcome") + @ResponseBody + public TableDataInfo userIncomeOutcome(@RequestBody UserIncomeOutcomeParam param) + { + startPage(); + List list = accReportService.selectUserIncomeOutcome(param); + return getDataTable(list); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java new file mode 100644 index 0000000..dea7da5 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeParam.java @@ -0,0 +1,26 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +@Data +public class DeptIncomeOutcomeParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private List deptIdList; + + public DeptIncomeOutcomeParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java new file mode 100644 index 0000000..3b27c5c --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/DeptIncomeOutcomeVO.java @@ -0,0 +1,19 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class DeptIncomeOutcomeVO implements Serializable { + private Long deptId; + private String deptName; + private BigDecimal walletBal; + private BigDecimal income; + private BigDecimal outcome; + private BigDecimal lastWalletBal; + private BigDecimal otherIncome; + private BigDecimal otherOutcome; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java new file mode 100644 index 0000000..ec2a0eb --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordParam.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +@Data +public class RechargeRecordParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + + public RechargeRecordParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java new file mode 100644 index 0000000..95afba1 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/RechargeRecordVO.java @@ -0,0 +1,20 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class RechargeRecordVO implements Serializable { + private String statisticDate; + @JsonIgnore + private Long rechargeNum; + @JsonIgnore + private Long subNum; + private BigDecimal cashRechargeAmount; + private BigDecimal aliRechargeAmount; + private BigDecimal subRechargeAmount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java index d6100bd..e83eaca 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/TradeFlowVO.java @@ -3,6 +3,7 @@ package com.bonus.canteen.core.report.domain; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDateTime; @Data @@ -13,13 +14,13 @@ public class TradeFlowVO implements Serializable { private String phonenumber; private Long deptId; private String deptName; - private Double accAllBal; + private BigDecimal accAllBal; private LocalDateTime tradeTime; private Integer tradeType; private Integer payType; private String machineSn; private String deviceName; private String createBy; - private Double income; - private Double outcome; + private BigDecimal income; + private BigDecimal outcome; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java new file mode 100644 index 0000000..129b870 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeParam.java @@ -0,0 +1,27 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +@Data +public class UserIncomeOutcomeParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private List deptIdList; + private String searchValue; + + public UserIncomeOutcomeParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java new file mode 100644 index 0000000..d58af30 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/UserIncomeOutcomeVO.java @@ -0,0 +1,20 @@ +package com.bonus.canteen.core.report.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class UserIncomeOutcomeVO implements Serializable { + private Long userId; + private String phonenumber; + private Long deptId; + private String deptName; + private String nickName; + private BigDecimal walletBal; + private BigDecimal walletBalNow; + private BigDecimal income; + private BigDecimal outcome; + private BigDecimal lastWalletBal; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java new file mode 100644 index 0000000..1199d90 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordParam.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; + +@Data +public class WithdrawRecordParam implements Serializable { + @ApiModelProperty("开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endDateTime; + private String searchValue; + + public WithdrawRecordParam() { + this.endDateTime = LocalDateTime.now().plusDays(7).with(LocalTime.MAX); + this.startDateTime = LocalDateTime.now().minusDays(7).with(LocalTime.MIN); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java new file mode 100644 index 0000000..77a7456 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/domain/WithdrawRecordVO.java @@ -0,0 +1,17 @@ +package com.bonus.canteen.core.report.domain; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +public class WithdrawRecordVO implements Serializable { + private Long userId; + private String nickName; + private Long deptId; + private String deptName; + private int withdrawNum; + private double withdrawAmount; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java new file mode 100644 index 0000000..8118660 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/AccReportMapper.java @@ -0,0 +1,14 @@ +package com.bonus.canteen.core.report.mapper; + +import com.bonus.canteen.core.report.domain.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface AccReportMapper { + public List selectRechargeRecord(@Param("param") RechargeRecordParam param); + public List selectWithdrawRecord(@Param("param") WithdrawRecordParam param); + public List selectDeptIncomeOutcome(@Param("param") DeptIncomeOutcomeParam param); + public List selectUserIncomeOutcome(@Param("param") UserIncomeOutcomeParam param, + @Param("encryptedSearchValue") String encryptedSearchValue); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java index b010392..f8b3809 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/mapper/TradeReportMapper.java @@ -2,9 +2,10 @@ package com.bonus.canteen.core.report.mapper; import com.bonus.canteen.core.report.domain.TradeFlowParam; import com.bonus.canteen.core.report.domain.TradeFlowVO; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface TradeReportMapper { - public List selectTradeFlow(TradeFlowParam param); + public List selectTradeFlow(@Param("param")TradeFlowParam param); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java new file mode 100644 index 0000000..e769b7e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/AccReportService.java @@ -0,0 +1,17 @@ +package com.bonus.canteen.core.report.service; + +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.report.domain.*; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface AccReportService { + List balanceList(AccountInfoQueryParam accountInfoQueryParam); + AccInfoDetailsVO balanceListSum(AccountInfoQueryParam accountInfoQueryParam); + List rechargeCount(RechargeRecordParam param); + List selectWithdrawRecord(WithdrawRecordParam param); + List selectDeptIncomeOutcome(DeptIncomeOutcomeParam param); + List selectUserIncomeOutcome(UserIncomeOutcomeParam param); +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java new file mode 100644 index 0000000..3b16e9d --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/report/service/impl/AccReportServiceImpl.java @@ -0,0 +1,61 @@ +package com.bonus.canteen.core.report.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.service.IAccInfoService; +import com.bonus.canteen.core.report.domain.*; +import com.bonus.canteen.core.report.mapper.AccReportMapper; +import com.bonus.canteen.core.report.mapper.TradeReportMapper; +import com.bonus.canteen.core.report.service.AccReportService; +import com.bonus.canteen.core.report.service.TradeReportService; +import com.bonus.common.houqin.utils.SM4EncryptUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class AccReportServiceImpl implements AccReportService { + @Resource + AccReportMapper accReportMapper; + @Autowired + IAccInfoService accInfoService; + + @Override + public List balanceList(AccountInfoQueryParam accountInfoQueryParam) { + return accInfoService.selectAccInfoList(accountInfoQueryParam); + } + + @Override + public AccInfoDetailsVO balanceListSum(AccountInfoQueryParam accountInfoQueryParam) { + return accInfoService.queryAccInfoBalanceSum(accountInfoQueryParam); + } + + @Override + public List rechargeCount(RechargeRecordParam param) { + return accReportMapper.selectRechargeRecord(param); + } + @Override + public List selectWithdrawRecord(WithdrawRecordParam param) { + return accReportMapper.selectWithdrawRecord(param); + } + + @Override + public List selectDeptIncomeOutcome(DeptIncomeOutcomeParam param) { + return accReportMapper.selectDeptIncomeOutcome(param); + } + + @Override + public List selectUserIncomeOutcome(UserIncomeOutcomeParam param) { + String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue()); + List list = accReportMapper.selectUserIncomeOutcome(param, encryptedSearchValue); + if(CollUtil.isNotEmpty(list)) { + for (UserIncomeOutcomeVO userIncomeOutcomeVO : list) { + userIncomeOutcomeVO.setPhonenumber(SM4EncryptUtils.sm4Decrypt(userIncomeOutcomeVO.getPhonenumber())); + } + } + return list; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml index 02fed8c..71abefe 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccInfoMapper.xml @@ -390,9 +390,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t2.user_type as userType, t1.scope, t1.acc_status, - t1.end_date + t1.end_date, + ac.serial_num FROM acc_info t1 INNER JOIN sys_user t2 ON t1.user_id = t2.user_id + LEFT JOIN acc_card ac on t2.user_id = ac.user_id LEFT JOIN sys_dept t6 on t6.dept_id = t2.dept_id order by t1.acc_id desc diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml new file mode 100644 index 0000000..db9a150 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/AccReportMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml index 495b669..4da3746 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/report/TradeReportMapper.xml @@ -18,14 +18,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" at2.machine_sn, di.device_name, at2.create_by, - CASE - WHEN at2.trade_type in (10, 20) then + IFNULL(CASE + WHEN at2.trade_type in (10, 20, 130) then at2.actual_amount - end as income, - CASE - WHEN at2.trade_type not in (10, 20) then + end, 0)as income, + IFNULL(CASE + WHEN at2.trade_type in (30, 100, 110) then at2.actual_amount - end as outcome + end, 0) as outcome from acc_trade at2 left join sys_user su on @@ -35,7 +35,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" left join device_info di on at2.machine_sn = di.device_sn where - at2.trade_time = ]]> #{param.startDateTime} + at2.pay_state = 3 + and at2.trade_time = ]]> #{param.startDateTime} and at2.trade_time #{param.endDateTime} and su.dept_id IN