feat:多钱包、电子饭卡、饭卡充值

This commit is contained in:
dzc committed 2024-12-30 17:24:34 +08:00
1 parent d684f1bc97
commit 0f6da3a679
40 files changed
+1781 -225

No files matched your search

@@ -0,0 +1,28 @@
package com.bsd.pjcloud.wallet.api.constant;
import cn.hutool.core.util.ObjectUtil;
import lombok.Getter;
import java.util.Arrays;
@Getter
public enum WalletBizEnum {
UPDATE("1", "更新余额"),
BATCH("2", "批量更新余额"),
RECHARGE("3", "充值"),
;
private final String code;
private final String desc;
WalletBizEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static WalletBizEnum descOf(String description) {
return Arrays.stream(WalletBizEnum.values())
.filter(v -> ObjectUtil.equal(v.getDesc(), description))
.findFirst().get();
}
}
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.wallet.api.constant;
import cn.hutool.core.util.ObjectUtil;
import lombok.Getter;
import java.util.Arrays;
@Getter
public enum WalletTypeCodeEnum {
SUPERMARKET("1", "超市"),
CANTEEN("2", "食堂"),
;
private final String code;
private final String desc;
WalletTypeCodeEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static WalletTypeCodeEnum descOf(String description) {
return Arrays.stream(WalletTypeCodeEnum.values())
.filter(v -> ObjectUtil.equal(v.getDesc(), description))
.findFirst().get();
}
}
@@ -0,0 +1,29 @@
package com.bsd.pjcloud.wallet.api.constant;
import cn.hutool.core.util.ObjectUtil;
import lombok.Getter;
import java.util.Arrays;
@Getter
public enum WalletTypeEnum {
EAT("1", "饭卡钱包"),
PAY("2", "虚拟钱包"),
;
private final String code;
private final String desc;
WalletTypeEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static WalletTypeEnum descOf(String description) {
return Arrays.stream(WalletTypeEnum.values())
.filter(v -> ObjectUtil.equal(v.getDesc(), description))
.findFirst().get();
}
}
@@ -0,0 +1,12 @@
package com.bsd.pjcloud.wallet.api.dto;
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
public class WalletManageDto extends WalletManageEntity {
}
@@ -0,0 +1,140 @@
package com.bsd.pjcloud.wallet.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDateTime;
/**
* 钱包管理
*
* @author dzc
* @date 2024-12-30 09:06:35
*/
@Data
@TenantTable
@TableName("wallet_manage")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "钱包管理")
public class WalletManageEntity extends Model<WalletManageEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 饭卡绑定的用户id
*/
@Schema(description = "饭卡绑定的用户id")
private Long userId;
/**
* 饭卡类型id
*/
@Schema(description = "饭卡类型id")
private Long walletTypeId;
/**
* 部门id
*/
@Schema(description = "部门id")
private Long deptId;
/**
* 饭卡卡号
*/
@Schema(description = "饭卡卡号")
private String cardNumber;
/**
* 余额,单位分
*/
@Schema(description = "余额,单位分")
private Integer balance;
/**
* 累计支出,单位分
*/
@Schema(description = "累计支出,单位分")
private Integer totalExpense;
/**
* 累计充值,单位分
*/
@Schema(description = "累计充值,单位分")
private Integer totalRecharge;
/**
* 冻结金额,单位分
*/
@Schema(description = "冻结金额,单位分")
private Integer freezePrice;
/**
* 是否冻结饭卡
*/
@Schema(description = "是否冻结饭卡")
private Boolean isFreeze;
/**
* 绑定饭卡时间
*/
@Schema(description = "绑定饭卡时间")
private LocalDateTime activeBindTime;
/**
* 饭卡绑定状态
*/
@Schema(description = "饭卡绑定状态")
private Integer activeBindStatus;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改人")
private String updateBy;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记")
private String delFlag;
/**
* 租户ID
*/
@Schema(description = "租户ID")
private Long tenantId;
}
@@ -0,0 +1,70 @@
package com.bsd.pjcloud.wallet.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 会员钱包流水表
*
* @author pjcloud
* @date 2024-12-30 09:17:49
*/
@Data
@TableName("wallet_transaction")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "会员钱包流水表")
public class WalletTransactionEntity extends Model<WalletTransactionEntity> {
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="编号")
private Long id;
/**
* 会员钱包 id
*/
@Schema(description="会员钱包 id")
private Long walletId;
/**
* 关联类型
*/
@Schema(description="关联类型")
private String bizType;
/**
* 关联业务编号
*/
@Schema(description="关联业务编号")
private String bizId;
/**
* 流水号
*/
@Schema(description="流水号")
private String no;
/**
* 流水标题
*/
@Schema(description="流水标题")
private String title;
/**
* 交易金额, 单位分
*/
@Schema(description="交易金额, 单位分")
private Integer price;
/**
* 余额, 单位分
*/
@Schema(description="余额, 单位分")
private Integer balance;
}
@@ -0,0 +1,91 @@
package com.bsd.pjcloud.wallet.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDateTime;
/**
* 钱包类型
*
* @author dzc
* @date 2024-12-30 09:13:18
*/
@Data
@TenantTable
@TableName("wallet_type")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "钱包类型")
public class WalletTypeEntity extends Model<WalletTypeEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="主键")
private Long id;
/**
* 钱包名
*/
@Schema(description="钱包名")
private String name;
/**
* 钱包图标
*/
@Schema(description="钱包图标")
private String icon;
/**
* 饭卡code
*/
@Schema(description="饭卡code")
private String uniqueCode;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="修改人")
private String updateBy;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="修改时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="删除标记")
private String delFlag;
/**
* 租户ID
*/
@Schema(description="租户ID")
private Long tenantId;
}
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.wallet.api.feign;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.feign.annotation.NoToken;
import com.bsd.pjcloud.wallet.api.constant.WalletTypeCodeEnum;
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(contextId = "remoteWalletService", value = ServiceNameConstants.WALLET_SERVICE)
public interface RemoteWalletService {
@NoToken
@GetMapping("/wallet-manage/get-or-create-wallet")
R<WalletManageEntity> getOrCreateWallet(@RequestParam Long userId, @RequestParam(required = false) WalletTypeCodeEnum walletTypeCode);
@NoToken
@GetMapping("/wallet-manage/get-wallet")
R<WalletManageEntity> getWallet(@RequestParam Long userId, @RequestParam WalletTypeCodeEnum walletTypeCode);
@NoToken
@GetMapping("/wallet-manage/create-wallet")
R<Object> createWallet(@RequestParam Long userId);
}
@@ -0,0 +1,32 @@
package com.bsd.pjcloud.wallet.api.vo;
import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface;
import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface;
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
import lombok.Data;
@Data
public class WalletManageVo extends WalletManageEntity implements BaseUserInterface, BaseDeptInterface {
/**
* 钱包类型名
*/
private String walletTypeName;
private String walletTypeUniqueCode;
/**
* 用户相关
*/
private String username;
private String userMobile;
private String userAvatar;
/**
* 部门相关
*/
private String deptName;
}
@@ -0,0 +1 @@
com.bsd.pjcloud.wallet.api.feign.RemoteWalletService