package com.steerinfo.dil.service.impl;

import com.steerinfo.dil.feign.JoinFeign;
import com.steerinfo.dil.mapper.TmstruckLeaveFactoryResultMapper;
import com.steerinfo.dil.mapper.TmstruckSmsRusultMapper;
import com.steerinfo.dil.model.TmstruckSmsRusult;
import com.steerinfo.dil.service.ITmstruckSmsRusultService;
import com.steerinfo.dil.util.MD5Util;
import com.steerinfo.framework.mapper.IBaseMapper;
import com.steerinfo.framework.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * TmstruckSmsRusult服务实现:
 * @author generator
 * @version 1.0-SNAPSHORT 2021-10-18 09:19
 * 类描述
 * 修订历史:
 * 日期:2021-10-18
 * 作者:generator
 * 参考:
 * 描述:TmstruckSmsRusult服务实现
 * @see null
 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
 */
@Service(value = "tmstruckSmsRusultService")
public class TmstruckSmsRusultServiceImpl extends BaseServiceImpl<TmstruckSmsRusult, BigDecimal> implements ITmstruckSmsRusultService {

    @Autowired
    private TmstruckSmsRusultMapper tmstruckSmsRusultMapper;
    @Autowired
    private TmstruckLeaveFactoryResultMapper tmstruckLeaveFactoryResultMapper;
    @Autowired
    JoinFeign joinFeign;
//    @Autowired
//    private OmstruckOrderMapper omstruckOrderMapper;

    @Override
    protected IBaseMapper<TmstruckSmsRusult, BigDecimal> getMapper() {
        return tmstruckSmsRusultMapper;
    }

    /**
     * 销售物流通过点击确认新增短信实绩
     * @param map
     * @return
     */
    @Override
    public int addSmsResult(Map<String,Object> map) {
        //获取用户名
//        Integer personnelId=(Integer) map.get("personnelId");
//        String personnelName=omstruckOrderMapper.selectPersonNameByPersonnelId(personnelId);
        //获取订单号
        String orderNumber = map.get("orderNumber").toString();
        //新增短信实绩
        TmstruckSmsRusult tmstruckSmsRusult=new TmstruckSmsRusult();
        tmstruckSmsRusult.setResultId(tmstruckSmsRusultMapper.selectMaxId());
        //新增总实绩id
        Map<String,Object> map1= tmstruckLeaveFactoryResultMapper.selectResultId(orderNumber);
        Integer resultTotalId = Integer.parseInt(map1.get("resultTotalId").toString());
        tmstruckSmsRusult.setTotalResultId(new BigDecimal(resultTotalId));
        Integer shipperId = tmstruckSmsRusultMapper.selectShipperIdByOrderNumber(orderNumber);
        //设置发送方id
        tmstruckSmsRusult.setSenderId(new BigDecimal(shipperId));
        //通过发送方ID查询appId和秘钥
        Map<String,Object>map5=tmstruckSmsRusultMapper.selectIdApp(new BigDecimal(shipperId));
        String AppId= (String) map5.get("AppId");
        String secretKey=(String) map5.get("secretKey");

        tmstruckSmsRusult.setResultSendingTime(new Date());
        //根据运输订单号查找司机电话号码
        String driverPhone=tmstruckSmsRusultMapper.selectCarDriverByOrderNumber(orderNumber);
        String content="您好!您在达钢购买的钢材已发车,司机电话"+driverPhone+"欲知详情,请前往xxxxx地址,下载APP 达钢物流";
        tmstruckSmsRusult.setResultSmsContent("您好!您在达钢购买的钢材已发车,司机电话"+driverPhone+"欲知详情,请前往xxxxx地址,下载APP 达钢物流");

        //新增短信实绩
        tmstruckSmsRusult.setInsertTime(new Date());
        //调用接口发送短信
        Map<String, Object> map2 = new HashMap<>();
        String timestamp=String.valueOf(new Date().getTime());
        String sign=AppId+secretKey+timestamp;
        try {
            String signMd5=MD5Util.md5Encode(sign);
            map2.put("sign",signMd5);
        } catch (Exception e) {
            e.printStackTrace();
        }
      	map2.put("AppId",AppId);
        map2.put("timestamp",timestamp);
        map2.put("content",content);
        map2.put("mobiles",driverPhone);
        if (joinFeign.push(map2)){
            int i=tmstruckSmsRusultMapper.insertSelective(tmstruckSmsRusult);
            return i;
        }
        else return 0;



    }

    @Override
    public List<Map<String, Object>> getSmsResult(Map<String, Object> map) {
        return tmstruckSmsRusultMapper.selectSmsResult(map);
    }
}