MrShi
4 天以前 acf90ad8e6bea592124541324467360cef565ff5
server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -6,13 +6,17 @@
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.iPass.IPass;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CategoryMapper;
import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.model.Category;
import com.doumee.dao.business.model.Multifile;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.vo.ZhanQuVO;
import com.doumee.service.business.CategoryService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -21,6 +25,7 @@
import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.math3.analysis.function.Log;
import org.apache.shiro.SecurityUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,9 +33,12 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * 分类信息表Service实现
@@ -42,6 +50,8 @@
    @Autowired
    private CategoryMapper categoryMapper;
    @Autowired
    private MultifileMapper multifileMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -49,36 +59,64 @@
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer create(Category category) {
//        类型:0=战区;1=商业化;2=擅长领域;3=讲师等级;
        if(Objects.isNull(category)
        || Objects.isNull(category.getType())
        || Objects.isNull(category.getName())
        || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList()))
        || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) )
        ){
        || (Constants.equalsInteger(category.getType(),Constants.ZERO)&& StringUtils.isBlank(category.getDetail()))   ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Constants.equalsInteger(category.getType(),Constants.ZERO)){
            if(categoryMapper.selectCount(new QueryWrapper<Category>().lambda()
                    .eq(Category::getType,Constants.ZERO)
                    .eq(Category::getDetail,category.getDetail())
                    .eq(Category::getDeleted,Constants.ZERO)
            )>Constants.ZERO){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"该战区编码已存在");
            }
        }
        category.setDeleted(Constants.ZERO);
        category.setCreateTime(new Date());
        category.setCreateUser(loginUserInfo.getId());
        category.setUpdateTime(new Date());
        category.setUpdateUser(loginUserInfo.getId());
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())
                && !Constants.equalsInteger(category.getType(),Constants.THREE)){
            category.setDetail(category.getDetailList().toJSONString());
        }
        if(!Constants.equalsInteger(category.getType(),Constants.ONE)){
            category.setIsFixed(Constants.ZERO);
        }
        categoryMapper.insert(category);
        dealBatchMultiFiles(category, category.getFileList(), loginUserInfo,false);
        return category.getId();
    }
    public void dealBatchMultiFiles(Category category, List<Multifile> fileList, LoginUserInfo user,boolean update) {
        Date today = new Date();
        //清空原有的
        if(update){
            multifileMapper.delete(new UpdateWrapper<Multifile>().lambda()
                    .eq(Multifile::getIsdeleted,Constants.ZERO)
                    .eq(Multifile::getObjType,Constants.ZERO)
                    .eq(Multifile::getObjId,category.getId()));
        }
        if(fileList!=null && fileList.size()>0){
            List<Multifile> multifileList = new ArrayList<>();
            fileList.stream().forEach(s -> {
                if(StringUtils.isNotBlank(s.getFileurl())){
                    s.setIsdeleted(Constants.ZERO);
                    s.setCreator(user.getId());
                    s.setCreateDate(today);
                    s.setObjId(category.getId());
                    s.setType(Constants.ZERO);
                    s.setObjType(Constants.ZERO);
                    multifileList.add(s);
                }
            });
            if(multifileList.size()>0){
                multifileMapper.insert(multifileList);
            }
        }
    }
    @Override
    public void deleteById(Integer id) {
        categoryMapper.update(new UpdateWrapper<Category>().lambda().set(Category::getDeleted,Constants.ONE).eq(Category::getId,id));
//        categoryMapper.deleteById(id);
    }
    @Override
