| 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.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.DelFyfaApplyDto; | 
| import com.matrix.system.fenxiao.dto.DelSaleManGradeApplyDto; | 
| import com.matrix.system.fenxiao.dto.FyfaManageDto; | 
| 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.UpdateFyfaDto; | 
| import com.matrix.system.fenxiao.dto.UpdateTgjhDto; | 
| import com.matrix.system.fenxiao.dto.UpdateTgtpDto; | 
| import com.matrix.system.fenxiao.entity.ShopSalesmanApply; | 
| import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; | 
| import com.matrix.system.fenxiao.vo.FyfaManageVo; | 
| 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 cn.hutool.core.util.StrUtil; | 
|   | 
| 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 ShopSalesmanApplyService  extends ServiceImpl<ShopSalesmanApplyDao, ShopSalesmanApply>{ | 
|   | 
|   | 
|     @Autowired | 
|     BusParameterSettingsDao busParameterSettingsDao; | 
|   | 
|     @Autowired | 
|     ShopSalesmanApplyDao shopSalesmanApplyDao; | 
|      | 
|     @Autowired | 
|     ShopSalesmanGradeDao shopSalesmanGradeDao; | 
|   | 
|     @Autowired | 
|     private BizUserDao bizUserDao; | 
|   | 
|     @Autowired | 
|     BizUserService bizUserService; | 
|   | 
|     /** | 
|      * 申请成为推广员 | 
|      * @param openId | 
|      * @param invitationId | 
|      * @return | 
|      */ | 
|     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()); | 
|         queryWrapper.in("apply_status",Arrays.asList("1,2".split(","))); | 
|         ShopSalesmanApply checkApply = shopSalesmanApplyDao.selectOne(queryWrapper); | 
|         if(checkApply==null|| | 
|                 checkApply.getApplyStatus()==ShopSalesmanApply.APPLY_STATUS_WTG){ | 
|   | 
|             ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply(); | 
|             shopSalesmanApply.setUserId(openId); | 
|              | 
|             shopSalesmanApply.setCreateBy(loginUser.getNickName()); | 
|             shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF); | 
|   | 
|             shopSalesmanApply.setCompanyId(loginUser.getCompanyId()); | 
|             shopSalesmanApply.setUpdateBy(loginUser.getNickName()); | 
|             Date date = new Date(); | 
|             shopSalesmanApply.setCreateTime(date); | 
|             shopSalesmanApply.setUpdateTime(date); | 
|   | 
|             if(StringUtils.isNotBlank(invitationId)){ | 
|                 shopSalesmanApply.setParentUserId(invitationId); | 
|             }else if(StringUtils.isNotBlank(loginUser.getParentOpenId())){ | 
|                 //如果曾经是被邀请进来的则自动绑定为之前邀请人的下级 | 
|                 shopSalesmanApply.setParentUserId(loginUser.getParentOpenId()); | 
|             } | 
|             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")){ | 
|                 //自动审核 | 
|                 shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG); | 
|                 bizUserService.setToBeAnSalesman(loginUser.getOpenId(),invitationId); | 
|   | 
|             }else{ | 
|                 shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH); | 
|             } | 
|             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.findByOpenId(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.findByOpenId(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, long applyId) { | 
|         //获取个人信息 | 
|         BizUser bizUser = bizUserDao.findByOpenId(userId); | 
|         Long companyId = bizUser.getCompanyId(); | 
|         return shopSalesmanApplyDao.selectShopSalesmanDetailByOpenId(userId,companyId,applyId); | 
|     } | 
|   | 
|     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); | 
|     } | 
|   | 
|     @Transactional(rollbackFor = Exception.class) | 
|     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("当前用户未通过审核,不允许修改"); | 
|         } | 
|          | 
|         //修改申请记录的等级 | 
|         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); | 
|         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("解绑成功"); | 
|     } | 
|   | 
|     @Transactional(rollbackFor = Exception.class) | 
|     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("操作成功"); | 
|     } | 
|   | 
|     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("保存成功"); | 
|     } | 
|   | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
|      | 
| } |