package com.qmth.sop.business.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qmth.boot.api.exception.ApiException;
import com.qmth.sop.business.entity.SysCustomAddr;
import com.qmth.sop.business.entity.SysUser;
import com.qmth.sop.business.mapper.SysCustomAddrMapper;
import com.qmth.sop.business.service.SysCustomAddrService;
import com.qmth.sop.common.enums.ExceptionResultEnum;
import com.qmth.sop.common.enums.FieldUniqueEnum;
import com.qmth.sop.common.util.ResultUtil;
import com.qmth.sop.common.util.ServletUtil;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;
import java.util.Objects;

/**
 * 客户表 服务实现.
 *
 * @author: shudonghui
 * @date: 2023-08-30 08:30:31
 * @version: 1.0
 * @email: shudonghui@qmth.com.cn
 * @Company: www.qmth.com.cn
 */
@Service
public class SysCustomAddrServiceImpl extends ServiceImpl<SysCustomAddrMapper, SysCustomAddr> implements SysCustomAddrService{


		/**
		* 查询列表
		*
		* @param iPage
		* @return
		*/
		@Override
		public IPage<SysCustomAddr> query(IPage<Map> iPage,String query) {
				return this.baseMapper.query(iPage,query);
		}
		/**
		* 新增修改客户表
		*
		* @param sysCustomAddr
		*/
		@Override
		@Transactional
		public Boolean saveSysCustomAddr(SysCustomAddr sysCustomAddr) {
			try {
				SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
				if (Objects.isNull(sysCustomAddr.getId())) {// 新增
					//sysCustomAddr.insertInfo(sysUser.getId());
				} else { // 修改
					//sysCustomAddr.updateInfo(sysUser.getId());
				}
				return saveOrUpdate(sysCustomAddr);
			} catch (Exception e) {
				if (e instanceof DuplicateKeyException) {
				String errorColumn = e.getCause().toString();
				String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
				throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
				} else if (e instanceof ApiException) {
                    ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
				} else {
				ResultUtil.error(e.getMessage());
				}
			}
			return null;

		}

		/**
		* 删除客户表
		*
		* @param id
		*/
		@Override
		@Transactional
		public Boolean delete(Long id) {
			return this.removeById(id);
		}

}