This commit is contained in:
dute7liang
2024-01-03 21:37:47 +08:00
parent 34ee13959a
commit 161b589e64
15 changed files with 245 additions and 88 deletions

View File

@@ -3,8 +3,10 @@ package com.ruoyi.cai.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
import com.ruoyi.cai.dto.admin.vo.AccountAdminVo;
import com.ruoyi.cai.service.AccountService;
import com.ruoyi.cai.service.RechargeOrderService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
@@ -12,15 +14,12 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
/**
* 用户账户
@@ -35,6 +34,7 @@ import java.util.Arrays;
public class AccountController extends BaseController {
private final AccountService accountService;
private final RechargeOrderService rechargeOrderService;
/**
* 查询用户账户列表
@@ -58,38 +58,12 @@ public class AccountController extends BaseController {
return R.ok(accountService.getById(id));
}
/**
* 新增用户账户
*/
@SaCheckPermission("cai:account:add")
@Log(title = "用户账户", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody Account bo) {
return toAjax(accountService.save(bo));
}
/**
* 修改用户账户
*/
@SaCheckPermission("cai:account:edit")
@Log(title = "用户账户", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody Account bo) {
return toAjax(accountService.updateById(bo));
}
/**
* 删除用户账户
*
* @param ids 主键串
*/
@SaCheckPermission("cai:account:remove")
@Log(title = "用户账户", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(accountService.removeBatchByIds(Arrays.asList(ids)));
@PostMapping("/updateCoin")
public R<Void> add(@RequestBody AddRechargeOrderAdminDto bo) {
rechargeOrderService.updateAdminRechargeOrder(bo);
return R.ok();
}
}

View File

