| | |
| | | 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.system.fenxiao.vo.FenxiaoOrderListExportVo; |
| | | import com.matrix.system.hive.bean.SysVipInfo; |
| | | import com.matrix.system.hive.dao.SysVipInfoDao; |
| | | 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 分销订单 |
| | |
| | | */ |
| | | @Service |
| | | public class ShopSalesmanOrderService extends ServiceImpl<ShopSalesmanOrderDao, ShopSalesmanOrder>{ |
| | | |
| | | @Autowired |
| | | ShopSalesmanOrderDao shopSalesmanOrderDao; |
| | | @Autowired |
| | | CodeService codeService; |
| | | @Autowired |
| | | ShopSalemanSettlementDao shopSalemanSettlementDao; |
| | | @Autowired |
| | | ShopRevenueFlowDao shopRevenueFlowDao; |
| | | @Autowired |
| | | ShopOrderDao shopOrderDao; |
| | | @Autowired |
| | | SysVipInfoDao sysVipInfoDao; |
| | | |
| | | 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<LoadFenxiaoOrderListVo> page = new Page(loadFenxiaoOrderListDto.getPageNum(), loadFenxiaoOrderListDto.getPageSize()); |
| | | IPage<LoadFenxiaoOrderListVo> 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<LoadSetOrderListDtoVo> page = new Page(loadSetOrderListDto.getPageNum(), loadSetOrderListDto.getPageSize()); |
| | | IPage<LoadSetOrderListDtoVo> 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<String> 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()) { |
| | | SysVipInfo vipInfo = sysVipInfoDao.selectById(shopSalesmanOrder.getSalesUserId()); |
| | | if(ObjectUtil.isEmpty(vipInfo)) { |
| | | return AjaxResult.buildFailInstance("收益人信息不存在"); |
| | | } |
| | | Double withdrawalCash = vipInfo.getWithdrawalCash(); |
| | | Double amount = shopSalesmanOrder.getAmount(); |
| | | withdrawalCash = (withdrawalCash == null?0:withdrawalCash)+(amount== null?0:amount); |
| | | vipInfo.setWithdrawalCash(withdrawalCash); |
| | | sysVipInfoDao.update(vipInfo); |
| | | } |
| | | } |
| | | } |
| | | return AjaxResult.buildSuccessInstance("操作成功"); |
| | | } |
| | | |
| | | |
| | | public List<FenxiaoOrderListExportVo> findFenxiaoOrderList(LoadFenxiaoOrderListDto loadFenxiaoOrderListDto) { |
| | | QueryUtil.setQueryLimitCom(loadFenxiaoOrderListDto); |
| | | return shopSalesmanOrderDao.selectFenxiaoOrderListNoPage(loadFenxiaoOrderListDto); |
| | | } |
| | | |
| | | |
| | | |
| | | } |