| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.config.wx.SendWxMessage; |
| | | import com.doumee.config.wx.WXPayUtility; |
| | | import com.doumee.config.wx.WxMiniConfig; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.MemberRevenueMapper; |
| | | import com.doumee.dao.business.WithdrawalOrdersMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.MemberRevenue; |
| | | import com.doumee.dao.business.model.WithdrawalOrders; |
| | | import com.doumee.dao.dto.WithdrawalDTO; |
| | | import com.doumee.service.business.WithdrawalOrdersService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.UUID; |
| | | |
| | | /** |
| | | * 提现申请记录Service实现 |
| | | * @author 江蹄蹄 |
| | | * @date 2025/07/09 12:00 |
| | | * @author rk |
| | | * @date 2026/04/10 |
| | | */ |
| | | @Service |
| | | public class WithdrawalOrdersServiceImpl implements WithdrawalOrdersService { |
| | | |
| | | @Autowired |
| | | private WithdrawalOrdersMapper withdrawalOrdersMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private MemberRevenueMapper memberRevenueMapper; |
| | | |
| | | @Autowired |
| | | private SendWxMessage sendWxMessage; |
| | | |
| | | @Override |
| | | public Integer create(WithdrawalOrders withdrawalOrders) { |
| | |
| | | |
| | | @Override |
| | | public void deleteById(Integer id) { |
| | | withdrawalOrdersMapper.deleteById(id); |
| | | withdrawalOrdersMapper.update(new UpdateWrapper<WithdrawalOrders>().lambda() |
| | | .set(WithdrawalOrders::getDeleted, Constants.ONE) |
| | | .eq(WithdrawalOrders::getId, id)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public void deleteByIdInBatch(List<Integer> ids) { |
| | | if (CollectionUtils.isEmpty(ids)) { |
| | | if (ids == null || ids.isEmpty()) { |
| | | return; |
| | | } |
| | | withdrawalOrdersMapper.deleteBatchIds(ids); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void updateByIdInBatch(List<WithdrawalOrders> withdrawalOrderss) { |
| | | if (CollectionUtils.isEmpty(withdrawalOrderss)) { |
| | | public void updateByIdInBatch(List<WithdrawalOrders> withdrawalOrdersList) { |
| | | if (withdrawalOrdersList == null || withdrawalOrdersList.isEmpty()) { |
| | | return; |
| | | } |
| | | for (WithdrawalOrders withdrawalOrders: withdrawalOrderss) { |
| | | for (WithdrawalOrders withdrawalOrders : withdrawalOrdersList) { |
| | | this.updateById(withdrawalOrders); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public WithdrawalOrders findById(Integer id) { |
| | | return withdrawalOrdersMapper.selectById(id); |
| | | WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectById(id); |
| | | if (Objects.isNull(withdrawalOrders)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | return withdrawalOrders; |
| | | } |
| | | |
| | | @Override |
| | |
| | | IPage<WithdrawalOrders> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<WithdrawalOrders> queryWrapper = new QueryWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getId, pageWrap.getModel().getId()); |
| | | } |
| | | if (pageWrap.getModel().getDeleted() != null) { |
| | | pageWrap.getModel().setDeleted(Constants.ZERO); |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getDeleted, pageWrap.getModel().getDeleted()); |
| | | } |
| | | if (pageWrap.getModel().getCreateUser() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | } |
| | | if (pageWrap.getModel().getCreateTime() != null) { |
| | | queryWrapper.lambda().ge(WithdrawalOrders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); |
| | | queryWrapper.lambda().le(WithdrawalOrders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); |
| | | } |
| | | if (pageWrap.getModel().getUpdateUser() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | } |
| | | if (pageWrap.getModel().getUpdateTime() != null) { |
| | | queryWrapper.lambda().ge(WithdrawalOrders::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); |
| | | queryWrapper.lambda().le(WithdrawalOrders::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); |
| | | } |
| | | if (pageWrap.getModel().getRemark() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getRemark, pageWrap.getModel().getRemark()); |
| | | } |
| | | if (pageWrap.getModel().getMemberId() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getMemberId, pageWrap.getModel().getMemberId()); |
| | | } |
| | | if (pageWrap.getModel().getAmount() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getAmount, pageWrap.getModel().getAmount()); |
| | | } |
| | | if (pageWrap.getModel().getWxExternalNo() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getWxExternalNo, pageWrap.getModel().getWxExternalNo()); |
| | | } |
| | | if (pageWrap.getModel().getStatus() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getStatus, pageWrap.getModel().getStatus()); |
| | | } |
| | | if (pageWrap.getModel().getDoneTime() != null) { |
| | | queryWrapper.lambda().ge(WithdrawalOrders::getDoneTime, Utils.Date.getStart(pageWrap.getModel().getDoneTime())); |
| | | queryWrapper.lambda().le(WithdrawalOrders::getDoneTime, Utils.Date.getEnd(pageWrap.getModel().getDoneTime())); |
| | | } |
| | | if (pageWrap.getModel().getDoneInfo() != null) { |
| | | queryWrapper.lambda().eq(WithdrawalOrders::getDoneInfo, pageWrap.getModel().getDoneInfo()); |
| | | } |
| | | queryWrapper.lambda().like(StringUtils.isNotBlank(pageWrap.getModel().getOutBillNo()), WithdrawalOrders::getOutBillNo, pageWrap.getModel().getOutBillNo()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getMemberId() != null, WithdrawalOrders::getMemberId, pageWrap.getModel().getMemberId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null, WithdrawalOrders::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getType() != null, WithdrawalOrders::getType, pageWrap.getModel().getType()); |
| | | queryWrapper.lambda().ge(pageWrap.getModel().getCreateStartTime() != null, WithdrawalOrders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateStartTime())); |
| | | queryWrapper.lambda().le(pageWrap.getModel().getCreateEndTime() != null, WithdrawalOrders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateEndTime())); |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | |
| | | QueryWrapper<WithdrawalOrders> wrapper = new QueryWrapper<>(withdrawalOrders); |
| | | return withdrawalOrdersMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | /************************************移动端接口*******************************************/ |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void transferSuccess(String outBillNo,Boolean isSuccess){ |
| | | WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectOne(new QueryWrapper<WithdrawalOrders>().lambda() |
| | | .eq(WithdrawalOrders::getOutBillNo,outBillNo).last("limit 1")); |
| | | Member member = memberMapper.selectById(withdrawalOrders.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | | return; |
| | | } |
| | | if(Objects.nonNull(withdrawalOrders)){ |
| | | //转账成功 |
| | | if(isSuccess){ |
| | | withdrawalOrdersMapper.update(new UpdateWrapper<WithdrawalOrders>().lambda() |
| | | .set(WithdrawalOrders::getStatus,Constants.ONE) |
| | | .set(WithdrawalOrders::getUpdateTime, DateUtil.getCurrDateTime()) |
| | | .eq(WithdrawalOrders::getOutBillNo,outBillNo) |
| | | ); |
| | | //修改流水记录状态 |
| | | memberRevenueMapper.update(new UpdateWrapper<MemberRevenue>().lambda() |
| | | .set(MemberRevenue::getStatus,Constants.ZERO) |
| | | .set(MemberRevenue::getUpdateTime, DateUtil.getCurrDateTime()) |
| | | .eq(MemberRevenue::getObjId,withdrawalOrders.getId()) |
| | | .eq(MemberRevenue::getObjType,Constants.ONE) |
| | | ); |
| | | withdrawalOrders.setUpdateTime(new Date()); |
| | | sendWxMessage.withdrawalMessage(member.getOpenid(),withdrawalOrders); |
| | | }else { |
| | | //更新用户余额 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT + " + withdrawalOrders.getAmount() ).eq(Member::getId,withdrawalOrders.getMemberId())); |
| | | //修改流水记录状态 |
| | | memberRevenueMapper.update(new UpdateWrapper<MemberRevenue>().lambda() |
| | | .set(MemberRevenue::getStatus,Constants.ONE) |
| | | .set(MemberRevenue::getUpdateTime, DateUtil.getCurrDateTime()) |
| | | .eq(MemberRevenue::getObjId,withdrawalOrders.getId()) |
| | | .eq(MemberRevenue::getObjType,Constants.ONE) |
| | | ); |
| | | //存储流水记录 |
| | | MemberRevenue memberRevenue = new MemberRevenue(); |
| | | memberRevenue.setCreateTime(new Date()); |
| | | memberRevenue.setTransactionNo(withdrawalOrders.getOutBillNo()); |
| | | memberRevenue.setDeleted(Constants.ZERO); |
| | | memberRevenue.setMemberId(withdrawalOrders.getMemberId()); |
| | | memberRevenue.setType(Constants.FOUR); |
| | | memberRevenue.setOptType(Constants.ONE); |
| | | memberRevenue.setBeforeAmount(member.getAmount()); |
| | | memberRevenue.setAmount(withdrawalOrders.getAmount()); |
| | | memberRevenue.setAfterAmount(member.getAmount() + withdrawalOrders.getAmount()); |
| | | memberRevenue.setObjId(withdrawalOrders.getId()); |
| | | memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType())); |
| | | memberRevenue.setObjType(Constants.ONE); |
| | | memberRevenue.setDeleted(Constants.ZERO); |
| | | memberRevenue.setStatus(Constants.ZERO); |
| | | memberRevenueMapper.insert(memberRevenue); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |