[fix]充值与提现

This commit is contained in:
王庆祥 2025-06-21 14:40:22 +08:00
parent 24544a18a8
commit 5d5702e202
17 changed files with 851 additions and 0 deletions

View File

@ -153,6 +153,8 @@ tenant:
- ums_forbidden
- ums_member_bank
- ums_tenant_forbidden
- ums_charge
- ums_withdraw
- oms_aftersale
- oms_aftersale_item
- oms_order

View File

@ -0,0 +1,77 @@
package com.wzj.soopin.member.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wzj.soopin.member.convert.ChargeConvert;
import com.wzj.soopin.member.convert.MemberForbiddenConvert;
import com.wzj.soopin.member.domain.bo.ChargeBO;
import com.wzj.soopin.member.domain.bo.MemberForbiddenBO;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.MemberForbidden;
import com.wzj.soopin.member.domain.vo.ChargeVO;
import com.wzj.soopin.member.domain.vo.MemberForbiddenVO;
import com.wzj.soopin.member.service.IChargeService;
import com.wzj.soopin.member.service.IMemberForbiddenService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.springframework.web.bind.annotation.*;
/**
* 用户封禁
*/
@Tag(name = "用户封禁")
@RestController
@RequestMapping("/ums/charge")
@RequiredArgsConstructor
public class ChargeController {
private final IChargeService service;
private final ChargeConvert convert;
@Tag(name = "查询列表")
@PostMapping("/list")
public R<IPage<ChargeVO>> list(@RequestBody ChargeBO bo, @RequestBody Page page) {
Page<Charge> pages = service.page(page, bo.toWrapper());
return R.ok(convert.toVO(pages));
}
@Tag(name = "新增")
@Log(title = "新增 ", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody ChargeBO bo) {
return R.ok(service.save(convert.toPo(bo)));
}
@Tag(name = "详情")
@GetMapping(value = "/{id}")
public R<ChargeVO> getInfo(@PathVariable("id") Long id) {
return R.ok(convert.toVO(service.getById(id)));
}
@Tag(name = ("处理"))
@Log(title = "修改", businessType = BusinessType.UPDATE)
@PostMapping("/update")
public R update(@RequestBody ChargeBO bo) {
service.save(convert.toPo(bo));
return R.ok();
}
@Tag(name = ("处理"))
@Log(title = "修改", businessType = BusinessType.UPDATE)
@PostMapping("/audit")
public R audit(@RequestBody ChargeBO bo) {
service.save(convert.toPo(bo));
return R.ok();
}
@Tag(name = "删除")
@Log(title = "删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public R<Object> remove(@PathVariable Long id) {
return R.ok(service.removeById(id));
}
}

View File

@ -0,0 +1,69 @@
package com.wzj.soopin.member.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wzj.soopin.member.convert.MemberForbiddenConvert;
import com.wzj.soopin.member.convert.WithdrawConvert;
import com.wzj.soopin.member.domain.bo.MemberForbiddenBO;
import com.wzj.soopin.member.domain.bo.WithdrawBO;
import com.wzj.soopin.member.domain.po.MemberForbidden;
import com.wzj.soopin.member.domain.po.Withdraw;
import com.wzj.soopin.member.domain.vo.MemberForbiddenVO;
import com.wzj.soopin.member.domain.vo.WithdrawVO;
import com.wzj.soopin.member.service.IMemberForbiddenService;
import com.wzj.soopin.member.service.IWithdrawService;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.springframework.web.bind.annotation.*;
/**
* 用户封禁
*/
@Tag(name = "提现")
@RestController
@RequestMapping("/ums/withdraw")
@RequiredArgsConstructor
public class WithdrawController {
private final IWithdrawService service;
private final WithdrawConvert convert;
@Tag(name = "查询列表")
@PostMapping("/list")
public R<IPage<WithdrawVO>> list(@RequestBody WithdrawBO bo, @RequestBody Page page) {
Page<Withdraw> pages = service.page(page, bo.toWrapper());
return R.ok(convert.toVO(pages));
}
@Tag(name = "新增")
@Log(title = "新增 ", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody WithdrawBO bo) {
return R.ok(service.save(convert.toPo(bo)));
}
@Tag(name = "详情")
@GetMapping(value = "/{id}")
public R<WithdrawVO> getInfo(@PathVariable("id") Long id) {
return R.ok(convert.toVO(service.getById(id)));
}
@Tag(name = ("处理"))
@Log(title = "修改", businessType = BusinessType.UPDATE)
@PostMapping("/update")
public R update(@RequestBody WithdrawBO bo) {
service.save(convert.toPo(bo));
return R.ok();
}
@Tag(name = "删除")
@Log(title = "删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public R<Object> remove(@PathVariable Long id) {
return R.ok(service.removeById(id));
}
}

