package cn.wisenergy.service.app.impl; import cn.wisenergy.common.utils.R; import cn.wisenergy.mapper.AccountMapper; import cn.wisenergy.mapper.RebateMapper; import cn.wisenergy.mapper.UsersMapper; import cn.wisenergy.model.app.AccountInfo; import cn.wisenergy.model.app.OrderInfo; import cn.wisenergy.model.app.Rebate; import cn.wisenergy.model.app.User; import cn.wisenergy.service.app.AccountService; import cn.wisenergy.service.common.AccountManager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; /** * @author 86187 */ @Slf4j @Service public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo> implements AccountService { @Autowired private UsersMapper usersMapper; @Autowired private AccountMapper accountMapper; @Autowired private RebateMapper rebateMapper; @Autowired private AccountManager accountManager; @Override public R<Boolean> orderRebate(List<OrderInfo> list) { log.info("shop-mall[]AccountServiceImpl[]orderRebate[]input.param.list:{}", list.size()); if (CollectionUtils.isEmpty(list)) { return R.ok(0, true); } //遍历订单,返佣 for (OrderInfo orderInfo : list) { //订单状态是未返佣,完成时间小于当前时间 long successTime = orderInfo.getSuccessTime().getTime(); long time = System.currentTimeMillis(); if (orderInfo.getRebateStatus() == 0 && successTime <= time) { //获取用户信息 User user = usersMapper.selectById(orderInfo.getBuyerId()); if (null == user) { continue; } //获取账户信息 AccountInfo accountInfo = accountMapper.getByUserId(user.getUserId()); if (null == accountInfo) { continue; } //获取返佣比例 Rebate rebate = rebateMapper.getByLevel(user.getUserLevel()); if (null == rebate) { continue; } //修改订单状态为已返佣,账户可用金额增加 accountManager.updateOrderAddMoney(orderInfo, accountInfo, rebate); } } return R.ok(0, true); } @Override public R<AccountInfo> getByUserId(Integer userId) { AccountInfo accountInfo = accountMapper.getByUserId(userId); return R.ok(accountInfo); } }