xiaoyong931011
2021-03-16 1028a2a78292ce0942bf9c07c23cfb22a33c4600
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -1,6 +1,7 @@
package com.matrix.system.fenxiao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,36 +9,28 @@
import com.matrix.biz.bean.BizUser;
import com.matrix.biz.dao.BizUserDao;
import com.matrix.biz.service.BizUserService;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.VerificationResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
import com.matrix.system.fenxiao.dto.ChangeSaleManGradeDto;
import com.matrix.system.fenxiao.dto.DelSaleManGradeApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto;
import com.matrix.system.fenxiao.dto.ShopSalesmanDetailDto;
import com.matrix.system.fenxiao.dto.UnbundlingSaleManDto;
import com.matrix.system.fenxiao.dto.*;
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
import com.matrix.system.fenxiao.vo.SalesmanBasicDetailVo;
import com.matrix.system.fenxiao.vo.ShopCustomDetailVo;
import com.matrix.system.fenxiao.vo.ShopOrderDetailVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo;
import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo;
import com.matrix.system.fenxiao.vo.*;
import com.matrix.system.hive.action.util.QueryUtil;
import cn.hutool.core.util.ObjectUtil;
import com.matrix.system.shopXcx.dao.ShopOrderDaoV2;
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;
@@ -65,6 +58,9 @@
    @Autowired
    BizUserService bizUserService;
    @Autowired
    ShopOrderDaoV2 shopOrderDaoV2;
    /**
     * 申请成为推广员
     * @param openId
@@ -77,6 +73,7 @@
        //校验审核状态,和是否重复发起
        QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",loginUser.getOpenId());
        queryWrapper.in("apply_status",Arrays.asList("1,2".split(",")));
        ShopSalesmanApply checkApply = shopSalesmanApplyDao.selectOne(queryWrapper);
        if(checkApply==null||
                checkApply.getApplyStatus()==ShopSalesmanApply.APPLY_STATUS_WTG){
@@ -84,11 +81,11 @@
            ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply();
            shopSalesmanApply.setUserId(openId);
            
            shopSalesmanApply.setCreateBy(loginUser.getNickName());
            shopSalesmanApply.setCreateBy(MatrixConstance.SYSTEM_USER);
            shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF);
            shopSalesmanApply.setCompanyId(loginUser.getCompanyId());
            shopSalesmanApply.setUpdateBy(loginUser.getNickName());
            shopSalesmanApply.setUpdateBy(MatrixConstance.SYSTEM_USER);
            Date date = new Date();
            shopSalesmanApply.setCreateTime(date);
            shopSalesmanApply.setUpdateTime(date);
@@ -103,9 +100,9 @@
               shopSalesmanApply.setGradeId(Long.parseLong(gradeId));
            }else{
                //获取初始等级ID(公司id,是否为初始等级)
                Wrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>();
                ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("company_id", loginUser.getCompanyId());
                ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("is_default", 1);
                QueryWrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>();
                queryWrapperOrepool.eq("company_id", loginUser.getCompanyId());
                queryWrapperOrepool.eq("is_default", 1);
                ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool);
               shopSalesmanApply.setGradeId(shopSalesmanGrade.getId());
            }
@@ -129,6 +126,40 @@
    }
    /**
     * 判断是否满足申请成为分销员的条件
     */
    public VerificationResult isAbleToBeAnSalesman(String openId) {
        BizUser bizUser = bizUserDao.findByOpenId(openId);
        VerificationResult verificationResult=null;
        //申请条件
        BusParameterSettings applyCondition = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_CONDITION, bizUser.getCompanyId());
        switch (applyCondition.getParamValue()){
            case FenxiaoSettingConstant.FX_APPLY_CONDITION_WTJ:
                VerificationResult.buildVerificationResult(true);
            case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFZDCP:
                VerificationResult.buildVerificationResult(true);
            case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFRYCP:
                //判断用户是否有确认收货的产品
                int receivedOrderCount= shopOrderDaoV2.selectReceivedOrderCount(openId);
                if(receivedOrderCount>0){
                    verificationResult= VerificationResult.buildVerificationResult(true);
                }else{
                    verificationResult= VerificationResult.buildVerificationResult(false,"不符合申请条件,请消费任意产品后再申请!");
                }
            case FenxiaoSettingConstant.FX_APPLY_CONDITION_XCZDJE:
                VerificationResult.buildVerificationResult(true);
            default:
                VerificationResult.buildVerificationResult(true);
        }
        return verificationResult;
    }
    public IPage<ShopSalesmanApplyVo> findShopSalesmanApplyList(Page<ShopSalesmanApplyVo> page, ShopSalesmanApplyDto shopSalesmanApplyDto) {
        return shopSalesmanApplyDao.findShopSalesmanApplyList(page,shopSalesmanApplyDto);
    }
