package com.matrix.system.fenxiao.service; 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; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.WebUtil; 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.*; import com.matrix.system.fenxiao.entity.ShopSalesmanApply; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.vo.*; import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.bean.SysVipInfo; import com.matrix.system.hive.dao.SysVipInfoDao; import com.matrix.system.hive.service.SysVipInfoService; import com.matrix.system.shopXcx.dao.ShopOrderV2Dao; 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{ @Autowired BusParameterSettingsDao busParameterSettingsDao; @Autowired ShopSalesmanApplyDao shopSalesmanApplyDao; @Autowired ShopSalesmanGradeDao shopSalesmanGradeDao; @Autowired SysVipInfoDao sysVipInfoDao; @Autowired SysVipInfoService sysVipInfoService; @Autowired ShopOrderV2Dao shopOrderV2Dao; /** * 申请成为推广员 * @param userId * @param invitationId * @return */ public ShopSalesmanApply applyToBeAnSalesman(Long userId,Long gradeId,Long invitationId,int applyWay) { SysVipInfo loginUser=sysVipInfoDao.selectById(userId); //验证申请条件 VerificationResult verificationResult = isAbleToBeAnSalesman(userId,loginUser.getCompanyId()); if(verificationResult.isJudgeResult()){ //校验审核状态,和是否重复发起 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id",loginUser.getId()); 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(userId); shopSalesmanApply.setCreateBy(MatrixConstance.SYSTEM_USER); shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF); shopSalesmanApply.setCompanyId(loginUser.getCompanyId()); shopSalesmanApply.setUpdateBy(MatrixConstance.SYSTEM_USER); Date date = new Date(); shopSalesmanApply.setCreateTime(date); shopSalesmanApply.setUpdateTime(date); if(invitationId!=null){ shopSalesmanApply.setParentUserId(invitationId); }else if(loginUser.getRecommendId()!=null){ //如果曾经是被邀请进来的则自动绑定为之前邀请人的下级 shopSalesmanApply.setParentUserId(loginUser.getRecommendId()); } if(gradeId!=null){ shopSalesmanApply.setGradeId(gradeId); }else{ //获取初始等级ID(公司id,是否为初始等级) QueryWrapper queryWrapperOrepool = new QueryWrapper<>(); queryWrapperOrepool.eq("company_id", loginUser.getCompanyId()); 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")){ //自动审核 //初始等级ID(公司id,是否为初始等级) QueryWrapper queryWrapperOrepool = new QueryWrapper<>(); queryWrapperOrepool.eq("company_id", loginUser.getCompanyId()); queryWrapperOrepool.eq("is_default", 1); ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool); shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG); sysVipInfoService.setToBeAnSalesman(loginUser.getId(),invitationId,shopSalesmanGrade.getId()); }else{ shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH); } shopSalesmanApplyDao.insert(shopSalesmanApply); return shopSalesmanApply; }else{ throw new GlobleException("不能重复申请"); } }else{ throw new GlobleException(verificationResult.getMsg()); } } /** * 判断是否满足申请成为分销员的条件 */ public VerificationResult isAbleToBeAnSalesman(Long userId,Long companyId) { VerificationResult verificationResult=null; //申请模式 BusParameterSettings applyWay = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_WAY, companyId); if (FenxiaoSettingConstant.FX_APPLY_WAY_AUTO.equals(applyWay.getParamValue())) { verificationResult= VerificationResult.buildVerificationResult(true); }else{ //申请条件 BusParameterSettings applyCondition = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_CONDITION, companyId); switch (applyCondition.getParamValue()){ case FenxiaoSettingConstant.FX_APPLY_CONDITION_WTJ: verificationResult= VerificationResult.buildVerificationResult(true); break; case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFZDCP: int buyZdcpCount= shopOrderV2Dao.countBuyZdcp(userId,applyCondition.getParamValue1()); if(buyZdcpCount>0){ verificationResult= VerificationResult.buildVerificationResult(true); }else{ verificationResult= VerificationResult.buildVerificationResult(false,"不符合申请条件,请消费指定产品后再申请!"); } break; case FenxiaoSettingConstant.FX_APPLY_CONDITION_XFRYCP: //判断用户是否有确认收货的产品 int receivedOrderCount= shopOrderV2Dao.selectReceivedOrderCount(userId); if(receivedOrderCount>0){ verificationResult= VerificationResult.buildVerificationResult(true); }else{ verificationResult= VerificationResult.buildVerificationResult(false,"不符合申请条件,请消费任意产品后再申请!"); } break; case FenxiaoSettingConstant.FX_APPLY_CONDITION_XCZDJE: Double zdje=Double.parseDouble(applyCondition.getParamValue2()); Double yxfje=shopOrderV2Dao.countOrderAmount(userId); if(zdje findShopSalesmanApplyList(Page page, ShopSalesmanApplyDto shopSalesmanApplyDto) { return shopSalesmanApplyDao.findShopSalesmanApplyList(page,shopSalesmanApplyDto); } public IPage findShopSalesmanAppliingList(Page page, ShopSalesmanAppliingDto shopSalesmanAppliingDto) { return shopSalesmanApplyDao.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); } public IPage selectBizUserApplyList(Page page, ShopSalesmanAppliingDto shopSalesmanAppliingDto) { return shopSalesmanApplyDao.selectBizUserApplyList(page,shopSalesmanAppliingDto); } public List getShopSalesmanGradeVo(Long companyId) { return shopSalesmanGradeDao.getShopSalesmanGradeVo(companyId); } @Transactional(rollbackFor = Exception.class) public void addSaleManApply(Long userId,Long gradeId) { SysVipInfo user = sysVipInfoDao.selectById(userId); applyToBeAnSalesman(user.getId(),gradeId, null,ShopSalesmanApply.APPLY_WAY_HAND_ADD); } @Transactional(rollbackFor = Exception.class) public void examineSaleManApply(ShopSalesmanApply shopSalesmanApply, Integer applyState) { Long userId = shopSalesmanApply.getUserId(); Long parentUserId = shopSalesmanApply.getParentUserId(); SysVipInfo sysVipInfo = sysVipInfoDao.selectById(userId); //修改审核记录 if(ShopSalesmanApply.APPLY_STATUS_TG == applyState) { shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_TG); sysVipInfo.setIsSales(SysVipInfo.IS_SALES); }else { shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_WTG); sysVipInfo.setIsSales(SysVipInfo.NOT_SALES); } shopSalesmanApplyDao.updateById(shopSalesmanApply); //修改USER的状态 sysVipInfo.setRecommendId(parentUserId); sysVipInfo.setBindingParentTime(new Date()); sysVipInfo.setSalesmanGrade(shopSalesmanApply.getGradeId()); sysVipInfoDao.update(sysVipInfo); } public IPage findShopSalesmanDetail(Page page, ShopSalesmanDetailDto shopSalesmanDetailDto) { // TODO Auto-generated method stub return null; } public SalesmanBasicDetailVo selectShopSalesmanDetailByOpenId(Long userId, long applyId) { //获取个人信息 SysVipInfo sysVipInfo = sysVipInfoDao.selectById(userId); Long companyId = sysVipInfo.getCompanyId(); return shopSalesmanApplyDao.selectShopSalesmanDetailByOpenId(sysVipInfo.getId(),companyId,applyId); } public IPage findCustomDetail(Page page,LoadParamSettingDto loadParamSettingDto) { return shopSalesmanApplyDao.findCustomDetail(page,loadParamSettingDto); } public IPage findCustomLow(Page pageLow, ShopSalesmanDetailDto shopSalesmanDetailDto) { return shopSalesmanApplyDao.findCustomLow(pageLow,shopSalesmanDetailDto); } public IPage findShopOrderDetail(Page pageOrder, ShopSalesmanDetailDto shopSalesmanDetailDto) { return shopSalesmanApplyDao.findShopOrderDetail(pageOrder,shopSalesmanDetailDto); } @Transactional(rollbackFor = Exception.class) public AjaxResult changeSaleManGrade(ChangeSaleManGradeDto changeSaleManGradeDto) { SysVipInfo vipInfo = sysVipInfoDao.selectById(changeSaleManGradeDto.getUserId()); //获取对应的公司的等级 QueryWrapper queryWrapperOrepool = new QueryWrapper<>(); queryWrapperOrepool.eq("is_default", 1); queryWrapperOrepool.eq("company_id", vipInfo.getCompanyId()); ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool); //不是分销员不允许修改 Integer isSales = vipInfo.getIsSales(); if(SysVipInfo.IS_SALES != isSales) { return AjaxResult.buildFailInstance("当前用户未通过审核,不允许修改"); } //修改申请记录的等级 QueryWrapper queryShopSalesmanApply = new QueryWrapper<>(); queryShopSalesmanApply.eq("apply_status", 2); queryShopSalesmanApply.eq("user_id", vipInfo.getId()); queryShopSalesmanApply.eq("company_id", vipInfo.getCompanyId()); ShopSalesmanApply shopSalesmanApply = shopSalesmanApplyDao.selectOne(queryShopSalesmanApply); Long gradeId = changeSaleManGradeDto.getGradeId(); if(ObjectUtil.isEmpty(gradeId)) { vipInfo.setSalesmanGrade(shopSalesmanGrade.getId()); shopSalesmanApply.setGradeId(shopSalesmanGrade.getId()); }else { vipInfo.setSalesmanGrade(gradeId); shopSalesmanApply.setGradeId(gradeId); } sysVipInfoDao.update(vipInfo); shopSalesmanApplyDao.updateById(shopSalesmanApply); return AjaxResult.buildSuccessInstance("修改等级成功"); } @Transactional(rollbackFor = Exception.class) public AjaxResult unbundlingSaleMan(UnbundlingSaleManDto unbundlingSaleManDto) { Long userId = unbundlingSaleManDto.getUserId(); sysVipInfoDao.unbundlingSaleMan(userId); return AjaxResult.buildSuccessInstance("解绑成功"); } @Transactional(rollbackFor = Exception.class) public AjaxResult delSaleManGradeApply(DelSaleManGradeApplyDto delSaleManGradeApplyDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(delSaleManGradeApplyDto); //将biz_user的is_sale设置成否 SysVipInfo vipInfo = sysVipInfoDao.selectById(delSaleManGradeApplyDto.getUserId()); if(ObjectUtil.isEmpty(vipInfo)) { return AjaxResult.buildFailInstance("当前用户已不存在"); } vipInfo.setIsSales(SysVipInfo.NOT_SALES); sysVipInfoDao.update(vipInfo); //将记录设置成系统取消 ShopSalesmanApply selectById = shopSalesmanApplyDao.selectById(delSaleManGradeApplyDto.getApplyId()); selectById.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_XTQX); shopSalesmanApplyDao.updateById(selectById); return AjaxResult.buildSuccessInstance("操作成功"); } public IPage findFyfaManageList(Page 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.buildSuccessInstance("操作成功"); } @Transactional(rollbackFor = Exception.class) public AjaxResult updateFyfa(UpdateFyfaDto updateFyfaDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(updateFyfaDto); ShopSalesmanGrade selectById = shopSalesmanGradeDao.selectById(updateFyfaDto.getId()); String name = updateFyfaDto.getName(); if(StrUtil.isEmpty(name)) { return AjaxResult.buildFailInstance("请输入方案名称"); } Double selfCommission = updateFyfaDto.getSelfCommission(); if(ObjectUtil.isEmpty(selfCommission)) { 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("请输入正确的邀请提成"); } if(ObjectUtil.isEmpty(selectById)) { SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); ShopSalesmanGrade shopSalesmanGrade = new ShopSalesmanGrade(); shopSalesmanGrade.setCompanyId(updateFyfaDto.getCompanyId()); shopSalesmanGrade.setName(updateFyfaDto.getName()); shopSalesmanGrade.setSelfCommission(selfCommission); shopSalesmanGrade.setSealesCommission(sealesCommission); shopSalesmanGrade.setInvitationCommission(invitationCommission); shopSalesmanGrade.setGradeCondition(updateFyfaDto.getGradeCondition()); 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); return AjaxResult.buildSuccessInstance("操作成功"); } selectById.setCompanyId(updateFyfaDto.getCompanyId()); selectById.setName(updateFyfaDto.getName()); selectById.setSelfCommission(selfCommission); selectById.setSealesCommission(sealesCommission); selectById.setInvitationCommission(invitationCommission); selectById.setGradeCondition(updateFyfaDto.getGradeCondition()); shopSalesmanGradeDao.updateById(selectById); return AjaxResult.buildSuccessInstance("操作成功"); } @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.buildSuccessInstance("保存成功"); } @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.buildSuccessInstance("保存成功"); } }