package com.ltkj.web.controller.system; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.utils.bean.BeanUtils; import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.domain.TjReservation; import com.ltkj.hosp.service.ITjReservationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.*; import com.ltkj.common.annotation.Log; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.enums.BusinessType; import com.ltkj.hosp.domain.TjCustomer; import com.ltkj.hosp.service.ITjCustomerService; import com.ltkj.common.utils.poi.ExcelUtil; import com.ltkj.common.core.page.TableDataInfo; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 客户信息Controller * * @author ltkj * @date 2022-11-17 */ @RestController @RequestMapping("/hosp/customer") @Api(tags = "客户管理接口") public class TjCustomerController extends BaseController { @Resource private ITjCustomerService tjCustomerService; @Resource private ITjReservationService tjReservationService; /** * 根据身份证号获取用户信息 */ @PostMapping(value = "/cusIdcard") @ApiOperation(value = "根据身份证号获取用户信息") @Log(title = "客户身份信息", businessType = BusinessType.EXPORT) public AjaxResult getInfoByIdCard(@RequestParam @ApiParam(value = "客户身份证号") String cusIdcard) { if (!"".equals(cusIdcard) && cusIdcard != null) { //判断身份证号格式是否正确 // TODO: 2023/2/10 判断身份证号格式是否正确 if(cusIdcard.length()==18){ if (! MatchUtils.isIdCard(cusIdcard)) { return AjaxResult.error("身份证号码错误"); } } if(cusIdcard.length()==9){ if (!MatchUtils.cardValidates(cusIdcard)) { return AjaxResult.error("身份证号码错误"); } } LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjReservation::getIdCard, cusIdcard); wq.eq(TjReservation::getIsExpire, 2); TjReservation tjReservation = tjReservationService.getOne(wq); if (tjReservation != null) { if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) { return AjaxResult.error("未到预约时间"); } if (null != tjReservation.getReservationTime() && DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) { tjReservation.setIsExpire(1); tjReservationService.updateById(tjReservation); return AjaxResult.error("对不起您的预约已超时请重新预约"); } LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(TjCustomer::getCusIdcard, cusIdcard); TjCustomer tjCustomer1 = tjCustomerService.getOne(qw); if (tjCustomer1 != null) { tjCustomer1.setTjType(tjReservation.getTjType()); tjCustomer1.setCusName(tjReservation.getName()); tjCustomer1.setCusSex(Long.valueOf(tjReservation.getSex())); tjCustomer1.setCusBrithday(tjReservation.getBirthday()); tjCustomer1.setCusPhone(tjReservation.getPhoe()); tjCustomer1.setCusEmail(tjReservation.getEmail()); tjCustomer1.setCusAddr(tjReservation.getAddress()); tjCustomer1.setCusMarryStatus(String.valueOf(tjReservation.getMarriage())); tjCustomer1.setCusNational(String.valueOf(tjReservation.getNation())); tjCustomer1.setIdType(tjReservation.getIdType()); tjCustomer1.setAge(tjReservation.getAge()); tjCustomer1.setAgeUnit(tjReservation.getAgeUnit()); tjCustomer1.setCareer(tjReservation.getCareer()); tjCustomerService.updateById(tjCustomer1); tjCustomer1.setTeamNo(tjReservation.getTeamNo()); tjCustomer1.setCompId(tjReservation.getCompanyId()); tjCustomer1.setReservationId(tjReservation.getId()); tjCustomer1.setDiscount(tjReservation.getDiscount()); tjCustomer1.setGroupingId(tjReservation.getGroupingId()); return success(tjCustomer1); } TjCustomer tjCustomer = new TjCustomer(); tjCustomer.setCusIdcard(tjReservation.getIdCard()); tjCustomer.setCusName(tjReservation.getName()); tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex())); tjCustomer.setCusBrithday(tjReservation.getBirthday()); tjCustomer.setCusPhone(tjReservation.getPhoe()); tjCustomer.setCusEmail(tjReservation.getEmail()); tjCustomer.setCusAddr(tjReservation.getAddress()); tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage())); tjCustomer.setCusNational(String.valueOf(tjReservation.getNation())); tjCustomer.setIdType(tjReservation.getIdType()); tjCustomer.setAge(tjReservation.getAge()); tjCustomer.setAgeUnit(tjReservation.getAgeUnit()); tjCustomer.setCareer(tjReservation.getCareer()); //截取密码自动生成set进去 String substring = cusIdcard.substring(cusIdcard.length() - 6); substring = DigestUtils.md5DigestAsHex(substring.getBytes()); tjCustomer.setCusPassword(substring); tjCustomer.setTjType(tjReservation.getTjType()); tjCustomerService.save(tjCustomer); tjCustomer.setTeamNo(tjReservation.getTeamNo()); tjCustomer.setCompId(tjReservation.getCompanyId()); tjCustomer.setReservationId(tjReservation.getId()); tjCustomer.setDiscount(tjReservation.getDiscount()); tjCustomer.setGroupingId(tjReservation.getGroupingId()); return success(tjCustomer); } LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(TjCustomer::getCusIdcard, cusIdcard); TjCustomer tjCustomer = tjCustomerService.getOne(qw); return AjaxResult.success("暂无预约信息",tjCustomer); } return error("身份证号不存在"); } /** * 查询客户信息列表 */ // @PreAuthorize("@ss.hasPermi('hosp:customer:list')") @GetMapping("/list") @ApiOperation(value = "查看客户列表") public TableDataInfo list(TjCustomer tjCustomer) { startPage(); List list = tjCustomerService.selectTjCustomerList(tjCustomer); if(null !=list && list.size()>0){ for (TjCustomer customer : list) { customer.setCusName(MatchUtils.hideCusName(customer.getCusName())); customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); } } return getDataTable(list); } /** * 导出客户信息列表 */ //@PreAuthorize("@ss.hasPermi('hosp:customer:export')") //@Log(title = "客户信息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TjCustomer tjCustomer) { List list = tjCustomerService.selectTjCustomerList(tjCustomer); ExcelUtil util = new ExcelUtil(TjCustomer.class); util.exportExcel(response, list, "客户信息数据"); } /** * 获取客户信息详细信息 */ //@PreAuthorize("@ss.hasPermi('hosp:customer:query')") @GetMapping(value = "/{cusId}") @ApiOperation(value = "根据客户id获取客户详情") public AjaxResult getInfo(@PathVariable("cusId") @ApiParam(value = "客户id") Long cusId) { return success(tjCustomerService.selectTjCustomerByCusId(cusId)); } /** * 新增客户信息 */ @PostMapping @ApiOperation(value = "新增客户") public AjaxResult add(@RequestBody @ApiParam(value = "客户对象信息") TjCustomer tjCustomer) { if (null == tjCustomer.getCusIdcard() || null == tjCustomer.getCusPhone()) { return AjaxResult.error("请输入身份证号或手机号"); } String cusIdcard = tjCustomer.getCusIdcard(); boolean b=true; if(null !=tjCustomer.getIdType()){ if(tjCustomer.getIdType().equals("1")){ b = MatchUtils.isIdCard(cusIdcard); }else { b = MatchUtils.cardValidate(cusIdcard, tjCustomer.getIdType()); } }else { return AjaxResult.error("请选择证件类型"); } if(!b) return AjaxResult.error("证件号有误"); //判断身份证号格式是否正确 if (!(MatchUtils.isMobileNO(tjCustomer.getCusPhone()))) return AjaxResult.error("手机号错误"); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjCustomer::getCusIdcard, cusIdcard); TjCustomer customer = tjCustomerService.getOne(wq); if (customer != null) { // BeanUtils.copyBeanProp(tjCustomer, customer); // String substring = cusIdcard.substring(cusIdcard.length() - 6); // substring = DigestUtils.md5DigestAsHex(substring.getBytes()); // customer.setCusPassword(substring); // customer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjCustomer.getCusIdcard()), "yyyy-MM-dd")); // return AjaxResult.success(tjCustomerService.updateById(customer)); return AjaxResult.error("该人员已存在"); } String substring = cusIdcard.substring(cusIdcard.length() - 6); substring = DigestUtils.md5DigestAsHex(substring.getBytes()); tjCustomer.setCusPassword(substring); tjCustomer.setCusBrithday(DateUtil.parse(MatchUtils.getBirthDayByIdCard(tjCustomer.getCusIdcard()), "yyyy-MM-dd")); tjCustomer.setCusNumber(0L); if (tjCustomerService.save(tjCustomer)) { return AjaxResult.success(tjCustomer); } return AjaxResult.error(); } /** * 修改客户信息 */ //@PreAuthorize("@ss.hasPermi('hosp:customer:edit')") //@Log(title = "客户信息", businessType = BusinessType.UPDATE) @PutMapping @ApiOperation(value = "修改客户信息") public AjaxResult edit(@RequestBody @ApiParam(value = "客户对象") TjCustomer tjCustomer) { String cusPhone = tjCustomer.getCusPhone(); if (null == cusPhone) { return AjaxResult.error("手机号不能为空"); } /*LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjCustomer::getCusPhone, cusPhone); TjCustomer customer = tjCustomerService.getOne(wq); if (customer != null) { return AjaxResult.error("该手机号已被使用!"); }*/ tjCustomer.setCusPhone(cusPhone); return toAjax(tjCustomerService.updateTjCustomer(tjCustomer)); } /** * 删除客户信息 */ //@PreAuthorize("@ss.hasPermi('hosp:customer:remove')") //@Log(title = "客户信息", businessType = BusinessType.DELETE) @DeleteMapping("/{cusIds}") @ApiOperation(value = "删除客户") public AjaxResult remove(@PathVariable @ApiParam(value = "所删除客户的id") Long[] cusIds) { return toAjax(tjCustomerService.deleteTjCustomerByCusIds(cusIds)); } }