@@ -148,7 +179,7 @@
   
   @Transactional(rollbackFor = Exception.class)
   public void addSaleManApply(String userId,String gradeId) {
      BizUser user = bizUserDao.selectById(userId);
      BizUser user = bizUserDao.findByOpenId(userId);
      applyToBeAnSalesman(user.getOpenId(),gradeId, "",ShopSalesmanApply.APPLY_WAY_HAND_ADD);
   }
@@ -156,7 +187,7 @@
   public void examineSaleManApply(ShopSalesmanApply shopSalesmanApply, Integer applyState) {
      String userId = shopSalesmanApply.getUserId();
      String parentUserId = shopSalesmanApply.getParentUserId();
      BizUser bizUser = bizUserDao.selectById(userId);
      BizUser bizUser = bizUserDao.findByOpenId(userId);
      //修改审核记录
      if(ShopSalesmanApply.APPLY_STATUS_TG == applyState) {
         shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG);
@@ -178,11 +209,11 @@
      return null;
   }
   public SalesmanBasicDetailVo selectShopSalesmanDetailByOpenId(String userId) {
   public SalesmanBasicDetailVo selectShopSalesmanDetailByOpenId(String userId, long applyId) {
      //获取个人信息
      BizUser bizUser = bizUserDao.findByOpenId(userId);
      Long companyId = bizUser.getCompanyId();
      return shopSalesmanApplyDao.selectShopSalesmanDetailByOpenId(userId,companyId);
      return shopSalesmanApplyDao.selectShopSalesmanDetailByOpenId(userId,companyId,applyId);
   }
   public IPage<ShopCustomDetailVo> findCustomDetail(Page<ShopCustomDetailVo> page,
@@ -200,6 +231,7 @@
      return shopSalesmanApplyDao.findShopOrderDetail(pageOrder,shopSalesmanDetailDto);
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult changeSaleManGrade(ChangeSaleManGradeDto changeSaleManGradeDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(changeSaleManGradeDto);
@@ -220,16 +252,28 @@
        if(BizUser.IS_SALES != isSales) {
           return AjaxResult.buildFailInstance("当前用户未通过审核,不允许修改");
        }
        //修改申请记录的等级
        QueryWrapper<ShopSalesmanApply> queryShopSalesmanApply = new QueryWrapper<>();
        queryShopSalesmanApply.eq("apply_status", 2);
        queryShopSalesmanApply.eq("user_id", userId);
        queryShopSalesmanApply.eq("company_id", companyId);
        ShopSalesmanApply shopSalesmanApply = shopSalesmanApplyDao.selectOne(queryShopSalesmanApply);
        Long gradeId = changeSaleManGradeDto.getGradeId();
        if(ObjectUtil.isEmpty(gradeId)) {
           findByOpenId.setSalesmanGrade(shopSalesmanGrade.getId());
           shopSalesmanApply.setGradeId(shopSalesmanGrade.getId());
        }else {
           findByOpenId.setSalesmanGrade(gradeId);
           shopSalesmanApply.setGradeId(gradeId);
        }
        bizUserDao.updateByModel(findByOpenId);
        shopSalesmanApplyDao.updateById(shopSalesmanApply);
        return AjaxResult.buildFailInstance("修改等级成功");
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult unbundlingSaleMan(UnbundlingSaleManDto unbundlingSaleManDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(unbundlingSaleManDto);
@@ -244,6 +288,7 @@
        return AjaxResult.buildFailInstance("解绑成功");
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult delSaleManGradeApply(DelSaleManGradeApplyDto delSaleManGradeApplyDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(delSaleManGradeApplyDto);
@@ -264,6 +309,89 @@
      return AjaxResult.buildFailInstance("操作成功");
   }
   public IPage<FyfaManageVo> findFyfaManageList(Page<FyfaManageVo> page, FyfaManageDto fyfaManageDto) {
      return shopSalesmanGradeDao.findFyfaManageList(page,fyfaManageDto);
   }
    @Transactional(rollbackFor = Exception.class)
   public void addFyfa(SysUsers user) {
      ShopSalesmanGrade shopSalesmanGrade = new ShopSalesmanGrade();
      shopSalesmanGrade.setIsDefault(2);
      shopSalesmanGrade.setCreateBy(user.getSuName());
      shopSalesmanGrade.setUpdateBy(user.getSuName());
      shopSalesmanGrade.setCreateTime(new Date());
      shopSalesmanGrade.setUpdateTime(new Date());
      shopSalesmanGrade.setCompanyId(user.getCompanyId());
      shopSalesmanGradeDao.insert(shopSalesmanGrade);
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult delFyfaApply(DelFyfaApplyDto delFyfaApplyDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(delFyfaApplyDto);
        Long gradeId = delFyfaApplyDto.getGradeId();
        ShopSalesmanGrade selectById = shopSalesmanGradeDao.selectById(gradeId);
        if(ObjectUtil.isEmpty(selectById)) {
           return AjaxResult.buildFailInstance("当前行数据不存在,请刷新页面");
        }
        shopSalesmanGradeDao.deleteById(gradeId);
      return AjaxResult.buildFailInstance("操作成功");
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult updateFyfa(UpdateFyfaDto updateFyfaDto) {
        ShopSalesmanGrade selectById = shopSalesmanGradeDao.selectById(updateFyfaDto.getId());
        if(ObjectUtil.isEmpty(selectById)) {
           return AjaxResult.buildFailInstance("当前行数据不存在,请刷新页面");
        }
        String name = updateFyfaDto.getName();
        if(StrUtil.isEmpty(name)) {
           return AjaxResult.buildFailInstance("请输入方案名称");
        }
        Double sealesCommission = updateFyfaDto.getSealesCommission();
        if(ObjectUtil.isEmpty(sealesCommission)) {
           return AjaxResult.buildFailInstance("请输入正确的推广提成");
        }
        Double invitationCommission = updateFyfaDto.getInvitationCommission();
        if(ObjectUtil.isEmpty(invitationCommission)) {
           return AjaxResult.buildFailInstance("请输入正确的邀请提成");
        }
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(updateFyfaDto);
        selectById.setCompanyId(updateFyfaDto.getCompanyId());
        selectById.setName(updateFyfaDto.getName());
        selectById.setSealesCommission(sealesCommission);
        selectById.setInvitationCommission(invitationCommission);
        selectById.setGradeCondition(updateFyfaDto.getGradeCondition());
        shopSalesmanGradeDao.updateById(selectById);
      return AjaxResult.buildFailInstance("操作成功");
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult updateTgjh(UpdateTgjhDto updateTgjhDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(updateTgjhDto);
        //获取推广计划的Param
        Long companyId = updateTgjhDto.getCompanyId();
        BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_TG_PLAN, companyId);
        busParameterSettings.setParamValue3(updateTgjhDto.getTgfa());
        busParameterSettingsDao.updateByModel(busParameterSettings);
      return AjaxResult.buildFailInstance("保存成功");
   }
    @Transactional(rollbackFor = Exception.class)
   public AjaxResult updateTgtp(UpdateTgtpDto updateTgtpDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(updateTgtpDto);
        //获取推广计划的Param
        Long companyId = updateTgtpDto.getCompanyId();
        BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_TG_POSTER, companyId);
        busParameterSettings.setParamValue(updateTgtpDto.getImageUrl());
        busParameterSettingsDao.updateByModel(busParameterSettings);
      return AjaxResult.buildFailInstance("保存成功");
   }