@@ -3,8 +3,10 @@ package com.ruoyi.cai.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
import com.ruoyi.cai.service.RechargeOrderService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
@@ -14,7 +16,9 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.BeanConvertUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -35,6 +39,7 @@ import java.util.Arrays;
public class RechargeOrderController extends BaseController {
private final RechargeOrderService rechargeOrderService;
private final UserService userService;
/**
* 查询充值订单列表
@@ -53,9 +58,12 @@ public class RechargeOrderController extends BaseController {
*/
@SaCheckPermission("cai:rechargeOrder:query")
@GetMapping("/{id}")
public R<RechargeOrder> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(rechargeOrderService.getById(id));
public R<RechargeOrderAdminVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
RechargeOrder rechargeOrder = rechargeOrderService.getById(id);
RechargeOrderAdminVo res = BeanConvertUtil.convertTo(rechargeOrder, RechargeOrderAdminVo::new);
User user = userService.getById(res.getUserId());
BeanUtils.copyProperties(user,res);
return R.ok(res);
}
/**

View File

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import com.ruoyi.cai.service.UserAlbumService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.Arrays;
/**
@@ -41,8 +43,8 @@ public class UserAlbumController extends BaseController {
*/
@SaCheckPermission("cai:userAlbum:list")
@GetMapping("/list")
public TableDataInfo<UserAlbum> list(UserAlbum bo, PageQuery pageQuery) {
Page<UserAlbum> page = userAlbumService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
public TableDataInfo<UserAlbumAdminVo> list(UserAlbumAdminVo bo, PageQuery pageQuery) {
Page<UserAlbumAdminVo> page = userAlbumService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page);
}
@@ -69,15 +71,16 @@ public class UserAlbumController extends BaseController {
return toAjax(userAlbumService.save(bo));
}
/**
* 修改主播集锦
*/
@SaCheckPermission("cai:userAlbum:edit")
@Log(title = "主播集锦", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserAlbum bo) {
return toAjax(userAlbumService.updateById(bo));
@PutMapping("/audit")
public R<Void> audit(@RequestBody UserAlbum bo) {
Wrappers.lambdaUpdate(UserAlbum.class)
.eq(UserAlbum::getId,bo.getId())
.set(UserAlbum::getAuditStatus,bo.getAuditStatus())
.set(UserAlbum::getAuditTime, LocalDateTime.now());
return R.ok();
}
/**

View File

@@ -33,10 +33,7 @@ public class UserAlbum implements Serializable {
*
*/
private String url;
/**
* 状态 0 未审核 1 审核通过 2 审核未通过
*/
private Integer status;
private Integer auditStatus;
/**
* 审核时间
*/
@@ -45,13 +42,11 @@ public class UserAlbum implements Serializable {
* 审核备注
*/
private String auditRemark;
/**
* 是否为大咖
*/
private Integer isAnchor;
private Integer orderBy;
private Boolean showHome;
private LocalDateTime createTime;
}

View File

@@ -8,7 +8,7 @@ public class AddRechargeOrderAdminDto {
/**
* 员工ID
*/
private Long userId;
private String usercode;
/**
* 1-充值余额 2-充值收益
@@ -19,5 +19,6 @@ public class AddRechargeOrderAdminDto {
* 调整的金额
*/
private Long rechargeCoin;
private String remark;
}

View File

@@ -0,0 +1,32 @@
package com.ruoyi.cai.dto.admin.vo;
import com.ruoyi.cai.domain.UserAlbum;
import lombok.Data;
@Data
public class UserAlbumAdminVo extends UserAlbum {
/**
* 用户号/ID号
*/
private String usercode;
/**
* 昵称
*/
private String nickname;
/**
* 手机号
*/
private String mobile;
/**
* 头像
*/
private String avatar;
/**
* 性别
*/
private Integer gender;
private Integer age;
private Integer isAnchor;
}

View File

@@ -19,8 +19,6 @@ public interface AccountMapper extends BaseMapper<Account> {
long incsCoin(@Param("userId") Long userId, @Param("coin") Long coin);
void incsIncomeCoin(@Param("userId") Long userId, @Param("incomeCoin") Long incomeCoin);
long decrIncomeCoin(@Param("userId") Long userId, @Param("incomeCoin") Long incomeCoin);
Page<AccountAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AccountAdminVo bo);

View File

@@ -1,7 +1,10 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import org.apache.ibatis.annotations.Param;
/**
* 主播集锦Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.cai.domain.UserAlbum;
*/
public interface UserAlbumMapper extends BaseMapper<UserAlbum> {
Page<UserAlbumAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") UserAlbumAdminVo bo);
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.cai.pay;
import lombok.Getter;
@Getter
public enum RechargeTypeEnum {
COIN(1,"余额调整"),
COIN_INCOME(2,"收益调整"),
;
private final Integer code;
private final String name;
RechargeTypeEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public static RechargeTypeEnum getByCode(Integer code){
RechargeTypeEnum[] values = RechargeTypeEnum.values();
for (RechargeTypeEnum value : values) {
if(value.getCode().equals(code)){
return value;
}
}
return null;
}
}

View File

@@ -3,6 +3,8 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
import com.ruoyi.cai.dto.AddRechargeOrderDto;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
import com.ruoyi.common.core.domain.PageQuery;
@@ -15,4 +17,8 @@ import com.ruoyi.common.core.domain.PageQuery;
public interface RechargeOrderService extends IService<RechargeOrder> {
Page<RechargeOrderAdminVo> pageAdmin(PageQuery pageQuery, RechargeOrderAdminVo bo);
RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto);
RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto);
}

View File

@@ -1,9 +1,12 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import com.ruoyi.cai.dto.app.query.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.AlbumResetReq;
import com.ruoyi.common.core.domain.PageQuery;
import java.util.List;
@@ -27,4 +30,6 @@ public interface UserAlbumService extends IService<UserAlbum> {
boolean removeAlbum(Long id);
boolean resetAlbum(List<AlbumResetReq> res, Long userId);
Page<UserAlbumAdminVo> pageAdmin(PageQuery pageQuery, UserAlbumAdminVo bo);
}

View File

