| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- package beilv.vipCardLog.service.impl;
- import beilv.carinformation.domain.CarInformation;
- import beilv.carinformation.service.ICarInformationService;
- import beilv.common.core.domain.AjaxResult;
- import beilv.common.core.text.Convert;
- import beilv.common.utils.DateUtils;
- import beilv.common.utils.uuid.IdUtils;
- import beilv.competition.domain.Competition;
- import beilv.competition.service.ICompetitionService;
- import beilv.usermembershipcard.domain.UserMembershipCard;
- import beilv.usermembershipcard.service.IUserMembershipCardService;
- import beilv.vipCard.domain.VipCard;
- import beilv.vipCard.service.IVipCardService;
- import beilv.vipCardLog.domain.VipCardLog;
- import beilv.vipCardLog.mapper.VipCardLogMapper;
- import beilv.vipCardLog.service.IVipCardLogService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.util.List;
- import java.util.Map;
- /**
- * 充值记录Service业务层处理
- *
- * @author LG
- * @date 2025-11-12
- */
- @Service
- public class VipCardLogServiceImpl implements IVipCardLogService {
- @Autowired
- private VipCardLogMapper vipCardLogMapper;
- @Autowired
- private IVipCardService vipCardService;
- @Autowired
- private ICompetitionService competitionService;
- @Autowired
- private IUserMembershipCardService userMembershipCardService;
- @Autowired
- private ICarInformationService carInformationService;
- /**
- * 查询充值记录
- *
- * @param id 充值记录主键
- * @return 充值记录
- */
- @Override
- public VipCardLog selectVipCardLogById(String id) {
- return vipCardLogMapper.selectVipCardLogById(id);
- }
- /**
- * 查询充值记录列表
- *
- * @param vipCardLog 充值记录
- * @return 充值记录
- */
- @Override
- public List<VipCardLog> selectVipCardLogList(VipCardLog vipCardLog) {
- return vipCardLogMapper.selectVipCardLogList(vipCardLog);
- }
- /**
- * 新增充值记录
- *
- * @param vipCardLog 充值记录
- * @return 结果
- */
- @Override
- public int insertVipCardLog(VipCardLog vipCardLog) {
- return vipCardLogMapper.insertVipCardLog(vipCardLog);
- }
- /**
- * 修改充值记录
- *
- * @param vipCardLog 充值记录
- * @return 结果
- */
- @Override
- public int updateVipCardLog(VipCardLog vipCardLog) {
- return vipCardLogMapper.updateVipCardLog(vipCardLog);
- }
- /**
- * 批量删除充值记录
- *
- * @param ids 需要删除的充值记录主键
- * @return 结果
- */
- @Override
- public int deleteVipCardLogByIds(String ids) {
- return vipCardLogMapper.deleteVipCardLogByIds(Convert.toStrArray(ids));
- }
- /**
- * 删除充值记录信息
- *
- * @param id 充值记录主键
- * @return 结果
- */
- @Override
- public int deleteVipCardLogById(String id) {
- return vipCardLogMapper.deleteVipCardLogById(id);
- }
- @Override
- public int updateVipCardLogByOrderId(VipCardLog vipCardLog) {
- return vipCardLogMapper.updateVipCardLog(vipCardLog);
- }
- @Override
- public int getRegistrantsNumber(VipCardLog vipCardLog) {
- return vipCardLogMapper.getRegistrantsNumber(vipCardLog);
- }
- @Override
- public AjaxResult refundById(VipCardLog vipCardLog) {
- //拉去订单信息
- VipCardLog orderInfo = vipCardLogMapper.selectVipCardLogById(vipCardLog.getId());
- if("payment_status_to_be_paid".equals(orderInfo.getPaymentStatus())){
- return AjaxResult.error("订单未支付, 无需退款!");
- }
- if("payment_status_cancelled".equals(orderInfo.getPaymentStatus())){
- return AjaxResult.error("订单已取消, 无需退款!");
- }
- if("payment_status_refunded".equals(orderInfo.getPaymentStatus())){
- return AjaxResult.error("订单已退款, 无需重复操作!");
- }
- if("payment_status_verification".equals(orderInfo.getPaymentStatus())){
- return AjaxResult.error("订单已核销, 无法退款!");
- }
- //退款金额
- BigDecimal refundPrice = BigDecimal.valueOf(0);
- int refundSum = 0;
- if("yueqiu".equals(orderInfo.getOrderType())){
- if("numCard".equals(orderInfo.getPaymentType())){
- refundSum++;
- }else{
- refundPrice = refundPrice.add(orderInfo.getPracticalMoney());
- }
- }else if("gouka".equals(orderInfo.getOrderType())){
- //拿到次卡信息, 得到剩余使用次数
- UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardRecordId(orderInfo.getId());
- //获取原价信息
- CarInformation carInformation = carInformationService.selectCarInformationById(Long.valueOf(orderInfo.getBusId()));
- //计算已使用次数
- BigDecimal useSum = BigDecimal.valueOf(carInformation.getTotalNumber()-userMembershipCard.getRemainingNumber());
- //计算需要支付的金额
- BigDecimal userPrice = useSum.multiply(carInformation.getOriginalPrice());
- //实际支付的金额 - 需要支付的金额 = 退款金额
- BigDecimal refundMoner = orderInfo.getMemberPrice().subtract(userPrice);
- //判断如果退款金额 不大于0, 则设置退款金额为0
- refundMoner = refundMoner.compareTo(BigDecimal.ZERO) > 0 ? refundMoner : BigDecimal.ZERO;
- //计算退款金额
- refundPrice = refundPrice.add(refundMoner);
- }else if("cansai".equals(orderInfo.getOrderType()) || "menpiao".equals(orderInfo.getOrderType())){
- //验证赛事状态, 已经开始/已经结束/已经关闭 无法退款
- Competition competition = competitionService.selectCompetitionById(Integer.valueOf(orderInfo.getBusId()));
- if("competiton_state_5".equals(competition.getCompetitionState())){
- return AjaxResult.error("赛事已开始, 无法退票!");
- }
- if("competiton_state_6".equals(competition.getCompetitionState())){
- return AjaxResult.error("赛事已结束, 无法退票!");
- }
- if("competiton_state_3".equals(competition.getCompetitionState())){
- return AjaxResult.error("报名已结束, 无法退票!");
- }
- if("competiton_state_4".equals(competition.getCompetitionState())){
- return AjaxResult.error("赛事已关闭, 无法退票!");
- }
- //计算退款金额
- refundPrice = refundPrice.add(orderInfo.getPracticalMoney());
- }
- if("vipCard".equals(orderInfo.getPaymentType())){
- //查询会员卡信息
- VipCard vipCard = vipCardService.selectVipCardById(orderInfo.getPaymentId());
- vipCard.setBalance(vipCard.getBalance().add(refundPrice));
- vipCardService.updateVipCard(vipCard);
- }else if("weChart".equals(orderInfo.getPaymentType())){
- //微信支付, 退款到微信
- }else if("numCard".equals(orderInfo.getPaymentType())){
- //查询次卡信息
- UserMembershipCard userMembershipCard = userMembershipCardService.selectUserMembershipCardById(Long.valueOf(orderInfo.getPaymentId()));
- //剩余使用次数+1
- userMembershipCard.setRemainingNumber(userMembershipCard.getRemainingNumber() + refundSum);
- //更新次卡信息
- userMembershipCardService.updateUserMembershipCard(userMembershipCard);
- }
- vipCardLog.setRefundTime(DateUtils.getNowDate());
- vipCardLog.setPaymentStatus("payment_status_refunded");
- vipCardLogMapper.updateVipCardLog(vipCardLog);
- return AjaxResult.success("退款成功!");
- }
- @Override
- public List<Map<String, Object>> selectYueQiuList(VipCardLog vipCardLog) {
- vipCardLog.setOrderType("yueqiu");
- return vipCardLogMapper.selectYueQiuList(vipCardLog);
- }
- @Override
- public List<Map<String, Object>> selectCanSaiList(VipCardLog vipCardLog) {
- return vipCardLogMapper.selectCanSaiList(vipCardLog);
- }
- }
|