AdministerServiceImpl.java 4.98 KB
package com.subsidy.service.impl;

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.subsidy.common.exception.HttpException;
import com.subsidy.dto.administer.AppLoginDTO;
import com.subsidy.dto.administer.ChangeServiceDTO;
import com.subsidy.mapper.LaborServiceDictMapper;
import com.subsidy.model.AdministerDO;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.model.LaborServiceDictDO;
import com.subsidy.service.AdministerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.JwtUtil;
import com.subsidy.util.Localstorage;
import com.subsidy.util.SecretUtils;
import com.subsidy.vo.administer.AdministerPermissionVO;
import com.subsidy.vo.administer.PermissionsVO;
import com.subsidy.vo.labor.LoginVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 管理平台用户 服务实现类
 * </p>
 *
 * @author Tuyp
 * @since 2024-07-18
 */
@Service
public class AdministerServiceImpl extends ServiceImpl<AdministerMapper, AdministerDO> implements AdministerService {

    @Autowired
    private LaborServiceDictMapper laborServiceDictMapper;

    public IPage<LaborServiceDictDO> changeService(ChangeServiceDTO changeServiceDTO) {
        Page pager = new Page(changeServiceDTO.getPageNum(), changeServiceDTO.getPageSize());

        AdministerDO administerDO = this.baseMapper.selectById(changeServiceDTO.getId());
        if (6 == administerDO.getRole()){
            //全部
            return laborServiceDictMapper.selectPage(pager,new QueryWrapper<LaborServiceDictDO>()
                    .lambda()
                    .eq(LaborServiceDictDO::getId,administerDO.getLaborId()));
        }else if (0== administerDO.getRole()){
            return laborServiceDictMapper.selectPage(pager,null);
        }
        else {
            return this.baseMapper.administerLabors(pager,changeServiceDTO.getId(),changeServiceDTO.getLaborServiceName());
        }

    }


    public LoginVO appLogin(AppLoginDTO appLoginDTO, HttpServletRequest request) {


        LoginVO loginVO = new LoginVO();

//        subsidy.url=http://subsidy.youkehulian.cn/auth/user/token
//        appId:qxywz5nnWMI7ABCS
//        appSecret:626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ
        AdministerDO administerDO = this.baseMapper.selectOne(new QueryWrapper<AdministerDO>()
                .lambda()
                .eq(AdministerDO::getAccountName, appLoginDTO.getAccountName()));

        if (administerDO == null) {
            throw new HttpException(10010);
        }

        /**
         * 时间戳有没有过期
         */
        if (appLoginDTO.getTimestamp() - System.currentTimeMillis() >= 5 * 60 * 1000 || System.currentTimeMillis() - appLoginDTO.getTimestamp() >= 5 * 60 * 1000) {
            throw new HttpException(14002);
        }

        //鉴权逻辑 对不对
        String preAuthen = "appId=qxywz5nnWMI7ABCS"
                + "&id=" + administerDO.getId()
                + "&accountName=" + administerDO.getAccountName()
                + "&appSecret=626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ";

        String result = SecretUtils.getMD5String(preAuthen);
        if (!appLoginDTO.getSign().equals(result)) {
            throw new HttpException(14001);
        }

        String token = JwtUtil.generateToken(administerDO.getId(), ConstantUtils.ADMINISTER_TERMINATE);
        loginVO.setToken(token);
        return loginVO;
    }


    public AdministerPermissionVO getPermissions() {

        AdministerPermissionVO administerPermissionVO = new AdministerPermissionVO();
        AdministerDO administerDO = (AdministerDO) Localstorage.getUser();
        if (administerDO == null) {
            throw new HttpException(10012);
        }
        BeanUtils.copyProperties(administerDO, administerPermissionVO);

        List<PermissionsVO> list = this.baseMapper.getPermissions(administerDO.getId());
        List<PermissionsVO> treeList = new ArrayList();
        if (list != null) {
            list.forEach(permission -> {
                if (permission.getParentId() == null) {
                    treeList.add(permission);
                }

                list.forEach(p -> {
                    if (null != p.getParentId() && p.getParentId().equals(permission.getId())) {
                        if (permission.getChildren() == null) {
                            permission.setChildren(new ArrayList<>());
                        }
                        permission.getChildren().add(p);
                    }
                });
            });
        }
        administerPermissionVO.setPermissions(treeList);

        administerPermissionVO.setRole(administerDO.getRole());

        return administerPermissionVO;
    }

}