diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java index c9906f6..428c581 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccInfoController.java @@ -151,4 +151,13 @@ public class AccInfoController extends BaseController { public AjaxResult getOrderQRCode() { return success(accInfoService.getOrderQRCode()); } + + @ApiOperation( + value = "查询账户(仅返回钱包余额)", + notes = "移动端查询账户(仅返回钱包余额)" + ) + @PostMapping({"/wallet/balance"}) + public AjaxResult queryWalletBalance(@RequestBody AccInfo accInfo) { + return success(this.accInfoService.queryWalletBalance(accInfo)); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java index 75481e3..4ac866e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfo.java @@ -21,10 +21,7 @@ import com.bonus.common.core.web.domain.BaseEntity; public class AccInfo extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键自增 */ - private Long id; - - /** 账户id */ + /** 账户id 主键自增 */ @Excel(name = "账户id") @ApiModelProperty(value = "账户id") private Long accId; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java new file mode 100644 index 0000000..d44f589 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/AccInfoVo.java @@ -0,0 +1,45 @@ +package com.bonus.canteen.core.account.domain; + +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AccInfoVo { + /** 账户id 主键自增 */ + @Excel(name = "账户id") + @ApiModelProperty(value = "账户id") + private Long accId; + + /** 账户名称 */ + @Excel(name = "账户名称") + @ApiModelProperty(value = "账户名称") + private String accName; + + /** 人员id */ + @Excel(name = "人员id") + @ApiModelProperty(value = "人员id") + private Long userId; + + @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") + private Integer accStatus; + @ApiModelProperty("账户可用总余额(不包括冻结金额)") + private BigDecimal accBalTotal; + @ApiModelProperty("账户总余额(包含冻结金额)") + private BigDecimal accAllBal; + @ApiModelProperty("个人钱包(可用)余额/分") + private BigDecimal walletBal; + @ApiModelProperty("补贴钱包(可用)余额/分") + private BigDecimal subsidyBal; + @ApiModelProperty("红包余额") + private BigDecimal redEnvelope; + @ApiModelProperty("个人钱包冻结金额") + private BigDecimal walletFreezeBal; + @ApiModelProperty("补贴钱包冻结金额") + private BigDecimal subFreezeBal; + private BigDecimal accFreezeBalTotal; + private List walletInfoList; + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java new file mode 100644 index 0000000..57f59a9 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/WalletBalanceVO.java @@ -0,0 +1,42 @@ +package com.bonus.canteen.core.account.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.math.BigDecimal; + +@Data +public class WalletBalanceVO { + @ApiModelProperty("个人钱包余额/分") + private BigDecimal walletBal; + @ApiModelProperty("补贴钱包余额/分") + private BigDecimal subsidyBal; + @ApiModelProperty("红包余额") + private BigDecimal redEnvelope; + @ApiModelProperty("个人钱包冻结金额") + private BigDecimal walletFreezeBal; + @ApiModelProperty("补贴钱包冻结金额") + private BigDecimal subFreezeBal; + @ApiModelProperty("冻结金额") + private BigDecimal accFreezeBalTotal; + @ApiModelProperty("账户总余额(包含冻结金额)") + private BigDecimal accAllBal; + @ApiModelProperty("账户可用余额总余额(不包括冻结金额)") + private BigDecimal accBalTotal; + @ApiModelProperty("账户状态 1正常 2冻结 3销户 4过期") + private Integer accStatus; + + + public static WalletBalanceVO of(AccInfoVo accInfoVo) { + WalletBalanceVO walletBalanceVO = new WalletBalanceVO(); + walletBalanceVO.setAccBalTotal(accInfoVo.getAccBalTotal()); + walletBalanceVO.setAccAllBal(accInfoVo.getAccAllBal()); + walletBalanceVO.setWalletBal(accInfoVo.getWalletBal()); + walletBalanceVO.setSubsidyBal(accInfoVo.getSubsidyBal()); + walletBalanceVO.setRedEnvelope(accInfoVo.getRedEnvelope()); + walletBalanceVO.setWalletFreezeBal(accInfoVo.getWalletFreezeBal()); + walletBalanceVO.setSubFreezeBal(accInfoVo.getSubFreezeBal()); + walletBalanceVO.setAccFreezeBalTotal(accInfoVo.getAccFreezeBalTotal()); + walletBalanceVO.setAccStatus(accInfoVo.getAccStatus()); + return walletBalanceVO; + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java index 64b76c0..4e9cbbd 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccInfoMapper.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.mapper; import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.AccInfoVo; /** * 账户资料Mapper接口 @@ -26,6 +27,8 @@ public interface AccInfoMapper { */ public List selectAccInfoList(AccInfo accInfo); + public List selectAccInfoVoList(AccInfo accInfo); + /** * 新增账户资料 * diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java index e394172..846a6d9 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccInfoService.java @@ -2,6 +2,8 @@ package com.bonus.canteen.core.account.service; import java.util.List; import com.bonus.canteen.core.account.domain.AccInfo; +import com.bonus.canteen.core.account.domain.AccInfoVo; +import com.bonus.canteen.core.account.domain.WalletBalanceVO; import com.bonus.system.api.domain.SysUser; /** @@ -27,6 +29,8 @@ public interface IAccInfoService { */ public List selectAccInfoList(AccInfo accInfo); + public List selectAccInfoVoList(AccInfo accInfo); + /** * 新增账户资料 * @@ -62,4 +66,6 @@ public interface IAccInfoService { public int syncAccInfo(SysUser sysUser); public String getOrderQRCode(); + + public WalletBalanceVO queryWalletBalance(AccInfo accInfo); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java index 4e039a2..7fb7d9c 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccInfoServiceImpl.java @@ -1,24 +1,35 @@ package com.bonus.canteen.core.account.service.impl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.bonus.canteen.core.account.domain.AccInfoVo; import com.bonus.canteen.core.account.domain.AccWalletInfo; +import com.bonus.canteen.core.account.domain.WalletBalanceVO; import com.bonus.canteen.core.account.enums.AccStatusEnum; import com.bonus.canteen.core.account.enums.AccWalletIdEnum; import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; +import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.houqin.constant.LeCodeUseSceneEnum; import com.bonus.common.houqin.constant.SourceTypeEnum; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.system.api.domain.SysUser; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.account.mapper.AccInfoMapper; import com.bonus.canteen.core.account.domain.AccInfo; import com.bonus.canteen.core.account.service.IAccInfoService; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * 账户资料Service业务层处理 @@ -27,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional; * @date 2025-04-05 */ @Service +@Slf4j public class AccInfoServiceImpl implements IAccInfoService { @Autowired private AccInfoMapper accInfoMapper; @@ -55,6 +67,11 @@ public class AccInfoServiceImpl implements IAccInfoService { return accInfoMapper.selectAccInfoList(accInfo); } + @Override + public List selectAccInfoVoList(AccInfo accInfo) { + return accInfoMapper.selectAccInfoVoList(accInfo); + } + /** * 新增账户资料 * @@ -147,4 +164,31 @@ public class AccInfoServiceImpl implements IAccInfoService { String userId = SecurityUtils.getUserId().toString(); return "bns{\"s\":" + SourceTypeEnum.WECHAT_SMALL_PRO.getKey() + ",\"y\":" + LeCodeUseSceneEnum.PAY.key() + ",\"p\":\"" + userId + "\",\"t\":" + "\"" + stime + "\"}"; } + + public WalletBalanceVO queryWalletBalance(AccInfo accInfo) { + log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(accInfo)); + AccInfoVo accInfoVO = (AccInfoVo) accInfoMapper.selectAccInfoVoList(accInfo); + if (ObjectUtil.isNull(accInfoVO)) { + throw new ServiceException("账户不存在"); + } else { + AccWalletInfo accWalletInfo = new AccWalletInfo(); + accWalletInfo.setAccId(accInfoVO.getAccId()); + List walletInfoList = this.accWalletInfoService.selectAccWalletInfoList(accWalletInfo); + this.setAccInfoVODetailList(accInfoVO, walletInfoList); + log.info("获取账户(钱包)信息,出参={}", JSONUtil.toJsonStr(accInfoVO)); + } + WalletBalanceVO walletBalanceVO = WalletBalanceVO.of(accInfoVO); + log.info("[app]v4查询账户余额入参={}", JSONUtil.toJsonStr(walletBalanceVO)); + return walletBalanceVO; + } + + protected void setAccInfoVODetailList(AccInfoVo accInfoVo, List walletInfoList) { + if (ObjectUtil.isNotEmpty(walletInfoList)) { + //accInfoVo.setAccBalTotal((BigDecimal)walletInfoList.stream().map(AccWalletInfo::getWalletBal).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add)); + //BigDecimal frozenBalanceAll = (BigDecimal)walletInfoList.stream().map(AccWalletInfo::getFrozenBalance).filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add); + //accInfoVo.setAccFreezeBalTotal(frozenBalanceAll); + accInfoVo.setAccAllBal(NumberUtil.add(accInfoVo.getAccBalTotal(), accInfoVo.getAccFreezeBalTotal())); + accInfoVo.setWalletInfoList(walletInfoList); + } + } } 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 4bd8eac..359fbf0 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 @@ -4,7 +4,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - @@ -60,8 +59,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + - select id, acc_id, acc_name, user_id, wallet_bal, subsidy_bal, red_envelope, subsidy_freeze_bal, acc_bal, balance2, water_wallet_bal, water_subsidy_bal, freeze_wallet_bal, freeze_subsidy_bal, freeze_red_envelope, wallet_over_bal, sub_over_bal, scope, end_date, red_validity_date, acc_status, pay_pwd, sub_date_flag, sub_month_flag, acc_pay_count, last_credit_time, interval_id, curr_credit_count, curr_brush_count, curr_use_reserve_count1, curr_use_reserve_count2, same_day_count, same_month_count, curr_cumu_amount, day_cumu_amount, month_sumu_amount, min_wallet_bal_limit, min_red_bal_limit, min_sub_bal_limit, month_full_reduce_amount, last_full_reduce_time, last_sub_time, sub_validity_date, last_sub_amount, last_wal_time, last_wal_amount, revision, reserved1, reserved2, reserved3, create_by, create_time, update_by, update_time from acc_info + select acc_id, acc_name, user_id, wallet_bal, subsidy_bal, red_envelope, subsidy_freeze_bal, + acc_bal, balance2, water_wallet_bal, water_subsidy_bal, freeze_wallet_bal, freeze_subsidy_bal, + freeze_red_envelope, wallet_over_bal, sub_over_bal, scope, end_date, red_validity_date, + acc_status, pay_pwd, sub_date_flag, sub_month_flag, acc_pay_count, last_credit_time, + interval_id, curr_credit_count, curr_brush_count, curr_use_reserve_count1, curr_use_reserve_count2, + same_day_count, same_month_count, curr_cumu_amount, day_cumu_amount, month_sumu_amount, + min_wallet_bal_limit, min_red_bal_limit, min_sub_bal_limit, month_full_reduce_amount, + last_full_reduce_time, last_sub_time, sub_validity_date, last_sub_amount, last_wal_time, last_wal_amount, + revision, reserved1, reserved2, reserved3, create_by, create_time, update_by, update_time + from acc_info + + @@ -293,7 +366,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, update_time = #{updateTime}, - where id = #{id} + where acc_id = #{accId} @@ -301,9 +374,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from acc_info where id in + delete from acc_info where acc_id in - #{id} + #{accId} \ No newline at end of file