View File

@ -0,0 +1,19 @@
package com.wzj.soopin.member.convert;
import com.wzj.soopin.member.domain.bo.ChargeBO;
import com.wzj.soopin.member.domain.bo.FansBO;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.Fans;
import com.wzj.soopin.member.domain.vo.ChargeVO;
import com.wzj.soopin.member.domain.vo.FansVO;
import org.dromara.common.web.core.BaseConverter;
import org.mapstruct.Mapper;
/**
* 充值
*
* @author zcc
*/
@Mapper(componentModel = "spring",uses = BaseConverter.class)
public interface ChargeConvert extends BaseConverter<ChargeVO, ChargeBO, Charge> {
}

View File

@ -0,0 +1,16 @@
package com.wzj.soopin.member.convert;
import com.wzj.soopin.member.domain.bo.WithdrawBO;
import com.wzj.soopin.member.domain.po.Withdraw;
import com.wzj.soopin.member.domain.vo.WithdrawVO;
import org.dromara.common.web.core.BaseConverter;
import org.mapstruct.Mapper;
/**
* 提现
*
* @author zcc
*/
@Mapper(componentModel = "spring",uses = BaseConverter.class)
public interface WithdrawConvert extends BaseConverter<WithdrawVO, WithdrawBO, Withdraw> {
}

View File

@ -0,0 +1,107 @@
package com.wzj.soopin.member.domain.bo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.Withdraw;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.BaseBO;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 充值
*
* @author wzj
* @date 2023-03-07
*/
@Schema(description="充值")
@Data
public class ChargeBO extends BaseBO<Charge> {
/**
* 主键
*/
@Schema(description ="主键")
private Long id;
/**
* 提现码
*/
@Schema(description ="充值码")
private String code;
/**
* 会员id
*/
@Schema(description ="会员id")
private Long memberId;
/**
* 金额
*/
@Schema(description ="金额")
private BigDecimal money;
/**
* 手续费
*/
@Schema(description ="手续费")
private BigDecimal fee;
/**
* 实际金额
*/
@Schema(description ="实际金额")
private BigDecimal actualMoney;
/**
* 状态
*/
@Schema(description ="状态")
private Integer status;
/**
* 类型
*/
@Schema(description ="类型")
private Integer type;
/**
* 审核人
*/
@Schema(description ="审核人")
private Long auditBy;
/**
* 审核时间
*/
@Schema(description ="审核时间")
private LocalDateTime auditTime;
/**
* 提现方式
*/
@Schema(description ="提现方式")
private Integer method;
/**
* 审核状态
*/
@Schema(description ="审核状态")
private Integer auditStatus;
@Override
public LambdaQueryWrapper<Charge> toWrapper() {
return super.toWrapper().eq(id!=null, Charge::getId, id)
.eq(memberId!=null, Charge::getMemberId, memberId)
.eq(money!=null, Charge::getMoney, money)
.eq(fee!=null, Charge::getFee, fee)
.eq(actualMoney!=null, Charge::getActualMoney, actualMoney)
.eq(status!=null, Charge::getStatus, status)
.eq(type!=null, Charge::getType, type);
}
}

View File

@ -0,0 +1,109 @@
package com.wzj.soopin.member.domain.bo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wzj.soopin.member.domain.po.Withdraw;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.BaseBO;
import org.dromara.common.core.domain.model.BaseAudit;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 提现
*
* @author wzj
* @date 2023-03-07
*/
@Schema(description="提现")
@Data
public class WithdrawBO extends BaseBO<Withdraw> {
/**
* 主键
*/
@Schema(description ="主键")
private Long id;
/**
* 提现码
*/
@Schema(description ="提现码")
private String code;
/**
* 会员id
*/
@Schema(description ="会员id")
private Long memberId;
/**
* 金额
*/
@Schema(description ="金额")
private BigDecimal money;
/**
* 手续费
*/
@Schema(description ="手续费")
private BigDecimal fee;
/**
* 实际金额
*/
@Schema(description ="实际金额")
private BigDecimal actualMoney;
/**
* 状态
*/
@Schema(description ="状态")
private Integer status;
/**
* 类型
*/
@Schema(description ="类型")
private Integer type;
/**
* 审核人
*/
@Schema(description ="审核人")
private Long auditBy;
/**
* 审核时间
*/
@Schema(description ="审核时间")
private LocalDateTime auditTime;
/**
* 提现方式
*/
@Schema(description ="提现方式")
private Integer method;
/**
* 审核状态
*/
@Schema(description ="审核状态")
private Integer auditStatus;
@Override
public LambdaQueryWrapper<Withdraw> toWrapper() {
return super.toWrapper().eq(id!=null, Withdraw::getId, id)
.eq(memberId!=null, Withdraw::getMemberId, memberId)
.eq(money!=null, Withdraw::getMoney, money)
.eq(fee!=null, Withdraw::getFee, fee)
.eq(actualMoney!=null, Withdraw::getActualMoney, actualMoney)
.eq(status!=null, Withdraw::getStatus, status)
.eq(type!=null, Withdraw::getType, type);
}
}

View File

@ -0,0 +1,79 @@
package com.wzj.soopin.member.domain.po;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 充值
*/
@Schema(description="充值")
@Data
@TableName("ums_charge")
public class Charge extends BaseAudit {
/**
* 主键
*/
@TableId
private Long id;
/**
* 充值码
*/
private String code;
/**
* 会员id
*/
private Long memberId;
/**
* 金额
*/
private BigDecimal money;
/**
* 手续费
*/
private BigDecimal fee;
/**
* 实际金额
*/
private BigDecimal actualMoney;
/**
* 状态
*/
private Integer status;
/**
* 类型
*/
private Integer type;
/**
* 审核人
*/
private Long auditBy;
/**
* 审核时间
*/
private LocalDateTime auditTime;
/**
* 提现方式
*/
private Integer method;
/**
* 审核状态
*/
private Integer auditStatus;
}

View File

@ -1,6 +1,10 @@
package com.wzj.soopin.member.domain.po;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
import java.math.BigDecimal;
@ -12,27 +16,68 @@ import java.time.LocalDateTime;
* @author wzj
* @date 2023-03-07
*/
@Schema(description="提现")
@Data
@TableName("ums_withdraw")
public class Withdraw extends BaseAudit {
/**
* 主键
*/
@TableId
private Long id;
/**
* 提现码
*/
private String code;
/**
* 会员id
*/
private Long memberId;
/**
* 金额
*/
private BigDecimal money;
/**
* 手续费
*/
private BigDecimal fee;
/**
* 实际金额
*/
private BigDecimal actualMoney;
/**
* 状态
*/
private Integer status;
/**
* 类型
*/
private Integer type;
/**
* 审核人
*/
private Long auditBy;
/**
* 审核时间
*/
private LocalDateTime auditTime;
/**
* 提现方式
*/
private Integer method;
/**
* 审核状态
*/
private Integer auditStatus;
}

View File

@ -0,0 +1,109 @@
package com.wzj.soopin.member.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.wzj.soopin.member.annotation.MemberFillField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 提现
*
* @author wzj
* @date 2023-03-07
*/
@Schema(description="充值")
@Data
public class ChargeVO extends BaseAudit {
/**
* 主键
*/
@Schema(description ="主键")
@ExcelProperty(value = "主键", order = 1)
private Long id;
/**
* 提现码
*/
@Schema(description ="充值码")
@ExcelProperty(value = "充值码", order = 2)
private String code;
/**
* 会员id
*/
@Schema(description ="会员id")
@ExcelProperty(value ="会员id", order = 3)
private Long memberId;
@Schema(description ="会员")
@MemberFillField(id = "memberId")
private MemberVO member;
/**
* 金额
*/
@Schema(description ="金额")
@ExcelProperty(value ="金额", order = 4)
private BigDecimal money;
/**
* 手续费
*/
@Schema(description ="手续费")
@ExcelProperty(value ="手续费", order = 5)
private BigDecimal fee;
/**
* 实际金额
*/
@Schema(description ="实际金额")
@ExcelProperty(value ="实际金额", order = 6)
private BigDecimal actualMoney;
/**
* 状态
*/
@Schema(description ="状态")
@ExcelProperty(value ="状态", order = 7)
private Integer status;
/**
* 类型
*/
@Schema(description ="类型")
@ExcelProperty(value ="类型", order = 8)
private Integer type;
/**
* 审核人
*/
@Schema(description ="审核人")
@ExcelProperty(value ="审核人", order = 9)
private Long auditBy;
/**
* 审核时间
*/
@Schema(description ="审核时间")
@ExcelProperty(value ="审核时间", order = 10)
private LocalDateTime auditTime;
/**
* 提现方式
*/
@Schema(description ="提现方式")
@ExcelProperty(value ="提现方式", order = 11)
private Integer method;
/**
* 审核状态
*/
@Schema(description ="审核状态")
@ExcelProperty(value ="审核状态", order = 12)
private Integer auditStatus;
}

