| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.core.annotation.excel.ExcelImporter; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.ImportRecordMapper; |
| | | import com.doumee.dao.business.dto.MemberImport; |
| | | import com.doumee.dao.business.CasesMapper; |
| | | import com.doumee.dao.business.CategoryMapper; |
| | | import com.doumee.dao.business.MultifileMapper; |
| | | import com.doumee.dao.business.model.Cases; |
| | | import com.doumee.dao.business.model.Category; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Multifile; |
| | | import com.doumee.service.business.MemberService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.ss.usermodel.CellType; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 会员信息表Service实现 |
| | |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | @Autowired |
| | | private CasesMapper casesMapper; |
| | | |
| | | @Autowired |
| | | private MultifileMapper multifileMapper; |
| | | |
| | | @Override |
| | | public Integer create(Member member) { |
| | |
| | | @Override |
| | | public PageData<Member> findPage(PageWrap<Member> pageWrap) { |
| | | IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Member> queryWrapper = new QueryWrapper<>(); |
| | | MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,Member::getId, pageWrap.getModel().getId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,Member::getDeleted, pageWrap.getModel().getDeleted()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,Member::getCreateUser, pageWrap.getModel().getCreateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Member::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); |
| | | queryWrapper.lambda().le(Member::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,Member::getUpdateUser, pageWrap.getModel().getUpdateUser()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Member::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); |
| | | queryWrapper.lambda().le(Member::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,Member::getRemark, pageWrap.getModel().getRemark()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,Member::getImgurl, pageWrap.getModel().getImgurl()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getDingdingId() != null,Member::getDingdingId, pageWrap.getModel().getDingdingId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,Member::getPhone, pageWrap.getModel().getPhone()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getName() != null,Member::getName, pageWrap.getModel().getName()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getSex() != null,Member::getSex, pageWrap.getModel().getSex()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getJobYear() != null,Member::getJobYear, pageWrap.getModel().getJobYear()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getPositon() != null,Member::getPositon, pageWrap.getModel().getPositon()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getZhanquIds() != null,Member::getZhanquIds, pageWrap.getModel().getZhanquIds()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getBustypeIds() != null,Member::getBustypeIds, pageWrap.getModel().getBustypeIds()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getLevelId() != null,Member::getLevelId, pageWrap.getModel().getLevelId()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,Member::getStatus, pageWrap.getModel().getStatus()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getFee() != null,Member::getFee, pageWrap.getModel().getFee()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getServeNum() != null,Member::getServeNum, pageWrap.getModel().getServeNum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getType() != null,Member::getType, pageWrap.getModel().getType()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getContent() != null,Member::getContent, pageWrap.getModel().getContent()); |
| | | if (pageWrap.getModel().getId() != null) { |
| | | queryWrapper.lambda().ge(Member::getLoginDate, Utils.Date.getStart(pageWrap.getModel().getLoginDate())); |
| | | queryWrapper.lambda().le(Member::getLoginDate, Utils.Date.getEnd(pageWrap.getModel().getLoginDate())); |
| | | } |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getLoginCount() != null,Member::getLoginCount, pageWrap.getModel().getLoginCount()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,Member::getSortnum, pageWrap.getModel().getSortnum()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getUsername() != null,Member::getUsername, pageWrap.getModel().getUsername()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getAddType() != null,Member::getAddType, pageWrap.getModel().getAddType()); |
| | | queryWrapper.lambda().eq(pageWrap.getModel().getImportId() != null,Member::getImportId, pageWrap.getModel().getImportId()); |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | Member model = pageWrap.getModel(); |
| | | queryWrapper.selectAll(Member.class) |
| | | .select(" c1.NAME ", Member::getPromotionName) |
| | | .select(" c2.NAME ", Member::getLevelName) |
| | | .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears) |
| | | .leftJoin(" category c1 on t.POSITON = c1.id ") |
| | | .leftJoin(" category c2 on t.LEVEL_ID = c2.id ") |
| | | .apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ") |
| | | .like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName()) |
| | | .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus()) |
| | | .orderByAsc(Objects.isNull(model.getOrderByType()),"c2.DETAIL") |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee) |
| | | .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee) |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),"c2.DETAIL") |
| | | .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),"c2.DETAIL") |
| | | .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.FOUR),Member::getServeNum) |
| | | ; |
| | | if(StringUtils.isNotBlank(model.getFieldIds())){ |
| | | String [] fieldIds = model.getFieldIds().split(","); |
| | | for (String s:fieldIds) { |
| | | queryWrapper.apply("find_in_set( '["+s+"]' , t.FIELD_IDS )"); |
| | | } |
| | | } |
| | | return PageData.from(memberMapper.selectPage(page, queryWrapper)); |
| | | if (StringUtils.isNotBlank(model.getQueryZQCode())) { |
| | | Category zhanqu = categoryMapper.selectOne(new QueryWrapper<Category>().lambda() |
| | | .eq(Category::getDeleted,Constants.ZERO) |
| | | .eq(Category::getStatus,Constants.ZERO) |
| | | .eq(Category::getDetail,model.getQueryZQCode()) |
| | | .last(" limit 1") |
| | | ); |
| | | if(Objects.nonNull(zhanqu)){ |
| | | queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) "); |
| | | } |
| | | } |
| | | IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, new MPJLambdaWrapper<>()); |
| | | if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){ |
| | | List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() |
| | | .eq(Category::getDeleted, Constants.ZERO) |
| | | .eq(Category::getType,Constants.TWO) |
| | | .orderByAsc(Category::getSortnum) |
| | | ); |
| | | String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode(); |
| | | String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode(); |
| | | for (Member member:memberIPage.getRecords()) { |
| | | if(CollectionUtils.isNotEmpty(categoryList)){ |
| | | dealMemberField(member,categoryList); |
| | | } |
| | | member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(path + member.getImgurl()):""); |
| | | if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(model.getQueryUserRole()) |
| | | || !roleConfig.contains(model.getQueryUserRole())){ |
| | | member.setFee(null); |
| | | } |
| | | } |
| | | } |
| | | return PageData.from(memberIPage); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Member findDetailById(Integer id,String queryUserRole) { |
| | | Member member = memberMapper.selectJoinOne(Member.class, new MPJLambdaWrapper<Member>() |
| | | .selectAll(Member.class) |
| | | .select(" c1.NAME ", Member::getPromotionName) |
| | | .select(" c2.NAME ", Member::getLevelName) |
| | | .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears) |
| | | .leftJoin(" category c1 on t.POSITON = c1.id ") |
| | | .leftJoin(" category c2 on t.LEVEL_ID = c2.id ") |
| | | .eq(Member::getId, id) |
| | | .last(" limit 1 ")); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(StringUtils.isNotBlank(member.getFieldIds())){ |
| | | member.setFieldList( |
| | | categoryMapper.selectList(new QueryWrapper<Category>().lambda() |
| | | .eq(Category::getDeleted, Constants.ZERO) |
| | | .eq(Category::getType,Constants.TWO) |
| | | .apply(" find_in_set(CONCAT('[',id,']'),'"+member.getFieldIds()+"') ") |
| | | .orderByAsc(Category::getSortnum) |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | String resourcePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode(); |
| | | String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode(); |
| | | String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode(); |
| | | member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(resourcePath + path + member.getImgurl()):""); |
| | | List<Cases> casesList = casesMapper.selectList(new QueryWrapper<Cases>().lambda() |
| | | .eq(Cases::getMemberId,member.getId()) |
| | | .eq(Cases::getDeleted,Constants.ZERO) |
| | | .orderByDesc(Cases::getId) |
| | | ); |
| | | if(CollectionUtils.isNotEmpty(casesList)){ |
| | | String casePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CASES_FILES).getCode(); |
| | | for (Cases cases:casesList) { |
| | | List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getObjId,cases.getId()) |
| | | .eq(Multifile::getObjType,Constants.OBJECT_TYPE_CASES) |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .orderByDesc(Multifile::getId) |
| | | ); |
| | | multifileList.forEach(multifile -> { |
| | | multifile.setFileurlFull(StringUtils.isNotBlank(multifile.getFileurl())?(resourcePath + casePath + multifile.getFileurl()):""); |
| | | }); |
| | | } |
| | | member.setCasesList(casesList); |
| | | } |
| | | if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(queryUserRole) |
| | | || !roleConfig.contains(queryUserRole)){ |
| | | member.setFee(null); |
| | | } |
| | | return member; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public void dealMemberField(Member member,List<Category> categoryList){ |
| | | if(CollectionUtils.isNotEmpty(categoryList)){ |
| | | return; |
| | | } |
| | | String fieldNames = ""; |
| | | for (Category category:categoryList) { |
| | | if(member.getFieldIds().contains("["+category.getId()+"]")){ |
| | | fieldNames = fieldNames + (StringUtils.isNotBlank(fieldNames)?",":"") + category.getName(); |
| | | } |
| | | } |
| | | member.setFieldNames(fieldNames); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public long count(Member member) { |
| | | QueryWrapper<Member> wrapper = new QueryWrapper<>(member); |
| | | return memberMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | } |