NmmsController.java 5.4 KB
package com.tianbo.analysis.controller;

import com.tianbo.analysis.dao.COMPANYUSERMapper;
import com.tianbo.analysis.dao.ORIGINMANIFESTMASTERMapper;
import com.tianbo.analysis.model.*;
import com.tianbo.analysis.service.OriginService;
import com.tianbo.util.Date.DateUtil;

import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;

@Slf4j
@RestController
@RequestMapping("/nmms/dev")
public class NmmsController {

    @Resource
    ORIGINMANIFESTMASTERMapper originmanifestmasterMapper;

    @Autowired
    OriginService originService;

    @Resource
    COMPANYUSERMapper companyuserMapper;

    @Value("${sso.witheIP}")
    private String whiteIP;

    @ApiOperation(value = "删除分单信息", notes = "awba主单号格式\\d{3}-\\d{8},awbh分单号")
    @DeleteMapping("/delOriginAWBH")
    public ResultJson getCustomMessageId(@RequestParam(value = "awba",required = true) String awba,
                                         @RequestParam(value = "awbh",required = true) String awbh,
                                         @RequestParam(value = "flightDate",required = true) String flightDate,
                                         @RequestParam(value = "flightNo",required = true) String flightNo
                                         ){
        Date flight_date = DateUtil.parseDate(flightDate,"yyyy-MM-dd");
        ORIGINMANIFESTMASTER originmanifestmaster = new ORIGINMANIFESTMASTER(awba,flight_date,flightNo);
        originmanifestmaster = originmanifestmasterMapper.selectByAHBA(originmanifestmaster);
        return originService.deleteAwbh(originmanifestmaster.getAutoid())>0 ?  new ResultJson("200","删除成功") :  new ResultJson("200","删除失败");
    }

    /**
     * 资源同步
     * @param uam 资源同步实体
     * @return
     * @throws Exception
     */
    @ApiOperation(value = "统一认证平台同步资源接口", notes = "用户信息同步")
    @PostMapping(value = "/userSynchronization")
    @ResponseBody
    public ResultMessage userSynchronization(@RequestBody UAM uam, HttpServletRequest request) {
        if(!witheIP(request)){
            return new ResultMessage("401", "资源同步失败,来源IP非法");
        };
        if ("user".equals(uam.getResType())){

            List<UserData> list = uam.getData();
            // 判断该用户是否存在
            int i = 0;
            for (UserData userData: list){
                log.info("用户信息:{}", userData);
                COMPANYUSER companyuser = companyuserMapper.selectByUsername(userData.getLOGIN_NAME());
                if (companyuser != null){
                    companyuser.setPassword(userData.getPWD());
                    companyuser.setZipCode(userData.getUSER_ID());
                    log.info("通过账号为条件更新");
                    i = companyuserMapper.updateByPrimaryKeySelective(companyuser);
                }else {
                    COMPANYUSER kakoUser = new COMPANYUSER();
                    kakoUser.setId(UUID.randomUUID().toString());
                    kakoUser.setCropCode(userData.getLOGIN_NAME());
                    kakoUser.setPassword(userData.getPWD());
                    kakoUser.setZipCode(userData.getUSER_ID());
                    kakoUser.setTelCo(userData.getMOBILE());
                    kakoUser.setFullName(userData.getUSER_NAME());
                    kakoUser.setCreateDate(new Date());
                    kakoUser.setCustomsCode("4604");
                    kakoUser.setCropType(userData.getUSER_TITLE());
                    kakoUser.setAddrCo(userData.getOFFICE_ADDRESS());
                    log.info("账号统一认证id都不在  新增");
                    i = companyuserMapper.insertSelective(kakoUser);
                }
            }

            return  i > 0 ? new ResultMessage("200","资源同步成功"):new ResultMessage("202", "资源同步失败");
        }
        return new ResultMessage("201","不是用户信息");
    }

    private boolean witheIP(HttpServletRequest request){

        List<String> witheIPList = Arrays.asList(whiteIP.split(","));
        // 优先取 X-Real-IP
        String ip = request.getHeader("X-Real-IP");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            log.info("X-Real-IP = [{}]",ip);
            ip = request.getHeader("x-forwarded-for");
            log.info("x-forwarded-for= [{}]",ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
            ip = request.getRemoteAddr();
            log.info("RemoteAddr= [{}]",ip);
            if ("0:0:0:0:0:0:0:1".equals(ip))
            {
                ip = "unknown";
                log.info(ip);
            }
        }
        if ("unknown".equalsIgnoreCase(ip)){
            ip = "unknown";
        }
        int index = ip.indexOf(',');
        if (index >= 0){
            ip = ip.substring(0, index);
        }
        log.info("用户IP来源为:[{}]",ip);
        for (String whitIp : witheIPList ) {
            if(ip.contains(whitIp)){
                return true;
            }
        }
        log.info("用户IP[{}]来源非法",ip);
        return false;
    }

}