cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminAgreementController.java
New file @@ -0,0 +1,107 @@ package com.dsh.activity.controller; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.dsh.activity.entity.THuiminAgreement; import com.dsh.activity.entity.THuiminAgreementSetting; import com.dsh.activity.model.HuiminAgreementQuery; import com.dsh.activity.service.HuiminAgreementService; import com.dsh.activity.service.HuiminAgreementSettingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Objects; /** * @author zhibing.pu * @date 2023/6/24 11:27 */ @RestController @RequestMapping("") public class HuiminAgreementController { @Autowired private HuiminAgreementService huiminAgreementService; @Autowired private HuiminAgreementSettingService huiminAgreementSettingService; /** * 根据当前用户类型查询惠民卡协议 * @param objectType * @param operatorId * @return */ @ResponseBody @PostMapping("/base/tHuiminAgreement/selectByObjectType") public THuiminAgreement selectByObjectType(@RequestBody HuiminAgreementQuery query) { THuiminAgreement huiminAgreement = null; if (query.getObjectType().equals(1)) { //平台 huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>() .isNull(THuiminAgreement::getOperatorId)); }else if (query.getObjectType().equals(2)) { //运营商 huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>() .eq(THuiminAgreement::getOperatorId,query.getOperatorId())); } if (Objects.nonNull(huiminAgreement)) { //查询协议配置 List<THuiminAgreementSetting> tHuiminAgreementSettingList = huiminAgreementSettingService.list(new LambdaQueryWrapper<THuiminAgreementSetting>() .eq(THuiminAgreementSetting::getAgreementId, huiminAgreement.getId())); huiminAgreement.setTHuiminAgreementSettingList(tHuiminAgreementSettingList); } return huiminAgreement; } /** * 保存惠民卡协议 * @param tHuiminAgreement */ @PostMapping("/base/tHuiminAgreement/save") @Transactional(rollbackFor = Exception.class) public void insert(@RequestBody THuiminAgreement tHuiminAgreement){ Integer operatorId = tHuiminAgreement.getOperatorId(); if (tHuiminAgreement.getObjectType().equals(1)) { tHuiminAgreement.setOperatorId(null); } huiminAgreementService.saveOrUpdate(tHuiminAgreement); List<THuiminAgreementSetting> tHuiminAgreementSettingList = tHuiminAgreement.getTHuiminAgreementSettingList(); if (CollUtil.isNotEmpty(tHuiminAgreementSettingList)) { if (tHuiminAgreement.getObjectType().equals(2) || tHuiminAgreement.getObjectType().equals(1) && Objects.isNull(operatorId)) { //删除之前的协议配置 huiminAgreementSettingService.remove(new LambdaQueryWrapper<THuiminAgreementSetting>().eq(THuiminAgreementSetting::getAgreementId, tHuiminAgreement.getId())); //保存协议配置 tHuiminAgreementSettingList.forEach(t -> { t.setAgreementId(tHuiminAgreement.getId()); }); huiminAgreementSettingService.saveBatch(tHuiminAgreementSettingList); } else { THuiminAgreement agreement = huiminAgreementService.lambdaQuery() .eq(THuiminAgreement::getOperatorId, operatorId) .last("LIMIT 1").one(); if (Objects.isNull(agreement)) { agreement = new THuiminAgreement(); agreement.setOperatorId(operatorId); huiminAgreementService.save(agreement); } //删除之前的协议配置 huiminAgreementSettingService.remove(new LambdaQueryWrapper<THuiminAgreementSetting>() .eq(THuiminAgreementSetting::getAgreementId, agreement.getId())); //保存协议配置 THuiminAgreement finalAgreement = agreement; tHuiminAgreementSettingList.forEach(t -> { t.setAgreementId(finalAgreement.getId()); }); huiminAgreementSettingService.saveBatch(tHuiminAgreementSettingList); } } } } cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreement.java
@@ -10,6 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.util.List; /** * <p> @@ -44,6 +45,17 @@ */ @TableField("selectUserRemark") private String selectUserRemark; /** * 门店无惠民卡介绍页 */ @TableField("storeNoHuiminCardIntro") private String storeNoHuiminCardIntro; @TableField(exist = false) private Integer objectType; @TableField(exist = false) private List<THuiminAgreementSetting> tHuiminAgreementSettingList; @Override protected Serializable pkVal() { return this.id; cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreementSetting.java
@@ -22,7 +22,7 @@ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_points_merchandise_city") @TableName("t_huimin_agreement_setting") public class THuiminAgreementSetting extends Model<THuiminAgreementSetting> { private static final long serialVersionUID = 1L; @@ -32,6 +32,8 @@ */ @TableId(value = "id", type = IdType.AUTO) private Integer id; @TableField("agreementId") private Integer agreementId; /** * 协议名称 */ cloud-server-activity/src/main/java/com/dsh/activity/model/HuiminAgreementQuery.java
New file @@ -0,0 +1,22 @@ package com.dsh.activity.model; import lombok.Data; /** * <p> * 惠民卡协议查询 * </p> * * @since 2023-07-12 */ @Data public class HuiminAgreementQuery { /** * 运营商id 选择默认传null */ private Integer operatorId; /** *账号类型 */ private Integer objectType; } cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/HuiminAgreementClient.java
@@ -1,8 +1,10 @@ package com.dsh.course.feignClient.activity; import com.dsh.course.feignClient.activity.model.HuiminAgreementQuery; import com.dsh.course.feignClient.activity.model.THuiminAgreement; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; /** * @author mitao @@ -10,6 +12,20 @@ */ @FeignClient(value = "mb-cloud-activity") public interface HuiminAgreementClient { @PostMapping("/tHuiminAgreement/save") void insert(THuiminAgreement tHuiminAgreement); /** * 根据当前用户类型查询惠民卡协议 * @param objectType * @param operatorId * @return */ @PostMapping("/base/tHuiminAgreement/selectByObjectType") THuiminAgreement selectByObjectType(@RequestBody HuiminAgreementQuery query); /** * 保存惠民卡协议 * @param tHuiminAgreement */ @PostMapping("/base/tHuiminAgreement/save") void insert(@RequestBody THuiminAgreement tHuiminAgreement); } cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/HuiminAgreementQuery.java
New file @@ -0,0 +1,22 @@ package com.dsh.course.feignClient.activity.model; import lombok.Data; /** * <p> * 惠民卡协议查询 * </p> * * @since 2023-07-12 */ @Data public class HuiminAgreementQuery { /** * 运营商id 选择默认传null */ private Integer operatorId; /** *账号类型 */ private Integer objectType; } cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreement.java
@@ -1,8 +1,5 @@ package com.dsh.course.feignClient.activity.model; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.Data; @@ -28,27 +25,28 @@ /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 运营商id 选择默认传null */ @TableField("operatorId") private Integer operatorId; /** *添加人员说明文案 */ @TableField("addUserRemark") private String addUserRemark; /** *选择人员说明文案 */ @TableField("selectUserRemark") private String selectUserRemark; /** * 门店无惠民卡介绍页 */ private String storeNoHuiminCardIntro; private String agreementSettings; private List<THuiminAgreementSetting> tHuiminAgreementSettingList; private Integer objectType; @Override protected Serializable pkVal() { return this.id; cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreementSetting.java
@@ -1,5 +1,6 @@ package com.dsh.course.feignClient.activity.model; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -36,11 +37,13 @@ * 协议名称 */ @TableField("agreementName") @JSONField(name = "title") private String agreementName; /** *协议内容 */ @TableField("agreementContent") @JSONField(name = "content") private String agreementContent; @Override cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminAgreementController.java
@@ -1,14 +1,24 @@ package com.dsh.guns.modular.system.controller.code; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.feignClient.activity.HuiminAgreementClient; import com.dsh.course.feignClient.activity.model.HuiminAgreementQuery; import com.dsh.course.feignClient.activity.model.THuiminAgreement; import com.dsh.course.feignClient.activity.model.THuiminAgreementSetting; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.modular.system.model.TOperator; import com.dsh.guns.modular.system.service.TOperatorService; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; import java.util.Objects; /** * 惠民卡控制器 @@ -24,6 +34,8 @@ @Autowired private HuiminAgreementClient huiminAgreementClient; @Autowired private TOperatorService operatorService; /** * 跳转到惠民卡首页 @@ -31,15 +43,53 @@ @RequestMapping("") public String index(Model model) { Integer objectType = UserExt.getUser().getObjectType(); Integer operatorId = null; if (objectType.equals(2)){ //查询运营商 TOperator operator = operatorService.getOne(new QueryWrapper<TOperator>() .eq("userId", UserExt.getUser().getId()) .ne("state", 3) .last("LIMIT 1")); if (Objects.nonNull(operator)) { operatorId = operator.getId(); } } HuiminAgreementQuery huiminAgreementQuery = new HuiminAgreementQuery(); huiminAgreementQuery.setOperatorId(operatorId); huiminAgreementQuery.setObjectType(objectType); THuiminAgreement huiminAgreement = huiminAgreementClient.selectByObjectType(huiminAgreementQuery); model.addAttribute("objectType", objectType); model.addAttribute("item", huiminAgreement); model.addAttribute("tHuiminAgreementSettingList", Objects.nonNull(huiminAgreement) ? JSONArray.toJSONString(huiminAgreement.getTHuiminAgreementSettingList()) : ""); //查询运营商列表 model.addAttribute("operatorList", operatorService.list(new QueryWrapper<TOperator>().eq("state", 1))); model.addAttribute("operatorId", operatorId); return PREFIX + "tHuiminAgreement_add.html"; } @RequestMapping(value = "/save") @ResponseBody public Object save(THuiminAgreement tHuiminAgreement) { tHuiminAgreement.setObjectType(UserExt.getUser().getObjectType()); String agreementSettings = tHuiminAgreement.getAgreementSettings(); List<THuiminAgreementSetting> tHuiminAgreementSettings = JSONArray.parseArray(agreementSettings, THuiminAgreementSetting.class); tHuiminAgreement.setTHuiminAgreementSettingList(tHuiminAgreementSettings); huiminAgreementClient.insert(tHuiminAgreement); return SUCCESS_TIP; } @RequestMapping(value = "/selectAgreementByOperationId") @ResponseBody public ResultUtil<String> selectAgreementByOperationId(Integer operatorId) { String tHuiminAgreementSettings = ""; HuiminAgreementQuery huiminAgreementQuery = new HuiminAgreementQuery(); huiminAgreementQuery.setOperatorId(operatorId); huiminAgreementQuery.setObjectType(Objects.isNull(operatorId) ? 1 : 2); THuiminAgreement huiminAgreement = huiminAgreementClient.selectByObjectType(huiminAgreementQuery); if (Objects.nonNull(huiminAgreement)) { //查询协议配置 tHuiminAgreementSettings = JSONArray.toJSONString(huiminAgreement.getTHuiminAgreementSettingList()); } return ResultUtil.success(tHuiminAgreementSettings); } /* *//** * 跳转到修改惠民卡 cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminAgreement/tHuiminAgreement_add.html
@@ -13,7 +13,7 @@ <div class="tab-content"> <div id="tab-1" class="tab-pane active"> <div class="panel-body"> <textarea id="editor_1" type="text/plain" style="width:1200px;height:400px;"></textarea> <textarea id="editor_1" type="text/plain" style="width:1200px;height:400px;">${item.addUserRemark!}</textarea> <!--<div class="row btn-group-m-t"> <div class="col-sm-10 col-sm-offset-5"> <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun=""/> @@ -23,7 +23,7 @@ </div> <div id="tab-2" class="tab-pane"> <div class="panel-body"> <textarea type="text/plain" id="editor_2" style="width:1200px;height:400px;"></textarea> <textarea type="text/plain" id="editor_2" style="width:1200px;height:400px;"${item.selectUserRemark!}</textarea> <!--<div class="row btn-group-m-t"> <div class="col-sm-10"> <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun=""/> @@ -37,12 +37,16 @@ @} <div class="form-group"> <label class="col-sm-1 control-label" for="operator">所属运营商:</label> <div class="col-sm-9"> <div class="col-sm-3"> <select id="operator" class="form-control"> <option value="" selected>默认</option> <option value="">默认</option> @if(isNotEmpty(operatorList)){ @for(item in operatorList){ <option value="${item.id}">${item.name}</option> @if(objectType == 2){ <option value="${item.id}" ${operatorId == item.id ? 'selected disabled' : ''}>${item.name}</option> @}else{ <option value="${item.id}">${item.name}</option> @} @} @} </select> @@ -50,10 +54,14 @@ </div> <div class="form-group"> <label class="col-sm-1 control-label">门店无惠民卡介绍页</label> <div class="col-sm-9"> <textarea id="editor_3" type="text/plain" style="width:1200px;height:400px;">${item.storeNoHuiminCardIntro!}</textarea> </div> </div> </div> <div class="form-group"> <label class="col-sm-1 control-label" for="agreement">协议配置:</label> <div class="col-sm-9"> <div class="col-sm-3"> <div class="input-group"> <input type="text" id="agreement" name="agreement" class="form-control" placeholder="请输入协议配置标题"> <span class="input-group-btn"> @@ -90,6 +98,7 @@ <script> var editor_1 = null; var editor_2 = null; var editor_3 = null; var dynamicEditors = []; // 存储动态创建的编辑器实例 var editorCounter = 0; // 用于生成唯一ID @@ -97,7 +106,8 @@ //初始化编辑器 editor_1 = UE.getEditor('editor_1'); editor_2 = UE.getEditor('editor_2'); editor_3 = UE.getEditor('editor_3'); // 绑定添加按钮的点击事件 $("#agreementAdd").click(function() { var title = $("#agreement").val().trim(); @@ -107,15 +117,76 @@ } // 创建新的编辑器区域 addNewEditor(title); addNewEditor(title,""); // 清空输入框 $("#agreement").val(""); }); //协议配置回显 let settingList = '${tHuiminAgreementSettingList}'; if (settingList != "" && typeof settingList != "undefined"){ let settingArr = JSON.parse(settingList); review(settingArr); } //经营商切换事件 $("#operator").change(function() { //清空协议配置 removeAll() //调用接口获取协议配置数据 //提交信息 var ajax = new $ax(Feng.ctxPath + "/tHuiminAgreement/selectAgreementByOperationId", function(data){ if (data.data != "" && data.data != null){ console.log("协议配置数据:"+data.data); let settingArr = JSON.parse(data.data); review(settingArr); } },function(data){ }); ajax.set("operatorId",$("#operator").val()); ajax.start(); }); }); // 添加新的编辑器函数 function addNewEditor(title) { // 清空所有编辑器实例和UI元素 function removeAll(){ console.log("清空协议配置"); $("#dynamic-tabs-container").hide(); // 彻底清空容器内容,确保没有残留 $("#agreement-tabs").empty(); $("#agreement-content").empty(); // 销毁所有编辑器实例 for(var i = 0; i < dynamicEditors.length; i++) { try { if(dynamicEditors[i].editor) { dynamicEditors[i].editor.destroy(); dynamicEditors[i].editor = null; } } catch(e) { console.error("销毁编辑器出错:", e); } } editorCounter = 0; //清空动态创建的编辑器实例 dynamicEditors=[]; console.log("dynamicEditors",dynamicEditors) } // 协议配置回显 function review(settingArr){ if (typeof settingArr !== 'undefined' && settingArr.length > 0) { settingArr.forEach(function(item) { addNewEditor(item.title, item.content || ""); }); } } // 添加新的编辑器函数 - 修改为接受内容参数 function addNewEditor(title, content) { editorCounter++; var editorId = "dynamic-editor-" + editorCounter; var tabId = "agreement-tab-" + editorCounter; @@ -157,24 +228,41 @@ // 确保编辑器已准备好 editor.ready(function() { // 初始化为空内容 editor.setContent(""); // 存储编辑器实例和标题信息 dynamicEditors.push({ id: editorId, tabId: tabId, counter: editorCounter, title: title, editor: editor }); // 绑定删除按钮事件 $(".delete-tab[data-editor-id='" + editorId + "']").click(function(e) { e.preventDefault(); e.stopPropagation(); deleteEditor($(this).data("counter")); }); try { // 检查编辑器是否已准备好接收内容 if(editor.body) { // 初始化内容 editor.setContent(content || ""); } else { // 如果编辑器body未准备好,延迟设置内容 setTimeout(function() { try { editor.setContent(content || ""); } catch(e) { console.error("延迟设置编辑器内容出错:", e); } }, 500); } // 存储编辑器实例和标题信息 dynamicEditors.push({ id: editorId, tabId: tabId, counter: editorCounter, title: title, editor: editor, content: content || "" }); // 绑定删除按钮事件 $(".delete-tab[data-editor-id='" + editorId + "']").click(function(e) { e.preventDefault(); e.stopPropagation(); deleteEditor($(this).data("counter")); }); } catch(e) { console.error("编辑器初始化出错:", e); } }); // 手动激活新添加的标签页 @@ -239,9 +327,22 @@ collectDynamicEditors = function() { var agreements = []; for(var i = 0; i < dynamicEditors.length; i++) { var content = ""; try { // 确保编辑器实例存在且可用 if(dynamicEditors[i].editor && dynamicEditors[i].editor.isReady) { content = dynamicEditors[i].editor.getContent(); } else { content = dynamicEditors[i].content || ""; } } catch(e) { console.error("获取编辑器内容出错:", e); content = dynamicEditors[i].content || ""; } agreements.push({ title: dynamicEditors[i].title, content: dynamicEditors[i].editor.getContent() content: content }); } return agreements; @@ -256,6 +357,7 @@ }); ajax.set("addUserRemark", editor_1.getContent()); ajax.set("selectUserRemark", editor_2.getContent()); ajax.set("storeNoHuiminCardIntro", editor_3.getContent()); ajax.set("operatorId", $("#operator").val()); ajax.set("agreementSettings", JSON.stringify(collectDynamicEditors())); ajax.set("id", $("#id").val());