Commit 46a0c336 authored by Administrator's avatar Administrator

Merge branch 'jd_dev' into 'release'

# Conflicts:
#   sql/v2.3/20250107lh.sql
#   yudao-module-member/yudao-module-member-impl/src/main/java/cn/iocoder/yudao/module/member/service/level/MemberUserLevelConfigServiceImpl.java
#   yudao-server/src/main/resources/application-local.yaml
parents 18461fa0 c3f62ca0
......@@ -2,5 +2,4 @@
根目录下直接执行 mvn clean install package '-Dmaven.test.skip=true' 命令,将项目进行初始化的打包,预计需要 1 分钟左右。
首次启动运行YudaoServerApplication
首次启动运行YudaoServerApplication
services:
api-jiedao-test-operator:
image: harbor.jiedao.com/api-jiedao-test-operator:latest
container_name: api-jiedao-test-operator
ports:
- "9091:9001"
environment:
env: uat
volumes:
- '/etc/localtime:/etc/localtime'
- '/jiedao/docker/test/apps/jiedao/api/logs/operator:/logs'
- '/jiedao/docker/test/apps/jiedao/static:/app/static'
- '/jiedao/docker/test/apps/jiedao/fonts/zh:/usr/share/fonts/zh'
restart: always
ulimits:
nproc: 65535
nofile:
soft: 32000
hard: 40000
deploy:
resources:
limits:
cpus: '3'
memory: 3G
networks:
app-net:
ipv4_address: 10.10.0.120
networks:
app-net:
external: true
ALTER TABLE member_user_level_details MODIFY COLUMN `config_id` bigint DEFAULT NULL COMMENT '会员等级配置id'
ALTER TABLE member_user_level_operate_log MODIFY COLUMN `config_id` bigint DEFAULT NULL COMMENT '会员等级配置id';
ALTER table member_user_level_operate_log MODIFY COLUMN `config_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '会员等级配置名称';
INSERT INTO jiedao.system_dict_data (sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted, label_en, label_fr) VALUES(0, '会员升级', 'levelUpdate', 'need_know_type', 0, 'default', '', NULL, '1', '2024-12-31 10:46:03', '1', '2024-12-31 11:09:39', 0, 'Membership Upgrade', 'Mise à niveau de l''adhésion');
INSERT INTO jiedao.system_need_know (know_type, title_zh, title_en, content_zh, content_en, status, creator, create_time, updater, update_time, deleted, title_fr, content_fr) VALUES('levelUpdate', '会员升级', 'Membership Upgrade', '<p><span style="text-wrap-mode: wrap;"></span><span style="text-wrap-mode: wrap;">尊敬的{username}, 恭喜您已升级成为我们{levelName}</span><span style="text-wrap-mode: wrap;">会员,会员权限将于</span>{validityPeriod}<span style="text-wrap-mode: wrap;">日到期;如有疑问请联系400-900-9962</span></p>', '<p>Dear {username}, congratulations on becoming our {levelName} member. Your membership will expire on {validityPeriod}. If you have any questions, please contact 400-900-9962</p>', 0, '1', '2024-12-31 10:52:05', '1', '2024-12-31 17:31:44', 0, 'Mise à niveau de l''adhésion', '<p>Cher {username}, félicitations pour devenir notre membre {levelName}. Votre adhésion expirera le {validityPeriod}. Si vous avez des questions, veuillez contacter 400-900-9962</p>');
......@@ -330,9 +330,6 @@ public class StrUtils {
* @return 转义后的值
*/
private static String escapeValue(Object value) {
if (value instanceof String) {
return ((String) value).replaceAll("[^a-zA-Z0-9_]", "");
}
return value.toString();
}
}
......@@ -69,7 +69,7 @@ public class SendChampSmsClient extends AbstractSmsClient {
List<String> messages = splitContent(content);
for (String message : messages) {
// 设置发送短信所需的参数
Map<String, Object> param = sendchampHttp.setParams(mobile, message, "Sendchamp");
Map<String, Object> param = sendchampHttp.setParams(mobile, message, "ECLogistics");
// 设置请求头,包含认证信息
Map<String, String> header = sendchampHttp.setHeader("Bearer " + properties.getApiSecret());
// 发送POST请求
......@@ -100,7 +100,7 @@ public class SendChampSmsClient extends AbstractSmsClient {
public SmsLogDTO getReceiveStatus(SmsLogDTO smsLogDO) {
// 初始化短信日志DTO,并默认设置接收状态为未接收到
SmsLogDTO smsLogDTO = new SmsLogDTO();
smsLogDTO.setReceiveStatus(ReceiveStatusEnum.Receive_STATUS_20.getValue());
smsLogDTO.setReceiveStatus(ReceiveStatusEnum.Receive_STATUS_10.getValue());
return smsLogDTO;
}
......
......@@ -137,7 +137,7 @@ public class MemberUserLevelConfigServiceImpl extends AbstractService<MemberUser
if (levelPage.getTotal() > 0){
List<MemberUserLevelConfigBaseRespVO> list = levelPage.getList();
list.forEach(i -> {
if (i.getSort().equals(query.getSort())){
if (i.getSort().equals(query.getSort())&&!(query.getRuleNumber()!=null&&i.getRuleNumber().equals(query.getRuleNumber()))){
if (i.getStatus()==0 || i.getStatus()==1){
if (i.getEndTime()==null){
throw exception(LEVEL_Order_REPEAT);
......
......@@ -98,7 +98,9 @@ public interface OfferMapper extends BaseMapperX<OfferDO> {
"if(#{lang} = 0, o.objective ->> '$.titleZh', o.objective ->> '$.titleEn') as objective_name, ",
"user.number as customer_number, ",
"(select count(1) from ecw_customer_followup l where l.offer_id = o.offer_id) as log_count, ",
"u.nickname as creator_name, ",
"(SELECT su.nickname FROM system_user as su WHERE su.id = o.creator AND su.deleted = 0 ) as creator_name,",
// 跟进客户经理
"u.nickname as follow_up_salesman_name, ",
"u.nickname as business_manager_name, ",
"cc.name as relation_name, ",
"cc.area_code as relation_area_code, ",
......@@ -198,6 +200,12 @@ public interface OfferMapper extends BaseMapperX<OfferDO> {
"AND o.`follow_up_salesman_id` IN ",
"<foreach item='id' collection='pageVO.salesmanIds' open='(' close=')' separator=','> #{id} </foreach>",
"</when>",
// 根据创建人查询
"<when test = 'pageVO.creatorIds != null and pageVO.creatorIds.size() > 0'>",
"AND o.`creator` IN ",
"<foreach item='id' collection='pageVO.creatorIds' open='(' close=')' separator=','> #{id} </foreach>",
"</when>",
"<when test = 'pageVO.statusList != null and pageVO.statusList.size() > 0'>",
"AND o.`status` IN ",
"<foreach item='it' collection='pageVO.statusList' open='(' close=')' separator=','> #{it} </foreach>",
......@@ -337,6 +345,11 @@ public interface OfferMapper extends BaseMapperX<OfferDO> {
"AND o.`follow_up_salesman_id` IN ",
"<foreach item='id' collection='pageVO.salesmanIds' open='(' close=')' separator=','> #{id} </foreach>",
"</when>",
// 根据创建人查询
"<when test = 'pageVO.creatorIds != null and pageVO.creatorIds.size() > 0'>",
"AND o.`creator` IN ",
"<foreach item='id' collection='pageVO.creatorIds' open='(' close=')' separator=','> #{id} </foreach>",
"</when>",
"<when test = 'pageVO.statusList != null and pageVO.statusList.size() > 0'>",
"AND o.`status` IN ",
"<foreach item='it' collection='pageVO.statusList' open='(' close=')' separator=','> #{it} </foreach>",
......@@ -426,6 +439,8 @@ public interface OfferMapper extends BaseMapperX<OfferDO> {
"<script>",
"SELECT",
"o.*,",
"(SELECT su.nickname FROM system_user as su WHERE su.id = o.creator AND su.deleted = 0 ) as creator_name,",
"(SELECT su.nickname FROM system_user as su WHERE su.id = o.updater AND su.deleted = 0 ) as updater_name,",
"d.name as dept_name,",
"u.nickname as business_manager_name,",
"if(#{lang} = 0, c.name_zh, c.name_en) as channel_name, ",
......
......@@ -189,6 +189,9 @@ public class OfferPageReqVO extends PageParam {
@ApiModelProperty(value = "客户经理列表")
private List<Long> salesmanIds;
@ApiModelProperty(value = "创建人列表")
private List<Long> creatorIds;
@ApiModelProperty(value = "阶段列表")
private List<Integer> statusList;
......
......@@ -49,10 +49,14 @@ public class OfferRespVO extends OfferBaseVO {
@ApiModelProperty(value = "业务员名称")
private String creatorName;
@ApiModelProperty(value = "更新业务员名称")
private String updaterName;
@ApiModelProperty(value = "跟进业务员")
private String followUpSalesmanId;
@ApiModelProperty(value = "跟进业务员名称")
private String followUpSalesmanName;
@ApiModelProperty(value = "关联客户名称")
private String relationName;
......
......@@ -33,7 +33,7 @@ spring:
druid: # Druid 【连接池】相关的全局配置
initial-size: 5 # 初始连接数
min-idle: 10 # 最小连接池数量
max-active: 50 # 最大连接池数量
max-active: 20 # 最大连接池数量
max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
......@@ -46,31 +46,33 @@ spring:
datasource:
master:
name: jiedao
url: jdbc:mysql://172.16.0.3:3306/${spring.datasource.dynamic.datasource.master.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE&connectTimeout=60000
# name: ruoyi-vue-pro-flowable
url: jdbc:mysql://172.18.96.67:2795/${spring.datasource.dynamic.datasource.master.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE
driver-class-name: com.mysql.cj.jdbc.Driver
username: jiedao
password: Jiedao2024
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
username: jiedaodb
password: pcn49&&1nh@086tr
slave: # 模拟从库,可根据自己需要修改
name: jiedao
url: jdbc:mysql://172.16.0.3:3306/${spring.datasource.dynamic.datasource.slave.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE&connectTimeout=60000
# name: ruoyi-vue-pro-flowable
url: jdbc:mysql://172.18.96.67:2795/${spring.datasource.dynamic.datasource.slave.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE
driver-class-name: com.mysql.cj.jdbc.Driver
username: jiedao
password: Jiedao2024
username: jiedaodb
password: pcn49&&1nh@086tr
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 172.16.0.3 # 地址
port: 6379 # 端口
host: 172.18.96.67 # 地址
port: 2796 # 端口
password: c32sW2c86
database: 0 # 数据库索引
password: Redis2024
timeout: 60s
connect-timeout: 60s
redis-limiter:
redis-host: 172.16.0.3 # redis server IP 默认值:127.0.0.1
redis-port: 6379 # redis service 端口 默认值:6379
redis-db: 4 # redis service 数据库 默认值:6379
redis-password: Redis2024 # redis 访问密码 默认值:null
redis-host: 172.18.96.67 # redis server IP 默认值:127.0.0.1
redis-port: 2796 # redis service 端口 默认值:6379
redis-db: 4 # redis service 数据库 默认值:6379
redis-password: c32sW2c86 # redis 访问密码 默认值:null
redis-connection-timeout: 2000 # redis 连接超时时间 默认值:2000
redis-pool-max-idle: 50 # redis 连接池最大空闲连接数 默认值:50
redis-pool-min-idle: 10 # redis 连接池最小空闲连接数 默认值: 10
......@@ -87,7 +89,7 @@ spring:
# Quartz 配置项,对应 QuartzProperties 配置类
spring:
quartz:
auto-startup: true # 测试环境,需要开启 Job
auto-startup: true # 本地开发环境,尽量不要开启 Job
scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName
job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
......@@ -170,7 +172,7 @@ spring:
logging:
level:
root: INFO
cn.iocoder.yudao: INFO
cn.iocoder.yudao: DEBUG
--- #################### 微信公众号相关配置 ####################
wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
......@@ -187,10 +189,12 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta
--- #################### 捷道相关配置 ####################
web:
resource: D:/temp/cms/
resource: /app/cms/
# 捷道配置项,设置当前项目所有自定义的配置
yudao:
captcha:
enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试
security:
token-header: Authorization
token-timeout: 30d
......@@ -206,7 +210,7 @@ yudao:
pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify
pay-return-url: http://niubi.natapp1.cc/api/pay/order/return
refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify
demo: false # 开启演示模式
demo: false # 关闭演示模式
business: # 业务运行配置
debug: false # 开启debug模式
sms-code: # 短信验证码相关的配置项
......@@ -222,8 +226,8 @@ yudao:
begin-code: 9999 # 验证码最小值
end-code: 9999 # 验证码最大值。
member: # 会员相关配置
register-url: https://apptest.groupage.cn/#/pages/register/shareRegister?code=
share-url: https://apptest.groupage.cn/#
register-url: https://applocal.groupage.cn/#/pages/register/shareRegister?code=
share-url: https://applocal.groupage.cn/#
justauth:
enabled: true
......@@ -246,7 +250,7 @@ justauth:
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
ue:
root-path: /app/static/uploads #文件存储根目录(可选配置),默认为[classpath:/static]
root-path: classpath:/static #文件存储根目录(可选配置),默认为[classpath:/static]
server-url: /ueditor/jsp/controller #服务器统一请求接口路径(可选配置),默认为[/ueditor/jsp/controller] upload: cn.jasonone.ueditor.upload.LocationFileStorage #文件持久化处理类(可选配置),默认为[cn.jasonone.ueditor.upload.LocationFileStorage]
templates-url: templates
temp-dir: temp
......@@ -45,9 +45,9 @@ spring:
primary: master
datasource:
master:
name: jiedao
# name: ruoyi-vue-pro-flowable
url: jdbc:mysql://159.75.224.138:2292/${spring.datasource.dynamic.datasource.master.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE
name: jiedaodb
# name: ruoyi-vue-pro-flowable
url: jdbc:mysql://117.72.42.41:2290/${spring.datasource.dynamic.datasource.master.name}?useUnicode=true&useSSL=true&characterEncoding=utf8&characterSetResults=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&rewriteBatchedStatements=TRUE
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: mysql@2022
......
......@@ -2,7 +2,7 @@ spring:
application:
name: yudao-admin-server
profiles:
active: local
active: dev
mvc:
static-path-pattern: /**
web:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment