package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.panzhihua.service_community.entity.ComBatteryTradeOrder;
import com.panzhihua.service_community.dao.ComBatteryTradeOrderMapper;
import com.panzhihua.service_community.service.ComBatteryTradeOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import com.panzhihua.common.model.dtos.common.*;
import com.panzhihua.common.model.vos.R;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* title: 电动车商城-微信交易流水表表服务实现类
*
* projectName 成都呐喊信息技术有限公司-智慧社区项目
*
* description: 电动车商城-微信交易流水表表服务实现类
*
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Service("comBatteryTradeOrderService")
public class ComBatteryTradeOrderServiceImpl extends ServiceImpl implements ComBatteryTradeOrderService {
/**
* description queryByPage 分页查询
*
* @param comBatteryTradeOrder 请求参数
* @return 分页查询列表数据
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R queryByPage(PageComBatteryTradeOrderDto comBatteryTradeOrder) {
return R.ok(this.baseMapper.queryAllByLimit(comBatteryTradeOrder, new Page(comBatteryTradeOrder.getPageNum(), comBatteryTradeOrder.getPageSize())));
}
/**
* description insert 新增数据
*
* @param comBatteryTradeOrder 请求参数
* @return 新增结果
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R insert(AddComBatteryTradeOrderDto comBatteryTradeOrder) {
ComBatteryTradeOrder entity = new ComBatteryTradeOrder();
BeanUtils.copyProperties(comBatteryTradeOrder, entity);
if (this.baseMapper.insert(entity) > 0) {
return R.ok();
}
return R.fail("添加失败");
}
/**
* description update 修改数据
*
* @param editDto 请求参数
* @return 修改结果
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R update(EditComBatteryTradeOrderDto editDto) {
ComBatteryTradeOrder entity = this.baseMapper.selectById(editDto.getId());
if (entity == null) {
return R.fail("未查询到该记录");
}
BeanUtils.copyProperties(editDto, entity);
if (this.baseMapper.updateById(entity) > 0) {
return R.ok();
}
return R.fail("修改失败");
}
/**
* description deleteById 通过主键删除数据
*
* @param id 主键id
* @return 删除结果
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R deleteById(Long id) {
if (this.baseMapper.deleteById(id) > 0) {
return R.ok();
}
return R.fail("删除失败");
}
/**
* description detailById 查询详情
*
* @param id 主键id
* @return 详情数据
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R detailById(Long id) {
return R.ok(this.baseMapper.queryById(id));
}
/**
* description queryByPage 查询列表
*
* @param comBatteryTradeOrder 请求参数
* @return 列表数据
* @author lyq
* @date 2022-04-01 13:18:50
*/
@Override
public R queryByList(PageComBatteryTradeOrderDto comBatteryTradeOrder) {
return R.ok(this.baseMapper.queryAllByList(comBatteryTradeOrder));
}
/**
* 添加微信交易记录
* @param userId 用户id
* @param openId 用户openId
* @param orderNo 订单号
* @param payType 支付类型
* @param orderAmount 订单金额
* @param tradeType 交易类型(1.电动车商城购买商品)
* @param tradeOrderId 交易业务订单id
* @param tradeOrderNo 交易业务订单号
* @param createBy 创建人
* @param nowDate 创建时间
*/
@Override
public void addOrderTradeRecord(Long userId, String openId, String orderNo, Integer payType, BigDecimal orderAmount, Integer tradeType, Long tradeOrderId, String tradeOrderNo, Long createBy, Date nowDate) {
ComBatteryTradeOrder entity = new ComBatteryTradeOrder();
entity.setUserId(userId);
entity.setOpenId(openId);
entity.setOrderNo(orderNo);
entity.setStatus(ComBatteryTradeOrder.Status.DFZ);
entity.setPayType(payType);
entity.setPayStatus(ComBatteryTradeOrder.PayStatus.DZF);
entity.setOrderAmount(orderAmount);
entity.setTradeType(tradeType);
entity.setTradeOrderId(tradeOrderId);
entity.setTradeOrderNo(tradeOrderNo);
entity.setCreateAt(nowDate);
entity.setCreateBy(createBy);
this.baseMapper.insert(entity);
}
/**
* 更新微信支付流水记录
*
* @param orderId 订单id
* @param amount 实际支付金额
* @param wxTradeNo 微信支付订单号
* @param payTime 支付时间
* @param nowDate 当前处理时间
*/
@Override
public void renewPayTrade(Long orderId, BigDecimal amount, String wxTradeNo, Date payTime, Date nowDate) {
List tradeOrderList = this.baseMapper.selectList(new QueryWrapper().lambda()
.eq(ComBatteryTradeOrder::getTradeOrderId, orderId).orderByDesc(ComBatteryTradeOrder::getCreateAt));
if(tradeOrderList != null && tradeOrderList.size() > 0){
for (int i = 0; i < tradeOrderList.size(); i++) {
ComBatteryTradeOrder tradeOrder = tradeOrderList.get(i);
if (i == 0) {
tradeOrder.setPayStatus(ComBatteryTradeOrder.PayStatus.YZF);
tradeOrder.setStatus(ComBatteryTradeOrder.Status.YZF);
tradeOrder.setPayAmount(amount);
tradeOrder.setPayNo(wxTradeNo);
tradeOrder.setPayTime(payTime);
tradeOrder.setUpdateAt(nowDate);
} else {
tradeOrder.setStatus(ComBatteryTradeOrder.Status.YGB);
tradeOrder.setUpdateAt(nowDate);
}
this.baseMapper.updateById(tradeOrder);
}
}
}
}