View File

@ -0,0 +1,111 @@
package com.wzj.soopin.member.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wzj.soopin.member.annotation.MemberFillField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 提现
*
* @author wzj
* @date 2023-03-07
*/
@Schema(description="提现")
@Data
public class WithdrawVO extends BaseAudit {
/**
* 主键
*/
@Schema(description ="主键")
@ExcelProperty(value = "主键", order = 1)
private Long id;
/**
* 提现码
*/
@Schema(description ="提现码")
@ExcelProperty(value = "提现码", order = 2)
private String code;
/**
* 会员id
*/
@Schema(description ="会员id")
@ExcelProperty(value ="会员id", order = 3)
private Long memberId;
@Schema(description ="会员")
@MemberFillField(id = "memberId")
private MemberVO member;
/**
* 金额
*/
@Schema(description ="金额")
@ExcelProperty(value ="金额", order = 4)
private BigDecimal money;
/**
* 手续费
*/
@Schema(description ="手续费")
@ExcelProperty(value ="手续费", order = 5)
private BigDecimal fee;
/**
* 实际金额
*/
@Schema(description ="实际金额")
@ExcelProperty(value ="实际金额", order = 6)
private BigDecimal actualMoney;
/**
* 状态
*/
@Schema(description ="状态")
@ExcelProperty(value ="状态", order = 7)
private Integer status;
/**
* 类型
*/
@Schema(description ="类型")
@ExcelProperty(value ="类型", order = 8)
private Integer type;
/**
* 审核人
*/
@Schema(description ="审核人")
@ExcelProperty(value ="审核人", order = 9)
private Long auditBy;
/**
* 审核时间
*/
@Schema(description ="审核时间")
@ExcelProperty(value ="审核时间", order = 10)
private LocalDateTime auditTime;
/**
* 提现方式
*/
@Schema(description ="提现方式")
@ExcelProperty(value ="提现方式", order = 11)
private Integer method;
/**
* 审核状态
*/
@Schema(description ="审核状态")
@ExcelProperty(value ="审核状态", order = 12)
private Integer auditStatus;
}

View File

@ -0,0 +1,14 @@
package com.wzj.soopin.member.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.Withdraw;
/**
* 意见反馈Mapper接口
*
* @author zcc
*/
public interface ChargeMapper extends BaseMapper<Charge> {
}

View File

@ -0,0 +1,14 @@
package com.wzj.soopin.member.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzj.soopin.member.domain.po.Feedback;
import com.wzj.soopin.member.domain.po.Withdraw;
/**
* 意见反馈Mapper接口
*
* @author zcc
*/
public interface WithdrawMapper extends BaseMapper<Withdraw> {
}

View File

@ -0,0 +1,11 @@
package com.wzj.soopin.member.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.Withdraw;
public interface IChargeService extends IService<Charge> {
boolean audit(Long id, String status);
}

View File

@ -0,0 +1,12 @@
package com.wzj.soopin.member.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wzj.soopin.member.domain.po.Feedback;
import com.wzj.soopin.member.domain.po.Withdraw;
import com.wzj.soopin.member.domain.vo.FeedbackVO;
import java.io.Serializable;
public interface IWithdrawService extends IService<Withdraw> {
}

View File

@ -0,0 +1,33 @@
package com.wzj.soopin.member.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.MemberForbidden;
import com.wzj.soopin.member.mapper.ChargeMapper;
import com.wzj.soopin.member.mapper.MemberForbiddenMapper;
import com.wzj.soopin.member.service.IChargeService;
import com.wzj.soopin.member.service.IMemberForbiddenService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 会员封禁
*
* @author zcc
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class ChargeServiceImpl extends ServiceImpl<ChargeMapper, Charge> implements IChargeService {
@Override
public boolean audit(Long id, String status) {
Charge charge = getById(id);
//调用三方充值接口
boolean chargeSuccess = true;
//充值成功后更新会员账户余额
//生成充值记录
return false;
}
}

View File

@ -0,0 +1,24 @@
package com.wzj.soopin.member.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wzj.soopin.member.domain.po.Charge;
import com.wzj.soopin.member.domain.po.Withdraw;
import com.wzj.soopin.member.mapper.ChargeMapper;
import com.wzj.soopin.member.mapper.WithdrawMapper;
import com.wzj.soopin.member.service.IChargeService;
import com.wzj.soopin.member.service.IWithdrawService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 会员封禁
*
* @author zcc
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class WithdrawServiceImpl extends ServiceImpl<WithdrawMapper, Withdraw> implements IWithdrawService {
}