|  | @@ -0,0 +1,123 @@
 | 
	
		
			
				|  |  | +package cn.newfeifan.mall.module.distri.service.usertopupconsumptionpointsorder;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.service.consumptionchangelog.ConsumptionChangeLogService;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import org.springframework.validation.annotation.Validated;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo.*;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.dal.dataobject.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderDO;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.framework.common.pojo.PageResult;
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import cn.newfeifan.mall.module.distri.dal.mysql.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
	
		
			
				|  |  | +import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 用户充值消费分订单 Service 实现类
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * @author 非繁人
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +@Validated
 | 
	
		
			
				|  |  | +public class UserTopUpConsumptionPointsOrderServiceImpl implements UserTopUpConsumptionPointsOrderService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private UserTopUpConsumptionPointsOrderMapper userTopUpConsumptionPointsOrderMapper;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private IntegralService integralService;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private ConsumptionChangeLogService consumptionChangeLogService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public Long createUserTopUpConsumptionPointsOrder(UserTopUpConsumptionPointsOrderSaveReqVO createReqVO) {
 | 
	
		
			
				|  |  | +        // 插入
 | 
	
		
			
				|  |  | +        UserTopUpConsumptionPointsOrderDO userTopUpConsumptionPointsOrder = BeanUtils.toBean(createReqVO, UserTopUpConsumptionPointsOrderDO.class);
 | 
	
		
			
				|  |  | +        userTopUpConsumptionPointsOrderMapper.insert(userTopUpConsumptionPointsOrder);
 | 
	
		
			
				|  |  | +        // 返回
 | 
	
		
			
				|  |  | +        return userTopUpConsumptionPointsOrder.getId();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void updateUserTopUpConsumptionPointsOrder(UserTopUpConsumptionPointsOrderSaveReqVO updateReqVO) {
 | 
	
		
			
				|  |  | +        // 校验存在
 | 
	
		
			
				|  |  | +        validateUserTopUpConsumptionPointsOrderExists(updateReqVO.getId());
 | 
	
		
			
				|  |  | +        // 更新
 | 
	
		
			
				|  |  | +        UserTopUpConsumptionPointsOrderDO updateObj = BeanUtils.toBean(updateReqVO, UserTopUpConsumptionPointsOrderDO.class);
 | 
	
		
			
				|  |  | +        userTopUpConsumptionPointsOrderMapper.updateById(updateObj);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void deleteUserTopUpConsumptionPointsOrder(Long id) {
 | 
	
		
			
				|  |  | +        // 校验存在
 | 
	
		
			
				|  |  | +        validateUserTopUpConsumptionPointsOrderExists(id);
 | 
	
		
			
				|  |  | +        // 删除
 | 
	
		
			
				|  |  | +        userTopUpConsumptionPointsOrderMapper.deleteById(id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void validateUserTopUpConsumptionPointsOrderExists(Long id) {
 | 
	
		
			
				|  |  | +        if (userTopUpConsumptionPointsOrderMapper.selectById(id) == null) {
 | 
	
		
			
				|  |  | +            throw exception(USER_TOP_UP_CONSUMPTION_POINTS_ORDER_NOT_EXISTS);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public UserTopUpConsumptionPointsOrderDO getUserTopUpConsumptionPointsOrder(Long id) {
 | 
	
		
			
				|  |  | +        return userTopUpConsumptionPointsOrderMapper.selectById(id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public PageResult<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderPage(UserTopUpConsumptionPointsOrderPageReqVO pageReqVO) {
 | 
	
		
			
				|  |  | +        pageReqVO.setPayStatus(true);
 | 
	
		
			
				|  |  | +        return userTopUpConsumptionPointsOrderMapper.selectPage(pageReqVO);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void topUpConsumptionPoints(PayOrderDO payOrderDO) {
 | 
	
		
			
				|  |  | +        UserTopUpConsumptionPointsOrderDO topUpOrder = userTopUpConsumptionPointsOrderMapper.selectById(payOrderDO.getMerchantOrderId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(topUpOrder.getPayStatus()){
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 修改订单状态
 | 
	
		
			
				|  |  | +        userTopUpConsumptionPointsOrderMapper.updateById(UserTopUpConsumptionPointsOrderDO.builder()
 | 
	
		
			
				|  |  | +                .id(topUpOrder.getId())
 | 
	
		
			
				|  |  | +                .payStatus(true)
 | 
	
		
			
				|  |  | +                .payTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .payChannelCode(payOrderDO.getChannelCode())
 | 
	
		
			
				|  |  | +                .finishTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .build());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 获取钱包
 | 
	
		
			
				|  |  | +        IntegralDO integralDO = integralService.selectByUser(topUpOrder.getUserId());
 | 
	
		
			
				|  |  | +        integralDO.setConsumptionPoints(integralDO.getConsumptionPoints() + topUpOrder.getPracticalConsumptionPoints());
 | 
	
		
			
				|  |  | +        integralService.updateIntegral(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 消费分变动日志
 | 
	
		
			
				|  |  | +        consumptionChangeLogService.createConsumptionChangeLog(ConsumptionChangeLogSaveReqVO.builder()
 | 
	
		
			
				|  |  | +                .userId(topUpOrder.getUserId())
 | 
	
		
			
				|  |  | +                .consumptionStatus(ConsumptionEnum.TOP_UP_GET.getType())
 | 
	
		
			
				|  |  | +                .consumptionPoints(topUpOrder.getPracticalConsumptionPoints())
 | 
	
		
			
				|  |  | +                .afterConsumptionPoints(integralDO.getConsumptionPoints())
 | 
	
		
			
				|  |  | +                .practicalConsumptionPoints(topUpOrder.getTopUpConsumptionPoints())
 | 
	
		
			
				|  |  | +                .generateUserId(topUpOrder.getUserId())
 | 
	
		
			
				|  |  | +                .build());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderList() {
 | 
	
		
			
				|  |  | +        return userTopUpConsumptionPointsOrderMapper.selectList(UserTopUpConsumptionPointsOrderDO::getPayStatus,true);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |