xiaoyong931011
2021-03-14 000e2719d57fd6cfc94fb340730ab3722d6c47cb
zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -1,22 +1,45 @@
package com.matrix.system.fenxiao.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.biz.service.BizUserService;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.StringUtils;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.interceptor.HostInterceptor;
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.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.hive.action.util.QueryUtil;
import cn.hutool.core.util.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 * @description 推广员申请记录
@@ -31,7 +54,10 @@
    BusParameterSettingsDao busParameterSettingsDao;
    @Autowired
    ShopSalesmanApplyDao salesmanApplyDao;
    ShopSalesmanApplyDao shopSalesmanApplyDao;
    @Autowired
    ShopSalesmanGradeDao shopSalesmanGradeDao;
    @Autowired
    private BizUserDao bizUserDao;
@@ -45,18 +71,19 @@
     * @param invitationId
     * @return
     */
    public ShopSalesmanApply applyToBeAnSalesman(String openId, String invitationId) {
    public ShopSalesmanApply applyToBeAnSalesman(String openId,String gradeId,String invitationId,int applyWay) {
        BizUser loginUser=bizUserDao.findByOpenId(openId);
        //校验审核状态,和是否重复发起
        QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",loginUser.getOpenId());
        ShopSalesmanApply checkApply = salesmanApplyDao.selectOne(queryWrapper);
        ShopSalesmanApply checkApply = shopSalesmanApplyDao.selectOne(queryWrapper);
        if(checkApply==null||
                checkApply.getApplyStatus()==ShopSalesmanApply.APPLY_STATUS_WTG){
            ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply();
            shopSalesmanApply.setUserId(loginUser.getUserId());
            shopSalesmanApply.setUserId(openId);
            shopSalesmanApply.setCreateBy(loginUser.getNickName());
            shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF);
@@ -72,8 +99,19 @@
                //如果曾经是被邀请进来的则自动绑定为之前邀请人的下级
                shopSalesmanApply.setParentUserId(loginUser.getParentOpenId());
            }
            BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, HostInterceptor.getCompanyId());
            if(StringUtils.isNotBlank(gradeId)){
               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);
                ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool);
               shopSalesmanApply.setGradeId(shopSalesmanGrade.getId());
            }
            shopSalesmanApply.setApplyWay(applyWay);
            BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, loginUser.getCompanyId());
            if(busParameterSettings!=null
                    &&busParameterSettings.getParamValue().equals("1")){
                //自动审核
@@ -83,11 +121,161 @@
            }else{
                shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH);
            }
            salesmanApplyDao.insert(shopSalesmanApply);
            shopSalesmanApplyDao.insert(shopSalesmanApply);
            return  shopSalesmanApply;
        }else{
            throw  new GlobleException("不能重复申请");
        }
    }
    public IPage<ShopSalesmanApplyVo> findShopSalesmanApplyList(Page<ShopSalesmanApplyVo> page, ShopSalesmanApplyDto shopSalesmanApplyDto) {
        return shopSalesmanApplyDao.findShopSalesmanApplyList(page,shopSalesmanApplyDto);
    }
   public IPage<ShopSalesmanAppliingVo> findShopSalesmanAppliingList(Page<ShopSalesmanAppliingVo> page,
         ShopSalesmanAppliingDto shopSalesmanAppliingDto) {
      return shopSalesmanApplyDao.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto);
   }
    public IPage<ShopSalesmanAppliingVo> selectBizUserApplyList(Page<ShopSalesmanAppliingVo> page, ShopSalesmanAppliingDto shopSalesmanAppliingDto) {
        return shopSalesmanApplyDao.selectBizUserApplyList(page,shopSalesmanAppliingDto);
    }
   public List<ShopSalesmanGradeVo> getShopSalesmanGradeVo(Long companyId) {
      return shopSalesmanGradeDao.getShopSalesmanGradeVo(companyId);
   }
   @Transactional(rollbackFor = Exception.class)
   public void addSaleManApply(String userId,String gradeId) {
      BizUser user = bizUserDao.selectById(userId);
      applyToBeAnSalesman(user.getOpenId(),gradeId, "",ShopSalesmanApply.APPLY_WAY_HAND_ADD);
   }
   @Transactional(rollbackFor = Exception.class)
   public void examineSaleManApply(ShopSalesmanApply shopSalesmanApply, Integer applyState) {
      String userId = shopSalesmanApply.getUserId();
      String parentUserId = shopSalesmanApply.getParentUserId();
      BizUser bizUser = bizUserDao.selectById(userId);
      //修改审核记录
      if(ShopSalesmanApply.APPLY_STATUS_TG == applyState) {
         shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG);
         bizUser.setIsSales(BizUser.IS_SALES);
      }else {
         shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_WTG);
         bizUser.setIsSales(BizUser.NOT_SALES);
      }
      shopSalesmanApplyDao.updateById(shopSalesmanApply);
      //修改USER的状态
      bizUser.setParentOpenId(parentUserId);
      bizUser.setBindingParentTime(new Date());
      bizUserDao.updateByModel(bizUser);
   }
   public IPage<ShopSalesmanApplyVo> findShopSalesmanDetail(Page<ShopSalesmanApplyVo> page,
         ShopSalesmanDetailDto shopSalesmanDetailDto) {
      // TODO Auto-generated method stub
      return null;
   }
   public SalesmanBasicDetailVo selectShopSalesmanDetailByOpenId(String userId) {
      //获取个人信息
      BizUser bizUser = bizUserDao.findByOpenId(userId);
      Long companyId = bizUser.getCompanyId();
      return shopSalesmanApplyDao.selectShopSalesmanDetailByOpenId(userId,companyId);
   }
   public IPage<ShopCustomDetailVo> findCustomDetail(Page<ShopCustomDetailVo> page,
                                                      ShopSalesmanDetailDto shopSalesmanDetailDto) {
      return shopSalesmanApplyDao.findCustomDetail(page,shopSalesmanDetailDto);
   }
   public IPage<ShopCustomDetailVo> findCustomLow(Page<ShopCustomDetailVo> pageLow,
         ShopSalesmanDetailDto shopSalesmanDetailDto) {
      return shopSalesmanApplyDao.findCustomLow(pageLow,shopSalesmanDetailDto);
   }
   public IPage<ShopOrderDetailVo> findShopOrderDetail(Page<ShopOrderDetailVo> pageOrder,
         ShopSalesmanDetailDto shopSalesmanDetailDto) {
      return shopSalesmanApplyDao.findShopOrderDetail(pageOrder,shopSalesmanDetailDto);
   }
   public AjaxResult changeSaleManGrade(ChangeSaleManGradeDto changeSaleManGradeDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(changeSaleManGradeDto);
        String userId = changeSaleManGradeDto.getUserId();
        Long companyId = changeSaleManGradeDto.getCompanyId();
        //获取对应的公司的等级
        QueryWrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>();
        queryWrapperOrepool.eq("is_default", 1);
        queryWrapperOrepool.eq("company_id", companyId);
        ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool);
        //修改Biz_User的salesman_grade
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
            return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        //不是分销员不允许修改
        Integer isSales = findByOpenId.getIsSales();
        if(BizUser.IS_SALES != isSales) {
           return AjaxResult.buildFailInstance("当前用户未通过审核,不允许修改");
        }
        Long gradeId = changeSaleManGradeDto.getGradeId();
        if(ObjectUtil.isEmpty(gradeId)) {
           findByOpenId.setSalesmanGrade(shopSalesmanGrade.getId());
        }else {
           findByOpenId.setSalesmanGrade(gradeId);
        }
        bizUserDao.updateByModel(findByOpenId);
        return AjaxResult.buildFailInstance("修改等级成功");
   }
   public AjaxResult unbundlingSaleMan(UnbundlingSaleManDto unbundlingSaleManDto) {
        //设置用户公司ID
        QueryUtil.setQueryLimitCom(unbundlingSaleManDto);
        String userId = unbundlingSaleManDto.getUserId();
        //将Biz_User的parent_open_id置空
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
           return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        findByOpenId.setParentOpenId("");
        bizUserDao.updateByModel(findByOpenId);
        return AjaxResult.buildFailInstance("解绑成功");
   }
   public AjaxResult delSaleManGradeApply(DelSaleManGradeApplyDto delSaleManGradeApplyDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(delSaleManGradeApplyDto);
        String userId = delSaleManGradeApplyDto.getUserId();
        Long applyid = delSaleManGradeApplyDto.getApplyId();
        //将biz_user的is_sale设置成否
        BizUser findByOpenId = bizUserDao.findByOpenId(userId);
        if(ObjectUtil.isEmpty(findByOpenId)) {
           return AjaxResult.buildFailInstance("当前用户已不存在");
        }
        findByOpenId.setIsSales(BizUser.NOT_SALES);
        bizUserDao.updateByModel(findByOpenId);
        //将记录设置成系统取消
        ShopSalesmanApply selectById = shopSalesmanApplyDao.selectById(applyid);
        selectById.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_XTQX);
        shopSalesmanApplyDao.updateById(selectById);
      return AjaxResult.buildFailInstance("操作成功");
   }
}