@@ -2,18 +2,34 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.MemberPrice;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.Goods;
import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.domain.VipOrder;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.AddRechargeOrderAdminDto;
import com.ruoyi.cai.dto.AddRechargeOrderDto;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
import com.ruoyi.cai.dto.dto.AddVipOrderDto;
import com.ruoyi.cai.mapper.AccountMapper;
import com.ruoyi.cai.mapper.RechargeOrderMapper;
import com.ruoyi.cai.mapper.UserMapper;
import com.ruoyi.cai.pay.OrderNoUtil;
import com.ruoyi.cai.pay.PayStatusEnum;
import com.ruoyi.cai.pay.PlatformTypeEnum;
import com.ruoyi.cai.pay.RechargeTypeEnum;
import com.ruoyi.cai.service.AccountService;
import com.ruoyi.cai.service.GoodsService;
import com.ruoyi.cai.service.RechargeOrderService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.ServletUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
* 充值订单Service业务层处理
@@ -24,29 +40,97 @@ import org.springframework.stereotype.Service;
@Service
public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,RechargeOrder> implements RechargeOrderService {
@Autowired
private GoodsService goodsService;
@Autowired
private UserService userService;
@Autowired
private AccountService accountService;
@Resource
private AccountMapper accountMapper;
@Override
public Page<RechargeOrderAdminVo> pageAdmin(PageQuery pageQuery, RechargeOrderAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
@Override
public VipOrder addRechargeOrder(AddVipOrderDto addVipOrder){
Long memberPriceId = addVipOrder.getMemberPriceId();
MemberPrice memberPrice = memberPriceService.getById(memberPriceId);
if(memberPrice == null){
throw new ServiceException("VIP价格错误");
@Transactional(rollbackFor = Exception.class)
public RechargeOrder addRechargeOrder(AddRechargeOrderDto addRechargeOrderDto){
Long goodId = addRechargeOrderDto.getGoodId();
Goods goods = goodsService.getById(goodId);
if(goods == null){
throw new ServiceException("充值价格错误");
}
VipOrder vipOrder = new VipOrder();
vipOrder.setUserId(addVipOrder.getUserId());
vipOrder.setVipId(memberPrice.getId());
vipOrder.setVipType(memberPrice.getMemberType());
vipOrder.setVipName(memberPrice.getName());
vipOrder.setVipExpire(memberPrice.getExpires());
vipOrder.setVipLongs(memberPrice.getLongs());
vipOrder.setPrice(memberPrice.getPrice());
vipOrder.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.VIP_ORDER_SUB));
vipOrder.setPayStatus(PayStatusEnum.READY_PAY.getCode());
this.save(vipOrder);
return vipOrder;
RechargeOrder order = new RechargeOrder();
order.setUserId(addRechargeOrderDto.getUserId());
order.setRechargeId(goods.getId());
order.setRechargeName(goods.getName());
order.setRechargeCoin(goods.getAmount());
order.setRechargeType(RechargeTypeEnum.COIN.getCode());
order.setPrice(goods.getPrice());
order.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.RECHARGE_ORDER_SUB));
order.setPayStatus(PayStatusEnum.READY_PAY.getCode());
order.setAdmin(false);
this.save(order);
return order;
}
@Override
@Transactional(rollbackFor = Exception.class)
public RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto){
User user = userService.getByUserCode(dto.getUsercode());
if(user == null){
throw new ServiceException("用户不存在");
}
RechargeTypeEnum rechargeTypeEnum = RechargeTypeEnum.getByCode(dto.getRechargeType());
if(rechargeTypeEnum == null){
throw new ServiceException("参数错误");
}
Long userId = user.getId();
RechargeOrder order = new RechargeOrder();
order.setUserId(userId);
order.setRechargeName(rechargeTypeEnum.getName());
order.setRechargeCoin(dto.getRechargeCoin());
order.setPrice(BigDecimal.ZERO);
order.setRechargeType(dto.getRechargeType());
order.setOrderNo(OrderNoUtil.createOrderNo(OrderNoUtil.RECHARGE_ORDER_SUB));
order.setPlatformType(PlatformTypeEnum.ADMIN.name());
order.setPayStatus(PayStatusEnum.NO_PAY.getCode());
order.setOperateIp(ServletUtils.getClientIP());
order.setAdmin(true);
order.setAdminId(LoginHelper.getUserId());
order.setRemark(dto.getRemark());
this.save(order);
Account account = accountService.getByUserId(userId);
if(rechargeTypeEnum == RechargeTypeEnum.COIN){ // 余额调整
if(dto.getRechargeCoin() > 0){
accountMapper.incsCoin(userId,dto.getRechargeCoin());
}else{
if(account.getCoin() < -dto.getRechargeCoin()){
throw new ServiceException("调整后余额为负数,无法调整");
}
long l = accountMapper.decrCoin(userId, -dto.getRechargeCoin());
if(l == 0){
throw new ServiceException("调整后余额为负数,无法调整");
}
}
}else{
if(dto.getRechargeCoin() > 0){
accountMapper.incsIncomeCoin(userId,dto.getRechargeCoin());
}else{
if(account.getIncomeCoin() < -dto.getRechargeCoin()){
throw new ServiceException("调整后收益为负数,无法调整");
}
long l = accountMapper.decrIncomeCoin(userId, -dto.getRechargeCoin());
if(l == 0){
throw new ServiceException("调整后收益为负数,无法调整");
}
}
}
return order;
}
}

