package com.matrix.system.fenxiao.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.matrix.biz.bean.BizUser; import com.matrix.biz.dao.BizUserDao; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.fenxiao.dao.ShopRevenueFlowDao; import com.matrix.system.fenxiao.dao.ShopSalemanSettlementDao; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderBasicDto; import com.matrix.system.fenxiao.dto.LoadFenxiaoOrderListDto; import com.matrix.system.fenxiao.dto.LoadSetOrderListDtoDto; import com.matrix.system.fenxiao.dto.UpdateSetOrderDoneDto; import com.matrix.system.fenxiao.entity.ShopRevenueFlow; import com.matrix.system.fenxiao.entity.ShopSalemanSettlement; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderBasicVo; import com.matrix.system.fenxiao.vo.LoadFenxiaoOrderListVo; import com.matrix.system.fenxiao.vo.LoadSetOrderListDtoVo; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.service.CodeService; import com.matrix.system.shopXcx.bean.ShopOrder; import com.matrix.system.shopXcx.dao.ShopOrderDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.Date; import java.util.List; /** * @description 分销订单 * @author jyy * @date 2021-03-10 15:22 */ @Service public class ShopSalesmanOrderService extends ServiceImpl{ @Autowired ShopSalesmanOrderDao shopSalesmanOrderDao; @Autowired CodeService codeService; @Autowired ShopSalemanSettlementDao shopSalemanSettlementDao; @Autowired ShopRevenueFlowDao shopRevenueFlowDao; @Autowired ShopOrderDao shopOrderDao; @Autowired BizUserDao bizUserDao; public AjaxResult loadFenxiaoOrderBasic(LoadFenxiaoOrderBasicDto loadFenxiaoOrderBasicDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(loadFenxiaoOrderBasicDto); AjaxResult result= AjaxResult.buildSuccessInstance("查询成功"); //根据OPENID查询基础信息 Long companyId = loadFenxiaoOrderBasicDto.getCompanyId(); LoadFenxiaoOrderBasicVo loadFenxiaoOrderBasicVo = shopSalesmanOrderDao.selectFenxiaoOrderBasicByCompanyId(companyId); result.putInMap("basicdetail", loadFenxiaoOrderBasicVo); return result; } public AjaxResult loadFenxiaoOrderList(LoadFenxiaoOrderListDto loadFenxiaoOrderListDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(loadFenxiaoOrderListDto); //排序 if(StringUtils.isBlank(loadFenxiaoOrderListDto.getSort())){ loadFenxiaoOrderListDto.setSort("create_time"); loadFenxiaoOrderListDto.setOrder("desc"); } Page page = new Page(loadFenxiaoOrderListDto.getPageNum(), loadFenxiaoOrderListDto.getPageSize()); IPage loadFenxiaoOrderListVos = shopSalesmanOrderDao.findFenxiaoOrderList(page,loadFenxiaoOrderListDto); return AjaxResult.buildSuccessInstance(loadFenxiaoOrderListVos.getRecords(),loadFenxiaoOrderListVos.getTotal()); } public AjaxResult loadSetOrderList(LoadSetOrderListDtoDto loadSetOrderListDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(loadSetOrderListDto); //排序 if(StringUtils.isBlank(loadSetOrderListDto.getSort())){ loadSetOrderListDto.setSort("create_time"); loadSetOrderListDto.setOrder("desc"); } Page page = new Page(loadSetOrderListDto.getPageNum(), loadSetOrderListDto.getPageSize()); IPage loadFenxiaoOrderListVos = shopSalesmanOrderDao.findSetOrderList(page,loadSetOrderListDto); return AjaxResult.buildSuccessInstance(loadFenxiaoOrderListVos.getRecords(),loadFenxiaoOrderListVos.getTotal()); } @Transactional(rollbackFor = Exception.class) public AjaxResult updateSetOrderDone(UpdateSetOrderDoneDto updateSetOrderDoneDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(updateSetOrderDoneDto); SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); Long companyId = updateSetOrderDoneDto.getCompanyId(); Integer setType = updateSetOrderDoneDto.getSetType(); String orderIds = updateSetOrderDoneDto.getOrderIds(); if(StrUtil.isNotEmpty(orderIds)){ List idsStringList = Arrays.asList(orderIds.split(",")); if(CollUtil.isEmpty(idsStringList)) { return AjaxResult.buildFailInstance("请至少选择一条记录"); } //产生订单结算记录 ShopSalemanSettlement shopSalemanSettlement = new ShopSalemanSettlement(); shopSalemanSettlement.setCompanyId(companyId); shopSalemanSettlement.setCreateBy(MatrixConstance.SYSTEM_USER); shopSalemanSettlement.setUpdateBy(MatrixConstance.SYSTEM_USER); shopSalemanSettlement.setCreateTime(new Date()); shopSalemanSettlement.setUpdateTime(new Date()); shopSalemanSettlement.setOrderNo(codeService.getCodeByTyle(ShopSalemanSettlement.ORDERNO_START)); shopSalemanSettlement.setSettlementWay(setType); shopSalemanSettlement.setManCount(updateSetOrderDoneDto.getManCount()); shopSalemanSettlement.setOrderCount(updateSetOrderDoneDto.getOrderCount()); shopSalemanSettlement.setUserId(user.getSuId().intValue()); shopSalemanSettlement.setAmount(updateSetOrderDoneDto.getAmount()); shopSalemanSettlement.setRemark(updateSetOrderDoneDto.getRemark()); shopSalemanSettlement.setCompanyId(companyId); shopSalemanSettlementDao.insert(shopSalemanSettlement); for(String idString : idsStringList) { long id = Long.parseLong(idString); //更新分销订单 ShopSalesmanOrder shopSalesmanOrder = shopSalesmanOrderDao.selectById(id); if(!ShopSalesmanOrder.STATUS_DJS.equals(shopSalesmanOrder.getOrderStatus())) { return AjaxResult.buildFailInstance("选中记录中存在【已结算】的记录"); } //判断原始订单的状态【4=待评价, 5=已评价】才能结算 ShopOrder shopOrder = shopOrderDao.selectById(shopSalesmanOrder.getOrderId().intValue()); if(ShopOrder.ORDER_STATUS_WAIT_REMARK != shopOrder.getOrderStatus() && ShopOrder.ORDER_STATUS_ALREADY_REMARK != shopOrder.getOrderStatus()) { return AjaxResult.buildFailInstance("未收货订单不允许结算"); } shopSalesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_YJS); shopSalesmanOrder.setSettlementId(shopSalemanSettlement.getId()); shopSalesmanOrderDao.updateById(shopSalesmanOrder); //记录流水 ShopRevenueFlow salesRevenueFlow=new ShopRevenueFlow(); salesRevenueFlow.setCompanyId(companyId); salesRevenueFlow.setCreateBy(MatrixConstance.SYSTEM_USER); salesRevenueFlow.setUpdateBy(MatrixConstance.SYSTEM_USER); salesRevenueFlow.setCreateTime(new Date()); salesRevenueFlow.setUpdateTime(new Date()); salesRevenueFlow.setAmount(shopSalesmanOrder.getAmount()); salesRevenueFlow.setUserId(shopSalesmanOrder.getSalesUserId()); if(ShopSalesmanOrder.REVENUE_TYPE_SALES.equals(shopSalesmanOrder.getRevenueType())) { salesRevenueFlow.setRevenueContent(ShopRevenueFlow.TYPE_TGSY); } if(ShopSalesmanOrder.REVENUE_TYPE_INVITATION.equals(shopSalesmanOrder.getRevenueType())) { salesRevenueFlow.setRevenueContent(ShopRevenueFlow.TYPE_YQSY); } salesRevenueFlow.setBusinessId(shopSalesmanOrder.getId()); shopRevenueFlowDao.insert(salesRevenueFlow); //选择微信余额支付,更新用户的金额 if(ShopSalemanSettlement.SETTLEMENTWAY_YEJS == updateSetOrderDoneDto.getSetType()) { BizUser findByOpenId = bizUserDao.findByOpenId(shopSalesmanOrder.getSalesUserId()); if(ObjectUtil.isEmpty(findByOpenId)) { return AjaxResult.buildFailInstance("收益人信息不存在"); } Double withdrawalCash = findByOpenId.getWithdrawalCash(); Double amount = shopSalesmanOrder.getAmount(); withdrawalCash = (withdrawalCash == null?0:withdrawalCash)+(amount== null?0:amount); findByOpenId.setWithdrawalCash(withdrawalCash); bizUserDao.updateByModel(findByOpenId); } } } return AjaxResult.buildSuccessInstance("操作成功"); } }