完善订单和陪玩功能

This commit is contained in:
starrySky
2024-03-24 17:47:28 +08:00
parent a0e377c42f
commit 0ebf6cd3aa
16 changed files with 272 additions and 370 deletions

View File

@@ -1,85 +0,0 @@
package com.starry.admin.modules.commodity.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.starry.admin.modules.commodity.module.entity.CommodityInfoEntity;
import com.starry.admin.modules.commodity.service.ICommodityInfoService;
import com.starry.common.annotation.Log;
import com.starry.common.enums.BusinessType;
import com.starry.common.result.R;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 商品Controller
*
* @author admin
* @since 2024-03-22
*/
@RestController
@RequestMapping("/commodity/info")
public class CommodityInfoController {
@Resource
private ICommodityInfoService commodityInfoService;
/**
* 查询商品列表
*/
@PreAuthorize("@customSs.hasPermission('commodity:info:list')")
@GetMapping("/list")
public R list(CommodityInfoEntity commodityInfo) {
IPage<CommodityInfoEntity> list = commodityInfoService.selectCommodityInfoByPage(commodityInfo);
return R.ok(list);
}
/**
* 获取商品详细信息
*/
@PreAuthorize("@customSs.hasPermission('commodity:info:query')")
@GetMapping(value = "/{id}")
public R getInfo(@PathVariable("id") String id) {
return R.ok(commodityInfoService.selectCommodityInfoEntityById(id));
}
/**
* 新增商品
*/
@PreAuthorize("@customSs.hasPermission('commodity:info:create')")
@Log(title = "商品", businessType = BusinessType.INSERT)
@PostMapping("/create")
public R create(@RequestBody CommodityInfoEntity commodityInfo) {
boolean success = commodityInfoService.create(commodityInfo);
if (success) {
return R.ok();
}
return R.error("添加失败");
}
/**
* 修改商品
*/
@PreAuthorize("@customSs.hasPermission('commodity:info:edit')")
@Log(title = "商品", businessType = BusinessType.UPDATE)
@PostMapping(value = "/update/{id}")
public R update(@PathVariable String id, @RequestBody CommodityInfoEntity commodityInfo) {
commodityInfo.setId(id);
boolean success = commodityInfoService.update(commodityInfo);
if (success) {
return R.ok();
}
return R.error("修改失败");
}
/**
* 删除商品
*/
@PreAuthorize("@customSs.hasPermission('commodity:info:remove')")
@Log(title = "商品", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R remove(@PathVariable String[] ids) {
return R.ok(commodityInfoService.deleteCommodityInfoEntityByIds(ids));
}
}

View File

@@ -1,16 +0,0 @@
package com.starry.admin.modules.commodity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.starry.admin.modules.commodity.module.entity.CommodityInfoEntity;
/**
* 商品Mapper接口
*
* @author admin
* @since 2024-03-22
*/
public interface CommodityInfoMapper extends BaseMapper<CommodityInfoEntity> {
}

View File

@@ -1,24 +0,0 @@
package com.starry.admin.modules.commodity.module.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.starry.common.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("commodity_info")
public class CommodityInfoEntity extends BaseEntity<CommodityInfoEntity> {
/**
* UUID
*/
private String id;
/**
* 价格
*/
private String money;
}

View File

@@ -1,62 +0,0 @@
package com.starry.admin.modules.commodity.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.commodity.module.entity.CommodityInfoEntity;
/**
* 商品Service接口
*
* @author admin
* @since 2024-03-22
*/
public interface ICommodityInfoService extends IService<CommodityInfoEntity> {
/**
* 查询商品
*
* @param id 商品主键
* @return 商品
*/
CommodityInfoEntity selectCommodityInfoEntityById(String id);
/**
* 查询商品列表
*
* @param CommodityInfoEntity 商品
* @return 商品集合
*/
IPage<CommodityInfoEntity> selectCommodityInfoByPage(CommodityInfoEntity CommodityInfoEntity);
/**
* 新增商品
*
* @param CommodityInfoEntity 商品
* @return 结果
*/
boolean create(CommodityInfoEntity CommodityInfoEntity);
/**
* 修改商品
*
* @param CommodityInfoEntity 商品
* @return 结果
*/
boolean update(CommodityInfoEntity CommodityInfoEntity);
/**
* 批量删除商品
*
* @param ids 需要删除的商品主键集合
* @return 结果
*/
int deleteCommodityInfoEntityByIds(String[] ids);
/**
* 删除商品信息
*
* @param id 商品主键
* @return 结果
*/
int deleteCommodityInfoEntityById(String id);
}

View File

@@ -1,92 +0,0 @@
package com.starry.admin.modules.commodity.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.starry.admin.modules.commodity.mapper.CommodityInfoMapper;
import com.starry.admin.modules.commodity.module.entity.CommodityInfoEntity;
import com.starry.admin.modules.commodity.service.ICommodityInfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
/**
* 商品Service业务层处理
*
* @author admin
* @since 2024-03-22
*/
@Service
public class CommodityInfoServiceImpl extends ServiceImpl<CommodityInfoMapper, CommodityInfoEntity> implements ICommodityInfoService {
@Resource
private CommodityInfoMapper CommodityInfoMapper;
/**
* 查询商品
*
* @param id 商品主键
* @return 商品
*/
@Override
public CommodityInfoEntity selectCommodityInfoEntityById(String id) {
return this.baseMapper.selectById(id);
}
/**
* 查询商品列表
*
* @param CommodityInfoEntity 商品
* @return 商品
*/
@Override
public IPage<CommodityInfoEntity> selectCommodityInfoByPage(CommodityInfoEntity CommodityInfoEntity) {
Page<CommodityInfoEntity> page = new Page<>(1, 10);
return this.baseMapper.selectPage(page, new LambdaQueryWrapper<CommodityInfoEntity>());
}
/**
* 新增商品
*
* @param CommodityInfoEntity 商品
* @return 结果
*/
@Override
public boolean create(CommodityInfoEntity CommodityInfoEntity) {
return save(CommodityInfoEntity);
}
/**
* 修改商品
*
* @param CommodityInfoEntity 商品
* @return 结果
*/
@Override
public boolean update(CommodityInfoEntity CommodityInfoEntity) {
return updateById(CommodityInfoEntity);
}
/**
* 批量删除商品
*
* @param ids 需要删除的商品主键
* @return 结果
*/
@Override
public int deleteCommodityInfoEntityByIds(String[] ids) {
return CommodityInfoMapper.deleteBatchIds(Arrays.asList(ids));
}
/**
* 删除商品信息
*
* @param id 商品主键
* @return 结果
*/
@Override
public int deleteCommodityInfoEntityById(String id) {
return CommodityInfoMapper.deleteById(id);
}
}

View File

@@ -2,20 +2,17 @@ package com.starry.admin.modules.order.controller;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.starry.admin.common.exception.CustomException; import com.starry.admin.common.exception.CustomException;
import com.starry.admin.modules.commodity.module.entity.CommodityInfoEntity;
import com.starry.admin.modules.commodity.service.ICommodityInfoService;
import com.starry.admin.modules.coupon.module.entity.CouponInfoEntity; import com.starry.admin.modules.coupon.module.entity.CouponInfoEntity;
import com.starry.admin.modules.coupon.service.ICouponInfoService; import com.starry.admin.modules.coupon.service.ICouponInfoService;
import com.starry.admin.modules.order.module.entity.OrderDetailsInfoEntity; import com.starry.admin.modules.order.module.entity.OrderDetailsInfoEntity;
import com.starry.admin.modules.order.module.entity.OrderInfoEntity; import com.starry.admin.modules.order.module.entity.OrderInfoEntity;
import com.starry.admin.modules.order.module.entity.OrderLogInfoEntity; import com.starry.admin.modules.order.module.entity.OrderLogInfoEntity;
import com.starry.admin.modules.order.module.vo.OrderInfoAddVo; import com.starry.admin.modules.order.module.vo.*;
import com.starry.admin.modules.order.module.vo.OrderInfoQueryVo;
import com.starry.admin.modules.order.module.vo.OrderInfoRefundVo;
import com.starry.admin.modules.order.module.vo.OrderInfoRewardVo;
import com.starry.admin.modules.order.service.IOrderDetailsInfoService; import com.starry.admin.modules.order.service.IOrderDetailsInfoService;
import com.starry.admin.modules.order.service.IOrderInfoService; import com.starry.admin.modules.order.service.IOrderInfoService;
import com.starry.admin.modules.order.service.IOrderLogInfoService; import com.starry.admin.modules.order.service.IOrderLogInfoService;
import com.starry.admin.modules.play.module.entity.PlayUserInfoEntity;
import com.starry.admin.modules.play.service.IPlayUserInfoService;
import com.starry.common.annotation.Log; import com.starry.common.annotation.Log;
import com.starry.common.enums.BusinessType; import com.starry.common.enums.BusinessType;
import com.starry.common.result.R; import com.starry.common.result.R;
@@ -39,19 +36,32 @@ public class OrderInfoController {
@Resource @Resource
private IOrderInfoService orderInfoService; private IOrderInfoService orderInfoService;
@Resource
private IOrderDetailsInfoService orderDetailsInfoService;
@Resource
private ICouponInfoService couponInfoService;
@Resource @Resource
private IOrderLogInfoService orderLogInfoService; private IOrderLogInfoService orderLogInfoService;
@Resource @Resource
private IOrderDetailsInfoService orderDetailsInfoService; private IPlayUserInfoService playUserInfoService;
@Resource
private ICommodityInfoService commodityInfoService;
@Resource @Log(title = "取消订单", businessType = BusinessType.UPDATE)
private ICouponInfoService couponInfoService; @PreAuthorize("@customSs.hasPermission('order/info/cancellation')")
public R cancellationOrder(@RequestBody OrderInfoCancellationVo vo) {
//判断操作人是否是陪玩本身
OrderInfoEntity entity = orderInfoService.selectOrderInfoById(vo.getId());
//校验通过
orderInfoService.orderRefund(vo.getId(), "2", null, false);
return R.ok();
}
@PreAuthorize("@customSs.hasPermission('order/info/create')") @PreAuthorize("@customSs.hasPermission('order/info/create')")
@Log(title = "新增打赏订单", businessType = BusinessType.INSERT) @Log(title = "新增打赏订单", businessType = BusinessType.INSERT)
@@ -65,7 +75,7 @@ public class OrderInfoController {
// } // }
// 新增陪玩余额 // 新增陪玩余额
playUserInfoService.editAccountBalance(addVo.getPlayUserId(), addVo.getMoney(), "add");
// 减少用户余额 // 减少用户余额
// 新增订单记录(订单信息需完善) // 新增订单记录(订单信息需完善)
@@ -90,12 +100,10 @@ public class OrderInfoController {
long commodityTotalMoney = 0; long commodityTotalMoney = 0;
//订单总价格 //订单总价格
long orderTotalMoney = 0; long orderTotalMoney = 0;
//校验商品是否存在 //校验商品(陪玩)状态
for (String commodityInfoId : addVo.getCommodityInfoIds()) { PlayUserInfoEntity playUserInfo = playUserInfoService.selectPlayUserInfoById(addVo.getPlayUserId());
CommodityInfoEntity commodityInfo = commodityInfoService.selectCommodityInfoEntityById(commodityInfoId); if ("2".equals(playUserInfo.getUserState())) {
if (commodityInfo == null) { throw new CustomException("陪玩状态异常,无法下单");
throw new CustomException("商品不存在");
}
} }
//校验优惠券是否存在 //校验优惠券是否存在
@@ -121,9 +129,7 @@ public class OrderInfoController {
//记录订单日志 //记录订单日志
orderLogInfoService.create(new OrderLogInfoEntity(entity.getId(), "0", new Date())); orderLogInfoService.create(new OrderLogInfoEntity(entity.getId(), "0", new Date()));
//记录订单详细信息 //记录订单详细信息
for (String commodityInfoId : addVo.getCommodityInfoIds()) { orderDetailsInfoService.create(new OrderDetailsInfoEntity(entity.getId(), addVo.getPlayUserId(), "0"));
orderDetailsInfoService.create(new OrderDetailsInfoEntity(entity.getId(), commodityInfoId, "0"));
}
for (String commodityInfoId : addVo.getCouponIds()) { for (String commodityInfoId : addVo.getCouponIds()) {
orderDetailsInfoService.create(new OrderDetailsInfoEntity(entity.getId(), commodityInfoId, "1")); orderDetailsInfoService.create(new OrderDetailsInfoEntity(entity.getId(), commodityInfoId, "1"));
} }
@@ -172,44 +178,10 @@ public class OrderInfoController {
* 根据ID进行订单退款 * 根据ID进行订单退款
*/ */
@PreAuthorize("@customSs.hasPermission('order/info/edit')") @PreAuthorize("@customSs.hasPermission('order/info/edit')")
@Log(title = "发起订单退款申请", businessType = BusinessType.UPDATE) @Log(title = "用户发起订单退款申请", businessType = BusinessType.UPDATE)
@PostMapping(value = "/refund/{id}") @PostMapping(value = "/refund/{id}")
public R refund(@RequestBody OrderInfoRefundVo vo) { public R refund(@RequestBody OrderInfoRefundVo vo) {
OrderInfoEntity entity = orderInfoService.selectOrderInfoById(vo.getId()); orderInfoService.orderRefund(vo.getId(), vo.getRefundType(), vo.getRefundMoney(), false);
if (entity == null) {
throw new CustomException("订单不存在");
}
if (!"0".equals(entity.getRefundType())) {
throw new CustomException("订单已退款,无法二次退款");
}
// 订单最终金额
long finalAmount = 0;
// 部分退款,计算退款金额是否小于订单金额
if ("1".equals(vo.getRefundType())) {
// 退款金额
long refundMoney = Long.getLong(vo.getRefundMoney());
// 订单金额
long orderMoney = Long.getLong(entity.getOrderMoney());
if (refundMoney <= 0) {
throw new CustomException("退款金额必须大于0");
}
if (orderMoney < refundMoney) {
throw new CustomException("退款金额必须小于订单总金额");
}
finalAmount = orderMoney - refundMoney;
}
// 减少陪玩余额
// 新增用户余额
// 修改订单信息
orderLogInfoService.create(new OrderLogInfoEntity(entity.getId(), "4", new Date()));
entity.setFinalAmount(String.valueOf(finalAmount));
entity.setRefundType(vo.getRefundType());
orderInfoService.update(entity);
// 增加订单处理日志
return R.ok("成功"); return R.ok("成功");
} }

View File

@@ -28,7 +28,7 @@ public class OrderDetailsInfoEntity extends BaseEntity<OrderDetailsInfoEntity> {
private String orderId; private String orderId;
/** /**
* 商品ID * 商品ID(陪玩用户ID or 优惠券)
*/ */
private String commodityId; private String commodityId;

View File

@@ -7,11 +7,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**
* 【请填写功能名称】对象 order_info * 陪玩订单对象 order_info
* *
* @author admin * @author admin
* @since 2024-03-20 * @since 2024-03-20
@@ -22,7 +21,6 @@ import java.util.List;
@TableName("order_info") @TableName("order_info")
public class OrderInfoAddVo extends BaseEntity<OrderInfoAddVo> { public class OrderInfoAddVo extends BaseEntity<OrderInfoAddVo> {
/** /**
* 租户ID * 租户ID
*/ */
@@ -53,12 +51,11 @@ public class OrderInfoAddVo extends BaseEntity<OrderInfoAddVo> {
@NotBlank(message = "下单类型不能为空") @NotBlank(message = "下单类型不能为空")
private String placeType; private String placeType;
/** /**
* 商品列表 * 陪玩ID
*/ */
@NotNull(message = "商品不能为空") @NotBlank(message = "陪玩对象不能为空")
private List<String> commodityInfoIds; private String playUserId;
/** /**
* 优惠券ID列表 * 优惠券ID列表

View File

@@ -0,0 +1,38 @@
package com.starry.admin.modules.order.module.vo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 取消订单对象 order_info
*
* @author admin
* @since 2024-03-20
*/
@Data
public class OrderInfoCancellationVo {
/**
* uuid
*/
@NotNull(message = "订单ID不能为空")
private String id;
/**
* 租户ID
*/
@NotNull(message = "租户ID不能为空")
private String tenantId;
/**
* 操作人ID
*/
@NotNull(message = "操作人不能为空")
private String operatorBy;
}

View File

@@ -27,7 +27,7 @@ public class OrderInfoRewardVo extends BaseEntity<OrderInfoRewardVo> {
* 用户ID * 用户ID
*/ */
@NotBlank(message = "打赏对象不能为空") @NotBlank(message = "打赏对象不能为空")
private String userId; private String playUserId;
/** /**
* 订单类型【0充值订单1提现订单2普通订单】 * 订单类型【0充值订单1提现订单2普通订单】

View File

@@ -61,4 +61,17 @@ public interface IOrderInfoService extends IService<OrderInfoEntity> {
* @return 结果 * @return 结果
*/ */
int deleteOrderInfoById(String id); int deleteOrderInfoById(String id);
/**
* 订单退款
*
* @param id 订单ID
* @param refundType 退款类型【1部分退款2全部退款】
* @param refundMoney 退款金额,单位分(仅部分退款有效)
* @param examine 是否需要审核
*/
void orderRefund(String id, String refundType, String refundMoney, boolean examine);
} }

View File

@@ -6,10 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.starry.admin.common.exception.CustomException;
import com.starry.admin.modules.order.mapper.OrderInfoMapper; import com.starry.admin.modules.order.mapper.OrderInfoMapper;
import com.starry.admin.modules.order.module.entity.OrderInfoEntity; import com.starry.admin.modules.order.module.entity.OrderInfoEntity;
import com.starry.admin.modules.order.module.entity.OrderLogInfoEntity;
import com.starry.admin.modules.order.module.vo.OrderInfoQueryVo; import com.starry.admin.modules.order.module.vo.OrderInfoQueryVo;
import com.starry.admin.modules.order.service.IOrderInfoService; import com.starry.admin.modules.order.service.IOrderInfoService;
import com.starry.admin.modules.order.service.IOrderLogInfoService;
import com.starry.admin.modules.play.service.IPlayUserInfoService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -27,6 +31,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
@Resource @Resource
private OrderInfoMapper orderInfoMapper; private OrderInfoMapper orderInfoMapper;
@Resource
private IOrderLogInfoService orderLogInfoService;
@Resource
private IPlayUserInfoService playUserInfoService;
/** /**
* 查询订单 * 查询订单
* *
@@ -101,4 +112,58 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
public int deleteOrderInfoById(String id) { public int deleteOrderInfoById(String id) {
return orderInfoMapper.deleteById(id); return orderInfoMapper.deleteById(id);
} }
@Override
public void orderRefund(String id, String refundType, String refundMoney, boolean examine) {
OrderInfoEntity entity = this.selectOrderInfoById(id);
if (entity == null) {
throw new CustomException("订单不存在");
}
if (!"0".equals(entity.getRefundType())) {
throw new CustomException("订单已退款,无法二次退款");
}
//最终退款金额
long finalAmount = getFinalAmount(refundType, refundMoney, entity);
// 减少陪玩余额
playUserInfoService.editAccountBalance(id, String.valueOf(finalAmount), "reduce");
// 新增用户余额
// 修改订单信息
entity.setFinalAmount(String.valueOf(finalAmount));
entity.setRefundType(refundType);
entity.setOrderStatus("5");
this.update(entity);
// 增加订单处理日志
orderLogInfoService.create(new OrderLogInfoEntity(entity.getId(), "4", new Date()));
}
/**
* 计算退款金额
*
* @param refundType 退款类型【1部分退款2全部退款】
* @param refundMoney 退款金额,单位分(仅部分退款有效)
* @param entity 订单信息
* @return 最终退款金额
*/
private static long getFinalAmount(String refundType, String refundMoney, OrderInfoEntity entity) {
long finalAmount = 0;
//部分退款,计算退款金额是否小于订单金额
if ("1".equals(refundType)) {
// 退款金额
long refundMoneyLong = Long.getLong(refundMoney);
// 订单金额
long orderMoney = Long.getLong(entity.getOrderMoney());
if (refundMoneyLong <= 0) {
throw new CustomException("退款金额必须大于0");
}
if (orderMoney < refundMoneyLong) {
throw new CustomException("退款金额必须小于订单总金额");
}
finalAmount = orderMoney - refundMoneyLong;
}
return finalAmount;
}
} }

View File

@@ -28,6 +28,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 查询【请填写功能名称】 * 查询【请填写功能名称】
*
* @param id 【请填写功能名称】主键 * @param id 【请填写功能名称】主键
* @return 【请填写功能名称】 * @return 【请填写功能名称】
*/ */
@@ -38,6 +39,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 查询【请填写功能名称】列表 * 查询【请填写功能名称】列表
*
* @param orderLogInfo 【请填写功能名称】 * @param orderLogInfo 【请填写功能名称】
* @return 【请填写功能名称】 * @return 【请填写功能名称】
*/ */
@@ -49,6 +51,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 新增【请填写功能名称】 * 新增【请填写功能名称】
*
* @param orderLogInfo 【请填写功能名称】 * @param orderLogInfo 【请填写功能名称】
* @return 结果 * @return 结果
*/ */
@@ -62,6 +65,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 修改【请填写功能名称】 * 修改【请填写功能名称】
*
* @param orderLogInfo 【请填写功能名称】 * @param orderLogInfo 【请填写功能名称】
* @return 结果 * @return 结果
*/ */
@@ -72,6 +76,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 批量删除【请填写功能名称】 * 批量删除【请填写功能名称】
*
* @param ids 需要删除的【请填写功能名称】主键 * @param ids 需要删除的【请填写功能名称】主键
* @return 结果 * @return 结果
*/ */
@@ -82,6 +87,7 @@ public class OrderLogInfoServiceImpl extends ServiceImpl<OrderLogInfoMapper, Ord
/** /**
* 删除【请填写功能名称】信息 * 删除【请填写功能名称】信息
*
* @param id 【请填写功能名称】主键 * @param id 【请填写功能名称】主键
* @return 结果 * @return 结果
*/ */

View File

@@ -61,9 +61,9 @@ public class PlayUserInfoEntity extends BaseEntity<PlayUserInfoEntity> {
private String userState; private String userState;
/** /**
* 陪玩登记 * 陪玩等级
*/ */
private String level; private Integer level;
/** /**
* 陪玩在线状态[0:1] * 陪玩在线状态[0:1]

View File

@@ -5,57 +5,95 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.play.module.entity.PlayUserInfoEntity; import com.starry.admin.modules.play.module.entity.PlayUserInfoEntity;
/** /**
* 陪玩用户Service接口 * 陪玩用户Service接口
* *
* @author admin * @author admin
* @since 2024-03-24 * @since 2024-03-24
*/ */
public interface IPlayUserInfoService extends IService<PlayUserInfoEntity> { public interface IPlayUserInfoService extends IService<PlayUserInfoEntity> {
/** /**
* 查询陪玩用户 * 查询陪玩用户
* *
* @param id 陪玩用户主键 * @param id 陪玩用户主键
* @return 陪玩用户 * @return 陪玩用户
*/ */
PlayUserInfoEntity selectPlayUserInfoById(String id); PlayUserInfoEntity selectPlayUserInfoById(String id);
/** /**
* 查询陪玩用户列表 * 查询陪玩用户列表
* *
* @param playUserInfo 陪玩用户 * @param playUserInfo 陪玩用户
* @return 陪玩用户集合 * @return 陪玩用户集合
*/ */
IPage<PlayUserInfoEntity> selectPlayUserInfoByPage(PlayUserInfoEntity playUserInfo); IPage<PlayUserInfoEntity> selectPlayUserInfoByPage(PlayUserInfoEntity playUserInfo);
/** /**
* 新增陪玩用户 * 新增陪玩用户
* *
* @param playUserInfo 陪玩用户 * @param playUserInfo 陪玩用户
* @return 结果 * @return 结果
*/ */
boolean create(PlayUserInfoEntity playUserInfo); boolean create(PlayUserInfoEntity playUserInfo);
/** /**
* 修改陪玩用户 * 修改陪玩用户
* *
* @param playUserInfo 陪玩用户 * @param playUserInfo 陪玩用户
* @return 结果 * @return 结果
*/ */
boolean update(PlayUserInfoEntity playUserInfo); boolean update(PlayUserInfoEntity playUserInfo);
/** /**
* 批量删除陪玩用户 * 批量删除陪玩用户
* *
* @param ids 需要删除的陪玩用户主键集合 * @param ids 需要删除的陪玩用户主键集合
* @return 结果 * @return 结果
*/ */
int deletePlayUserInfoByIds(String[] ids); int deletePlayUserInfoByIds(String[] ids);
/** /**
* 删除陪玩用户信息 * 删除陪玩用户信息
* *
* @param id 陪玩用户主键 * @param id 陪玩用户主键
* @return 结果 * @return 结果
*/ */
int deletePlayUserInfoById(String id); int deletePlayUserInfoById(String id);
/**
* 修改陪玩账户余额
*
* @param id 陪玩ID
* @param accountBalance 账户余额
* @param operate 余额操作【add or reduce】
*/
void editAccountBalance(String id, String accountBalance, String operate);
/**
* 修改陪玩账户等级
*
* @param id 陪玩ID
* @param level 陪玩等级
*/
void editLevel(String id, int level);
/**
* 修改陪玩账户等级
*
* @param id 陪玩ID
* @param state 陪玩状态
*/
void editState(String id, String state);
/**
* 修改陪玩在线状态
*
* @param id 陪玩ID
* @param presenceState 陪玩在线状态
*/
void editPresenceState(String id, String presenceState);
} }

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.starry.admin.common.exception.CustomException;
import com.starry.admin.modules.play.mapper.PlayUserInfoMapper; import com.starry.admin.modules.play.mapper.PlayUserInfoMapper;
import com.starry.admin.modules.play.module.entity.PlayUserInfoEntity; import com.starry.admin.modules.play.module.entity.PlayUserInfoEntity;
import com.starry.admin.modules.play.service.IPlayUserInfoService; import com.starry.admin.modules.play.service.IPlayUserInfoService;
@@ -36,6 +37,57 @@ public class PlayUserInfoServiceImpl extends ServiceImpl<PlayUserInfoMapper, Pla
return this.baseMapper.selectById(id); return this.baseMapper.selectById(id);
} }
@Override
public void editAccountBalance(String id, String accountBalance, String operate) {
PlayUserInfoEntity entity = this.selectPlayUserInfoById(id);
if (entity == null) {
throw new CustomException("陪玩不存在");
}
long accountBalanceLong = Long.parseLong(entity.getAccountBalance());
if ("add".equals(operate)) {
accountBalanceLong += Long.parseLong(accountBalance);
} else if ("reduce".equals(operate)) {
accountBalanceLong -= Long.parseLong(accountBalance);
if (accountBalanceLong < 0) {
throw new CustomException("陪玩余额不足,操作失败");
}
}
entity.setAccountBalance(String.valueOf(accountBalanceLong));
this.update(entity);
}
@Override
public void editLevel(String id, int level) {
PlayUserInfoEntity entity = this.selectPlayUserInfoById(id);
if (entity == null) {
throw new CustomException("陪玩不存在");
}
entity.setLevel(level);
this.update(entity);
}
@Override
public void editState(String id, String state) {
PlayUserInfoEntity entity = this.selectPlayUserInfoById(id);
if (entity == null) {
throw new CustomException("陪玩不存在");
}
entity.setUserState(state);
this.update(entity);
}
@Override
public void editPresenceState(String id, String presenceState) {
PlayUserInfoEntity entity = this.selectPlayUserInfoById(id);
if (entity == null) {
throw new CustomException("陪玩不存在");
}
entity.setPresenceState(presenceState);
this.update(entity);
}
/** /**
* 查询陪玩用户列表 * 查询陪玩用户列表
* *
@@ -45,7 +97,7 @@ public class PlayUserInfoServiceImpl extends ServiceImpl<PlayUserInfoMapper, Pla
@Override @Override
public IPage<PlayUserInfoEntity> selectPlayUserInfoByPage(PlayUserInfoEntity playUserInfo) { public IPage<PlayUserInfoEntity> selectPlayUserInfoByPage(PlayUserInfoEntity playUserInfo) {
Page<PlayUserInfoEntity> page = new Page<>(1, 10); Page<PlayUserInfoEntity> page = new Page<>(1, 10);
return this.baseMapper.selectPage(page, new LambdaQueryWrapper<PlayUserInfoEntity>()); return this.baseMapper.selectPage(page, new LambdaQueryWrapper<>());
} }
/** /**