View File

@@ -2,19 +2,22 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.cai.domain.User;
import com.ruoyi.cai.domain.UserAlbum;
import com.ruoyi.cai.dto.admin.vo.UserAlbumAdminVo;
import com.ruoyi.cai.dto.app.query.AlbumAddReq;
import com.ruoyi.cai.dto.app.query.AlbumResetReq;
import com.ruoyi.cai.mapper.UserAlbumMapper;
import com.ruoyi.cai.service.UserAlbumService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.core.domain.PageQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -32,12 +35,8 @@ public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum
public List<String> getUserAlbum(Long userId,Integer anchor){
LambdaQueryWrapper<UserAlbum> eq = Wrappers.lambdaQuery(UserAlbum.class)
.select(UserAlbum::getUrl)
.eq(UserAlbum::getShowHome,true)
.eq(UserAlbum::getUserId, userId);
if(anchor != null && anchor == 1){
eq.ne(UserAlbum::getAuditRemark,2);
}else{
eq.eq(UserAlbum::getAuditRemark,1);
}
List<UserAlbum> list = this.list(eq);
return list.stream().map(UserAlbum::getUrl).collect(Collectors.toList());
}
@@ -49,12 +48,11 @@ public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum
@Override
public boolean addAlbum(AlbumAddReq res) {
User user = userService.getById(res.getUserId());
UserAlbum album = new UserAlbum();
album.setUserId(res.getUserId());
album.setUrl(res.getUrl());
album.setIsAnchor(user.getIsAnchor());
album.setOrderBy(res.getOrderBy());
album.setShowHome(true);
this.save(album);
return true;
}
@@ -65,6 +63,7 @@ public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum
album.setId(res.getId());
album.setUrl(res.getUrl());
album.setOrderBy(res.getOrderBy());
album.setShowHome(true);
this.updateById(album);
return true;
}
@@ -88,4 +87,9 @@ public class UserAlbumServiceImpl extends ServiceImpl<UserAlbumMapper, UserAlbum
return true;
}
@Override
public Page<UserAlbumAdminVo> pageAdmin(PageQuery pageQuery, UserAlbumAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
}

View File

@@ -68,8 +68,7 @@ public class UserCountServiceImpl extends ServiceImpl<UserCountMapper, UserCount
// 访客数
long visitor = userVisitorService.count(Wrappers.lambdaQuery(UserVisitor.class).eq(UserVisitor::getUserId, userId));
// 相册数量(包含待审核中)
long photo = userAlbumService.count(Wrappers.lambdaQuery(UserAlbum.class).eq(UserAlbum::getUserId, userId)
.ne(UserAlbum::getStatus, 2));
long photo = userAlbumService.count(Wrappers.lambdaQuery(UserAlbum.class).eq(UserAlbum::getUserId, userId));
// 收到的礼物数量
long receiveGiftCount = userGiftMapper.countGiftNum(null,userId);
// 送出的礼物数量