六月打包需求一设计文档
1、体检卡预约时,如果有余额,需要突出提示客户
2、CRM短信模版预览取值优化
3、CRM可编辑体检时间
体检卡预约时,如果有余额,需要突出提示客户
前端新增提示
CRM短信模版预览取值优化—设计
新增数据库表tb_sms_param
该表用来保存不同类型的短信能够配置的参数信息
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `tb_sms_param`;
CREATE TABLE `tb_sms_param` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键id',
`sms_code` varchar(100) NOT NULL COMMENT '短信模板code',
`param_list` varchar(2048) DEFAULT NULL COMMENT '参数值',
`is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除,0:否,1:是',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
新增javaBean(Do,Model)
新增service以及mapper
Json转数组
String str = smsParamDo.getParamList();
List<smsTemplateParam> smsTemplate = JSON.parseArray(str, smsTemplateParam.class);
smsParam smsParam = new smsParam();
BeanUtils.copyProperties(smsParamDo,smsParam,"paramList");
后端接口
新增参数companyId 单位Id(用来查询是否有单位专属体检地址) ;短信类型templateCode(短信模板类型),用于区分查询特定类型短信模板和查询全部模板; 新增examHospitalId(渠道查询时,选择的体检中心)用于查询渠道预约时的体检中心参数预览值
在原有的/resource/hospitalsms接口的基础上,返回结果新增每一种类型短信可配置的参数以及预览值
在HospitalSmsTemplateVO中新增属性 ———— Map <String,smsTemplateParam codeToParamListMap key为paramCode
预览值设置
体检时段,体检日,体检人姓名,订单金额等参数,在预约页面可以取到值的,前端会做处理,不会使用后端返回的写死的值。短信模板配置页面使用后端返回的写死的值,
//获取hospitalsettings
Map<String,smsTemplateParam>
HospitalSettings setting = hospitalService.getHospitalSettingsById(hospitalId);
setting.setCalculatorService(
String.valueOf(CalculatorServiceEnum.getCodeByName(setting.getCalculatorService())));
//获取hospital
Hospital hospital = hospitalService.getHospitalById(hospitalId);
//获取hospital_company
HospitalCompany hospitalCompany = HospitalCompanyService.getHospitalCompanyById(companyId)
分类 | 动态参数 |
---|---|
体检中心相关信息、数据库里面写死的(可以拿到值的) | |
体检中心 | tb_hospital name |
客服电话 | tb_hospital_settings service_tel |
技术支持电话 | tb_hospital_settings technical_tel |
咨询电话 | tb_hospital phone |
最早时间 | tb_hospital_settings examStartTime |
最晚时间 | tb_hospital_settings examEndTime |
网址链接 | tb_hospital_settings promptPageURl |
体检中心ID | tb_hospital id |
体检地址(配置页面取体检中心地址 预约页面如果有专属地址取专属 否则取体检中心地址) | tb_hospital_company examination_address或tb_hospital address |
体检中心地址 | tb_hospital address |
短信开头 | 您的体检报告已经可以线上查看”(固定的) |
订单、预约相关信息(拿不到值) | |
预约人 | “张三” |
体检人姓名 | “李四” |
登录名 | “王五” |
体检日 | 取操作日期,格式与短信保持一致 |
体检时段 | “07:00-12:00” |
时间备注(体检日+体检时段) | 操作日期+“07:00-12:00” |
订单金额 | “¥100” |
现场支付金额 | “¥100” |
套餐名称 | “基础套餐” |
订单号 | “7133743” |
订单ID | “7133743” |
卡相关(拿不到值) | |
卡所有人 | “赵六” |
卡过期时间 | 取操作时间,格式与短信保持一致 |
自动下单期限 | “2020-08-08” |
单位相关(拿不到值) | |
单位名称 | “每天健康科技有限公司” |
单位专属链接 | “http://0ot.co/zyx“ |
报告相关(拿不到值) | |
报告ID | “6893990” |
报告单号 | “6893990” |
CRM可编辑体检时间
在crm-site中的HospitalControllrt新增接口 返回设置信息(从ops迁移过来)
/**
* 功能设置详情
*
* @param hospitalId
* @return
*/
@RequestMapping(value = "/funSettingsInfo", method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> funSettingsInfo(Integer hospitalId) {
Map<String, Object> funSettingsMap = new HashMap<String, Object>();
funSettingsMap.put("periodSetting", hospitalPeriodSettingService.getHospitalPeriodSetting(hospitalId));
HospitalSettings setting = hospitalService.getHospitalSettingsById(hospitalId);
setting.setCalculatorService(
String.valueOf(CalculatorServiceEnum.getCodeByName(setting.getCalculatorService())));
FunctionSettingsVO funSettings = converterToFunctionSettingsVO(setting);
funSettingsMap.put("funSettings", funSettings);
SystemParam sp = systemParamReadService.getSysParam(ANALYSIS, hospitalId);
if(sp != null && AssertUtil.isNotEmpty(sp.getParamValue())){
funSettingsMap.put("analysis", sp.getParamValue());
} else {
funSettingsMap.put("analysis", "0");
}
funSettingsMap.put("surveyList", surveyIdAndSurveyNameMap(hospitalId,SurveyTypeEnum.SURVEY));
funSettingsMap.put("epidemicSurveyList", surveyIdAndSurveyNameMap(hospitalId,SurveyTypeEnum.EPIDEMIC));
return funSettingsMap;
}
文档更新时间: 2021-07-15 14:01