This commit is contained in:
慕下 2024-03-23 15:08:43 +08:00
parent 501a6d7ded
commit 94064a5cea
4 changed files with 185 additions and 269 deletions

View File

@ -8,8 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpRequest;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -26,7 +28,7 @@ public class DynamicDataController extends BaseController {
//保存数据
@PostMapping("/saveDynamicData")
public AjaxResult saveDynamicData(@RequestBody Map<String, Object> requestData) {
public AjaxResult saveDynamicData(@RequestBody Map<String, Object> requestData, HttpServletRequest httpServletRequest) {
DynamicData dynamicData = new DynamicData();
// System.out.println(requestData.toString());
String title = (String)requestData.get("title");
@ -51,36 +53,42 @@ public class DynamicDataController extends BaseController {
String formattedDate = currentDate.format(formatter);
dynamicData.setCreateTime(formattedDate);
dynamicData.setData(requestData);
dynamicData.setTenantName(httpServletRequest.getHeader("Tenant"));
mongoTemplate.save(dynamicData);
return AjaxResult.success("保存成功");
}
//查询全部数据
@GetMapping("/selectDynamicData")
public AjaxResult selectDynamicData() {
List<DynamicData> dynamicData = mongoTemplate.find(new Query(), DynamicData.class);
// for (DynamicData dynamicDatum : dynamicData) {
// Map<String, Object> data = dynamicDatum.getData();
// data.forEach((k,v) -> {
// data.put(k,k);
// });
// }
public AjaxResult selectDynamicData(HttpServletRequest httpServletRequest) {
Query query = new Query();
query.addCriteria(Criteria.where("tenantName").is(httpServletRequest.getHeader("Tenant")));
List<DynamicData> dynamicData = mongoTemplate.find(query, DynamicData.class);
for (DynamicData dynamicDatum : dynamicData) {
Query queryByFor = new Query();
queryByFor.addCriteria(Criteria.where("dynamicDataId").is(dynamicDatum.getId()));
long count = mongoTemplate.count(queryByFor, DynamicForm.class);
dynamicDatum.setCollectionQuantity(count+"");
}
System.out.println(dynamicData.toString());
return AjaxResult.success(dynamicData);
}
//根据id查询数据
@GetMapping("/selectDynamicDataById")
public AjaxResult selectDynamicDataById(String id){
DynamicData dynamicData = mongoTemplate.findById(id, DynamicData.class);
dynamicData.setPageView(Long.parseLong(dynamicData.getPageView())+1+"");
DynamicData save = mongoTemplate.save(dynamicData);
// Map<String, Object> data = dynamicData.getData();
// data.forEach((k,v) -> {
// data.put(k,k);
// });
return AjaxResult.success(dynamicData);
return AjaxResult.success(save);
}
@PostMapping("/collectData")
//采集数据
public AjaxResult collectData(DynamicForm dynamicForm){
public AjaxResult collectData(@RequestBody DynamicForm dynamicForm){
mongoTemplate.save(dynamicForm);
return AjaxResult.success("保存成功");
}

View File

@ -1,11 +1,13 @@
package com.ruoyi.mongodb.domain;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Map;
@Document(collection = "dynamicData")
@Data
public class DynamicData {
@Id
private String id;
@ -18,88 +20,8 @@ public class DynamicData {
private String createPeople;
//创建时间
private String createTime;
//租户名称
private String tenantName;
//用户字段数据
private Map<String, Object> data;
public DynamicData() {
}
public DynamicData(String id, String title, String pageView, String collectionQuantity, String createPeople, String createTime, Map<String, Object> data) {
this.id = id;
this.title = title;
this.pageView = pageView;
this.collectionQuantity = collectionQuantity;
this.createPeople = createPeople;
this.createTime = createTime;
this.data = data;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public String getPageView() {
return pageView;
}
public void setPageView(String pageView) {
this.pageView = pageView;
}
public String getCollectionQuantity() {
return collectionQuantity;
}
public void setCollectionQuantity(String collectionQuantity) {
this.collectionQuantity = collectionQuantity;
}
public String getCreatePeople() {
return createPeople;
}
public void setCreatePeople(String createPeople) {
this.createPeople = createPeople;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "DynamicData{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", pageView='" + pageView + '\'' +
", collectionQuantity='" + collectionQuantity + '\'' +
", createPeople='" + createPeople + '\'' +
", createTime=" + createTime +
", data=" + data +
'}';
}
}

View File

@ -1,9 +1,11 @@
package com.ruoyi.mongodb.domain;
import lombok.Data;
import org.springframework.data.annotation.Id;
import java.util.Map;
@Data
public class DynamicForm {
@Id
private String id;
@ -11,47 +13,4 @@ public class DynamicForm {
private String dynamicDataId;
//采集数据
private Map<String,Object> map;
public DynamicForm() {
}
public DynamicForm(String id, String dynamicDataId, Map<String, Object> map) {
this.id = id;
this.dynamicDataId = dynamicDataId;
this.map = map;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDynamicDataId() {
return dynamicDataId;
}
public void setDynamicDataId(String dynamicDataId) {
this.dynamicDataId = dynamicDataId;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
@Override
public String toString() {
return "DynamicForm{" +
"id='" + id + '\'' +
", dynamicDataId='" + dynamicDataId + '\'' +
", map=" + map +
'}';
}
}

View File

@ -1,7 +1,7 @@
<template>
<div class="app-container" style="display: flex;flex-wrap: wrap;justify-content: space-between">
<!-- <el-col :span="8" v-for="(o, index) in 1" :key="o" :offset="index > 0 ? 2 : 0">-->
<!-- <el-col :span="8" v-for="(o, index) in 1" :key="o" :offset="index > 0 ? 2 : 0">-->
<el-card class="box-card">
<div class="container">
@ -14,45 +14,66 @@
<el-card class="box-card" v-for="o in cardList" :key="o" >
<div slot="header" class="clearfix">
<span>{{o.title}}</span>
<span style="font-size: 23px;
color: #000000;
background-color:#ffffff;
border-color: #fdfdff;">{{o.title}}</span>
<el-button style="float: right; padding: 3px 0" type="text" @click="handelExtend(o.id)">推广</el-button>
</div>
<div style="display: flex;justify-content: space-between">
<!-- <div style="width: 30%">-->
<!-- <div>采购员</div>-->
<!-- <p style="font-size: 25px">1</p>-->
<!-- </div>-->
<div style="width: 30%">
<div>总浏览量</div>
<p style="font-size: 25px">{{o.pageView}}</p>
<div style="display: flex;justify-content: space-between">
<!-- <div style="width: 30%">-->
<!-- <div>采购员</div>-->
<!-- <p style="font-size: 25px">1</p>-->
<!-- </div>-->
<div style="width: 30%">
<div style="font-size: 18px;
color: #999595;
background-color:#ffffff;
border-color: #fdfdff;">总浏览量</div>
<p style="font-size: 25px">{{o.pageView}}</p>
</div>
<div style="width: 30%">
<div style="font-size: 18px;
color: #999595;
background-color:#ffffff;
border-color: #fdfdff;">采集数量</div>
<p style="font-size: 25px">{{o.collectionQuantity}}</p>
</div>
</div>
<div style="width: 30%">
<div>采集数量</div>
<p style="font-size: 25px">{{o.collectionQuantity}}</p>
</div>
</div>
<div style="display: flex;justify-content: space-between">
<div>
<span>创建人{{o.createPeople}}</span>
<span style="font-size: 16px;
color: #999595;
background-color:#ffffff;
border-color: #fdfdff;">创建人{{o.createPeople}}</span>
</div>
<div>创建时间{{o.createTime}}</div>
<div style="font-size: 16px;
color: #999595;
background-color:#ffffff;
border-color: #fdfdff;">创建时间{{o.createTime}}</div>
</div>
</el-card>
<!-- </el-col>-->
<!-- </el-col>-->
<!-- 添加表单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<div style="text-align: center">
<!-- <el-form-item label="表单标题">-->
<el-input v-model="addParams.title" placeholder="请输入表单标题" />
<!-- </el-form-item>-->
<!-- <el-form-item label="字段名称">-->
<el-input v-for="(item,index) in inputarr" key="index" v-model="inputarr[index]" placeholder="请输入字段"></el-input>
<el-button @click="adinput" style="text-align: center">添加字段</el-button>
<!-- </el-form-item>-->
<!-- <el-form-item label="表单标题">-->
<div><span>标题</span> <el-input style="border-bottom: 1px solid skyblue;margin-bottom: 10px" v-model="addParams.title" placeholder="请输入表单标题" />
</div>
<!-- </el-form-item>-->
<!-- <el-form-item label="字段名称">-->
<div v-for="(item,index) in inputarr" key="index" style="margin-bottom: 10px;">
<span>字段</span> <el-input style="border: 1px solid #DCDFE6;border-radius: 3px; " v-model="inputarr[index]" placeholder="请输入字段"></el-input>
</div>
<div>
<el-button @click="adinput" style="text-align: center;width: 90%;background-color: rgb(232,244,255);color:#1890ff">添加字段</el-button>
</div>
<!-- </el-form-item>-->
</div>
<br>
<div class="el-input-foot">
@ -61,124 +82,124 @@
</div>
</el-dialog>
<!-- 推广链接对话框-->
<!-- 推广链接对话框-->
<el-dialog :title="extendTitle" :visible.sync="extendOpen" width="500px" append-to-body>
<el-input v-model="extendLink" placeholder="请输入内容" :disabled="true"></el-input>
<el-button @click="copyAddress">复制</el-button>
<el-button @click="copyAddress">复制</el-button>
</el-dialog>
</div>
</template>
<script>
import { selectDynamicData, saveDynamicData } from "@/api/crm/intelligent";
import VueClipboard from 'vue-clipboard2';
import { selectDynamicData, saveDynamicData } from "@/api/crm/intelligent";
import VueClipboard from 'vue-clipboard2';
export default {
name: "Business",
dicts: ['stage_type', 'sales_stage'],
data() {
return {
inputarr:[''],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
businessList: [],
//
title: "",
//广
extendTitle: "",
//
open: false,
// 广
extendOpen: false,
//广
extendLink: '',
//
customerList: [],
//
cardList: [],
addParams: {
title:'',
pageView:'',
collectionQuantity:'',
inputarr: []
}
};
},
created() {
this.getIntelligentList();
},
methods: {
//
adinput(){
this.inputarr.push('')
console.log(this.inputarr)
export default {
name: "Business",
dicts: ['stage_type', 'sales_stage'],
data() {
return {
inputarr:[''],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
businessList: [],
//
title: "",
//广
extendTitle: "",
//
open: false,
// 广
extendOpen: false,
//广
extendLink: '',
//
customerList: [],
//
cardList: [],
addParams: {
title:'',
pageView:'',
collectionQuantity:'',
inputarr: []
}
};
},
getIntelligentList() {
this.loading = true;
selectDynamicData().then(response => {
this.cardList = response.data;
// this.total = response.total;
console.log(this.cardList,'list')
this.loading = false;
});
created() {
this.getIntelligentList();
},
//
cancel() {
this.open = false;
},
//
submitForm(){
this.addParams.inputarr = this.inputarr
this.addParams.pageView = '22'
this.addParams.collectionQuantity = '33'
saveDynamicData(this.addParams).then(response => {
// this.cardList = response.data;
// this.total = response.total;
this.loading = false;
methods: {
//
adinput(){
this.inputarr.push('')
console.log(this.inputarr)
},
getIntelligentList() {
this.loading = true;
selectDynamicData().then(response => {
this.cardList = response.data;
// this.total = response.total;
console.log(this.cardList,'list')
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.getIntelligentList();
});
},
//
submitForm(){
this.addParams.inputarr = this.inputarr
this.addParams.pageView = '0'
this.addParams.collectionQuantity = '0'
saveDynamicData(this.addParams).then(response => {
// this.cardList = response.data;
// this.total = response.total;
this.loading = false;
this.open = false;
this.getIntelligentList();
});
},
/** 新增按钮操作 */
handleAdd() {
this.inputarr = []
this.addParams = {
title:'',
inputarr: []
}
this.open = true;
this.title = "添加表单";
},
//广
handelExtend(id) {
this.extendLink = 'https://127.0.0.1:8080/extendLink/id'+id
this.extendOpen = true;
this.extendTitle = "推广链接";
},
//
copyAddress() {
const input = document.createElement('input');
input.value = this.extendLink;
document.body.appendChild(input);
input.select();
document.execCommand('copy');
document.body.removeChild(input);
alert('已复制到剪贴板'); },
},
/** 新增按钮操作 */
handleAdd() {
this.inputarr = []
this.addParams = {
title:'',
inputarr: []
}
this.open = true;
this.title = "添加表单";
},
//广
handelExtend(id) {
this.extendLink = 'https://127.0.0.1:8080/extendLink/id'+id
this.extendOpen = true;
this.extendTitle = "推广链接";
},
//
copyAddress() {
const input = document.createElement('input');
input.value = this.extendLink;
document.body.appendChild(input);
input.select();
document.execCommand('copy');
document.body.removeChild(input);
alert('已复制到剪贴板'); },
},
};
};
</script>
<style>
<style scoped>
.clearfix:before,
.clearfix:after {
@ -190,7 +211,7 @@ export default {
}
.box-card {
width: 450px;
width:32%;
margin-bottom: 10px;
}
@ -205,8 +226,14 @@ export default {
.el-input-foot{
padding: 20px;
padding-top: 10px;
text-align: right;
text-align: center;
box-sizing: border-box;
}
::v-deep.el-input--medium{
width: 80%;
}
::v-deep.el-input--medium .el-input__inner{
border: none;
/* border-bottom:1px solid blue; */
}
</style>