init
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package com.ruoyi.xq.controller.app;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.domain.PageModel;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.xq.domain.UserExtend;
|
||||
import com.ruoyi.xq.domain.WxTransOrder;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import com.ruoyi.xq.dto.app.account.AccountInfoVO;
|
||||
import com.ruoyi.xq.dto.app.pay.OrderCreateVo;
|
||||
import com.ruoyi.xq.dto.app.wxtrans.GenWxTransOrderReq;
|
||||
import com.ruoyi.xq.dto.app.wxtrans.WxTransPriceAppVo;
|
||||
import com.ruoyi.xq.enums.common.SystemConfigEnum;
|
||||
import com.ruoyi.xq.manager.SystemConfigManager;
|
||||
import com.ruoyi.xq.service.AccountChangeLogService;
|
||||
import com.ruoyi.xq.service.UserExtendService;
|
||||
import com.ruoyi.xq.service.WxTransOrderService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/account")
|
||||
@Tag(name = "账户管理")
|
||||
public class AccountAppController {
|
||||
@Autowired
|
||||
private UserExtendService userExtendService;
|
||||
@Autowired
|
||||
private AccountChangeLogService accountChangeLogService;
|
||||
@Autowired
|
||||
private WxTransOrderService wxTransOrderService;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
|
||||
@GetMapping("/info")
|
||||
@Operation(summary = "当前用户信息的账户余额情况")
|
||||
@Log(title = "当前用户信息的账户余额情况", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<AccountInfoVO> accountInfo(){
|
||||
UserExtend userExtend = userExtendService.getByUserId(LoginHelper.getUserId());
|
||||
AccountInfoVO accountInfoVO = new AccountInfoVO();
|
||||
accountInfoVO.setUserId(userExtend.getUserId());
|
||||
accountInfoVO.setIncomeCoin(userExtend.getIncomeCoin());
|
||||
accountInfoVO.setWxTransNum(userExtend.getWxTransNum());
|
||||
return R.ok(accountInfoVO);
|
||||
}
|
||||
|
||||
@GetMapping("/detail/page")
|
||||
@Operation(summary = "查询账户明细")
|
||||
@Log(title = "查询账户明细", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<PageModel<AccountDetailVo>> detail(PageQuery pageQuery){
|
||||
Page<AccountDetailVo> page = accountChangeLogService.pageApp(pageQuery,LoginHelper.getUserId());
|
||||
return R.ok(PageModel.build(page));
|
||||
}
|
||||
|
||||
@GetMapping("/wxTrans/price")
|
||||
@Operation(summary = "获取微信交换单价")
|
||||
@Log(title = "获取微信交换单价", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<WxTransPriceAppVo> getPrice(){
|
||||
WxTransPriceAppVo vo = new WxTransPriceAppVo();
|
||||
BigDecimal price = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.WX_TRANS_PRICE);
|
||||
vo.setPrice(price);
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
@PostMapping("/wxTrans/order/create")
|
||||
@Operation(summary = "生成微信交换订单")
|
||||
@Log(title = "生成微信交换订单", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<OrderCreateVo> createVipOrder(@RequestBody GenWxTransOrderReq req){
|
||||
Long userId = LoginHelper.getUserId();
|
||||
WxTransOrder vipOrder = wxTransOrderService.createVipOrder(userId, req.getWxTransNum());
|
||||
OrderCreateVo result = new OrderCreateVo();
|
||||
result.setPrice(vipOrder.getWxPrice());
|
||||
result.setOrderNo(vipOrder.getOrderNo());
|
||||
result.setOrderName(vipOrder.getOrderName());
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.ruoyi.xq.controller.app;
|
||||
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/invite")
|
||||
@Tag(name = "邀请推广接口")
|
||||
public class InviteAppController {
|
||||
|
||||
|
||||
}
|
||||
@@ -3,11 +3,8 @@ package com.ruoyi.xq.controller.app;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.xq.domain.UserExtend;
|
||||
import com.ruoyi.xq.dto.app.common.IdsReq;
|
||||
import com.ruoyi.xq.dto.app.user.*;
|
||||
import com.ruoyi.xq.dto.app.user.vo.AccountInfoVO;
|
||||
import com.ruoyi.xq.dto.app.user.vo.CurrentUserFullInfoVo;
|
||||
import com.ruoyi.xq.dto.app.user.vo.CurrentUserInfoVo;
|
||||
import com.ruoyi.xq.dto.app.user.vo.UserAuthInfoVo;
|
||||
@@ -39,17 +36,6 @@ public class UserAppController {
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
@GetMapping("/user/account/info")
|
||||
@Operation(summary = "当前用户信息的账户余额情况")
|
||||
@Log(title = "当前用户信息的账户余额情况", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<AccountInfoVO> accountInfo(){
|
||||
UserExtend userExtend = userExtendService.getByUserId(LoginHelper.getUserId());
|
||||
AccountInfoVO accountInfoVO = new AccountInfoVO();
|
||||
accountInfoVO.setUserId(userExtend.getUserId());
|
||||
accountInfoVO.setIncomeCoin(userExtend.getIncomeCoin());
|
||||
accountInfoVO.setWxTransNum(userExtend.getWxTransNum());
|
||||
return R.ok(accountInfoVO);
|
||||
}
|
||||
|
||||
@GetMapping("/user/query/fullInfo")
|
||||
@Operation(summary = "当前用户的详细信息")
|
||||
|
||||
@@ -45,7 +45,6 @@ public class WithdrawAppController {
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/save")
|
||||
@Operation(summary = "申请提现")
|
||||
@Log(title = "申请提现", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
|
||||
@@ -23,31 +23,5 @@ import java.math.BigDecimal;
|
||||
@Tag(name = "微信交换接口")
|
||||
public class WxTransAppController {
|
||||
|
||||
@Autowired
|
||||
private WxTransOrderService wxTransOrderService;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
|
||||
@GetMapping("/get/price")
|
||||
@Operation(summary = "获取微信交换单价")
|
||||
@Log(title = "获取微信交换单价", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<WxTransPriceAppVo> getPrice(){
|
||||
WxTransPriceAppVo vo = new WxTransPriceAppVo();
|
||||
BigDecimal price = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.WX_TRANS_PRICE);
|
||||
vo.setPrice(price);
|
||||
return R.ok(vo);
|
||||
}
|
||||
|
||||
@PostMapping("/order/create")
|
||||
@Operation(summary = "生成微信交换订单")
|
||||
@Log(title = "生成微信交换订单", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<OrderCreateVo> createVipOrder(@RequestBody GenWxTransOrderReq req){
|
||||
Long userId = LoginHelper.getUserId();
|
||||
WxTransOrder vipOrder = wxTransOrderService.createVipOrder(userId, req.getWxTransNum());
|
||||
OrderCreateVo result = new OrderCreateVo();
|
||||
result.setPrice(vipOrder.getWxPrice());
|
||||
result.setOrderNo(vipOrder.getOrderNo());
|
||||
result.setOrderName(vipOrder.getOrderName());
|
||||
return R.ok(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.ruoyi.xq.dto.app.account;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class AccountDetailVo {
|
||||
@Schema(description = "用户ID")
|
||||
private Long userId;
|
||||
@Schema(description = "用户编号")
|
||||
private String usercode;
|
||||
@Schema(description = "来源的用户ID")
|
||||
private Long sourceUserId;
|
||||
@Schema(description = "来源的用户昵称")
|
||||
private String sourceNickname;
|
||||
@Schema(description = "来源的头像")
|
||||
private String sourceImg;
|
||||
@Schema(description = "标题分类")
|
||||
private String title;
|
||||
@Schema(description = "内容")
|
||||
private String content;
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
@Schema(description = "金额")
|
||||
private BigDecimal value;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.ruoyi.xq.dto.app.user.vo;
|
||||
package com.ruoyi.xq.dto.app.account;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -31,26 +31,6 @@ public class WithdrawListAppVo {
|
||||
*/
|
||||
@Schema(description = "提现金额")
|
||||
private BigDecimal withdrawMoney;
|
||||
/**
|
||||
* 真实提现金额
|
||||
*/
|
||||
@Schema(description = "真实提现金额")
|
||||
private BigDecimal realWithdrawMoney;
|
||||
/**
|
||||
* 提现手续费金额
|
||||
*/
|
||||
@Schema(description = "提现手续费金额")
|
||||
private BigDecimal withdrawFees;
|
||||
/**
|
||||
* 提现手续费
|
||||
*/
|
||||
@Schema(description = "提现手续费")
|
||||
private BigDecimal withdrawFeesCate;
|
||||
/**
|
||||
* 是否打款
|
||||
*/
|
||||
@Schema(description = "是否打款")
|
||||
private Integer pay;
|
||||
/**
|
||||
* 1-待审核 2-审核成功 3-审核失败
|
||||
*/
|
||||
|
||||
@@ -15,4 +15,5 @@ import org.apache.ibatis.annotations.Param;
|
||||
public interface AccountChangeLogMapper extends BaseMapper<AccountChangeLog> {
|
||||
|
||||
Page<AccountChangeLogAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AccountChangeLogAdminVo bo);
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.xq.domain.UserExtend;
|
||||
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -28,4 +29,5 @@ public interface UserExtendMapper extends BaseMapper<UserExtend> {
|
||||
|
||||
|
||||
boolean incsConsumeTotal(@Param("userId") Long userId, @Param("consumeMonty") BigDecimal consumeMonty);
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.ruoyi.xq.domain.AccountChangeLog;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.dto.admin.log.AccountChangeLogAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import com.ruoyi.xq.enums.user.AccountChangeCodeEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -27,4 +28,6 @@ public interface AccountChangeLogService extends IService<AccountChangeLog> {
|
||||
void saveLogAdminOfSystem(User user, AccountChangeCodeEnum accountChangeCodeEnum, UpdateIncomeCoinReq bo, LoginUser loginUser);
|
||||
|
||||
Page<AccountChangeLogAdminVo> pageAdmin(PageQuery pageQuery, AccountChangeLogAdminVo bo);
|
||||
|
||||
Page<AccountDetailVo> pageApp(PageQuery pageQuery, Long userId);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.ruoyi.xq.domain.UserExtend;
|
||||
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateWxTransNumReq;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import com.ruoyi.xq.enums.user.AccountChangeCodeEnum;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -38,5 +39,4 @@ public interface UserExtendService extends IService<UserExtend> {
|
||||
|
||||
UserExtend getByUserId(Long id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.ruoyi.xq.service.impl;
|
||||
|
||||
import cn.hutool.core.util.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
@@ -8,17 +11,20 @@ import com.ruoyi.xq.domain.AccountChangeLog;
|
||||
import com.ruoyi.xq.domain.User;
|
||||
import com.ruoyi.xq.dto.admin.log.AccountChangeLogAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import com.ruoyi.xq.dto.common.user.MinUser;
|
||||
import com.ruoyi.xq.enums.user.AccountCateEnum;
|
||||
import com.ruoyi.xq.enums.user.AccountChangeCodeEnum;
|
||||
import com.ruoyi.xq.mapper.AccountChangeLogMapper;
|
||||
import com.ruoyi.xq.service.AccountChangeLogService;
|
||||
import com.ruoyi.xq.service.UserService;
|
||||
import com.ruoyi.xq.util.PageConvert;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
@@ -124,5 +130,59 @@ public class AccountChangeLogServiceImpl extends ServiceImpl<AccountChangeLogMap
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<AccountDetailVo> pageApp(PageQuery pageQuery, Long userId) {
|
||||
Page<AccountChangeLog> page = this.page(pageQuery.build(),
|
||||
Wrappers.lambdaQuery(AccountChangeLog.class).eq(AccountChangeLog::getUserId, userId).orderByDesc(AccountChangeLog::getCreateTime));
|
||||
List<AccountChangeLog> records = page.getRecords();
|
||||
if(CollectionUtils.isEmpty(records)){
|
||||
return PageConvert.convertEmpty(page);
|
||||
}
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
for (AccountChangeLog record : records) {
|
||||
if(record.getTarUserId() != null){
|
||||
userIds.add(record.getTarUserId());
|
||||
}
|
||||
}
|
||||
List<User> usersList = userService.listByIds(userIds);
|
||||
Map<Long, User> userMap = usersList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
|
||||
List<AccountDetailVo> vos = new ArrayList<>();
|
||||
for (AccountChangeLog record : records) {
|
||||
AccountDetailVo vo = new AccountDetailVo();
|
||||
vo.setUserId(record.getUserId());
|
||||
vo.setUsercode(record.getUsercode());
|
||||
vo.setCreateTime(record.getCreateTime());
|
||||
vo.setValue(record.getChangeValue());
|
||||
User user = userMap.get(record.getTarUserId());
|
||||
if(user != null){
|
||||
vo.setSourceUserId(user.getId());
|
||||
vo.setSourceNickname(user.getNickname());
|
||||
vo.setSourceImg(user.getAvatar());
|
||||
}
|
||||
AccountChangeCodeEnum accountChangeCodeEnum = AccountChangeCodeEnum.getByCode(record.getChangeType());
|
||||
if(accountChangeCodeEnum != null){
|
||||
AccountCateEnum cate = accountChangeCodeEnum.getCate();
|
||||
vo.setTitle(cate.getText());
|
||||
switch (cate){
|
||||
case SYSTEM_TRANS:
|
||||
double price = record.getChangeValue().doubleValue();
|
||||
String content = String.format("系统调整手动%s收益: %s", price > 0 ? "新增" : "减少", price);
|
||||
vo.setContent(content);
|
||||
break;
|
||||
case WITHDRAW:
|
||||
vo.setContent(accountChangeCodeEnum.getText());
|
||||
break;
|
||||
case AWARD_INVITE:
|
||||
vo.setContent(accountChangeCodeEnum.getText());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
vos.add(vo);
|
||||
}
|
||||
return PageConvert.convert(page,vos);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.ruoyi.xq.domain.WxTransOrder;
|
||||
import com.ruoyi.xq.dto.admin.user.UserExtendAdminVo;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateIncomeCoinReq;
|
||||
import com.ruoyi.xq.dto.admin.user.req.UpdateWxTransNumReq;
|
||||
import com.ruoyi.xq.dto.app.account.AccountDetailVo;
|
||||
import com.ruoyi.xq.enums.common.OrderTypeEnum;
|
||||
import com.ruoyi.xq.enums.common.SystemConfigEnum;
|
||||
import com.ruoyi.xq.enums.consumer.ConsumerTypeEnum;
|
||||
|
||||
26
ruoyi-xq/src/main/java/com/ruoyi/xq/util/PageConvert.java
Normal file
26
ruoyi-xq/src/main/java/com/ruoyi/xq/util/PageConvert.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.xq.util;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PageConvert {
|
||||
public static <T,R> Page<T> convertEmpty(Page<R> page){
|
||||
Page<T> result = new Page<>();
|
||||
result.setTotal(page.getTotal());
|
||||
result.setCurrent(page.getCurrent());
|
||||
result.setSize(page.getSize());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T,R> Page<T> convert(Page<R> page, List<T> record){
|
||||
Page<T> result = new Page<>();
|
||||
result.setTotal(page.getTotal());
|
||||
result.setRecords(record);
|
||||
result.setCurrent(page.getCurrent());
|
||||
result.setSize(page.getSize());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user