提交 c5eadde3 authored 作者: wml's avatar wml

首次提交

上级 deb6d648
package data.visitRecord;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 走访记录
* @date 2025/5/9 10:50
*/
@Data
@TableName(value = "tb_visit_record")
public class VisitRecord extends IdentityObj {
/**
* 分公司id
**/
@TableField("branch_office_id")
private String branchOfficeId;
/**
* 分公司
**/
@TableField("branch_office")
private String branchOffice;
/**
* 合作伙伴id
**/
@TableField("cooperate_id")
private String cooperateId;
/**
* 合作伙伴
**/
@TableField("cooperate")
private String cooperate;
/**
* 合作伙伴code
**/
@TableField("cooperate_code")
private String cooperateCode;
/**
* 是否合作过
**/
@TableField("interact")
private Boolean interact;
/**
* 商机名称
**/
@TableField("business_title")
private String businessTitle;
@TableField("money")
private Integer money;
/**
* 建设内容
**/
@TableField("business_content")
private String businessContent;
/**
* 预计签约时间
**/
@TableField("sign_date")
private String signDate;
/**
* 走访照片
**/
@TableField("photo_url")
private String photoUrl;
}
package excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.poi.ss.usermodel.FillPatternType;
import java.net.URL;
import java.util.Date;
/**
* @author zhangsufang
* @description: 简历导出
* @date 2023/12/22 10:25
*/
@Data
@HeadRowHeight(20)
@HeadStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 22)
@HeadFontStyle(fontHeightInPoints = 11)
@ContentStyle(wrapped = true)
@ColumnWidth(20)
@TableName(value = "tb_visit_record")
//设置行高,其他导出不需要可以删掉
@ContentRowHeight(100)
public class ExportVisitRecord {
@ExcelProperty("分公司")
@TableField("branch_office")
private String branchOffice;
@ExcelProperty("合作伙伴编号")
@TableField("cooperate_code")
private String cooperateCode;
@ExcelProperty("合作伙伴")
@TableField("cooperate")
private String cooperate;
@ExcelProperty("是否合作过")
private String interact;
@ExcelProperty("商机名称")
private String businessTitle;
@ExcelProperty("金额")
private Integer money;
@ExcelProperty("创建时间")
private String createTime;
@ExcelProperty("建设内容")
private String businessContent;
@ExcelProperty(value = "走访图片")
private URL photoUrl;
@ExcelProperty("预计签约时间")
private String signDate;
}
package redis;
public class RedisKey {
/**
* 锁定+userId
*/
public static final String CONTENT_LIMIT = "cm-crm:content:limit:";
/**
* 问题时间+userId
*/
public static final String CONTENT_TIME = "cm-crm:content:time:";
}
package com.cm_crm.controller;
import base.controller.BaseController;
import base.result.BaseResult;
import com.alibaba.fastjson.JSONObject;
import com.cm_crm.service.BranchOfficeService;
import com.cm_crm.service.CountyDistrictService;
import com.github.pagehelper.PageInfo;
import data.system.BranchOffice;
import data.system.CountyDistrict;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
*
* @return: 分公司
* @Author: wml
* @Date 2025/5/9 11:31
*/
@RestController
@RequestMapping("/branch_office")
public class BranchOfficeController extends BaseController {
@Resource
BranchOfficeService branchOfficeService;
/**
* @description: 获取列表
* @author: wangmenglong
* @date; 2023/12/7 10:07
* @param: [req]
* @return: com.github.pagehelper.PageInfo
**/
@GetMapping("/l")
public BaseResult list(HttpServletRequest req, BranchOffice branchOffice){
PageInit(req);
List<BranchOffice> list = branchOfficeService.list(pageNum,pageSize,branchOffice);
PageInfo<BranchOffice> pageInfo = new PageInfo<BranchOffice>(list);
return BaseResult.success(pageInfo);
}
/**
* 获取全部
* @return: base.result.BaseResult
* @Author: wml
*/
@GetMapping("/l/all")
public BaseResult lAll(HttpServletRequest req){
List<BranchOffice> list = branchOfficeService.queryListAll();
return BaseResult.success("normal_001",list);
}
/**
* @description: 新增
* @author: wangmenglong
**/
@PostMapping("/c")
public BaseResult create(@RequestBody BranchOffice branchOffice){
//判断是否重复
if(branchOfficeService.isHave(branchOffice.getName(),branchOffice.getId())){
return BaseResult.error("error_004");
}
return branchOfficeService.create(branchOffice)?BaseResult.success("normal_001"):BaseResult.error("error_001");
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@PostMapping("/u")
public BaseResult update(@RequestBody BranchOffice branchOffice){
//判断重复
if(branchOfficeService.isHave(branchOffice.getName(),branchOffice.getId())){
return BaseResult.error("error_004");
}
return branchOfficeService.update(branchOffice)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @description: 删除
* @author: wangmenglong
**/
@PostMapping("/d")
public BaseResult del(@RequestBody JSONObject jsonObject){
String id = jsonObject.getString("id");
return branchOfficeService.del(id)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @author: wangmenglong
**/
@GetMapping("/details")
public BaseResult details(@RequestParam("id")String id){
BranchOffice branchOffice = branchOfficeService.getDetails(id);
return BaseResult.success(branchOffice);
}
}
package com.cm_crm.controller;
import base.controller.BaseController;
import base.result.BaseResult;
import com.alibaba.fastjson.JSONObject;
import com.cm_crm.service.CooperateService;
import com.github.pagehelper.PageInfo;
import data.system.Cooperate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
*
* @return: 合作伙伴
* @Author: wml
* @Date 2025/5/9 11:31
*/
@RestController
@RequestMapping("/cooperate")
public class CooperateController extends BaseController {
@Resource
CooperateService cooperateService;
/**
* @description: 获取列表
* @author: wangmenglong
* @date; 2023/12/7 10:07
* @param: [req]
* @return: com.github.pagehelper.PageInfo
**/
@GetMapping("/l")
public BaseResult list(HttpServletRequest req, Cooperate cooperate){
PageInit(req);
List<Cooperate> list = cooperateService.list(pageNum,pageSize,cooperate);
PageInfo<Cooperate> pageInfo = new PageInfo<Cooperate>(list);
return BaseResult.success(pageInfo);
}
/**
* 获取全部
* @return: base.result.BaseResult
* @Author: wml
*/
@GetMapping("/l/all")
public BaseResult lAll(HttpServletRequest req){
List<Cooperate> list = cooperateService.queryListAll();
return BaseResult.success("normal_001",list);
}
/**
* @description: 新增
* @author: wangmenglong
**/
@PostMapping("/c")
public BaseResult create(@RequestBody Cooperate cooperate){
//判断是否重复
if(cooperateService.isHave(cooperate.getName(),cooperate.getId())){
return BaseResult.error("error_005");
}
//判断是否重复
if(cooperateService.isHaveCode(cooperate.getCode(),cooperate.getId())){
return BaseResult.error("error_008");
}
return cooperateService.create(cooperate)?BaseResult.success("normal_001"):BaseResult.error("error_001");
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@PostMapping("/u")
public BaseResult update(@RequestBody Cooperate cooperate){
//判断重复
if(cooperateService.isHave(cooperate.getName(),cooperate.getId())){
return BaseResult.error("error_005");
}
//判断是否重复
if(cooperateService.isHaveCode(cooperate.getCode(),cooperate.getId())){
return BaseResult.error("error_008");
}
return cooperateService.update(cooperate)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @description: 删除
* @author: wangmenglong
**/
@PostMapping("/d")
public BaseResult del(@RequestBody JSONObject jsonObject){
String id = jsonObject.getString("id");
return cooperateService.del(id)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @author: wangmenglong
**/
@GetMapping("/details")
public BaseResult details(@RequestParam("id")String id){
Cooperate cooperate = cooperateService.getDetails(id);
return BaseResult.success(cooperate);
}
/**
* 合同名单查询导出
* @return: base.result.BaseResult
* @Author: wml
* @Date 2024/8/27 15:59
*/
@PostMapping("/import")
public BaseResult importCooperate(@RequestParam("file") MultipartFile multipartFile){
BaseResult baseResult = cooperateService.importCooperate(multipartFile);
return baseResult;
}
}
package com.cm_crm.controller;
import base.controller.BaseController;
import base.result.BaseResult;
import com.alibaba.fastjson.JSONObject;
import com.cm_crm.service.CountyDistrictService;
import com.cm_crm.service.UserService;
import com.github.pagehelper.PageInfo;
import data.system.CountyDistrict;
import data.user.User;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
*
* @return: 县区管理
* @Author: wml
* @Date 2025/5/9 11:31
*/
@RestController
@RequestMapping("/county_district")
public class CountyDistrictController extends BaseController {
@Resource
CountyDistrictService countyDistrictService;
/**
* 获取区县
* @return: base.result.BaseResult
* @Author: wml
* @Date 2025/5/9 11:31
*/
@GetMapping("/lall")
public BaseResult listAll(HttpServletRequest req){
List<CountyDistrict> list = countyDistrictService.listAll();
return BaseResult.success(list);
}
}
package com.cm_crm.controller;
import base.controller.BaseController;
import base.result.BaseResult;
import com.alibaba.fastjson.JSONObject;
import com.cm_crm.service.VisitRecordService;
import com.github.pagehelper.PageInfo;
import data.visitRecord.VisitRecord;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
* @return: 走访记录
* @Author: wml
* @Date 2025/5/9 11:31
*/
@RestController
@RequestMapping("/visit_record")
public class VisitRecordController extends BaseController {
@Resource
VisitRecordService visitRecordService;
/**
* @description: 获取列表
* @author: wangmenglong
* @date; 2023/12/7 10:07
* @param: [req]
* @return: com.github.pagehelper.PageInfo
**/
@GetMapping("/l")
public BaseResult list(HttpServletRequest req, VisitRecord visitRecord){
String startTime = req.getParameter("startTime");
String endTime = req.getParameter("endTime");
PageInit(req);
List<VisitRecord> list = visitRecordService.list(pageNum,pageSize,visitRecord,startTime,endTime);
PageInfo<VisitRecord> pageInfo = new PageInfo<VisitRecord>(list);
return BaseResult.success(pageInfo);
}
/**
* 获取全部
* @return: base.result.BaseResult
* @Author: wml
*/
@GetMapping("/l/all")
public BaseResult lAll(HttpServletRequest req, VisitRecord visitRecord){
String startTime = req.getParameter("startTime");
String endTime = req.getParameter("endTime");
List<VisitRecord> list = visitRecordService.queryListAll(visitRecord,startTime,endTime);
return BaseResult.success("normal_001",list);
}
/**
* @description: 新增
* @author: wangmenglong
**/
@PostMapping("/c")
public BaseResult create(@RequestBody VisitRecord visitRecord){
return visitRecordService.create(visitRecord)?BaseResult.success("normal_001"):BaseResult.error("error_001");
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@PostMapping("/u")
public BaseResult update(@RequestBody VisitRecord visitRecord){
return visitRecordService.update(visitRecord)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @description: 删除
* @author: wangmenglong
**/
@PostMapping("/d")
public BaseResult del(@RequestBody JSONObject jsonObject){
String id = jsonObject.getString("id");
return visitRecordService.del(id)?BaseResult.success("normal_002"):BaseResult.error("error_002");
}
/**
* @author: wangmenglong
**/
@GetMapping("/details")
public BaseResult details(@RequestParam("id")String id){
VisitRecord visitRecord = visitRecordService.getDetails(id);
return BaseResult.success(visitRecord);
}
/**
* 导出
* @return: base.result.BaseResult
* @Author: wml
* @Date 2023/12/13 16:05
*/
@GetMapping("/export")
public void personImportDown(HttpServletRequest req, HttpServletResponse response, VisitRecord visitRecord){
String startTime = req.getParameter("startTime");
String endTime = req.getParameter("endTime");
visitRecordService.export(response,visitRecord,startTime,endTime);
}
}
package com.cm_crm.controller.api;
import base.result.BaseResult;
import data.user.User;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* @ClassName : TestController
* @Description :
* @Author : wml
* @Date: 2025-05-08 16:08
*/
@RestController
@RequestMapping("/public/")
public class TestController {
/**
* 获取对话记录
* @return: base.result.BaseResult
* @Author: wml
* @Date 2025/4/9 10:05
*/
@GetMapping("/l")
public BaseResult list(HttpServletRequest req, User user){
return BaseResult.success();
}
/**
* 新建对话
* @return: base.result.BaseResult
* @Author: wml
* @Date 2025/4/9 10:05
*/
@PostMapping("/c")
public BaseResult create(@RequestBody User user){
return BaseResult.success("normal_001");
}
}
package com.cm_crm.service;
import data.system.BranchOffice;
import java.util.List;
/**
* @author wangmenglong
* @description: 分公司
*/
public interface BranchOfficeService {
List<BranchOffice> list(int pageNum, int pageSize, BranchOffice branchOffice);
List<BranchOffice> queryListAll();
boolean create(BranchOffice branchOffice);
boolean update(BranchOffice branchOffice);
boolean del(String id);
boolean isHave(String account, String id);
BranchOffice getDetails(String id);
}
package com.cm_crm.service;
import base.result.BaseResult;
import data.system.Cooperate;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* @author wangmenglong
* @description: 合作伙伴
*/
public interface CooperateService {
List<Cooperate> list(int pageNum, int pageSize, Cooperate cooperate);
List<Cooperate> queryListAll();
boolean create(Cooperate cooperate);
boolean update(Cooperate cooperate);
boolean del(String id);
boolean isHave(String name, String id);
boolean isHaveCode(String code, String id);
Cooperate getDetails(String id);
BaseResult importCooperate(MultipartFile multipartFile);
}
package com.cm_crm.service;
import data.system.CountyDistrict;
import java.util.List;
/**
*
* @return: 县区
* @Author: wml
* @Date 2025/5/9 10:20
*/
public interface CountyDistrictService {
public List<CountyDistrict> listAll();
}
package com.cm_crm.service;
import data.visitRecord.VisitRecord;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author wangmenglong
* @description: 走访记录
*/
public interface VisitRecordService {
List<VisitRecord> list(int pageNum, int pageSize, VisitRecord visitRecord,String startTime,String endTime);
List<VisitRecord> queryListAll(VisitRecord visitRecord,String startTime,String endTime);
boolean create(VisitRecord visitRecord);
boolean update(VisitRecord visitRecord);
boolean del(String id);
VisitRecord getDetails(String id);
void export(HttpServletResponse response, VisitRecord visitRecord,String startTime,String endTime);
}
package com.cm_crm.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cm_crm.bean.auth.UserContext;
import com.cm_crm.mapper.BranchOfficeMapper;
import com.cm_crm.service.BranchOfficeService;
import com.cm_crm.util.auth.UserUtils;
import com.cm_crm.xsnowflake.SnowFlakeFactory;
import com.github.pagehelper.PageHelper;
import data.system.BranchOffice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
* @return: 分公司service
* @Author: wml
*/
@Service
@Transactional
public class BranchOfficeServiceImpl extends ServiceImpl<BranchOfficeMapper, BranchOffice> implements BranchOfficeService {
@Autowired
SnowFlakeFactory snowFlakeFactory;
/**
* @description: 获取列表
* @author: wangmenglong
**/
@Override
public List<BranchOffice> list(int pageNum, int pageSize, BranchOffice branchOffice) {
//启动分页工具
PageHelper.startPage(pageNum, pageSize);
//创建查询条件
LambdaQueryWrapper<BranchOffice> qw = new LambdaQueryWrapper<>();
qw.like(StringUtils.isNotBlank(branchOffice.getName()),BranchOffice::getName,branchOffice.getName())
.eq(BranchOffice::getDel,false)
.orderByDesc(BranchOffice::getCreateTime);
List<BranchOffice> branchOfficeList = super.list(qw);
//返回查询结果
return branchOfficeList;
}
@Override
public List<BranchOffice> queryListAll() {
UserContext userContext = UserUtils.getUserContext();
//创建查询条件
LambdaQueryWrapper<BranchOffice> qw = new LambdaQueryWrapper<>();
qw.eq(BranchOffice::getDel,false)
.eq(BranchOffice::getBaseCode, userContext.getBaseCode())
.orderByDesc(BranchOffice::getCreateTime);
List<BranchOffice> orgList = super.list(qw);
//返回查询结果
return orgList;
}
/**
* @description: 新增
* @author: wangmenglong
**/
@Override
public boolean create(BranchOffice branchOffice) {
//校验用户名是否存在
BranchOffice u = super.getOne(new LambdaQueryWrapper<BranchOffice>().eq(BranchOffice::getDel, false )
.eq(BranchOffice::getName, branchOffice.getName()));
if(ObjectUtil.isNotNull(u)){
return false;
}
UserContext userContext = UserUtils.getUserContext();
String baseCode = userContext.getBaseCode();
branchOffice.setId(snowFlakeFactory.nextId());
branchOffice.setBaseCode(baseCode);
branchOffice.setUserId(userContext.getUserId());
branchOffice.setUserName(userContext.getUsername());
branchOffice.setDel(false);
branchOffice.setCreateTime(DateUtil.now());
return super.save(branchOffice);
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@Override
public boolean update(BranchOffice branchOffice) {
branchOffice.setUpdateTime(DateUtil.now());
//判断是否传入id
if(StringUtils.isBlank(branchOffice.getId())){
return false;
}
return super.saveOrUpdate(branchOffice);
}
/**
* @description: 删除
* @author: wangmenglong
**/
@Override
public boolean del(String id) {
if(StringUtils.isBlank(id)){
return false;
}
LambdaUpdateWrapper<BranchOffice> qw = new LambdaUpdateWrapper<>();
qw.eq(BranchOffice::getId,id)
.set(BranchOffice::getDel,true)
.set(BranchOffice::getDelTime, DateUtil.now());
return super.update(qw);
}
/**
* @author: wangmenglong
* @description: 判断是否存在
**/
@Override
public boolean isHave(String name, String id) {
LambdaQueryWrapper<BranchOffice> qw = new LambdaQueryWrapper<>();
qw.eq(BranchOffice::getDel,false)
.eq(BranchOffice::getName, name);
if(StringUtils.isNotBlank(id)){
qw.ne(BranchOffice::getId,id);
}
return super.count(qw)>0;
}
/**
* @author: wangmenglong
* @description: 获取详情
**/
@Override
public BranchOffice getDetails(String id) {
return super.getById(id);
}
}
package com.cm_crm.service.impl;
import base.result.BaseResult;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cm_crm.bean.auth.UserContext;
import com.cm_crm.mapper.CooperateMapper;
import com.cm_crm.service.CooperateService;
import com.cm_crm.service.CountyDistrictService;
import com.cm_crm.util.auth.UserUtils;
import com.cm_crm.xsnowflake.SnowFlakeFactory;
import com.github.pagehelper.PageHelper;
import data.system.Cooperate;
import data.system.CountyDistrict;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import util.CommonUtils;
import util.MultipartFileToFile;
import util.excel.ExcelXlsxReader;
import java.io.File;
import java.util.*;
/**
*
* @return: 合作伙伴service
* @Author: wml
*/
@Service
@Transactional
public class CooperateServiceImpl extends ServiceImpl<CooperateMapper, Cooperate> implements CooperateService {
@Autowired
SnowFlakeFactory snowFlakeFactory;
@Autowired
CountyDistrictService countyDistrictService;
/**
* @description: 获取列表
* @author: wangmenglong
**/
@Override
public List<Cooperate> list(int pageNum, int pageSize, Cooperate cooperate) {
//启动分页工具
PageHelper.startPage(pageNum, pageSize);
//创建查询条件
LambdaQueryWrapper<Cooperate> qw = new LambdaQueryWrapper<>();
qw.like(StringUtils.isNotBlank(cooperate.getName()),Cooperate::getName,cooperate.getName())
.eq(StringUtils.isNotBlank(cooperate.getCode()),Cooperate::getCode,cooperate.getCode())
.eq(Cooperate::getDel,false)
.orderByDesc(Cooperate::getCreateTime);
List<Cooperate> cooperateList = super.list(qw);
//返回查询结果
return cooperateList;
}
@Override
public List<Cooperate> queryListAll() {
UserContext userContext = UserUtils.getUserContext();
//创建查询条件
LambdaQueryWrapper<Cooperate> qw = new LambdaQueryWrapper<>();
qw.eq(Cooperate::getDel,false)
.eq(Cooperate::getBaseCode, userContext.getBaseCode())
.orderByDesc(Cooperate::getCreateTime);
List<Cooperate> orgList = super.list(qw);
//返回查询结果
return orgList;
}
/**
* @description: 新增
* @author: wangmenglong
**/
@Override
public boolean create(Cooperate cooperate) {
//校验用户名是否存在
Cooperate u = super.getOne(new LambdaQueryWrapper<Cooperate>().eq(Cooperate::getDel, false )
.eq(Cooperate::getName, cooperate.getName()));
if(ObjectUtil.isNotNull(u)){
return false;
}
UserContext userContext = UserUtils.getUserContext();
String baseCode = userContext.getBaseCode();
cooperate.setId(snowFlakeFactory.nextId());
cooperate.setBaseCode(baseCode);
cooperate.setUserId(userContext.getUserId());
cooperate.setUserName(userContext.getUsername());
cooperate.setDel(false);
cooperate.setCreateTime(DateUtil.now());
return super.save(cooperate);
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@Override
public boolean update(Cooperate cooperate) {
cooperate.setUpdateTime(DateUtil.now());
//判断是否传入id
if(StringUtils.isBlank(cooperate.getId())){
return false;
}
return super.saveOrUpdate(cooperate);
}
/**
* @description: 删除
* @author: wangmenglong
**/
@Override
public boolean del(String id) {
if(StringUtils.isBlank(id)){
return false;
}
LambdaUpdateWrapper<Cooperate> qw = new LambdaUpdateWrapper<>();
qw.eq(Cooperate::getId,id)
.set(Cooperate::getDel,true)
.set(Cooperate::getDelTime, DateUtil.now());
return super.update(qw);
}
/**
* @author: wangmenglong
* @description: 判断是否存在
**/
@Override
public boolean isHave(String name, String id) {
LambdaQueryWrapper<Cooperate> qw = new LambdaQueryWrapper<>();
qw.eq(Cooperate::getDel,false)
.eq(Cooperate::getName, name);
if(StringUtils.isNotBlank(id)){
qw.ne(Cooperate::getId,id);
}
return super.count(qw)>0;
}
/**
* @author: wangmenglong
* @description: 判断是否存在
**/
@Override
public boolean isHaveCode(String code, String id) {
LambdaQueryWrapper<Cooperate> qw = new LambdaQueryWrapper<>();
qw.eq(Cooperate::getDel,false)
.eq(Cooperate::getCode, code);
if(StringUtils.isNotBlank(id)){
qw.ne(Cooperate::getId,id);
}
return super.count(qw)>0;
}
/**
* @author: wangmenglong
* @description: 获取详情
**/
@Override
public Cooperate getDetails(String id) {
return super.getById(id);
}
@Override
public BaseResult importCooperate(MultipartFile multipartFile) {
try {
UserContext userContext = UserUtils.getUserContext();
String baseCode = userContext.getBaseCode();
File file = MultipartFileToFile.multipartFileToFile(multipartFile);
ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader();
Map<String, List<List<String>>> map = excelXlsxReader.process(file);
List<List<String>> rowList = map.get("1");
//上传的文件没有数据,请重新上传
if (rowList.size() == 0 || rowList.size() == 1) {
return BaseResult.error("error_007");
}
rowList.remove(0);
List<CountyDistrict> countyDistrictList = countyDistrictService.listAll();
List<Cooperate> cooperateList = new ArrayList<>();
//此次导入的编号集合
Set<String> nameSet = new HashSet<>();
Set<String> codeSet = new HashSet<>();
int rowNum = 1;
// 校验导入数据
for (List<String> colList : rowList) {
Cooperate cooperate = new Cooperate();
String name = CommonUtils.replaceBlank(colList.get(0));
String code = CommonUtils.replaceBlank(colList.get(1));
String countyDistrictInsert = CommonUtils.replaceBlank(colList.get(2));
if(nameSet.contains(name)||isHave(name,null)){
return BaseResult.error("error_009","第"+rowNum+"行有错误数据,名称重复:["+name+"]");
}
if(codeSet.contains(code)||isHaveCode(name,null)){
return BaseResult.error("error_009","第"+rowNum+"行有错误数据,编号重复:["+code+"]");
}
if(StringUtils.isBlank(name)||StringUtils.isBlank(code)||StringUtils.isBlank(countyDistrictInsert)){
return BaseResult.error("error_009","第"+rowNum+"行有错误数据,值为空值");
}
nameSet.add(name);
codeSet.add(code);
rowNum++;
cooperate.setId(snowFlakeFactory.nextId());
cooperate.setBaseCode(baseCode);
cooperate.setUserId(userContext.getUserId());
cooperate.setUserName(userContext.getUsername());
cooperate.setDel(false);
cooperate.setCreateTime(DateUtil.now());
//excel导入的
cooperate.setCode(code);
cooperate.setName(name);
cooperate.setCountyDistrict(countyDistrictInsert);
for (CountyDistrict countyDistrict:countyDistrictList) {
if(countyDistrict.equals(countyDistrictInsert)) cooperate.setCountyDistrictId(countyDistrict.getId());
}
cooperateList.add(cooperate);
}
super.saveBatch(cooperateList);
return BaseResult.success();
}catch (Exception e){
e.printStackTrace();
return BaseResult.error("error_006");
}
}
}
package com.cm_crm.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cm_crm.bean.auth.UserContext;
import com.cm_crm.mapper.CountyDistrictMapper;
import com.cm_crm.service.CountyDistrictService;
import com.cm_crm.util.auth.UserUtils;
import com.cm_crm.xsnowflake.SnowFlakeFactory;
import com.github.pagehelper.PageHelper;
import data.system.CountyDistrict;
import data.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
* @return: 用户管理
* @Author: wml
* @Date 2025/5/9 10:22
*/
@Service
@Transactional
public class CountyDistrictServiceImpl extends ServiceImpl<CountyDistrictMapper, CountyDistrict> implements CountyDistrictService {
@Autowired
SnowFlakeFactory snowFlakeFactory;
/**
* @description: 所有区县
* @author: wangmenglong
**/
@Override
public List<CountyDistrict> listAll() {
//创建查询条件
LambdaQueryWrapper<CountyDistrict> qw = new LambdaQueryWrapper<>();
//返回查询结果
return super.list();
}
}
package com.cm_crm.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cm_crm.bean.auth.UserContext;
import com.cm_crm.mapper.VisitRecordMapper;
import com.cm_crm.service.VisitRecordService;
import com.cm_crm.util.auth.UserUtils;
import com.cm_crm.xsnowflake.SnowFlakeFactory;
import com.github.pagehelper.PageHelper;
import data.visitRecord.VisitRecord;
import excel.ExportVisitRecord;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* @return: 走访记录service
* @Author: wml
*/
@Service
@Transactional
public class VisitRecordServiceImpl extends ServiceImpl<VisitRecordMapper, VisitRecord> implements VisitRecordService {
@Autowired
SnowFlakeFactory snowFlakeFactory;
/**
* @description: 获取列表
* @author: wangmenglong
**/
@Override
public List<VisitRecord> list(int pageNum, int pageSize, VisitRecord visitRecord,String startTime,String endTime) {
//启动分页工具
PageHelper.startPage(pageNum, pageSize);
//创建查询条件
LambdaQueryWrapper<VisitRecord> qw = new LambdaQueryWrapper<>();
qw.eq(StringUtils.isNotBlank(visitRecord.getBranchOfficeId()),VisitRecord::getBranchOfficeId,visitRecord.getBranchOfficeId())
.eq(StringUtils.isNotBlank(visitRecord.getCooperateId()),VisitRecord::getCooperateId,visitRecord.getCooperateId())
.eq(StringUtils.isNotBlank(visitRecord.getCooperateCode()),VisitRecord::getCooperateCode,visitRecord.getCooperateCode())
.like(StringUtils.isNotBlank(visitRecord.getBusinessTitle()),VisitRecord::getBusinessTitle,visitRecord.getBusinessTitle())
.eq(VisitRecord::getDel,false)
.ge(startTime != null, VisitRecord::getCreateTime, startTime)
.le(endTime != null, VisitRecord::getCreateTime, endTime)
.orderByDesc(VisitRecord::getCreateTime);
List<VisitRecord> visitRecordList = super.list(qw);
//返回查询结果
return visitRecordList;
}
@Override
public List<VisitRecord> queryListAll(VisitRecord visitRecord,String startTime,String endTime) {
UserContext userContext = UserUtils.getUserContext();
//创建查询条件
LambdaQueryWrapper<VisitRecord> qw = new LambdaQueryWrapper<>();
qw.eq(StringUtils.isNotBlank(visitRecord.getBranchOfficeId()),VisitRecord::getBranchOfficeId,visitRecord.getBranchOfficeId())
.eq(StringUtils.isNotBlank(visitRecord.getCooperateId()),VisitRecord::getCooperateId,visitRecord.getCooperateId())
.eq(StringUtils.isNotBlank(visitRecord.getCooperateCode()),VisitRecord::getCooperateCode,visitRecord.getCooperateCode())
.like(StringUtils.isNotBlank(visitRecord.getBusinessTitle()),VisitRecord::getBusinessTitle,visitRecord.getBusinessTitle())
.eq(VisitRecord::getDel,false)
.ge(startTime != null, VisitRecord::getCreateTime, startTime)
.le(endTime != null, VisitRecord::getCreateTime, endTime)
.orderByDesc(VisitRecord::getCreateTime);
//返回查询结果
return super.list(qw);
}
/**
* @description: 新增
* @author: wangmenglong
**/
@Override
public boolean create(VisitRecord visitRecord) {
UserContext userContext = UserUtils.getUserContext();
String baseCode = userContext.getBaseCode();
visitRecord.setId(snowFlakeFactory.nextId());
visitRecord.setBaseCode(baseCode);
visitRecord.setUserId(userContext.getUserId());
visitRecord.setUserName(userContext.getUsername());
visitRecord.setDel(false);
visitRecord.setCreateTime(DateUtil.now());
return super.save(visitRecord);
}
/**
* @description: 编辑
* @author: wangmenglong
**/
@Override
public boolean update(VisitRecord visitRecord) {
visitRecord.setUpdateTime(DateUtil.now());
//判断是否传入id
if(StringUtils.isBlank(visitRecord.getId())){
return false;
}
return super.saveOrUpdate(visitRecord);
}
/**
* @description: 删除
* @author: wangmenglong
**/
@Override
public boolean del(String id) {
if(StringUtils.isBlank(id)){
return false;
}
LambdaUpdateWrapper<VisitRecord> qw = new LambdaUpdateWrapper<>();
qw.eq(VisitRecord::getId,id)
.set(VisitRecord::getDel,true)
.set(VisitRecord::getDelTime, DateUtil.now());
return super.update(qw);
}
/**
* @author: wangmenglong
* @description: 获取详情
**/
@Override
public VisitRecord getDetails(String id) {
return super.getById(id);
}
@Override
public void export(HttpServletResponse response, VisitRecord visitRecord,String startTime,String endTime){
UserContext userContext = UserUtils.getUserContext();
List<VisitRecord> list = queryListAll(visitRecord,startTime,endTime);
List<ExportVisitRecord> exportVisitRecordList = new ArrayList<>();
for (VisitRecord export:list) {
ExportVisitRecord exportVisitRecord = new ExportVisitRecord();
BeanUtils.copyProperties(export, exportVisitRecord,"photoUrl");
if(export.getInteract()!=null||export.getInteract()){
exportVisitRecord.setInteract("是");
}else {
exportVisitRecord.setInteract("否");
}
try {
exportVisitRecord.setPhotoUrl(new URL(export.getPhotoUrl()));
}catch (Exception e){
e.printStackTrace();
}
exportVisitRecordList.add(exportVisitRecord);
}
try {
// response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String now = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
String fileName = URLEncoder.encode("走访记录" + now, "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-Type","application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
ServletOutputStream outputStream = response.getOutputStream();
EasyExcel.write(outputStream).sheet(0, "走访记录").head(ExportVisitRecord.class).doWrite(exportVisitRecordList);
} catch (Exception e) {
e.printStackTrace();
}
}
}
...@@ -5,16 +5,16 @@ ...@@ -5,16 +5,16 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.cm.crm</groupId> <groupId>com.jy.jfb</groupId>
<artifactId>cm</artifactId> <artifactId>jfb</artifactId>
<version>1.0</version> <version>1.0</version>
</parent> </parent>
<groupId>com.cm.crm</groupId> <groupId>com.jy.jfb</groupId>
<artifactId>cm-crm-lib</artifactId> <artifactId>jfb-lib</artifactId>
<version>1.0</version> <version>1.0</version>
<name>cm-crm-lib</name> <name>jfb-lib</name>
<description>lib</description> <description>lib</description>
<packaging>jar</packaging> <packaging>jar</packaging>
......
package data.system; package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj; import data.parent.NameObj;
import lombok.Data; import lombok.Data;
/** /**
* @author wangmenglong * @author wangmenglong
* @description: 合作伙伴 * @description: 收藏记录
* @date 2025/5/9 10:50 * @date 2023/12/11 10:50
*/ */
@Data @Data
@TableName(value = "tb_cooperate") @TableName(value = "tb_collect")
public class Cooperate extends NameObj { public class Collect extends IdentityObj {
/** /**
* 编码 * 人员id
**/ **/
@TableField("code") @TableField("person_id")
private String code; private String personId;
/** /**
* 备注 * 招聘id
**/ **/
@TableField("remark") @TableField("recruit_id")
private String remark; private String recruitId;
/**
* 区县id
**/
@TableField("county_district_id")
private String countyDistrictId;
/**
* 区县
**/
@TableField("county_district")
private String countyDistrict;
} }
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 经验描述
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_experience")
public class Experience extends IdentityObj {
/**
* 经验描述
**/
@TableField("description")
private String description;
}
package data.system; package data.recruit;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.SimpleNameObj; import data.parent.NameObj;
import lombok.Data; import lombok.Data;
/** /**
* @author wangmenglong * @author wangmenglong
* @description: 县区 * @description: 行业
* @date 2025/5/9 10:50 * @date 2023/12/11 10:50
*/ */
@Data @Data
@TableName(value = "tb_county_district") @TableName(value = "tb_industry")
public class CountyDistrict extends SimpleNameObj { public class Industry extends NameObj {
} }
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 求职意向
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_objective")
public class Objective extends IdentityObj {
/**
* 城市
**/
@TableField("city")
private String city;
/**
* 薪资要求-开始
**/
@TableField("salary_min")
private Integer salaryMin;
/**
* 薪资要求-结束
**/
@TableField("salary_max")
private String salaryMax;
/**
* 工作性质
**/
@TableField("work_type")
private String workType;
/**
* 人id
**/
@TableField("person_id")
private String personId;
}
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 期望行业
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_objective_industry")
public class ObjectiveIndustry extends IdentityObj {
/**
* 人员id
**/
@TableField("person_id")
private String personId;
/**
* 行业id
**/
@TableField("industry_id")
private String industryId;
}
package data.system; package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
...@@ -7,18 +7,12 @@ import lombok.Data; ...@@ -7,18 +7,12 @@ import lombok.Data;
/** /**
* @author wangmenglong * @author wangmenglong
* @description: 合作伙伴 * @description: 企业
* @date 2025/5/9 10:50 * @date 2023/12/11 10:50
*/ */
@Data @Data
@TableName(value = "tb_branch_office") @TableName(value = "tb_org")
public class BranchOffice extends NameObj { public class Org extends NameObj {
/**
* 备注
**/
@TableField("remark")
private String remark;
} }
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 报名记录
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_person")
public class Person extends NameObj {
/**
* 证件号码
**/
@TableField("id_no")
private String idNo;
/**
* 手机号
**/
@TableField("phone_number")
private String phoneNumber;
/**
* 报名时间
**/
@TableField("register_time")
private String registerTime;
/**
* 年龄
**/
@TableField("age")
private Integer age;
/**
* 性别
**/
@TableField("sex")
private Boolean sex;
/**
* 民族
**/
@TableField("nation")
private String nation;
}
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 经验描述
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_qualification")
public class Qualification extends IdentityObj {
/**
* 经验描述
**/
@TableField("description")
private String description;
}
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 报名记录
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_recruit")
public class Recruit extends NameObj {
/**
* 职位描述
**/
@TableField("details")
private String details;
/**
* 招聘类型
**/
@TableField("recruit_type_id")
private String recruitTypeId;
/**
* 招聘类型
**/
@TableField("recruit_type")
private String recruitType;
/**
* 经验要求
**/
@TableField("experience_id")
private String experienceId;
/**
* 经验要求
**/
@TableField("experience")
private String experience;
/**
* 学历要求
**/
@TableField("qualification_id")
private String qualificationId;
/**
* 学历要求
**/
@TableField("qualification")
private String qualification;
/**
* 薪资范围开始
**/
@TableField("salary_min")
private Integer salaryMin;
/**
* 薪资范围结束
**/
@TableField("salary_max")
private Integer salaryMax;
/**
* 发薪次数
**/
@TableField("pay_times")
private Integer payTimes;
/**
* 关键词
**/
@TableField("tags")
private String tags;
/**
* 奖金绩效
**/
@TableField("bonus")
private String bonus;
/**
* 地址
**/
@TableField("address")
private String address;
/**
* 支付宝行业id
**/
@TableField("industry_id")
private String industryId;
/**
* 次数
**/
@TableField("times")
private Integer times;
}
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 招聘类型
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_recruit_type")
public class RecruitType extends NameObj {
}
package data.recruit;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import data.parent.IdentityObj;
import data.parent.NameObj;
import lombok.Data;
/**
* @author wangmenglong
* @description: 报名记录
* @date 2023/12/11 10:50
*/
@Data
@TableName(value = "tb_sign_record")
public class SignRecord extends IdentityObj {
/**
* 人员id
**/
@TableField("person_id")
private String personId;
/**
* 招聘id
**/
@TableField("recruit_id")
private String recruitId;
}
package redis;
public class RedisKey {
}
...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.cm.crm</groupId> <groupId>com.jy.jfb</groupId>
<artifactId>cm</artifactId> <artifactId>jfb</artifactId>
<version>1.0</version> <version>1.0</version>
</parent> </parent>
<groupId>com.cm.crm</groupId> <groupId>com.jy.jfb</groupId>
<artifactId>cm-crm</artifactId> <artifactId>jfb-recruit</artifactId>
<version>1.0</version> <version>1.0</version>
<name>cm_crm</name> <name>jfb-recruit</name>
<description>Demo project for Spring Boot</description> <description>Demo project for Spring Boot</description>
<dependencies> <dependencies>
...@@ -180,6 +180,13 @@ ...@@ -180,6 +180,13 @@
<artifactId>spring-boot-starter-actuator</artifactId> <artifactId>spring-boot-starter-actuator</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.jy.jfb</groupId>
<artifactId>jfb-lib</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.cm_crm; package com.jfb.recruit;
//import org.mybatis.spring.annotation.MapperScan; //import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
...@@ -9,12 +9,12 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; ...@@ -9,12 +9,12 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
@RefreshScope @RefreshScope
@EnableDiscoveryClient @EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = {"com.cm_crm"}) @SpringBootApplication(scanBasePackages = {"com.jfb.recruit"})
@MapperScan(basePackages = "com.cm_crm.mapper") @MapperScan(basePackages = "com.jfb.recruit.mapper")
public class CmCrmApplication { public class JfbRecruitApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(CmCrmApplication.class, args); SpringApplication.run(JfbRecruitApplication.class, args);
} }
} }
package com.cm_crm.bean.auth; package com.jfb.recruit.bean.auth;
import lombok.Data; import lombok.Data;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
......
package com.cm_crm.bean.auth; package com.jfb.recruit.bean.auth;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
......
package com.cm_crm.config.auth; package com.jfb.recruit.config.auth;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.config.auth; package com.jfb.recruit.config.auth;
import com.cm_crm.filter.JWTAuthenticationTokenFilter; import com.jfb.recruit.handler.auth.*;
import com.cm_crm.handler.auth.*; import com.jfb.recruit.filter.JWTAuthenticationTokenFilter;
import com.cm_crm.service.auth.UserAuthenticationProvider; import com.jy_recruit.handler.auth.*;
import com.jfb.recruit.service.auth.UserAuthenticationProvider;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
package com.cm_crm.config.auth; package com.jfb.recruit.config.auth;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import org.springframework.security.access.PermissionEvaluator; import org.springframework.security.access.PermissionEvaluator;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.config.cors; package com.jfb.recruit.config.cors;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
package com.cm_crm.controller; package com.jfb.recruit.controller;
import base.controller.BaseController; import base.controller.BaseController;
import base.result.BaseResult; import base.result.BaseResult;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cm_crm.service.UserService; import com.jfb.recruit.service.UserService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import data.user.User; import data.user.User;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
......
package com.jfb.recruit.controller.api;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName : TestController
* @Description :
* @Author : wml
* @Date: 2025-05-08 16:08
*/
@RestController
@RequestMapping("/public/")
public class PhoneController {
}
package com.cm_crm.exception; package com.jfb.recruit.exception;
/** /**
* @ClassName : NoUserException * @ClassName : NoUserException
......
package com.cm_crm.exception; package com.jfb.recruit.exception;
/** /**
* @ClassName : NoUserException * @ClassName : NoUserException
......
package com.cm_crm.exception; package com.jfb.recruit.exception;
/** /**
* @ClassName : NoUserException * @ClassName : NoUserException
......
package com.cm_crm.filter; package com.jfb.recruit.filter;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import com.cm_crm.config.auth.JWTConfig; import com.jfb.recruit.config.auth.JWTConfig;
import com.cm_crm.service.UserService; import com.jfb.recruit.util.auth.ExportPrivateKey;
import com.cm_crm.util.auth.ExportPrivateKey; import com.jfb.recruit.util.auth.ResultUtil;
import com.cm_crm.util.auth.InjectUtil; import com.jfb.recruit.service.UserService;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.InjectUtil;
import data.user.User; import data.user.User;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import mongo.collection.CollectionName;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
......
package com.cm_crm.handler.auth; package com.jfb.recruit.handler.auth;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.ResultUtil;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.handler.auth; package com.jfb.recruit.handler.auth;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.ResultUtil;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.handler.auth; package com.jfb.recruit.handler.auth;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.ResultUtil;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.LockedException; import org.springframework.security.authentication.LockedException;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
......
package com.cm_crm.handler.auth; package com.jfb.recruit.handler.auth;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import com.cm_crm.util.auth.JWTTokenUtil; import com.jfb.recruit.util.auth.JWTTokenUtil;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.ResultUtil;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.handler.auth; package com.jfb.recruit.handler.auth;
import com.cm_crm.util.auth.ResultUtil; import com.jfb.recruit.util.auth.ResultUtil;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
......
package com.cm_crm.listener.auth; package com.jfb.recruit.listener.auth;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.availability.AvailabilityChangeEvent; import org.springframework.boot.availability.AvailabilityChangeEvent;
......
package com.cm_crm.mapper; package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.Cooperate; import data.recruit.Collect;
/** /**
*
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface CooperateMapper extends BaseMapper<Cooperate> { public interface CollectMapper extends BaseMapper<Collect> {
} }
package com.cm_crm.mapper; package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.CountyDistrict; import data.recruit.Experience;
import data.visitRecord.VisitRecord; import data.recruit.RecruitType;
/** /**
*
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface VisitRecordMapper extends BaseMapper<VisitRecord> { public interface ExperienceMapper extends BaseMapper<Experience> {
} }
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Industry;
import data.recruit.ObjectiveIndustry;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface IndustryMapper extends BaseMapper<Industry> {
}
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Objective;
import data.recruit.ObjectiveIndustry;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface ObjectiveIndustryMapper extends BaseMapper<ObjectiveIndustry> {
}
package com.cm_crm.mapper; package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.BranchOffice; import data.recruit.Objective;
import data.system.Cooperate; import data.recruit.Org;
/** /**
*
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface BranchOfficeMapper extends BaseMapper<BranchOffice> { public interface ObjectiveMapper extends BaseMapper<Objective> {
} }
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Collect;
import data.recruit.Org;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface OrgMapper extends BaseMapper<Org> {
}
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Person;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface PersonMapper extends BaseMapper<Person> {
}
package com.cm_crm.mapper; package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.system.BranchOffice; import data.recruit.Experience;
import data.system.CountyDistrict; import data.recruit.Qualification;
/** /**
*
* @Author: wml * @Author: wml
* @Date 2025/5/9 10:21 * @Date 2025/5/9 10:21
*/ */
public interface CountyDistrictMapper extends BaseMapper<CountyDistrict> { public interface QualificationMapper extends BaseMapper<Qualification> {
} }
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Industry;
import data.recruit.Recruit;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface RecruitMapper extends BaseMapper<Recruit> {
}
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.RecruitType;
import data.recruit.SignRecord;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface RecruitTypeMapper extends BaseMapper<RecruitType> {
}
package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.recruit.Recruit;
import data.recruit.SignRecord;
/**
* @Author: wml
* @Date 2025/5/9 10:21
*/
public interface SignRecordMapper extends BaseMapper<SignRecord> {
}
package com.cm_crm.mapper; package com.jfb.recruit.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import data.user.User; import data.user.User;
......
package com.cm_crm.service; package com.jfb.recruit.service;
import base.result.BaseResult; import base.result.BaseResult;
import data.user.User; import data.user.User;
......
package com.cm_crm.service.auth; package com.jfb.recruit.service.auth;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import com.cm_crm.service.UserService; import com.jfb.recruit.service.UserService;
import data.user.User; import data.user.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
package com.cm_crm.service.auth; package com.jfb.recruit.service.auth;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
......
package com.cm_crm.service.impl; package com.jfb.recruit.service.impl;
import base.result.BaseResult; import base.result.BaseResult;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
...@@ -7,26 +7,19 @@ import com.alibaba.cloud.commons.lang.StringUtils; ...@@ -7,26 +7,19 @@ import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.UserContext;
import com.cm_crm.bean.auth.UserContext; import com.jfb.recruit.mapper.UserMapper;
import com.cm_crm.mapper.UserMapper; import com.jfb.recruit.service.UserService;
import com.cm_crm.service.UserService; import com.jfb.recruit.util.auth.UserUtils;
import com.cm_crm.util.auth.JWTTokenUtil; import com.jfb.recruit.xsnowflake.SnowFlakeFactory;
import com.cm_crm.util.auth.UserUtils;
import com.cm_crm.xsnowflake.SnowFlakeFactory;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import data.user.User; import data.user.User;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils; import org.springframework.util.DigestUtils;
import redis.RedisKey;
import util.MD5Utils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* *
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import com.cm_crm.service.UserService; import com.jfb.recruit.service.UserService;
import lombok.Getter; import lombok.Getter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import com.cm_crm.config.auth.JWTConfig; import com.jfb.recruit.config.auth.JWTConfig;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.x509.X509V3CertificateGenerator; import org.bouncycastle.x509.X509V3CertificateGenerator;
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
......
package com.cm_crm.util.auth; package com.jfb.recruit.util.auth;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cm_crm.bean.auth.SelfUserEntity; import com.jfb.recruit.bean.auth.SelfUserEntity;
import com.cm_crm.bean.auth.UserContext; import com.jfb.recruit.bean.auth.UserContext;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
/** /**
......
package com.cm_crm.util.httpUtil; package com.jfb.recruit.util.httpUtil;
import com.alibaba.cloud.commons.lang.StringUtils;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
......
package com.cm_crm.xsnowflake; package com.jfb.recruit.xsnowflake;
public enum BRStyle { public enum BRStyle {
......
package com.cm_crm.xsnowflake; package com.jfb.recruit.xsnowflake;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
......
package com.cm_crm.xsnowflake; package com.jfb.recruit.xsnowflake;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
<version>2.3.2.RELEASE</version> <version>2.3.2.RELEASE</version>
</parent> </parent>
<groupId>com.cm.crm</groupId> <groupId>com.jy.jfb</groupId>
<artifactId>cm</artifactId> <artifactId>jfb</artifactId>
<version>1.0</version> <version>1.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
...@@ -64,8 +64,8 @@ ...@@ -64,8 +64,8 @@
</properties> </properties>
<modules> <modules>
<module>cm-crm-lib</module> <module>jfb-lib</module>
<module>cm-crm</module> <module>jfb-recruit</module>
</modules> </modules>
<dependencyManagement> <dependencyManagement>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论