@@ -102,34 +140,44 @@
                || Objects.isNull(category.getId())
                || Objects.isNull(category.getType())
                || Objects.isNull(category.getName())
                || (!Constants.equalsInteger(category.getType(),Constants.ZERO)&& CollectionUtils.isEmpty(category.getDetailList()))
                || (Constants.equalsInteger(category.getType(),Constants.ONE) && (Objects.isNull(category.getIcon())||Objects.isNull(category.getIsFixed())) )
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(Constants.equalsInteger(category.getType(),Constants.ZERO)){
            if(categoryMapper.selectCount(new QueryWrapper<Category>().lambda()
                    .eq(Category::getType,Constants.ZERO)
                    .eq(Category::getDetail,category.getDetail())
                    .eq(Category::getDeleted,Constants.ZERO)
                    .ne(Category::getId,category.getId())
            )>Constants.ZERO){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"该战区编码已存在");
            }
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        category.setUpdateTime(new Date());
        category.setIsFixed(null);
        category.setUpdateUser(loginUserInfo.getId());
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())
                && !Constants.equalsInteger(category.getType(),Constants.THREE)){
            category.setDetail(category.getDetailList().toJSONString());
        }
        categoryMapper.updateById(category);
        if(Objects.isNull(category.getSortnum())){
            categoryMapper.update(null,new UpdateWrapper<Category>().lambda()
                    .set(Category::getSortnum,null)
                    .eq(Category::getId,category.getId())
            );
        }
        dealBatchMultiFiles(category, category.getFileList(), loginUserInfo,true);
    }
    @Override
    public void updateStatus(Category category) {
        if(Objects.isNull(category)
                || Objects.isNull(category.getId())){
        if(Objects.isNull(category) || Objects.isNull(category.getId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        category.setUpdateTime(new Date());
        category.setIsFixed(null);
        category.setUpdateUser(loginUserInfo.getId());
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(category.getDetailList())){
            category.setDetail(category.getDetailList().toJSONString());
        }
        categoryMapper.updateById(category);
    }
@@ -149,12 +197,9 @@
        if(Objects.isNull(category)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(StringUtils.isNotBlank(category.getDetail())){
            category.setDetailList(JSONArray.parseArray(category.getDetail()));
        }
        if(StringUtils.isNotBlank(category.getIcon())){
            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
            String path  = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CATEGORY_FILES).getCode();
            category.setIconFull(path + category.getIcon());
        }
        return category;
@@ -168,7 +213,10 @@
    @Override
    public List<Category> findList(Category category) {
        category.setDeleted(Constants.ZERO);
        QueryWrapper<Category> wrapper = new QueryWrapper<>(category);
        wrapper.lambda().orderByAsc(Category::getSortnum);
        wrapper.lambda().orderByAsc(Category::getId);
        return categoryMapper.selectList(wrapper);
    }
  
@@ -179,7 +227,7 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setDeleted(Constants.ZERO);
        queryWrapper.selectAll(Category.class)
                .selectAs(SystemUser::getUsername, Category::getUpdateUserName)
                .selectAs(SystemUser::getRealname, Category::getUpdateUserName)
                .leftJoin(SystemUser.class,SystemUser::getId,Category::getUpdateUser);
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.eq(Category::getId, pageWrap.getModel().getId());
@@ -223,24 +271,41 @@
            queryWrapper.eq(Category::getIsFixed, pageWrap.getModel().getIsFixed());
        }
        queryWrapper.orderByAsc(Category::getSortnum);
        queryWrapper.orderByAsc(Category::getId);
        PageData<Category> result =PageData.from(categoryMapper.selectJoinPage(page, Category.class,queryWrapper));
        if(result!=null && result.getRecords()!=null){
            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
            String path  = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CATEGORY_FILES).getCode();
            for(Category cate : result.getRecords()){
                try {
                    if(StringUtils.isNotBlank(cate.getDetail())){
                        cate.setDetailList(JSONArray.parseArray(cate.getDetail()));
                    }
                    if(StringUtils.isNotBlank(cate.getIcon())){
                        cate.setIconFull(path + cate.getIcon());
                    }
                }catch (Exception e){
                if(Constants.equalsInteger(cate.getType(),Constants.ONE) ){
                    initMultifileList(cate);
                }
                if(StringUtils.isNotBlank(cate.getIcon())){
                    cate.setIconFull(path + cate.getIcon());
                }
            }
        }
        return result;
    }
    private void initMultifileList(Category cate) {
        String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
        Multifile find = new Multifile();
        find.setObjId(cate.getId());
        find.setObjType(Constants.ZERO);
        find.setIsdeleted(Constants.ZERO);
        List<Multifile> fileList=  multifileMapper.selectList(new QueryWrapper<>(find));
        if(fileList!=null){
            for(Multifile f : fileList){
                if(StringUtils.isNotBlank(f.getFileurl())){
                        f.setUrl(path+f.getFileurl());
                }
            }
        }
        cate.setFileList(fileList);
    }
    @Override
@@ -250,20 +315,19 @@
    }
    @Override
    public List<Category> getCategoryList(Integer type){
    public List<Category> getCategoryList(Integer type,Integer rank){
        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda().eq(Category::getDeleted,Constants.ZERO).eq(Category::getStatus,Constants.ZERO)
                .eq(Objects.nonNull(type),Category::getType,type)
                .apply(Objects.nonNull(rank)&&Constants.equalsInteger(rank,Constants.ONE)," id in ( " +
                        " select m.obj_id from multifile m where m.ISDELETED = 0 and m.OBJ_TYPE = 0  " +
                        " ) ")
                .orderByAsc(Category::getSortnum)
                .orderByAsc(Category::getId)
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)){
            String path  = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CATEGORY_FILES).getCode();
            for (Category category:categoryList) {
                if(StringUtils.isNotBlank(category.getDetail())){
                    category.setDetailList(JSONArray.parseArray(category.getDetail()));
                }
                if(StringUtils.isNotBlank(category.getIcon())){
                    category.setIconFull(path + category.getIcon());
            for(Category cate : categoryList){
                if(Constants.equalsInteger(cate.getType(),Constants.ONE) ){
                    initMultifileList(cate);
                }
            }
        }
@@ -271,4 +335,62 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void syncZhanQu() throws IOException {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        IPass iPass = new IPass();
        List<ZhanQuVO> l =  iPass.getIPassZhanquList(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_LOGIN_ACCOUNT).getCode(),
                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_LOGIN_PSD).getCode(),
                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_TOKEN_URL).getCode(),
                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IPASS_ZHANQU_URL).getCode()
        );
        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
                .eq(Category::getType,Constants.ZERO)
                .eq(Category::getDeleted,Constants.ZERO)
        );
        List<Category> updList = new ArrayList<>();
        List<Category> addList = new ArrayList<>();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(l)){
            for (ZhanQuVO zhanQuVO:l) {
                Category category = this.vaildData(zhanQuVO,categoryList,loginUserInfo);
                if(Objects.isNull(category.getId())){
                    addList.add(category);
                }else{
                    updList.add(category);
                }
            }
        }
        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(addList)) {
            categoryMapper.insertOrUpdate(addList);
        }
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(updList)){
            categoryMapper.insertOrUpdate(updList);
        }
    }
    public Category vaildData(ZhanQuVO zhanQuVO , List<Category> categoryList, LoginUserInfo userInfo) {
        Category returnData = new Category();
        for (Category category:categoryList) {
            returnData.setUpdateUser(userInfo.getId());
            returnData.setUpdateTime(new Date());
            if(category.getDetail().equals(zhanQuVO.getNodeCode())){
                returnData = category   ;
                returnData.setName(zhanQuVO.getNodeName());
                return returnData;
            }
        }
        returnData.setDetail(zhanQuVO.getNodeCode());
        returnData.setCreateTime(new Date());
        returnData.setDeleted(Constants.ZERO);
        returnData.setStatus(zhanQuVO.getNodeStatus().equals("Y")?Constants.ZERO:Constants.ONE);
        returnData.setName(zhanQuVO.getNodeName());
        returnData.setCreateUser(userInfo.getId());
        returnData.setType(Constants.ZERO);
        returnData.setIsFixed(Constants.ZERO);
        return returnData;
    }
}