diff --git a/yudao-admin-vue3/src/api/mall/promotion/intelligent/index.ts b/yudao-admin-vue3/src/api/mall/promotion/intelligent/index.ts new file mode 100644 index 0000000..4287328 --- /dev/null +++ b/yudao-admin-vue3/src/api/mall/promotion/intelligent/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface ArticleVO { + id: number + title: string + collectionQuantity: string + pageView: string + introduction: string + inputarr: string[] +} + +// 查询文章管理列表 +export const selectDynamicData = async () => { + return await request.get({ url: `/intelligentForm/selectDynamicData` }) +} + +// // 查询文章管理详情 +// export const saveDynamicData = async (id: number) => { +// return await request.get({ url: `/promotion/article/get?id=` + id }) +// } + +// 新增文章管理 +export const saveDynamicData = async (data: ArticleVO) => { + return await request.post({ url: `/intelligentForm/saveDynamicData`, data }) +} + +// 查询文章管理列表 +export const collectDataList = async (query: any) => { + return await request.get({ url: `/intelligentForm/collectDataList`, query }) +} + +// // 修改文章管理 +// export const updateArticle = async (data: ArticleVO) => { +// return await request.put({ url: `/promotion/article/update`, data }) +// } + +// // 删除文章管理 +// export const deleteArticle = async (id: number) => { +// return await request.delete({ url: `/promotion/article/delete?id=` + id }) +// } diff --git a/yudao-admin-vue3/src/views/mall/promotion/intelligent/index.vue b/yudao-admin-vue3/src/views/mall/promotion/intelligent/index.vue new file mode 100644 index 0000000..8e3ed48 --- /dev/null +++ b/yudao-admin-vue3/src/views/mall/promotion/intelligent/index.vue @@ -0,0 +1,280 @@ + + + + diff --git a/yudao-module-mall/yudao-module-promotion-biz/pom.xml b/yudao-module-mall/yudao-module-promotion-biz/pom.xml index a3bf649..b27e387 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/pom.xml +++ b/yudao-module-mall/yudao-module-promotion-biz/pom.xml @@ -73,6 +73,12 @@ cn.iocoder.boot yudao-spring-boot-starter-excel + + + + org.springframework.boot + spring-boot-starter-data-mongodb + diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/dynamic/DynamicDataController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/dynamic/DynamicDataController.java new file mode 100644 index 0000000..d48cb09 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/dynamic/DynamicDataController.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.promotion.controller.admin.dynamic; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicData; +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicForm; +import cn.iocoder.yudao.module.promotion.service.dynamic.DynamicDataService; +import cn.iocoder.yudao.module.promotion.service.dynamic.DynamicFormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +/** + * 智能表单模块 + */ + +@RestController +@RequestMapping("/intelligentForm") +public class DynamicDataController { + @Autowired + private MongoTemplate mongoTemplate; + @Autowired + private DynamicDataService dynamicDataService; + @Autowired + private DynamicFormService dynamicFormService; + + //保存数据 + @PostMapping("/saveDynamicData") + public CommonResult saveDynamicData(@RequestBody Map requestData, HttpServletRequest httpServletRequest) { + dynamicDataService.doSaveDynamicData(requestData,httpServletRequest); + return success("保存成功"); + } + + //查询全部数据 + @GetMapping("/selectDynamicData") + public CommonResult> selectDynamicData(HttpServletRequest httpServletRequest) { + return success(dynamicDataService.doSelectDynamicData(httpServletRequest)); + } + //根据id查询数据 + @GetMapping("/selectDynamicDataById") + public CommonResult selectDynamicDataById(String id){ + return success(dynamicDataService.doSelectDynamicDataById(id)); + } + + //采集数据 + @PostMapping("/collectData") + public CommonResult collectData(@RequestBody DynamicForm dynamicForm){ + dynamicFormService.doCollectData(dynamicForm); + return success("保存成功"); + } + //根据卡片id查询对应采集数据的列表 + @GetMapping("/collectDataList") + public CommonResult> collectDataList(String id){ + return success(dynamicFormService.doCollectDataList(id)); + } + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicData.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicData.java new file mode 100644 index 0000000..0fe7025 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicData.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic; + +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; + private String title; + //总浏览量 + private String pageView; + //采集数量 + private String collectionQuantity; + //创建者 + private String createPeople; + //创建时间 + private String createTime; + //租户名称 + private String tenantName; + //用户字段数据 + private Map data; +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicForm.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicForm.java new file mode 100644 index 0000000..148e572 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/dynamic/DynamicForm.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic; + +import lombok.Data; +import org.springframework.data.annotation.Id; + +import java.util.Map; + +@Data +public class DynamicForm { + @Id + private String id; + //关联后台智能表单id + private String dynamicDataId; + //采集数据 + private Map map; +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicDataRepository.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicDataRepository.java new file mode 100644 index 0000000..f92dbfc --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicDataRepository.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.promotion.dal.mysql.repository; + +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicData; +import org.apache.ibatis.annotations.Mapper; +import org.bson.types.ObjectId; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +//@Repository +@Mapper +public interface DynamicDataRepository extends MongoRepository { + List findByTenantName(String tenantName); + @Query("{'_id': {'$eq': ?0}}") + DynamicData doFindById(ObjectId id); +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicFormRepository.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicFormRepository.java new file mode 100644 index 0000000..7aa22af --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/repository/DynamicFormRepository.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.promotion.dal.mysql.repository; + +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicForm; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +//@Repository +@Mapper +public interface DynamicFormRepository extends MongoRepository { + Long countAllByDynamicDataId(String dynamicDataId); + List findByDynamicDataId(String id); +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicDataService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicDataService.java new file mode 100644 index 0000000..08503cf --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicDataService.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.promotion.service.dynamic; + +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicData; +import cn.iocoder.yudao.module.promotion.dal.mysql.repository.DynamicDataRepository; +import cn.iocoder.yudao.module.promotion.dal.mysql.repository.DynamicFormRepository; +import org.bson.types.ObjectId; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; + + +@Service +public class DynamicDataService { + @Autowired + private DynamicDataRepository dynamicDataRepository; + @Autowired + private DynamicFormRepository dynamicFormRepository; + + //保存数据 + public DynamicData doSaveDynamicData(Map requestData, HttpServletRequest httpServletRequest){ + DynamicData dynamicData = new DynamicData(); + //构造数据结构 + String title = (String)requestData.get("title"); + String pageView = (String)requestData.get("pageView"); + String collectionQuantity = (String)requestData.get("collectionQuantity"); + dynamicData.setTitle(title); + requestData.remove("title"); + dynamicData.setPageView(pageView); + requestData.remove("pageView"); + dynamicData.setCollectionQuantity(collectionQuantity); + requestData.remove("collectionQuantity"); + ArrayList inputarr = (ArrayList)requestData.get("inputarr"); + for (String s : inputarr) { + requestData.put(s,null); + } + requestData.remove("inputarr"); + dynamicData.setCreatePeople(getLoginUserId(httpServletRequest).toString()); + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDate = currentDate.format(formatter); + dynamicData.setCreateTime(formattedDate); + dynamicData.setData(requestData); + dynamicData.setTenantName(httpServletRequest.getHeader("Tenant")); + return dynamicDataRepository.save(dynamicData);//插入dynamicData数据 + } + + //查询全部数据 + public List doSelectDynamicData(HttpServletRequest httpServletRequest){ + //查询对应租户下的卡片列表数据 + List dynamicData = dynamicDataRepository.findByTenantName(httpServletRequest.getHeader("Tenant")); + for (DynamicData dynamicDatum : dynamicData) { + //查询对应卡片链接采集到数据的数量 + Long count = dynamicFormRepository.countAllByDynamicDataId(dynamicDatum.getId()); + dynamicDatum.setCollectionQuantity(count+""); + } + return dynamicData; + } + + //根据id查询数据 + public DynamicData doSelectDynamicDataById(String id){ + ObjectId objectId = new ObjectId(id); + DynamicData dynamicData = dynamicDataRepository.doFindById(objectId); + dynamicData.setPageView(Long.parseLong(dynamicData.getPageView())+1+""); + return dynamicDataRepository.save(dynamicData); + } + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicFormService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicFormService.java new file mode 100644 index 0000000..aacd879 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/dynamic/DynamicFormService.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.promotion.service.dynamic; + +import cn.iocoder.yudao.module.promotion.dal.dataobject.dynamic.DynamicForm; +import cn.iocoder.yudao.module.promotion.dal.mysql.repository.DynamicFormRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class DynamicFormService { + @Autowired + private DynamicFormRepository dynamicFormRepository; + + //查询对应卡片采集数据的数量 + public Long findDynamicFormToCount(String id){ + return dynamicFormRepository.countAllByDynamicDataId(id); + } + + //采集数据 + public void doCollectData(DynamicForm dynamicForm){ + dynamicFormRepository.save(dynamicForm); + } + + //根据卡片id查询对应采集数据的列表 + public ArrayList doCollectDataList(String id){ + List dynamicForms = dynamicFormRepository.findByDynamicDataId(id); + ArrayList list = new ArrayList<>(); + for (DynamicForm dynamicForm : dynamicForms) { + list.add(dynamicForm.getMap()); + } + return list; + } + +} diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index 46fdb48..2539ab8 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -256,3 +256,12 @@ justauth: prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 +spring: + data: + mongodb: + uri: mongodb://root:123456@120.46.37.243:27017/admin?authMechanism=SCRAM-SHA-256 + # uri: mongodb://root:123456@101.43.112.107:27017/admin?authMechanism=SCRAM-SHA-256 + database: zy-crm + + +