25 changed files with 1734 additions and 0 deletions
@ -0,0 +1,27 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|||
|
|||
|
|||
<modelVersion>4.0.0</modelVersion> |
|||
<artifactId>supervise-crm</artifactId> |
|||
<modules> |
|||
<module>supervise-crm-api</module> |
|||
<module>supervise-crm-biz</module> |
|||
</modules> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<version>0.0.1</version> |
|||
|
|||
<packaging>pom</packaging> |
|||
<description>客户管理</description> |
|||
|
|||
<parent> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<artifactId>yxt_supervise</artifactId> |
|||
<version>0.0.1</version> |
|||
<relativePath/> |
|||
</parent> |
|||
|
|||
|
|||
</project> |
@ -0,0 +1,48 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|||
|
|||
<parent> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<artifactId>supervise-crm</artifactId> |
|||
<version>0.0.1</version> |
|||
</parent> |
|||
<modelVersion>4.0.0</modelVersion> |
|||
|
|||
<artifactId>supervise-crm-api</artifactId> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<version>0.0.1-SNAPSHOT</version> |
|||
|
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>com.yxt</groupId> |
|||
<artifactId>yxt-common-core</artifactId> |
|||
<version>0.0.1</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>org.springframework.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-openfeign</artifactId> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>org.projectlombok</groupId> |
|||
<artifactId>lombok</artifactId> |
|||
<version>1.18.24</version> |
|||
<optional>true</optional> |
|||
</dependency> |
|||
|
|||
</dependencies> |
|||
|
|||
<distributionManagement> |
|||
<repository> |
|||
<id>nexus-releases</id> |
|||
<url>http://172.18.0.3:8081/repository/yxt-mvn-releases/</url> |
|||
</repository> |
|||
<snapshotRepository> |
|||
<id>nexus-snapshots</id> |
|||
<url>http://172.18.0.3:8081/repository/yxt-mvn-snapshot/</url> |
|||
</snapshotRepository> |
|||
</distributionManagement> |
|||
|
|||
|
|||
</project> |
@ -0,0 +1,22 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.yxt.common.core.dto.Dto; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Author dimengzhe |
|||
* @Date 2022/11/16 11:56 |
|||
* @Description |
|||
*/ |
|||
@Data |
|||
public class CrmCustomerFileDDto implements Dto { |
|||
private static final long serialVersionUID = -5399631895644837616L; |
|||
|
|||
private String userSid; |
|||
private String customerSid; |
|||
|
|||
private List<String> idImages = new ArrayList<>(); |
|||
} |
@ -0,0 +1,144 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.yxt.common.core.domain.BaseEntity; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@ApiModel(value = "潜在客户信息", description = "潜在客户信息") |
|||
@TableName("crm_customer_temp") |
|||
@Data |
|||
public class CrmCustomerTemp extends BaseEntity { |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
|
|||
@ApiModelProperty("客户编号(部门编码+客户类型(1位,0个人,1企业)+部门内部流水号(6位))") |
|||
private String customerNo; |
|||
|
|||
@ApiModelProperty("客户类型(自然人/法人)") |
|||
private String customerType; |
|||
|
|||
@ApiModelProperty("客户类型key") |
|||
private String customerTypeKey; |
|||
|
|||
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") |
|||
private String customerClass; |
|||
|
|||
@ApiModelProperty("客户分类key") |
|||
private String customerClassKey; |
|||
|
|||
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") |
|||
private String source; |
|||
|
|||
@ApiModelProperty("客户来源key") |
|||
private String sourceKey; |
|||
|
|||
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") |
|||
private String level; |
|||
|
|||
@ApiModelProperty("客户级别key") |
|||
private String levelKey; |
|||
|
|||
@ApiModelProperty("客户名称") |
|||
private String name; |
|||
|
|||
@ApiModelProperty("证件类型key") |
|||
private String certificateTypeKey; |
|||
|
|||
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") |
|||
private String certificateType; |
|||
|
|||
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") |
|||
private String IDNumber; |
|||
|
|||
@ApiModelProperty("证件有效期") |
|||
private String endDate; |
|||
|
|||
@ApiModelProperty("行政区划代码(省)") |
|||
private String address_province; |
|||
|
|||
@ApiModelProperty("行政区划代码(市)") |
|||
private String address_city; |
|||
|
|||
@ApiModelProperty("行政区划代码(县)") |
|||
private String address_county; |
|||
|
|||
@ApiModelProperty("省") |
|||
private String province; |
|||
|
|||
@ApiModelProperty("市") |
|||
private String city; |
|||
|
|||
@ApiModelProperty("县") |
|||
private String county; |
|||
|
|||
@ApiModelProperty("详细地址") |
|||
private String address; |
|||
|
|||
@ApiModelProperty("邮编") |
|||
private String zipCode; |
|||
|
|||
@ApiModelProperty("电子邮箱") |
|||
private String e_mail; |
|||
|
|||
@ApiModelProperty("联系人") |
|||
private String contacts; |
|||
|
|||
@ApiModelProperty("联系电话") |
|||
private String mobile; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyContact; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyMobile; |
|||
|
|||
@ApiModelProperty("微信号码") |
|||
private String weixin; |
|||
|
|||
@ApiModelProperty("业务人员sid") |
|||
private String staffSid; |
|||
|
|||
@ApiModelProperty("创建组织sid") |
|||
private String createOrgSid; |
|||
|
|||
@ApiModelProperty("性别") |
|||
private String sex; |
|||
|
|||
@ApiModelProperty("性别key") |
|||
private String sexKey; |
|||
|
|||
@ApiModelProperty("生日") |
|||
private String birthday; |
|||
|
|||
@ApiModelProperty("所在公司名称") |
|||
private String companyName; |
|||
|
|||
@ApiModelProperty("跟进状态key") |
|||
private String follow_state_key; |
|||
|
|||
@ApiModelProperty("跟进状态") |
|||
private String follow_state; |
|||
|
|||
@ApiModelProperty("是否开启提醒key(1开启,0不开启)") |
|||
private String isOnRemindkey; |
|||
|
|||
@ApiModelProperty("是否开启提醒(1开启,0不开启)") |
|||
private String isOnRemind; |
|||
|
|||
@ApiModelProperty("提醒日期") |
|||
private String remind_day; |
|||
|
|||
@ApiModelProperty("提醒备注") |
|||
private String remind_remark; |
|||
|
|||
@ApiModelProperty("客户头像") |
|||
private String customerPhoto; |
|||
|
|||
@ApiModelProperty("见面方式key") |
|||
private String visitWayKey; |
|||
|
|||
@ApiModelProperty("见面方式(到店/电话/拜访)") |
|||
private String visitWay; |
|||
} |
@ -0,0 +1,117 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
import com.yxt.common.core.dto.Dto; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import java.util.List; |
|||
|
|||
@ApiModel(value = "潜在客户信息 数据传输对象", description = "潜在客户信息 数据传输对象") |
|||
@Data |
|||
public class CrmCustomerTempDto implements Dto { |
|||
|
|||
private static final long serialVersionUID = 793474187074718535L; |
|||
|
|||
@ApiModelProperty(value = "当前登录用户的sid") |
|||
private String userSid; |
|||
|
|||
@ApiModelProperty(value = "客户类型(1个人/2企业)", required = true) |
|||
@NotBlank(message = "客户类型为必选项") |
|||
private String customerType; |
|||
|
|||
@ApiModelProperty(value = "客户类型key", required = true) |
|||
@NotBlank(message = "客户类型为必选项") |
|||
private String customerTypeKey; |
|||
|
|||
@ApiModelProperty(value = "见面方式key", required = true) |
|||
@NotBlank(message = "见面方式为必选项") |
|||
private String visitWayKey; |
|||
|
|||
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true) |
|||
@NotBlank(message = "见面方式为必选项") |
|||
private String visitWay; |
|||
|
|||
@ApiModelProperty(value = "客户名称", required = true) |
|||
@NotBlank(message = "客户名称为必填项") |
|||
private String name; |
|||
|
|||
@ApiModelProperty("联系电话") |
|||
@NotBlank(message = "联系电话为必填项") |
|||
private String mobile; |
|||
|
|||
@ApiModelProperty("微信号码") |
|||
private String weixin; |
|||
|
|||
@ApiModelProperty("公司名称:个人客户时显示") |
|||
private String companyName; |
|||
|
|||
@ApiModelProperty("行政区划代码(省)") |
|||
private String address_province; |
|||
|
|||
@ApiModelProperty("行政区划代码(市)") |
|||
private String address_city; |
|||
@ApiModelProperty("行政区划代码(县)") |
|||
private String address_county; |
|||
@ApiModelProperty("客户地址:省") |
|||
private String province; |
|||
@ApiModelProperty("客户地址:市") |
|||
private String city; |
|||
@ApiModelProperty("客户地址:县") |
|||
private String county; |
|||
@ApiModelProperty("客户地址:详细地址") |
|||
private String address; |
|||
|
|||
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") |
|||
private String level; |
|||
@ApiModelProperty("客户级别key") |
|||
private String levelKey; |
|||
@ApiModelProperty("是否开启提醒(1开启,0不开启)") |
|||
private String isOnRemindkey; |
|||
@ApiModelProperty("是否开启提醒(1开启,0不开启)") |
|||
private String isOnRemind; |
|||
@ApiModelProperty("提醒日期") |
|||
private String remind_day; |
|||
@ApiModelProperty("提醒备注") |
|||
private String remind_remark; |
|||
//更多信息
|
|||
@ApiModelProperty("客户生日:个人客户时显示") |
|||
private String birthday; |
|||
@ApiModelProperty("性别:个人客户时显示") |
|||
private String sex; |
|||
@ApiModelProperty("性别key:个人客户时") |
|||
private String sexKey; |
|||
@ApiModelProperty("证件类型key") |
|||
private String certificateTypeKey; |
|||
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") |
|||
private String certificateType; |
|||
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") |
|||
private String IDNumber; |
|||
@ApiModelProperty("证件有效期") |
|||
private String endDate; |
|||
@ApiModelProperty("电子邮箱") |
|||
private String e_mail; |
|||
@ApiModelProperty(value = "联系人") |
|||
private String contacts; |
|||
@ApiModelProperty("紧急联系人") |
|||
private String emergencyContact; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyMobile; |
|||
|
|||
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") |
|||
private String source; |
|||
|
|||
@ApiModelProperty("客户来源key") |
|||
private String sourceKey; |
|||
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") |
|||
private String customerClass; |
|||
@ApiModelProperty("客户分类key") |
|||
private String customerClassKey; |
|||
@ApiModelProperty(value = "备注") |
|||
private String remarks; |
|||
@ApiModelProperty("业务人员sid") |
|||
private String staffSid; |
|||
|
|||
|
|||
} |
@ -0,0 +1,86 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.common.core.vo.PagerVo; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.cloud.openfeign.FeignClient; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.validation.Valid; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempFeign.java <br/> |
|||
* Class: com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempFeign <br/> |
|||
* Description: 潜在客户信息. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:16 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Api(tags = "潜在客户信息") |
|||
@FeignClient( |
|||
contextId = "supervise-crm-CrmCustomerTemp", |
|||
name = "supervise-crm", |
|||
path = "v1/crmcustomertemp", |
|||
fallback = CrmCustomerTempFeignFallback.class) |
|||
public interface CrmCustomerTempFeign { |
|||
|
|||
/** |
|||
* 潜在客户管理的分页查询 |
|||
* |
|||
* @param pq |
|||
* @return |
|||
*/ |
|||
@ApiOperation("根据条件分页查询数据的列表") |
|||
@PostMapping("/listPage") |
|||
public ResultBean<PagerVo<CrmCustomerTempVo>> listPage(@RequestBody PagerQuery<CrmCustomerTempQuery> pq); |
|||
|
|||
/** |
|||
* pc端潜在客户新增保存 |
|||
* |
|||
* @param dto 客户信息及运行信息数据传输对象 |
|||
* @return |
|||
*/ |
|||
@ApiOperation("新增保存") |
|||
@PostMapping("/save") |
|||
public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto); |
|||
|
|||
/** |
|||
* pc端潜在客户编辑保存 |
|||
* |
|||
* @param dto 数据传输对象 |
|||
* @param sid 潜在客户sid |
|||
* @return |
|||
*/ |
|||
@ApiOperation("修改保存") |
|||
@PostMapping("/update/{sid}") |
|||
public ResultBean update(@RequestBody CrmCustomerTempUpdateDto dto, @PathVariable("sid") String sid); |
|||
|
|||
/** |
|||
* pc潜在客户的批量删除 |
|||
* |
|||
* @param sid |
|||
* @return |
|||
*/ |
|||
@ApiOperation("删除记录") |
|||
@DeleteMapping("/del") |
|||
public ResultBean del(@RequestBody String[] sid); |
|||
|
|||
/** |
|||
* pc潜在客户的编辑回显 |
|||
* |
|||
* @param sid |
|||
* @return |
|||
*/ |
|||
@ApiOperation("获取一条记录") |
|||
@GetMapping("/fetchSid/{sid}") |
|||
public ResultBean<CrmCustomerTempVo> fetchSid(@PathVariable("sid") String sid); |
|||
|
|||
} |
@ -0,0 +1,51 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.common.core.vo.PagerVo; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempFeignFallback.java <br/> |
|||
* Class: com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempFeignFallback <br/> |
|||
* Description: 潜在客户信息. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:16 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Component |
|||
public class CrmCustomerTempFeignFallback implements CrmCustomerTempFeign { |
|||
|
|||
|
|||
@Override |
|||
public ResultBean<PagerVo<CrmCustomerTempVo>> listPage(PagerQuery<CrmCustomerTempQuery> pq) { |
|||
return null; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public ResultBean save(CrmCustomerTempDto dto) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean update(CrmCustomerTempUpdateDto dto, String sid) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean del(String[] sid) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<CrmCustomerTempVo> fetchSid(String sid) { |
|||
return null; |
|||
} |
|||
} |
@ -0,0 +1,20 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @Author dimengzhe |
|||
* @Date 2022/9/26 14:30 |
|||
* @Description |
|||
*/ |
|||
@Data |
|||
public class CrmCustomerTempListQuery implements Query { |
|||
private static final long serialVersionUID = -8235453055415557265L; |
|||
|
|||
private String userSid; |
|||
private String staffSid; |
|||
@ApiModelProperty("组织机构全路径sid") |
|||
private String orgPath; |
|||
} |
@ -0,0 +1,22 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @Author dimengzhe |
|||
* @Date 2022/9/26 14:28 |
|||
* @Description |
|||
*/ |
|||
@Data |
|||
public class CrmCustomerTempListVo implements Vo { |
|||
private static final long serialVersionUID = 5338688085476236821L; |
|||
|
|||
private String name; |
|||
private String sid; |
|||
private String mobile; |
|||
@ApiModelProperty("客户编码") |
|||
private String customerNo; |
|||
|
|||
} |
@ -0,0 +1,53 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempQuery.java <br/> |
|||
* Class: com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempQuery <br/> |
|||
* Description: 潜在客户信息 查询条件. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:16 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@ApiModel(value = "潜在客户信息 查询条件", description = "潜在客户信息 查询条件") |
|||
@Data |
|||
public class CrmCustomerTempQuery implements Query { |
|||
|
|||
@ApiModelProperty("客户类型key(自然人/法人)") |
|||
private String customerTypeKey; |
|||
|
|||
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") |
|||
private String levelKey; |
|||
|
|||
@ApiModelProperty("客户名称") |
|||
private String name; |
|||
|
|||
@ApiModelProperty("联系电话") |
|||
private String mobile; |
|||
|
|||
@ApiModelProperty("提醒开始日期") |
|||
private String remindStartDay; |
|||
|
|||
@ApiModelProperty("提醒结束日期") |
|||
private String remindEndDay; |
|||
|
|||
@ApiModelProperty("业务员sid") |
|||
private String staffSid; |
|||
|
|||
@ApiModelProperty("客户sid") |
|||
private List<String> customerSidList; |
|||
|
|||
} |
@ -0,0 +1,32 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
|
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempVo.java <br/> |
|||
* Class: com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo <br/> |
|||
* Description: 潜在客户信息 视图数据对象. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:16 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Data |
|||
public class CrmCustomerTempToFin implements Vo { |
|||
|
|||
@ApiModelProperty("潜在客户sid") |
|||
private String sid; |
|||
@ApiModelProperty("客户名称") |
|||
private String name; |
|||
@ApiModelProperty("车架号") |
|||
private String vinNo; |
|||
} |
@ -0,0 +1,109 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
import com.yxt.common.core.dto.Dto; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import javax.validation.constraints.Pattern; |
|||
|
|||
/** |
|||
* @Author dimengzhe |
|||
* @Date 2022/7/12 14:04 |
|||
* @Description |
|||
*/ |
|||
@Data |
|||
public class CrmCustomerTempUpdateDto implements Dto { |
|||
private static final long serialVersionUID = -1744083007571476652L; |
|||
|
|||
@ApiModelProperty(value = "当前登录用户的sid") |
|||
private String userSid; |
|||
|
|||
@ApiModelProperty(value = "客户类型(个人/企业)", required = true) |
|||
@NotBlank(message = "客户类型为必选项") |
|||
private String customerType; |
|||
|
|||
@ApiModelProperty(value = "客户类型key", required = true) |
|||
@NotBlank(message = "客户类型为必选项") |
|||
private String customerTypeKey; |
|||
|
|||
@ApiModelProperty(value = "见面方式key", required = true) |
|||
@NotBlank(message = "见面方式为必选项") |
|||
private String visitWayKey; |
|||
|
|||
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true) |
|||
@NotBlank(message = "见面方式为必选项") |
|||
private String visitWay; |
|||
|
|||
@ApiModelProperty(value = "客户名称", required = true) |
|||
@NotBlank(message = "客户名称为必填项") |
|||
private String name; |
|||
|
|||
@ApiModelProperty("联系电话") |
|||
@NotBlank(message = "联系电话为必填项") |
|||
@Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$", message = "手机号码格式不正确") |
|||
private String mobile; |
|||
|
|||
@ApiModelProperty("微信号码") |
|||
private String weixin; |
|||
|
|||
@ApiModelProperty("公司名称:个人客户时显示") |
|||
private String companyName; |
|||
|
|||
@ApiModelProperty("行政区划代码(省)") |
|||
private String address_province; |
|||
|
|||
@ApiModelProperty("行政区划代码(市)") |
|||
private String address_city; |
|||
@ApiModelProperty("行政区划代码(县)") |
|||
private String address_county; |
|||
@ApiModelProperty("客户地址:省") |
|||
private String province; |
|||
@ApiModelProperty("客户地址:市") |
|||
private String city; |
|||
@ApiModelProperty("客户地址:县") |
|||
private String county; |
|||
@ApiModelProperty("客户地址:详细地址") |
|||
private String address; |
|||
|
|||
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") |
|||
private String level; |
|||
@ApiModelProperty("客户级别key") |
|||
private String levelKey; |
|||
//更多信息
|
|||
@ApiModelProperty("客户生日:个人客户时显示") |
|||
private String birthday; |
|||
@ApiModelProperty("性别:个人客户时显示") |
|||
private String sex; |
|||
@ApiModelProperty("性别key:个人客户时") |
|||
private String sexKey; |
|||
@ApiModelProperty("证件类型key") |
|||
private String certificateTypeKey; |
|||
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") |
|||
private String certificateType; |
|||
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") |
|||
private String IDNumber; |
|||
@ApiModelProperty("证件有效期") |
|||
private String endDate; |
|||
@ApiModelProperty("电子邮箱") |
|||
private String e_mail; |
|||
@ApiModelProperty(value = "联系人") |
|||
private String contacts; |
|||
@ApiModelProperty("紧急联系人") |
|||
private String emergencyContact; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyMobile; |
|||
|
|||
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") |
|||
private String source; |
|||
|
|||
@ApiModelProperty("客户来源key") |
|||
private String sourceKey; |
|||
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") |
|||
private String customerClass; |
|||
@ApiModelProperty("客户分类key") |
|||
private String customerClassKey; |
|||
@ApiModelProperty(value = "备注") |
|||
private String remarks; |
|||
} |
@ -0,0 +1,181 @@ |
|||
package com.yxt.supervise.crm.api.crmcustomertemp; |
|||
|
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.yxt.common.core.vo.Vo; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempVo.java <br/> |
|||
* Class: com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo <br/> |
|||
* Description: 潜在客户信息 视图数据对象. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:16 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@ApiModel(value = "潜在客户信息 视图数据对象", description = "潜在客户信息 视图数据对象") |
|||
@Data |
|||
public class CrmCustomerTempVo implements Vo { |
|||
|
|||
@ApiModelProperty("潜在客户sid") |
|||
private String sid; |
|||
|
|||
@ApiModelProperty("分公司名称") |
|||
private String createOrgName; |
|||
|
|||
@ApiModelProperty("业务员名称") |
|||
private String staffName; |
|||
|
|||
@ApiModelProperty("部门名称") |
|||
private String deptName; |
|||
|
|||
@ApiModelProperty("创建人sid") |
|||
private String createBySid; |
|||
|
|||
@ApiModelProperty("登记日期") |
|||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
|||
private Date createTime; |
|||
|
|||
@ApiModelProperty("客户编号(部门编码+客户类型(1位,0个人,1企业)+部门内部流水号(6位))") |
|||
private String customerNo; |
|||
|
|||
@ApiModelProperty("客户类型(自然人/法人)") |
|||
private String customerType; |
|||
|
|||
@ApiModelProperty("客户类型key") |
|||
private String customerTypeKey; |
|||
|
|||
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)") |
|||
private String customerClass; |
|||
|
|||
@ApiModelProperty("客户分类key") |
|||
private String customerClassKey; |
|||
|
|||
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)") |
|||
private String source; |
|||
|
|||
@ApiModelProperty("客户来源key") |
|||
private String sourceKey; |
|||
|
|||
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)") |
|||
private String level; |
|||
|
|||
@ApiModelProperty("客户级别key") |
|||
private String levelKey; |
|||
|
|||
@ApiModelProperty("客户名称") |
|||
private String name; |
|||
|
|||
@ApiModelProperty("证件类型key") |
|||
private String certificateTypeKey; |
|||
|
|||
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)") |
|||
private String certificateType; |
|||
|
|||
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)") |
|||
private String IDNumber; |
|||
|
|||
@ApiModelProperty("证件有效期") |
|||
private String endDate; |
|||
|
|||
@ApiModelProperty("行政区划代码(省)") |
|||
private String address_province; |
|||
|
|||
@ApiModelProperty("行政区划代码(市)") |
|||
private String address_city; |
|||
|
|||
@ApiModelProperty("行政区划代码(县)") |
|||
private String address_county; |
|||
|
|||
@ApiModelProperty("省") |
|||
private String province; |
|||
|
|||
@ApiModelProperty("市") |
|||
private String city; |
|||
|
|||
@ApiModelProperty("县") |
|||
private String county; |
|||
|
|||
@ApiModelProperty("客户地址") |
|||
private String address; |
|||
|
|||
@ApiModelProperty("邮编") |
|||
private String zipCode; |
|||
|
|||
@ApiModelProperty("电子邮箱") |
|||
private String e_mail; |
|||
|
|||
@ApiModelProperty("联系人") |
|||
private String contacts; |
|||
|
|||
@ApiModelProperty("联系电话") |
|||
private String mobile; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyContact; |
|||
|
|||
@ApiModelProperty("紧急联系电话") |
|||
private String emergencyMobile; |
|||
|
|||
@ApiModelProperty("微信号码") |
|||
private String weixin; |
|||
|
|||
@ApiModelProperty("业务人员sid") |
|||
private String staffSid; |
|||
|
|||
@ApiModelProperty("创建组织sid") |
|||
private String createOrgSid; |
|||
|
|||
@ApiModelProperty("性别") |
|||
private String sex; |
|||
|
|||
@ApiModelProperty("性别key") |
|||
private String sexKey; |
|||
|
|||
@ApiModelProperty("客户生日") |
|||
private String birthday; |
|||
|
|||
@ApiModelProperty("所在公司名称") |
|||
private String companyName; |
|||
|
|||
@ApiModelProperty("跟进状态key") |
|||
private String follow_state_key; |
|||
|
|||
@ApiModelProperty("跟进状态") |
|||
private String follow_state; |
|||
|
|||
@ApiModelProperty("是否开启提醒key(1开启,0不开启)") |
|||
private String isOnRemindkey; |
|||
|
|||
@ApiModelProperty("是否开启提醒(1开启,0不开启)") |
|||
private String isOnRemind; |
|||
|
|||
@ApiModelProperty("提醒日期") |
|||
private String remind_day; |
|||
|
|||
@ApiModelProperty("提醒备注") |
|||
private String remind_remark; |
|||
|
|||
@ApiModelProperty("客户头像") |
|||
private String customerPhoto; |
|||
|
|||
@ApiModelProperty("见面方式key") |
|||
private String visitWayKey; |
|||
|
|||
@ApiModelProperty("见面方式(到店/电话/拜访)") |
|||
private String visitWay; |
|||
|
|||
@ApiModelProperty("备注") |
|||
private String remarks; |
|||
} |
@ -0,0 +1,99 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|||
|
|||
<parent> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<artifactId>supervise-crm</artifactId> |
|||
<version>0.0.1</version> |
|||
</parent> |
|||
<modelVersion>4.0.0</modelVersion> |
|||
|
|||
<artifactId>supervise-crm-biz</artifactId> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<version>0.0.1</version> |
|||
|
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<artifactId>supervise-system-api</artifactId> |
|||
<version>0.0.1-SNAPSHOT</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.yxt</groupId> |
|||
<artifactId>yxt-common-base</artifactId> |
|||
<version>0.0.1</version> |
|||
</dependency> |
|||
<dependency> |
|||
<artifactId>supervise-crm-api</artifactId> |
|||
<groupId>com.yxt.supervise</groupId> |
|||
<version>0.0.1-SNAPSHOT</version> |
|||
</dependency> |
|||
<!--mysql--> |
|||
<dependency> |
|||
<groupId>mysql</groupId> |
|||
<artifactId>mysql-connector-java</artifactId> |
|||
<scope>runtime</scope> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> |
|||
</dependency> |
|||
|
|||
<dependency> |
|||
<groupId>com.baomidou</groupId> |
|||
<artifactId>mybatis-plus-boot-starter</artifactId> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.baomidou</groupId> |
|||
<artifactId>mybatis-plus-annotation</artifactId> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>junit</groupId> |
|||
<artifactId>junit</artifactId> |
|||
<scope>compile</scope> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>javax.servlet</groupId> |
|||
<artifactId>javax.servlet-api</artifactId> |
|||
<version>4.0.1</version> |
|||
<scope>compile</scope> |
|||
</dependency> |
|||
|
|||
|
|||
</dependencies> |
|||
|
|||
<build> |
|||
<plugins> |
|||
<plugin> |
|||
<groupId>org.springframework.boot</groupId> |
|||
<artifactId>spring-boot-maven-plugin</artifactId> |
|||
<version>2.5.6</version> |
|||
<executions> |
|||
<execution> |
|||
<goals> |
|||
<goal>repackage</goal> |
|||
</goals> |
|||
</execution> |
|||
</executions> |
|||
</plugin> |
|||
</plugins> |
|||
<resources> |
|||
<resource> |
|||
<directory>src/main/java</directory> |
|||
<includes> |
|||
<include>**/*Mapper.xml</include> |
|||
</includes> |
|||
</resource> |
|||
<resource> |
|||
<directory>src/main/resources</directory> |
|||
<includes> |
|||
<include>**/*.*</include> |
|||
</includes> |
|||
<filtering>false</filtering> |
|||
</resource> |
|||
</resources> |
|||
</build> |
|||
|
|||
</project> |
@ -0,0 +1,23 @@ |
|||
package com.yxt.supervise.crm; |
|||
|
|||
|
|||
import org.springframework.boot.SpringApplication; |
|||
import org.springframework.boot.autoconfigure.SpringBootApplication; |
|||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
|||
import org.springframework.cloud.openfeign.EnableFeignClients; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
*/ |
|||
@SpringBootApplication(scanBasePackages = { |
|||
"com.yxt.common.base.config", |
|||
"com.yxt.supervise.crm" |
|||
}) |
|||
@EnableDiscoveryClient |
|||
@EnableFeignClients(basePackages = {"com.yxt.supervise.system"}) |
|||
public class CrmApplication { |
|||
|
|||
public static void main(String[] args) { |
|||
SpringApplication.run(CrmApplication.class, args); |
|||
} |
|||
} |
@ -0,0 +1,47 @@ |
|||
package com.yxt.supervise.crm.biz.crmcustomertemp; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.core.toolkit.Constants; |
|||
import com.yxt.supervise.crm.api.crmcustomertemp.*; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.apache.ibatis.annotations.Select; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempMapper.java <br/> |
|||
* Class: com.yxt.supervise.crm.biz.crmcustomertemp.CrmCustomerTempMapper <br/> |
|||
* Description: 潜在客户信息. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:17 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Mapper |
|||
public interface CrmCustomerTempMapper extends BaseMapper<CrmCustomerTemp> { |
|||
|
|||
|
|||
IPage<CrmCustomerTempVo> selectPageVo(IPage<CrmCustomerTemp> page, @Param(Constants.WRAPPER) Wrapper<CrmCustomerTemp> qw); |
|||
|
|||
|
|||
/** |
|||
* 根据客户的微信号以及当前登录者所在部门的sid和登录者所关联的员工sid查询 |
|||
* |
|||
* @param staffSid 登录者所关联的员工sid |
|||
* @param weixin 微信号 |
|||
* @return |
|||
*/ |
|||
CrmCustomerTempVo selectByWx(@Param("staffSid") String staffSid, @Param("weixin") String weixin); |
|||
|
|||
CrmCustomerTempVo selectNo(String customerNo); |
|||
|
|||
CrmCustomerTempVo selectNo1(@Param("customerNo") String customerNo, @Param("sid") String sid); |
|||
} |
@ -0,0 +1,33 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.yxt.supervise.crm.biz.crmcustomertemp.CrmCustomerTempMapper"> |
|||
<!-- <where> ${ew.sqlSegment} </where>--> |
|||
<!-- ${ew.customSqlSegment} --> |
|||
<select id="selectPageVo" resultType="com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo"> |
|||
SELECT cct.* |
|||
FROM crm_customer_temp cct |
|||
<where> |
|||
${ew.sqlSegment} |
|||
</where> |
|||
</select> |
|||
<!--根据客户的微信号以及当前登录者所在部门的sid和登录者所关联的员工sid查询--> |
|||
<select id="selectByWx" resultType="com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo"> |
|||
SELECT * |
|||
FROM crm_customer_temp |
|||
WHERE staffSid = #{staffSid} |
|||
and weixin = #{weixin} |
|||
</select> |
|||
|
|||
<select id="selectNo" resultType="com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo"> |
|||
select * |
|||
from crm_customer_temp |
|||
where customerNo = #{customerNo} |
|||
</select> |
|||
|
|||
<select id="selectNo1" resultType="com.yxt.supervise.crm.api.crmcustomertemp.CrmCustomerTempVo"> |
|||
select * |
|||
from crm_customer_temp |
|||
where customerNo = #{customerNo} |
|||
and sid != #{sid} |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,104 @@ |
|||
package com.yxt.supervise.crm.biz.crmcustomertemp; |
|||
|
|||
import com.yxt.supervise.crm.api.crmcustomertemp.*; |
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.common.core.vo.PagerVo; |
|||
import io.swagger.annotations.Api; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempFeignFallback.java <br/> |
|||
* Class: com.yxt.supervise.crm.biz.crmcustomertemp.CrmCustomerTempRest <br/> |
|||
* Description: 潜在客户信息. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:17 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Api(tags = "潜在客户信息") |
|||
@RestController |
|||
@RequestMapping("v1/crmcustomertemp") |
|||
public class CrmCustomerTempRest implements CrmCustomerTempFeign { |
|||
|
|||
@Autowired |
|||
private CrmCustomerTempService crmCustomerTempService; |
|||
|
|||
@Override |
|||
public ResultBean<PagerVo<CrmCustomerTempVo>> listPage(@RequestBody PagerQuery<CrmCustomerTempQuery> pq) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
PagerVo<CrmCustomerTempVo> pv = crmCustomerTempService.listPageVo(pq); |
|||
return rb.success().setData(pv); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 潜在客户新增保存 |
|||
* |
|||
* @param dto 数据传输对象 |
|||
* @return |
|||
*/ |
|||
@Override |
|||
public ResultBean save(CrmCustomerTempDto dto) { |
|||
return crmCustomerTempService.saveCrmCustomer(dto); |
|||
} |
|||
|
|||
/** |
|||
* 潜在客户修改保存 |
|||
* |
|||
* @param dto 数据传输对象 |
|||
* @param sid 潜在客户sid |
|||
* @return |
|||
*/ |
|||
@Override |
|||
public ResultBean update(CrmCustomerTempUpdateDto dto, String sid) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
String weixin = dto.getWeixin(); |
|||
if (StringUtils.isNotBlank(weixin)) { |
|||
if (!weixin.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") && !weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { |
|||
return rb.setMsg("微信号格式不正确"); |
|||
} |
|||
} |
|||
String email = dto.getE_mail(); |
|||
if (StringUtils.isNotBlank(email)) { |
|||
if (!email.matches("^[0-9A-Za-z][\\.-_0-9A-Za-z]*@[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)+$")) { |
|||
return rb.setMsg("邮箱格式不正确"); |
|||
} |
|||
} |
|||
ResultBean resultBean = crmCustomerTempService.updateCrmCustomer(dto, sid); |
|||
if (!resultBean.getSuccess()) { |
|||
return rb.setMsg(resultBean.getMsg()); |
|||
} |
|||
return rb.success().setMsg(resultBean.getMsg()); |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean del(String[] sid) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
crmCustomerTempService.delBySids(sid); |
|||
return rb.success(); |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<CrmCustomerTempVo> fetchSid(String sid) { |
|||
ResultBean<CrmCustomerTempVo> rb = ResultBean.fireFail(); |
|||
CrmCustomerTemp customerTemp = crmCustomerTempService.fetchBySid(sid); |
|||
if (customerTemp == null) { |
|||
return rb.setMsg("该客户不存在"); |
|||
} |
|||
CrmCustomerTempVo vo = crmCustomerTempService.fetchAllBySid(sid); |
|||
return rb.success().setData(vo); |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,330 @@ |
|||
package com.yxt.supervise.crm.biz.crmcustomertemp; |
|||
|
|||
import cn.hutool.core.bean.BeanUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.yxt.supervise.crm.api.crmcustomertemp.*; |
|||
import com.yxt.common.base.config.component.FileUploadComponent; |
|||
import com.yxt.common.base.service.MybatisBaseService; |
|||
import com.yxt.common.base.utils.HanZiConverterPinYin; |
|||
import com.yxt.common.base.utils.HttpStatusEnum; |
|||
import com.yxt.common.base.utils.PagerUtil; |
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.common.core.vo.PagerVo; |
|||
import com.yxt.supervise.system.dictcommon.DictCommonFeign; |
|||
import com.yxt.supervise.system.sysorganization.SysOrganizationFeign; |
|||
import com.yxt.supervise.system.sysorganization.SysOrganizationVo; |
|||
import com.yxt.supervise.system.sysstafforg.SysStaffOrg; |
|||
import com.yxt.supervise.system.sysstafforg.SysStaffOrgFeign; |
|||
import com.yxt.supervise.system.sysuser.SysUserFeign; |
|||
import com.yxt.supervise.system.sysuser.SysUserInfoVo; |
|||
import com.yxt.supervise.system.sysuser.SysUserVo; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.*; |
|||
|
|||
/** |
|||
* Project: supervise-crm(客户管理) <br/> |
|||
* File: CrmCustomerTempService.java <br/> |
|||
* Class: com.yxt.supervise.crm.biz.crmcustomertemp.CrmCustomerTempService <br/> |
|||
* Description: 潜在客户信息 业务逻辑. <br/> |
|||
* Copyright: Copyright (c) 2011 <br/> |
|||
* Company: https://gitee.com/liuzp315 <br/>
|
|||
* Makedate: 2022-01-12 11:21:17 <br/> |
|||
* |
|||
* @author liupopo |
|||
* @version 1.0 |
|||
* @since 1.0 |
|||
*/ |
|||
@Service |
|||
public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMapper, CrmCustomerTemp> { |
|||
|
|||
|
|||
@Autowired |
|||
private SysUserFeign sysUserFeign; |
|||
@Autowired |
|||
private SysStaffOrgFeign sysStaffOrgFeign; |
|||
@Autowired |
|||
private SysOrganizationFeign sysOrganizationFeign; |
|||
|
|||
private QueryWrapper<CrmCustomerTemp> createQueryWrapper(CrmCustomerTempQuery query) { |
|||
QueryWrapper<CrmCustomerTemp> qw = new QueryWrapper<>(); |
|||
|
|||
if (StringUtils.isNotBlank(query.getCustomerTypeKey())) { |
|||
qw.eq("cct.customerTypeKey", query.getCustomerTypeKey()); |
|||
} |
|||
if (StringUtils.isNotBlank(query.getName())) { |
|||
qw.like("cct.name", query.getName()); |
|||
} |
|||
if (StringUtils.isNotBlank(query.getLevelKey())) { |
|||
qw.eq("cct.levelKey", query.getLevelKey()); |
|||
} |
|||
if (StringUtils.isNotBlank(query.getMobile())) { |
|||
qw.like("cct.mobile", query.getMobile()); |
|||
} |
|||
if (StringUtils.isNotBlank(query.getStaffSid())) { |
|||
qw.eq("cct.staffSid", query.getStaffSid()); |
|||
} |
|||
if (query.getCustomerSidList() != null && query.getCustomerSidList().size() > 0) { |
|||
qw.notIn("cct.sid", query.getCustomerSidList()); |
|||
} |
|||
String remindStartDay = query.getRemindStartDay(); |
|||
String remindEndDay = query.getRemindEndDay(); |
|||
qw.apply(StringUtils.isNotBlank(remindStartDay), "date_format (cct.remind_day,'%Y-%m-%d') >= date_format('" + remindStartDay + "','%Y-%m-%d')"). |
|||
apply(StringUtils.isNotBlank(remindEndDay), "date_format (cct.remind_day,'%Y-%m-%d') <= date_format('" + remindEndDay + "','%Y-%m-%d')" |
|||
); |
|||
return qw; |
|||
} |
|||
|
|||
public PagerVo<CrmCustomerTempVo> listPageVo(PagerQuery<CrmCustomerTempQuery> pq) { |
|||
CrmCustomerTempQuery query = pq.getParams(); |
|||
QueryWrapper<CrmCustomerTemp> qw = createQueryWrapper(query); |
|||
IPage<CrmCustomerTemp> page = PagerUtil.queryToPage(pq); |
|||
IPage<CrmCustomerTempVo> pagging = baseMapper.selectPageVo(page, qw); |
|||
PagerVo<CrmCustomerTempVo> p = PagerUtil.pageToVo(pagging, null); |
|||
return p; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* pc端潜在客户新增保存 |
|||
* |
|||
* @param dto 数据传输对象 |
|||
* state值:211:为当前用户的客户 |
|||
* @return |
|||
*/ |
|||
public ResultBean saveCrmCustomer(CrmCustomerTempDto dto) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
//当前登录用户的sid
|
|||
String userSid = dto.getUserSid(); |
|||
//根据登录用户sid查询该用户是否已设置部门
|
|||
ResultBean<SysUserInfoVo> sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(userSid); |
|||
if (!sysUserInfoVoResultBean.getSuccess()) { |
|||
return rb.setMsg(sysUserInfoVoResultBean.getMsg()); |
|||
} |
|||
//用户所属组织信息
|
|||
SysUserInfoVo sysUserInfoVo = sysUserInfoVoResultBean.getData(); |
|||
if (StringUtils.isBlank(sysUserInfoVo.getOrgSid())) { |
|||
return rb.setMsg("请先设置该员工所属部门"); |
|||
} |
|||
//手机号
|
|||
String mobile = dto.getMobile(); |
|||
//微信号
|
|||
String weixin = dto.getWeixin(); |
|||
if (StringUtils.isBlank(mobile)) { |
|||
return rb.setMsg("请输入联系电话"); |
|||
} |
|||
if ("1".equals(dto.getCustomerType())) { |
|||
if (!weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { |
|||
return rb.setMsg("手机号格式不正确"); |
|||
} |
|||
if (StringUtils.isNotBlank(dto.getIDNumber())) { |
|||
if (!weixin.matches("^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$")) { |
|||
return rb.setMsg("证件号码格式不正确"); |
|||
} |
|||
} |
|||
} else { |
|||
if (StringUtils.isNotBlank(dto.getIDNumber())) { |
|||
if (dto.getIDNumber().length() != 9 && dto.getIDNumber().length() != 18) { |
|||
return rb.setMsg("证件号码格式不正确"); |
|||
} |
|||
} |
|||
} |
|||
if (StringUtils.isNotBlank(weixin)) { |
|||
if (!weixin.matches("^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$") && !weixin.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { |
|||
return rb.setMsg("微信号格式不正确"); |
|||
} |
|||
} |
|||
String email = dto.getE_mail(); |
|||
if (StringUtils.isNotBlank(email)) { |
|||
if (!email.matches("^[0-9A-Za-z][\\.-_0-9A-Za-z]*@[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)+$")) { |
|||
return rb.setMsg("邮箱格式不正确"); |
|||
} |
|||
} |
|||
String emergencyMobile = dto.getEmergencyMobile(); |
|||
if (StringUtils.isNotBlank(emergencyMobile)) { |
|||
if (!emergencyMobile.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) { |
|||
return rb.setMsg("紧急联系电话格式不正确"); |
|||
} |
|||
} |
|||
//当前登录用户的所在部门sid
|
|||
String staffSid = sysUserInfoVo.getStaffSid(); |
|||
//根据客户的手机号以及当前登录者所在部门的sid查询该部门内是否有重复的
|
|||
if (StringUtils.isNotBlank(mobile)) { |
|||
//客户编码
|
|||
String customerNo = getPrefix(staffSid, dto.getName(), dto.getMobile()); |
|||
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectNo(customerNo); |
|||
if (crmCustomerTempVo == null) { |
|||
//新增潜在客户信息
|
|||
CrmCustomerTemp crmCustomerTemp = saveCrmCustomerTemp(dto, sysUserInfoVo); |
|||
return rb.success().setData(crmCustomerTemp.getSid()); |
|||
} else { |
|||
//是否为当前用户的客户
|
|||
if (crmCustomerTempVo.getStaffSid().equals(sysUserInfoVo.getStaffSid())) { |
|||
return rb.setCode(HttpStatusEnum.CRM_ERROR_EXIST.getCode()).setMsg(HttpStatusEnum.CRM_ERROR_EXIST.getMsg()).setData(crmCustomerTempVo.getSid()); |
|||
} else { |
|||
//不是当前用户的客户,提示信息。
|
|||
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.selectByStaffsid(crmCustomerTempVo.getStaffSid()); |
|||
if (sysUserVoResultBean.getSuccess()) { |
|||
return rb.setMsg("该手机号客户为" + sysUserVoResultBean.getData().getName() + "的客户,如需更改,请联系" + sysUserVoResultBean.getData().getName()); |
|||
} else { |
|||
return rb.setMsg(sysUserInfoVoResultBean.getMsg()); |
|||
} |
|||
} |
|||
} |
|||
} else if (StringUtils.isNotBlank(weixin)) { |
|||
//根据客户的微信号以及当前登录者所在部门的sid和登录者所关联的员工sid查询
|
|||
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectByWx(staffSid, weixin); |
|||
if (crmCustomerTempVo == null) { |
|||
//新增潜在客户信息
|
|||
CrmCustomerTemp crmCustomerTemp = saveCrmCustomerTemp(dto, sysUserInfoVo); |
|||
return rb.success().setData(crmCustomerTemp.getSid()); |
|||
} else { |
|||
return rb.setCode(HttpStatusEnum.CRM_ERROR_WXEXIST.getCode()).setMsg(HttpStatusEnum.CRM_ERROR_WXEXIST.getMsg()); |
|||
} |
|||
} |
|||
return rb.success(); |
|||
} |
|||
|
|||
/** |
|||
* 新增潜在客户信息及运营信息并增加跟进记录 |
|||
* |
|||
* @param dto 潜在客户信息数据传输对象 |
|||
* @param sysUserInfoVo 当前登录者的组织信息 |
|||
* @return |
|||
*/ |
|||
private CrmCustomerTemp saveCrmCustomerTemp(CrmCustomerTempDto dto, SysUserInfoVo sysUserInfoVo) { |
|||
CrmCustomerTemp crmCustomerTemp = new CrmCustomerTemp(); |
|||
dto.fillEntity(crmCustomerTemp); |
|||
crmCustomerTemp.setCreateBySid(dto.getUserSid()); |
|||
crmCustomerTemp.setStaffSid(sysUserInfoVo.getStaffSid()); |
|||
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(dto.getUserSid()).getData(); |
|||
crmCustomerTemp.setCreateOrgSid(orgSid); |
|||
String customerNoPrefix = ""; |
|||
//查询业务员的分公司简称和部门编码
|
|||
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(sysUserInfoVo.getStaffSid()); |
|||
if (staffOrgResultBean.getSuccess()) { |
|||
SysStaffOrg sysStaffOrg = staffOrgResultBean.getData(); |
|||
if (sysStaffOrg != null) { |
|||
ResultBean<String> resultBean1 = sysStaffOrgFeign.getOrgSidByPath(sysStaffOrg.getOrgSidPath()); |
|||
if (resultBean1.getSuccess()) { |
|||
String osid = resultBean1.getData(); |
|||
if (StringUtils.isNotBlank(osid)) { |
|||
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(osid); |
|||
if (sysOrganizationVoResultBean.getSuccess()) { |
|||
SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); |
|||
customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgAbbre(); |
|||
} |
|||
} |
|||
} |
|||
String orgSid1 = sysStaffOrg.getOrgSid(); |
|||
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(orgSid1); |
|||
if (sysOrganizationVoResultBean.getSuccess()) { |
|||
SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); |
|||
customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgCode(); |
|||
} |
|||
} |
|||
} |
|||
//客户编码
|
|||
String customerNo = getPrefix(crmCustomerTemp.getStaffSid(), crmCustomerTemp.getName(), crmCustomerTemp.getMobile()); |
|||
crmCustomerTemp.setCustomerNo(customerNo); |
|||
save(crmCustomerTemp); |
|||
return crmCustomerTemp; |
|||
|
|||
} |
|||
|
|||
public String getPrefix(String staffSid, String name, String mobile) { |
|||
String customerNoPrefix = ""; |
|||
//查询业务员的分公司简称和部门编码
|
|||
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(staffSid); |
|||
if (staffOrgResultBean.getSuccess()) { |
|||
SysStaffOrg sysStaffOrg = staffOrgResultBean.getData(); |
|||
if (sysStaffOrg != null) { |
|||
ResultBean<String> resultBean1 = sysStaffOrgFeign.getOrgSidByPath(sysStaffOrg.getOrgSidPath()); |
|||
if (resultBean1.getSuccess()) { |
|||
String osid = resultBean1.getData(); |
|||
if (StringUtils.isNotBlank(osid)) { |
|||
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(osid); |
|||
if (sysOrganizationVoResultBean.getSuccess()) { |
|||
SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); |
|||
customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgAbbre(); |
|||
} |
|||
} |
|||
} |
|||
String orgSid1 = sysStaffOrg.getOrgSid(); |
|||
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(orgSid1); |
|||
if (sysOrganizationVoResultBean.getSuccess()) { |
|||
SysOrganizationVo sysOrganizationVo = sysOrganizationVoResultBean.getData(); |
|||
customerNoPrefix = customerNoPrefix + sysOrganizationVo.getOrgCode(); |
|||
} |
|||
} |
|||
} |
|||
customerNoPrefix = customerNoPrefix + mobile + HanZiConverterPinYin.getPinYinFirst(name); |
|||
System.out.println(customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix); |
|||
return customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix; |
|||
} |
|||
|
|||
/** |
|||
* 潜在客户的信息的编辑保存 |
|||
* |
|||
* @param dto 数据传输对象 |
|||
* @param sid 潜在客户的sid |
|||
* @return |
|||
*/ |
|||
public ResultBean updateCrmCustomer(CrmCustomerTempUpdateDto dto, String sid) { |
|||
ResultBean rb = ResultBean.fireFail(); |
|||
//当前登录用户的sid
|
|||
String userSid = dto.getUserSid(); |
|||
//根据登录用户sid查询该用户是否已设置部门
|
|||
ResultBean<SysUserInfoVo> sysUserInfoVoResultBean = sysUserFeign.selectUserInfoByUserSid(userSid); |
|||
if (!sysUserInfoVoResultBean.getSuccess()) { |
|||
return rb.setMsg(sysUserInfoVoResultBean.getMsg()); |
|||
} |
|||
//用户所属组织信息
|
|||
SysUserInfoVo sysUserInfoVo = sysUserInfoVoResultBean.getData(); |
|||
if (StringUtils.isBlank(sysUserInfoVo.getOrgSid())) { |
|||
return rb.setMsg("请先设置该员工所属部门"); |
|||
} |
|||
String staffSid = sysUserInfoVo.getStaffSid(); |
|||
String mobile = dto.getMobile(); |
|||
String weixin = dto.getWeixin(); |
|||
if (StringUtils.isBlank(mobile) && StringUtils.isBlank(weixin)) { |
|||
return rb.setMsg("联系电话和微信号二选一必填"); |
|||
} |
|||
if (StringUtils.isNotBlank(mobile)) { |
|||
String customerNo = getPrefix(staffSid, dto.getName(), dto.getMobile()); |
|||
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectNo1(customerNo, sid); |
|||
if (crmCustomerTempVo != null && !crmCustomerTempVo.getStaffSid().equals(sysUserInfoVo.getStaffSid())) { |
|||
return rb.setMsg("该手机号已绑定其他客户,请重新添加"); |
|||
} |
|||
} else { |
|||
//根据客户的微信号以及当前登录者所在部门的sid和登录者所关联的员工sid查询
|
|||
CrmCustomerTempVo crmCustomerTempVo = baseMapper.selectByWx(staffSid, weixin); |
|||
if (crmCustomerTempVo != null && !crmCustomerTempVo.getStaffSid().equals(sysUserInfoVo.getStaffSid())) { |
|||
return rb.setMsg("该微信号已绑定其他客户,请重新添加"); |
|||
} |
|||
} |
|||
CrmCustomerTemp customerTemp = fetchBySid(sid); |
|||
if (customerTemp == null) { |
|||
return rb.setMsg("该客户信息不存在"); |
|||
} |
|||
BeanUtil.copyProperties(dto, customerTemp); |
|||
//客户编码
|
|||
String customerNoPrefix = ""; |
|||
//查询业务员的分公司简称和部门简称
|
|||
String customerNo = getPrefix(staffSid, dto.getName(), dto.getMobile()); |
|||
customerTemp.setCustomerNo(customerNo); |
|||
baseMapper.updateById(customerTemp); |
|||
return rb.success().setMsg("更新成功"); |
|||
} |
|||
|
|||
public CrmCustomerTempVo fetchAllBySid(String sid) { |
|||
CrmCustomerTempVo vo = new CrmCustomerTempVo(); |
|||
CrmCustomerTemp crmCustomerTemp = this.fetchBySid(sid); |
|||
BeanUtil.copyProperties(crmCustomerTemp, vo); |
|||
return vo; |
|||
} |
|||
} |
@ -0,0 +1,31 @@ |
|||
spring: |
|||
datasource: |
|||
hikari: |
|||
max-lifetime: 500000 |
|||
driver-class-name: com.mysql.cj.jdbc.Driver |
|||
url: jdbc:mysql://127.0.0.1:3306/supervise_crm?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true |
|||
username: root |
|||
password: root |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 127.0.0.1:8848 |
|||
redis: |
|||
database: 3 # Redis数据库索引(默认为0) |
|||
host: 127.0.0.1 |
|||
jedis: |
|||
pool: |
|||
max-active: -1 #连接池最大连接数(使用负值表示没有限制) |
|||
max-idle: 8 #连接池中的最大空闲连接 |
|||
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) |
|||
min-idle: 0 # 连接池中的最小空闲连接 |
|||
password: |
|||
port: 6379 |
|||
timeout: 0 # 连接超时时间(毫秒) |
|||
|
|||
image: |
|||
upload: |
|||
path: D:\supervise\upload\ |
|||
url: |
|||
prefix: http://127.0.0.1:8112/upload/ |
|||
|
@ -0,0 +1,28 @@ |
|||
spring: |
|||
datasource: |
|||
driver-class-name: com.mysql.cj.jdbc.Driver |
|||
url: jdbc:mysql://127.0.0.1:3306/supervise_crm?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 |
|||
username: root |
|||
password: root |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 127.0.0.1:8848 |
|||
redis: |
|||
database: 3 # Redis数据库索引(默认为0) |
|||
host: 127.0.0.1 |
|||
jedis: |
|||
pool: |
|||
max-active: -1 #连接池最大连接数(使用负值表示没有限制) |
|||
max-idle: 8 #连接池中的最大空闲连接 |
|||
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) |
|||
min-idle: 0 # 连接池中的最小空闲连接 |
|||
password: 123456 |
|||
port: 6379 |
|||
timeout: 0 # 连接超时时间(毫秒) |
|||
image: |
|||
upload: |
|||
path: D:\supervise\upload\ |
|||
url: |
|||
prefix: http://127.0.0.1/api/upload/ |
|||
|
@ -0,0 +1,30 @@ |
|||
spring: |
|||
datasource: |
|||
driver-class-name: com.mysql.cj.jdbc.Driver |
|||
url: jdbc:mysql://122.14.222.186:3306/supervise_crm?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true |
|||
username: root |
|||
password: 1LAiGz$t1*Iw |
|||
cloud: |
|||
nacos: |
|||
discovery: |
|||
server-addr: 127.0.0.1:8848 |
|||
redis: |
|||
database: 3 # Redis数据库索引(默认为0) |
|||
host: 127.0.0.1 |
|||
jedis: |
|||
pool: |
|||
max-active: -1 #连接池最大连接数(使用负值表示没有限制) |
|||
max-idle: 8 #连接池中的最大空闲连接 |
|||
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) |
|||
min-idle: 0 # 连接池中的最小空闲连接 |
|||
password: 123456 |
|||
port: 6379 |
|||
timeout: 0 # 连接超时时间(毫秒) |
|||
|
|||
|
|||
image: |
|||
upload: |
|||
path: D:/webapps/supervise/static/upload/ |
|||
url: |
|||
prefix: http://122.14.222.186:7003/upload/ |
|||
|
@ -0,0 +1,46 @@ |
|||
spring: |
|||
application: |
|||
name: supervise-crm |
|||
profiles: |
|||
active: devv |
|||
messages: |
|||
# 国际化资源文件路径 |
|||
basename: i18n/messages |
|||
servlet: |
|||
#上传文件 |
|||
multipart: |
|||
max-file-size: 50MB |
|||
max-request-size: 100MB |
|||
devtools: |
|||
restart: |
|||
# 热部署开关 |
|||
enabled: true |
|||
|
|||
|
|||
|
|||
server: |
|||
port: 7004 |
|||
max-http-header-size: 102400 |
|||
undertow: |
|||
max-http-post-size: -1 |
|||
|
|||
#mybatis |
|||
mybatis-plus: |
|||
# 配置mapper的扫描,找到所有的mapper.xml映射文件 |
|||
mapper-locations: classpath*:**Mapper.xml |
|||
global-config: |
|||
refresh: true |
|||
db-config: |
|||
#定义生成ID的类型 |
|||
id-type: Auto |
|||
db-type: mysql |
|||
configuration: |
|||
map-underscore-to-camel-case: false |
|||
cache-enabled: true |
|||
call-setters-on-nulls: true |
|||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
|||
|
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,50 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<configuration> |
|||
|
|||
<property name="log.base" value="logs/supervise_crm" /> |
|||
|
|||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
|||
<encoder> |
|||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 : |
|||
|%blue(%thread) 线程 如 :DiscoveryClient-CacheRefreshExecutor-0--> |
|||
<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>--> |
|||
<pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%blue(%msg%n) |
|||
</pattern> |
|||
<!--<charset>UTF-8</charset> --> |
|||
</encoder> |
|||
</appender> |
|||
|
|||
<!-- 彩色日志 --> |
|||
<!-- 彩色日志依赖的渲染类 --> |
|||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> |
|||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> |
|||
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> |
|||
<!-- 彩色日志格式 --> |
|||
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> |
|||
|
|||
<appender name="FILEOUT" |
|||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<file>${log.base}.log</file> |
|||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
|||
<fileNamePattern>${log.base}.%d{yyyyMMdd}.%i.log.zip |
|||
</fileNamePattern> |
|||
<!-- 当文件大小超过10MB时触发滚动 --> |
|||
<timeBasedFileNamingAndTriggeringPolicy |
|||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
|||
<maxFileSize>1MB</maxFileSize> |
|||
</timeBasedFileNamingAndTriggeringPolicy> |
|||
</rollingPolicy> |
|||
<encoder> |
|||
<!--<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>--> |
|||
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} |
|||
-%msg%n</Pattern> |
|||
<!--<charset>UTF-8</charset> --> |
|||
</encoder> |
|||
</appender> |
|||
|
|||
<root level="INFO"> |
|||
<appender-ref ref="STDOUT" /> |
|||
<appender-ref ref="FILEOUT" /> |
|||
</root> |
|||
|
|||
</configuration> |
Loading…
Reference in new issue