package com.gk.firework.Service.ServiceImpl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.firework.Domain.CustomerInfo; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.Utils.Properties; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Domain.Utils.UploadUtil; import com.gk.firework.Mapper.CustomerInfoMapper; import com.gk.firework.Service.CustomerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @author : jingjy * @date : 2021/3/31 14:19 */ @Service("CustomerService") public class CustomerServiceImpl extends ServiceImpl implements CustomerService { @Autowired private CustomerInfoMapper customerInfoMapper; @Override public CustomerInfo createOrUpdate(JSONObject customer, Integer num, Date salesTime) throws ParseException { //TODO:新增或修改顾客信息 String idCardNum = customer.getString("idCardNumber"); String workerName = customer.getString("workerName"); String nation = customer.getString("nation"); // String gender = customer.getString("sex"); String gender = userType(idCardNum); byte byteGender = 0; if (CustomerInfo.GENDER_MALE.equals(gender)){ byteGender = 1; }else if (CustomerInfo.GENDER_FEMALE.equals(gender)){ byteGender = 2; } String bornDay = customer.getString("csrq"); DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); Date date = new Date(); Date born = dateFormat.parse(bornDay); String address = customer.getString("certAddress"); CustomerInfo customerInfo = customerInfoMapper.selectCustomerByIdCardNum(idCardNum); if (customerInfo == null){ customerInfo = new CustomerInfo(workerName,byteGender,idCardNum,nation,born,address); customerInfo.setFrequency(1); customerInfo.setCreateddate(date); customerInfo.setLasttime(salesTime); customerInfo.setLastnum(num); customerInfo.setNum(num); customerInfoMapper.insert(customerInfo); }else { if (customerInfo.getLasttime().compareTo(salesTime) < 0){ customerInfo.setLasttime(salesTime); customerInfo.setLastnum(num); } customerInfo.setFrequency(customerInfo.getFrequency()+1); customerInfo.setNum(customerInfo.getNum() + num); customerInfo.setModifieddate(date); customerInfoMapper.updateById(customerInfo); } return customerInfo; } //根据身份证号分辨男女 public static String userType(String idNumber) { String userType = ""; int gender = 0; idNumber = idNumber.replaceAll("[\r\n]","").trim(); if(idNumber.length() == 18){ //如果身份证号18位,取身份证号倒数第二位 char c = idNumber.charAt(idNumber.length() - 2); gender = Integer.parseInt(String.valueOf(c)); }else if (idNumber.length() == 15){ //如果身份证号15位,取身份证号最后一位 char c = idNumber.charAt(idNumber.length() - 1); gender = Integer.parseInt(String.valueOf(c)); } if(gender % 2 == 1){ userType = "男"; }else{ userType = "女"; } return userType; } @Override public CustomerInfo getCustomerByIdCardNum(String idCardNum) { return customerInfoMapper.selectCustomerByIdCardNum(idCardNum); } @Override public CustomerInfo getCustomerBySaleOrder(String orderCode) { return customerInfoMapper.getCustomerBySaleOrder(orderCode); } @Override public void uploadPhoto(String idCard, MultipartFile file) { if (StringUtils.isBlank(idCard)) throw new BusinessException("身份证参数传递错误,请联系管理员"); if (file == null) throw new BusinessException("请上传文件"); CustomerInfo customer = getCustomerByIdCardNum(idCard); if (customer == null) throw new BusinessException("身份证信息不存在,请联系管理员"); try { String name = UploadUtil.uploadFile(file, Properties.customerPath); customer.setPath(Properties.customer + name); } catch (Exception e) { throw new BusinessException("上传文件失败"); } this.updateById(customer); } @Override public void createOrUpdateCard(String idCardNum, Integer num, Date createdat) throws ParseException { //TODO:新增或修改顾客信息 String gender = userType(idCardNum); byte byteGender = 0; if (CustomerInfo.GENDER_MALE.equals(gender)){ byteGender = 1; }else if (CustomerInfo.GENDER_FEMALE.equals(gender)){ byteGender = 2; } String bornDay = idCardNum.substring(6,14); DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); Date date = new Date(); Date born = dateFormat.parse(bornDay); CustomerInfo customerInfo = customerInfoMapper.selectCustomerByIdCardNum(idCardNum); if (customerInfo == null){ customerInfo = new CustomerInfo("",byteGender,idCardNum,"",born,""); customerInfo.setFrequency(1); customerInfo.setCreateddate(date); customerInfo.setLasttime(createdat); customerInfo.setLastnum(num); customerInfo.setNum(num); customerInfoMapper.insert(customerInfo); }else { if (customerInfo.getLasttime().compareTo(createdat) < 0){ customerInfo.setLasttime(createdat); customerInfo.setLastnum(num); } customerInfo.setFrequency(customerInfo.getFrequency()+1); customerInfo.setNum(customerInfo.getNum() + num); customerInfo.setModifieddate(date); customerInfoMapper.updateById(customerInfo); } } }