1;日报模板

2;特殊订单 日期中有”门店设置“字样
This commit is contained in:
wangshuai 2024-07-27 02:17:11 +08:00
parent a90353eaa4
commit b7ab8de509
9 changed files with 150 additions and 80 deletions

View File

@ -6,6 +6,7 @@ import com.ruoyi.business.req.ReqBusStoreInfo;
import com.ruoyi.business.resp.RespBusStoreInfo;
import com.ruoyi.business.service.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
@ -65,6 +66,8 @@ public class BusStoreInfoController extends BaseController {
@Autowired
private SysDictDataMapper sysDictDataMapper;
@Autowired
private RuoYiConfig ruoYiConfig;
/**
* 查询店铺信息列表
*/
@ -215,7 +218,7 @@ public class BusStoreInfoController extends BaseController {
content = content.replaceAll("#good",busStoreDayInfo1.getLastPositiveReviewsNum()+"");
content = content.replaceAll("#five",busStoreDayInfo1.getLastFiveStarReviewsNum()+"");
content = content.replaceAll("#score", busStoreDayInfo1.getScore());
content = content.replaceAll("#QRCode", busTemplateInfo.getCodeUrl());
content = content.replaceAll("#QRCode", ruoYiConfig.getBaseUrl()+busTemplateInfo.getCodeUrl());
content = content.replaceAll("#text", busTemplateInfo.getRemark());
int a = busStoreDayInfo1.getLastPositiveReviewsNum();//todo 好评-五星
int b = busStoreDayInfo1.getLastReturnVisitNum();

View File

@ -122,6 +122,9 @@ public class BusTemplateInfoController extends BaseController
{
busTemplateInfo.setUpdateId(SecurityUtils.getUserId());
busTemplateInfo.setUpdateUser(SecurityUtils.getUsername());
int start = busTemplateInfo.getCodeUrl().indexOf("/profile");
String url = busTemplateInfo.getCodeUrl().substring(start);
busTemplateInfo.setCodeUrl(url);
return toAjax(busTemplateInfoService.updateBusTemplateInfo(busTemplateInfo));
}

View File

@ -16,7 +16,7 @@ public class BusTemplateAttrConfig extends BaseEntity
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
private Long attrId;
/** 模版类型 */
@Excel(name = "模版类型")
@ -38,14 +38,14 @@ public class BusTemplateAttrConfig extends BaseEntity
@Excel(name = "原始排序")
private Long attrSort;
public void setId(Long id)
public void setAttrId(Long attrId)
{
this.id = id;
this.attrId = attrId;
}
public Long getId()
public Long getAttrId()
{
return id;
return attrId;
}
public void setTemplateType(String templateType)
{
@ -96,7 +96,7 @@ public class BusTemplateAttrConfig extends BaseEntity
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("attrId", getAttrId())
.append("templateType", getTemplateType())
.append("attrValue", getAttrValue())
.append("attrName", getAttrName())

View File

@ -58,4 +58,6 @@ public interface BusTemplateAttrInfoMapper
* @return 结果
*/
public int deleteBusTemplateAttrInfoByIds(Long[] ids);
void deleteBusTemplateAttrInfoByTId(Long id);
}

View File

@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.BusTemplateInfoMapper;
import com.ruoyi.business.domain.BusTemplateInfo;
import com.ruoyi.business.service.IBusTemplateInfoService;
import org.springframework.transaction.annotation.Transactional;
/**
* 模版Service业务层处理
@ -50,6 +51,7 @@ public class BusTemplateInfoServiceImpl implements IBusTemplateInfoService
BusTemplateAttrConfig busTemplateAttrConfig = new BusTemplateAttrConfig();
busTemplateAttrConfig.setTemplateType("word");
busTemplateInfo.setAttrInfoList(list1);
busTemplateInfo.setCodeUrl(ruoyiConfig.getBaseUrl()+busTemplateInfo.getCodeUrl());
return busTemplateInfo;
}
@ -72,10 +74,24 @@ public class BusTemplateInfoServiceImpl implements IBusTemplateInfoService
* @return 结果
*/
@Override
@Transactional
public int insertBusTemplateInfo(BusTemplateInfo busTemplateInfo)
{
String content = "";
for(BusTemplateAttrInfo attrInfo: busTemplateInfo.getAttrInfoList()){
content = content+"<p>"+attrInfo.getAttrName() + "</p>";
}
busTemplateInfo.setTemplateContent(content);
busTemplateInfo.setCreateTime(DateUtils.getNowDate());
return busTemplateInfoMapper.insertBusTemplateInfo(busTemplateInfo);
int row = busTemplateInfoMapper.insertBusTemplateInfo(busTemplateInfo);
Long ll = 1L;
for(BusTemplateAttrInfo attrInfo: busTemplateInfo.getAttrInfoList()){
attrInfo.setTemplateId(busTemplateInfo.getId());
attrInfo.setAttrSort(ll);
busTemplateAttrInfoMapper.insertBusTemplateAttrInfo(attrInfo);
ll = ll+1;
}
return row;
}
/**
@ -85,9 +101,21 @@ public class BusTemplateInfoServiceImpl implements IBusTemplateInfoService
* @return 结果
*/
@Override
@Transactional
public int updateBusTemplateInfo(BusTemplateInfo busTemplateInfo)
{
String content = "";
busTemplateInfo.setUpdateTime(DateUtils.getNowDate());
busTemplateAttrInfoMapper.deleteBusTemplateAttrInfoByTId(busTemplateInfo.getId());
Long ll = 1L;
for(BusTemplateAttrInfo attrInfo: busTemplateInfo.getAttrInfoList()){
attrInfo.setTemplateId(busTemplateInfo.getId());
attrInfo.setAttrSort(ll);
ll = ll+1;
busTemplateAttrInfoMapper.insertBusTemplateAttrInfo(attrInfo);
content = content+"<p>"+attrInfo.getAttrName() + "</p>";
}
busTemplateInfo.setTemplateContent(content);
return busTemplateInfoMapper.updateBusTemplateInfo(busTemplateInfo);
}

View File

@ -694,7 +694,12 @@ public class MeituanServiceImpl implements IMeituanService {
try {
returnVisitInfo.setOrderCompleteTime(sdf.parse(orderInfo.getCompleteTime()));
} catch (ParseException e) {
throw new RuntimeException(e);
e.printStackTrace();
if("门店设置".equals(orderInfo.getCompleteTime())){
// TODO: 2024-07-27
}else{
continue;
}
}
//returnVisitInfo.setFinishTime(busOrderInfo.getCompleteTime()); todo
// returnVisitInfo.setReturnVisitTime(new Date());

View File

@ -5,7 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.ruoyi.business.mapper.BusTemplateAttrConfigMapper">
<resultMap type="BusTemplateAttrConfig" id="BusTemplateAttrConfigResult">
<result property="id" column="id" />
<result property="attrId" column="attr_id" />
<result property="templateType" column="template_type" />
<result property="attrValue" column="attr_value" />
<result property="attrName" column="attr_name" />
@ -14,7 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectBusTemplateAttrConfigVo">
select id, template_type, attr_value, attr_name, attr_status, attr_sort from bus_template_attr_config
select attr_id, template_type, attr_value, attr_name, attr_status, attr_sort from bus_template_attr_config
</sql>
<select id="selectBusTemplateAttrConfigList" parameterType="BusTemplateAttrConfig" resultMap="BusTemplateAttrConfigResult">
@ -30,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectBusTemplateAttrConfigById" parameterType="Long" resultMap="BusTemplateAttrConfigResult">
<include refid="selectBusTemplateAttrConfigVo"/>
where id = #{id}
where attr_id = #{id}
</select>
<insert id="insertBusTemplateAttrConfig" parameterType="BusTemplateAttrConfig" useGeneratedKeys="true" keyProperty="id">
@ -57,15 +57,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="attrStatus != null">attr_status = #{attrStatus},</if>
<if test="attrSort != null">attr_sort = #{attrSort},</if>
</trim>
where id = #{id}
where attr_id = #{id}
</update>
<delete id="deleteBusTemplateAttrConfigById" parameterType="Long">
delete from bus_template_attr_config where id = #{id}
delete from bus_template_attr_config where attr_id = #{id}
</delete>
<delete id="deleteBusTemplateAttrConfigByIds" parameterType="String">
delete from bus_template_attr_config where id in
delete from bus_template_attr_config where attr_id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>

View File

@ -28,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="attrStatus != null and attrStatus != ''"> and attr_status = #{attrStatus}</if>
<if test="attrSort != null "> and attr_sort = #{attrSort}</if>
</where>
order by attr_sort
</select>
<select id="selectBusTemplateAttrInfoById" parameterType="Long" resultMap="BusTemplateAttrInfoResult">
@ -78,4 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
</foreach>
</delete>
<delete id="deleteBusTemplateAttrInfoByTId">
delete from bus_template_attr_info where template_id = #{id}
</delete>
</mapper>

View File

@ -95,7 +95,7 @@
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="模版名称" prop="templateName">
<el-input v-model="form.templateName" placeholder="请输入模版名称" />
<el-input style="width: 90%" v-model="form.templateName" placeholder="请输入模版名称" />
</el-form-item>
<!-- <draggable v-model="attrConfigList" @end="onDragEnd">
<el-form-item
@ -107,57 +107,38 @@
</el-form-item>
</draggable> -->
<el-form-item label="选择内容">
<draggable v-model="attrConfigList" @end="onDragEnd">
<el-row :gutter="24">
<el-col :span="6">
<div class="grid-content bg-purple">
<el-row v-for="item in attrConfigList"
:key="item.id"
size="small"
>
<el-col :span="20" style="padding-left: 5%">
<el-tag style="width: inherit;" closable
@click="clickContent($event,item)"
@close="handleClose(item)">
{{item.attrValue}}
</el-tag>
</el-col>
</el-row>
</div>
</el-col>
<el-col :span="16">
<div class="grid-content bg-purple">
<draggable v-model="attrList" @end="onDragEnd">
<el-row v-for="item in attrList"
:key="item.attrId"
size="small"
closable
>
<!-- <el-button type="primary">{{item.attrValue}}</el-button> -->
<el-col :span="20"><el-tag class="bg-purple-dark">{{item.attrValue}}</el-tag></el-col>
<el-col :span="20" style="padding-left: 5%"><el-tag style="width: inherit;">{{item.attrValue}}</el-tag></el-col>
</el-row>
</draggable>
</div>
</el-col>
</el-row>
</el-form-item>
<!-- <el-form-item>
<el-row :gutter="12">
<el-col :span="11">
<el-card shadow="never">
<el-tag v-for="item in attrConfigList"
:key="item.id"
size="small"
closable
@click="clickContent($event,item.attrName)"
@close="handleClose(item.attrName)"
>{{item.attrValue}}
</el-tag>
</el-card>
</el-col>
<el-col :span="11">
<el-card shadow="always">
<draggable v-model="attrList" @end="onDragEnd">
<el-tag v-for="item in attrList"
:key="item.id"
size="small"
closable
>{{item.attrValue}}
</el-tag>
</draggable>
</el-card>
</el-col>
</el-row> -->
<!-- <draggable v-model="attrConfigList" @end="onDragEnd">
<el-tag v-for="item in attrConfigList"
:key="item.id"
size="small"
closable
@click="clickContent($event,item.attrName)"
@close="handleClose(item.attrName)"
>{{item.attrName}}
</el-tag>
</draggable> -->
<!-- <el-form-item label="内容">
<editor v-model="form.templateContent" :min-height="192" readOnly/>
</el-form-item> -->
<el-form-item label="文本内容" prop="remark">
<el-input
type="textarea"
@ -274,7 +255,11 @@ export default {
console.log(file, fileList);
},
handleSuccess(response, file, fileList){
this.form.codeUrl = response.url;
if(response.code==200){
this.form.codeUrl = response.fileName;
}else{
this.$modal.msgError("上传失败");
}
},
handlePreview(file) {
console.log(file);
@ -287,19 +272,24 @@ export default {
//
reset() {
this.form = {
id: null,
templateName: null,
templateType: null,
templateContent: null,
templateStatus: null,
createId: null,
createUser: null,
createTime: null,
updateId: null,
updateUser: null,
updateTime: null,
sort: null
id: undefined,
templateName: undefined,
templateType: undefined,
templateContent: undefined,
templateStatus: undefined,
createId: undefined,
createUser: undefined,
createTime: undefined,
updateId: undefined,
updateUser: undefined,
updateTime: undefined,
sort: undefined,
codeUrl: undefined,
attrInfoList: [],
remark: undefined
};
this.attrList = [];
this.fileList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -330,6 +320,12 @@ export default {
const id = row.id || this.ids
getTemplate(id).then(response => {
this.form = response.data;
if(response.data.codeUrl.slice(response.data.codeUrl.length-4,response.data.codeUrl.length) !== "null"){
this.fileList.push({
url: response.data.codeUrl
})
}
this.attrList = response.data.attrInfoList;
this.open = true;
this.title = "修改模版";
});
@ -338,6 +334,7 @@ export default {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.attrInfoList = this.attrList;
if (this.form.id != null) {
updateTemplate(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
@ -373,15 +370,25 @@ export default {
containsChinese(str) {
return /[\u4e00-\u9fa5]/.test(str);
},
clickContent(event,content){
// console.log(event,content)
clickContent(event,item){
console.log(event,item)
if(this.isElementPresent(item)>-1){
return
}else{
this.attrList.push(item)
}
// if(!this.containsChinese(this.form.templateContent)){
// this.form.templateContent = '<p>'+content+'</p>'
// }else{
// this.form.templateContent += '<p>'+content+'</p>'
// }
},
handleClose(content){
handleClose(item){
if(this.isElementPresent(item)>-1){
this.attrList.splice(this.isElementPresent(item), 1);
}else{
return
}
// content = '<p>'+content+'</p>'
// this.form.templateContent = this.form.templateContent.replace(content, '');
},
@ -390,22 +397,40 @@ export default {
this.attrConfigList = response.data
});
},
isElementPresent(item) {
return this.attrList.indexOf(item);
}
}
};
</script>
<style>
.el-row {
/* margin-bottom: 20px; */
/* .el-row {
margin-bottom: 10px;
&:last-child {
margin-bottom: 0;
}
}
.el-col {
border-radius: 4px;
}
} */
.bg-purple-dark {
width: inherit;
background: #99a9bf;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #e5e9f2;
}
.grid-content {
height: 400px;
border-radius: 4px;
min-height: 36px;
}
.row-bg {
padding: 5px 0;
background-color: #f9fafc;
}
</style>