辛苦写的代码,很垃圾,不想删除,备份一下

package com.huajun.resources.service.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.huajun.common.core.domain.R;
import com.huajun.common.core.utils.StringUtils;
import com.huajun.common.core.web.domain.AjaxResult;
import com.huajun.system.api.RemoteConfigService;
import com.huajun.system.api.RemoteUserService;
import com.huajun.system.api.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.huajun.resources.mapper.ResourceExpertMapper;
import com.huajun.resources.domain.ResourceExpert;
import com.huajun.resources.service.IResourceExpertService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 应急专家信息Service业务层处理
 * 
 * @author huajun
 * @date 2021-03-31
 */
@Service
public class ResourceExpertServiceImpl extends ServiceImpl<ResourceExpertMapper,ResourceExpert> implements IResourceExpertService
{
    @Autowired
    private ResourceExpertMapper resourceExpertMapper;

    @Autowired
    private RemoteUserService remoteUserService;

    @Autowired
    private RemoteConfigService remoteConfigService;

    /**
     * 查询应急专家信息列表
     * 
     * @param resourceExpert 应急专家信息
     * @return 应急专家信息
     */
    @Override
    public List<ResourceExpert> selectResourceExpertList(ResourceExpert resourceExpert)
    {
        return resourceExpertMapper.selectResourceExpertList(resourceExpert);
    }
    /**
     * 同步应急专家账号
     * 2021-06-04
     */
    @Override
    public AjaxResult SyncExpert(String id) {
        AjaxResult result = null;
        if (StringUtils.isEmpty(id)) {
            return AjaxResult.error("获取应急专家参数错误!");
        }
        R<AjaxResult> ajaxResultR=remoteConfigService.getConfigKey("emergencyexpertdept");



        ResourceExpert resourceExpert = resourceExpertMapper.selectById(id);
        if (StringUtils.isEmpty(resourceExpert.getUserId()))//同步操作
        {
            String expertdeptid = remoteConfigService.getConfigInfo("emergencyexpertdept");//得到专家部门
            if (StringUtils.isEmpty(expertdeptid)) {
                return AjaxResult.error("同步专家用户'" + resourceExpert.getName() + "'失败,未设置专家部门");
            }
            String expertroleid = remoteConfigService.getConfigInfo("emergencyexpertrole");//得到专家角色
            if (StringUtils.isEmpty(expertroleid)) {
                return AjaxResult.error("同步专家用户'" + resourceExpert.getName() + "'失败,未设置专家角色");
            }
            SysUser sysuser = new SysUser();
            sysuser.setDeptId(Long.valueOf(expertdeptid));//默认部门
            sysuser.setUserName(resourceExpert.getMobileTel().trim());//用户账号,使用专家手机号
            sysuser.setNickName(resourceExpert.getName());//使用专家姓名
            sysuser.setEmail(resourceExpert.getEmail());//专家邮箱
            sysuser.setPhonenumber(resourceExpert.getMobileTel());//专家手机号
            sysuser.setSex("2");//专家性别0=男,1=女,2=未知
            sysuser.setPassword(resourceExpert.getMobileTel().trim());//默认使用手机号
            sysuser.setStatus("0");//帐号状态0=正常,1=停用
            sysuser.setDelFlag("0");//删除标志(0代表存在 2代表删除)
            sysuser.setRemark("");//专家其他信息可以设置进此字段
            Long[] roleIds = {Long.valueOf(expertroleid)};
            sysuser.setRoleIds(roleIds);
            sysuser.setExpertId(id);
            result = remoteUserService.addUser(sysuser);
            if (result.get("msg").equals("操作成功") && result.get("code").equals(200)) {
                LinkedHashMap<String, Object> data = (LinkedHashMap) result.get("data");
                for (Map.Entry<String, Object> entry : data.entrySet()) {
                    if (entry.getKey().equals("userId")) {
                        resourceExpert.setUserId(entry.getValue().toString());
                        break;
                    }
                }
                resourceExpertMapper.updateById(resourceExpert);
            }

        } else//解除绑定,需要设置专家表外键为null,删除用户表,用户角色表中信息
        {
            Long[] userIds = {Long.valueOf(resourceExpert.getUserId())};
            result = remoteUserService.removeUser(userIds);
            if (result.get("msg").equals("操作成功") && result.get("code").equals(200)) {
                int UpdateCount = resourceExpertMapper.update(
                        null,
                        Wrappers.<ResourceExpert>lambdaUpdate()
                                .set(ResourceExpert::getUserId, null) //把用户主键设置为null
                                .eq(ResourceExpert::getId, id)
                );
            }
        }


        return result;

    }

    /**
     * 重写Mybatis-Plus的批量删除方法removeByIds,实现自定义逻辑
     *2021-06-04
     * @param idList
     * @return
     */
    @Override
    public boolean removeByIds(Collection<? extends Serializable> idList) {
        if (CollectionUtils.isEmpty(idList)) {
            return false;
        }
        QueryWrapper<ResourceExpert> wrapper = new QueryWrapper<>();
        wrapper.in("id", idList).isNotNull("user_id");
        List<ResourceExpert> resourceexperts = resourceExpertMapper.selectList(wrapper);
        // users.forEach(System.out::println);
        boolean isok = SqlHelper.retBool(this.getBaseMapper().deleteBatchIds(idList));
        if (isok) {
            Long[] userIds = new Long[resourceexperts.size()];
            for (int j = 0; j < resourceexperts.size(); j++) {
                userIds[j] = Long.valueOf(resourceexperts.get(j).getUserId());
            }
            remoteUserService.removeUser(userIds);

        }
        return isok;
        //return SqlHelper.retBool(this.getBaseMapper().deleteBatchIds(idList));
        //return CollectionUtils.isEmpty(idList) ? false : SqlHelper.retBool(this.getBaseMapper().deleteBatchIds(idList));
    }

    /**
     * 批量更新专家信息,把专家外键置为null
     * 2021-06-04
     * @param Ids 需要更新的专家ID
     * @return
     */
    @Override
    @Transactional
    public int updateExpertByIds(Long[] Ids) {
        return resourceExpertMapper.updateExpertByIds(Ids);
    }


}

 

posted @ 2021-06-04 17:21  DarJeely  阅读(90)  评论(0编辑  收藏  举报