package com.alatus.web;
import com.alatus.constant.Constants;
import com.alatus.model.TClue;
import com.alatus.query.ClueQuery;
import com.alatus.result.Result;
import com.alatus.service.ClueService;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@RestController
public class ClueController {
@Resource
private ClueService clueService;
@GetMapping(value = "/api/clues")
public Result cluePage(@RequestParam(value = Constants.CURRENT,required = false)Integer current){
if(current == null){
current = 1;
}
PageInfo<TClue> pageInfo = clueService.getClueByPage(current);
return Result.OK(pageInfo);
}
@PostMapping(value = "/api/clue/importExcel")
public Result importExcel(MultipartFile file, @RequestHeader(value = Constants.TOKEN_NAME)String token) throws IOException {
// 接收到的文件名字需要和前端提交的名字相同,否则无法接收
clueService.importExcel(file.getInputStream(),token);
return Result.OK();
}
@DeleteMapping(value = "/api/clue/delete/{id}")
public Result clueDel(@PathVariable(value = Constants.ID)Integer id){
Integer result = clueService.deleteClue(id);
return result >= 1 ? Result.OK() : Result.FAIL();
}
@DeleteMapping(value = "/api/clue/batchDel")
public Result batchDelClue(@RequestParam(value = Constants.IDS)String ids,@RequestHeader(value = Constants.TOKEN_NAME)String token){
List<String> idsList = Arrays.asList(ids.split(","));
int result = clueService.delClueByIds(idsList);
return result >= idsList.size() ? Result.OK() : Result.FAIL();
}
@GetMapping(value = "/api/clue/{phone}")
public Result checkPhone(@PathVariable(value = Constants.PHONE)String phone){
Boolean check = clueService.checkPhone(phone);
return check ? Result.OK() : Result.FAIL();
}
@PostMapping(value = "/api/clue/add")
public Result addClue(@RequestHeader(value = Constants.TOKEN_NAME)String token, ClueQuery clueQuery){
clueQuery.setToken(token);
int save = clueService.saveClue(clueQuery);
return save >= 1 ? Result.OK() : Result.FAIL();
}
}
package com.alatus.web;
import com.alatus.constant.Constants;
import com.alatus.model.TClue;
import com.alatus.query.ClueQuery;
import com.alatus.result.Result;
import com.alatus.service.ClueService;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@RestController
public class ClueController {
@Resource
private ClueService clueService;
@GetMapping(value = "/api/clues")
public Result cluePage(@RequestParam(value = Constants.CURRENT,required = false)Integer current){
if(current == null){
current = 1;
}
PageInfo<TClue> pageInfo = clueService.getClueByPage(current);
return Result.OK(pageInfo);
}
@PostMapping(value = "/api/clue/importExcel")
public Result importExcel(MultipartFile file, @RequestHeader(value = Constants.TOKEN_NAME)String token) throws IOException {
// 接收到的文件名字需要和前端提交的名字相同,否则无法接收
clueService.importExcel(file.getInputStream(),token);
return Result.OK();
}
@DeleteMapping(value = "/api/clue/delete/{id}")
public Result clueDel(@PathVariable(value = Constants.ID)Integer id){
Integer result = clueService.deleteClue(id);
return result >= 1 ? Result.OK() : Result.FAIL();
}
@DeleteMapping(value = "/api/clue/batchDel")
public Result batchDelClue(@RequestParam(value = Constants.IDS)String ids,@RequestHeader(value = Constants.TOKEN_NAME)String token){
List<String> idsList = Arrays.asList(ids.split(","));
int result = clueService.delClueByIds(idsList);
return result >= idsList.size() ? Result.OK() : Result.FAIL();
}
@GetMapping(value = "/api/clue/{phone}")
public Result checkPhone(@PathVariable(value = Constants.PHONE)String phone){
Boolean check = clueService.checkPhone(phone);
return check ? Result.OK() : Result.FAIL();
}
@PostMapping(value = "/api/clue/add")
public Result addClue(@RequestHeader(value = Constants.TOKEN_NAME)String token, ClueQuery clueQuery){
clueQuery.setToken(token);
int save = clueService.saveClue(clueQuery);
return save >= 1 ? Result.OK() : Result.FAIL();
}
}
package com.alatus.service;
import com.alatus.model.TClue;
import com.alatus.query.ClueQuery;
import com.github.pagehelper.PageInfo;
import java.io.InputStream;
import java.util.List;
public interface ClueService {
PageInfo<TClue> getClueByPage(Integer current);
void importExcel(InputStream inputStream,String token);
Integer deleteClue(Integer id);
int delClueByIds(List<String> idsList);
Boolean checkPhone(String phone);
int saveClue(ClueQuery clueQuery);
}
package com.alatus.service;
import com.alatus.model.TClue;
import com.alatus.query.ClueQuery;
import com.github.pagehelper.PageInfo;
import java.io.InputStream;
import java.util.List;
public interface ClueService {
PageInfo<TClue> getClueByPage(Integer current);
void importExcel(InputStream inputStream,String token);
Integer deleteClue(Integer id);
int delClueByIds(List<String> idsList);
Boolean checkPhone(String phone);
int saveClue(ClueQuery clueQuery);
}
package com.alatus.service.impl;
import com.alatus.config.listener.UploadDataListener;
import com.alatus.constant.Constants;
import com.alatus.mapper.TClueMapper;
import com.alatus.model.TActivity;
import com.alatus.model.TClue;
import com.alatus.query.BaseQuery;
import com.alatus.query.ClueQuery;
import com.alatus.service.ClueService;
import com.alatus.util.JWTUtils;
import com.alibaba.excel.EasyExcel;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
@Service
public class ClueServiceImpl implements ClueService {
@Resource
private TClueMapper tClueMapper;
@Override
public PageInfo<TClue> getClueByPage(Integer current) {
// 1.设置PageHelper
PageHelper.startPage(current, Constants.PAGE_SIZE);
// 2.查询
List<TClue> list = tClueMapper.selectClueByPage(BaseQuery.builder().build());
// 3.封装分页数据到PageInfo
PageInfo<TClue> info = new PageInfo<>(list);
return info;
}
@Override
public void importExcel(InputStream inputStream,String token) {
// 第一个参数是文件,第二个参数是excel模板类,第三个是监听器
EasyExcel.read(inputStream,TClue.class,new UploadDataListener(tClueMapper,token)).sheet().doRead();
}
@Override
public Integer deleteClue(Integer id) {
return tClueMapper.deleteByPrimaryKey(id);
}
@Override
public int delClueByIds(List<String> idsList) {
return tClueMapper.deleteByIds(idsList);
}
@Override
public Boolean checkPhone(String phone) {
return !(tClueMapper.selectByCount(phone) > 0);
}
@Override
public int saveClue(ClueQuery clueQuery) {
TClue tClue = new TClue();
// 这个工具类的复制要求是两个对象的属性名要相同,属性要相同
BeanUtils.copyProperties(clueQuery,tClue);
tClue.setCreateTime(new Date());
// 通过token解析出的用户获取ID作为创建者的ID
Integer loginId = JWTUtils.parseUserFromJWT(clueQuery.getToken()).getId();
tClue.setCreateBy(loginId);
return tClueMapper.insertSelective(tClue);
}
}
package com.alatus.service.impl;
import com.alatus.config.listener.UploadDataListener;
import com.alatus.constant.Constants;
import com.alatus.mapper.TClueMapper;
import com.alatus.model.TActivity;
import com.alatus.model.TClue;
import com.alatus.query.BaseQuery;
import com.alatus.query.ClueQuery;
import com.alatus.service.ClueService;
import com.alatus.util.JWTUtils;
import com.alibaba.excel.EasyExcel;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
@Service
public class ClueServiceImpl implements ClueService {
@Resource
private TClueMapper tClueMapper;
@Override
public PageInfo<TClue> getClueByPage(Integer current) {
// 1.设置PageHelper
PageHelper.startPage(current, Constants.PAGE_SIZE);
// 2.查询
List<TClue> list = tClueMapper.selectClueByPage(BaseQuery.builder().build());
// 3.封装分页数据到PageInfo
PageInfo<TClue> info = new PageInfo<>(list);
return info;
}
@Override
public void importExcel(InputStream inputStream,String token) {
// 第一个参数是文件,第二个参数是excel模板类,第三个是监听器
EasyExcel.read(inputStream,TClue.class,new UploadDataListener(tClueMapper,token)).sheet().doRead();
}
@Override
public Integer deleteClue(Integer id) {
return tClueMapper.deleteByPrimaryKey(id);
}
@Override
public int delClueByIds(List<String> idsList) {
return tClueMapper.deleteByIds(idsList);
}
@Override
public Boolean checkPhone(String phone) {
return !(tClueMapper.selectByCount(phone) > 0);
}
@Override
public int saveClue(ClueQuery clueQuery) {
TClue tClue = new TClue();
// 这个工具类的复制要求是两个对象的属性名要相同,属性要相同
BeanUtils.copyProperties(clueQuery,tClue);
tClue.setCreateTime(new Date());
// 通过token解析出的用户获取ID作为创建者的ID
Integer loginId = JWTUtils.parseUserFromJWT(clueQuery.getToken()).getId();
tClue.setCreateBy(loginId);
return tClueMapper.insertSelective(tClue);
}
}
package com.alatus.query;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class ClueQuery extends BaseQuery{
/**
* 主键,自动增长,线索ID
*/
private Integer id;
/**
* 线索所属人ID
*/
private Integer ownerId;
/**
* 活动ID
*/
private Integer activityId;
/**
* 姓名
*/
private String fullName;
/**
* 称呼
*/
private Integer appellation;
/**
* 手机号
*/
private String phone;
/**
* 微信号
*/
private String weixin;
/**
* QQ号
*/
private String qq;
/**
* 邮箱
*/
private String email;
/**
* 年龄
*/
private Integer age;
/**
* 职业
*/
private String job;
/**
* 年收入
*/
private BigDecimal yearIncome;
/**
* 地址
*/
private String address;
/**
* 是否需要贷款(0不需要,1需要)
*/
private Integer needLoan;
/**
* 意向状态
*/
private Integer intentionState;
/**
* 意向产品
*/
private Integer intentionProduct;
/**
* 线索状态
*/
private Integer state;
/**
* 线索来源
*/
private Integer source;
/**
* 线索描述
*/
private String description;
/**
* 下次联系时间
*
* 前端提交过来了一个string的日期,后端使用Date接收,那么需要加个注解转换一下
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date nextContactTime;
}
package com.alatus.query;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class ClueQuery extends BaseQuery{
/**
* 主键,自动增长,线索ID
*/
private Integer id;
/**
* 线索所属人ID
*/
private Integer ownerId;
/**
* 活动ID
*/
private Integer activityId;
/**
* 姓名
*/
private String fullName;
/**
* 称呼
*/
private Integer appellation;
/**
* 手机号
*/
private String phone;
/**
* 微信号
*/
private String weixin;
/**
* QQ号
*/
private String qq;
/**
* 邮箱
*/
private String email;
/**
* 年龄
*/
private Integer age;
/**
* 职业
*/
private String job;
/**
* 年收入
*/
private BigDecimal yearIncome;
/**
* 地址
*/
private String address;
/**
* 是否需要贷款(0不需要,1需要)
*/
private Integer needLoan;
/**
* 意向状态
*/
private Integer intentionState;
/**
* 意向产品
*/
private Integer intentionProduct;
/**
* 线索状态
*/
private Integer state;
/**
* 线索来源
*/
private Integer source;
/**
* 线索描述
*/
private String description;
/**
* 下次联系时间
*
* 前端提交过来了一个string的日期,后端使用Date接收,那么需要加个注解转换一下
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date nextContactTime;
}