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.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.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.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 private BizUserDao bizUserDao; @Autowired BizUserService bizUserService; @Autowired ShopOrderV2Dao shopOrderV2Dao; /** * 申请成为推广员 * @param openId * @param invitationId * @return */ public ShopSalesmanApply applyToBeAnSalesman(String openId,String gradeId,String invitationId,int applyWay) { BizUser loginUser=bizUserDao.findByOpenId(openId); //验证申请条件 VerificationResult verificationResult = isAbleToBeAnSalesman(openId,loginUser.getCompanyId()); if(verificationResult.isJudgeResult()){ //校验审核状态,和是否重复发起 QueryWrapper 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(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(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,是否为初始等级) 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")){ //自动审核 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("不能重复申请"); } }else{ throw new GlobleException(verificationResult.getMsg()); } } /** * 判断是否满足申请成为分销员的条件 */ public VerificationResult isAbleToBeAnSalesman(String openId,Long companyId) { VerificationResult verificationResult=null; //申请模式 BusParameterSettings applyWay = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_WAY, companyId); if (applyWay.getParamValue().equals(FenxiaoSettingConstant.FX_APPLY_WAY_AUTO)) { 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(openId,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(openId); 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(openId); 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(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 findShopSalesmanDetail(Page 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 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) { //设置用户公司ID QueryUtil.setQueryLimitCom(changeSaleManGradeDto); String userId = changeSaleManGradeDto.getUserId(); Long companyId = changeSaleManGradeDto.getCompanyId(); //获取对应的公司的等级 QueryWrapper 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 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.buildSuccessInstance("修改等级成功"); } @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.buildSuccessInstance("解绑成功"); } @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.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 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.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.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("保存成功"); } }