TRX 1 yıl önce
ebeveyn
işleme
202add0897

+ 20 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/quest/QuestInfoModel.java

@@ -0,0 +1,20 @@
+package com.zhongshu.card.client.model.quest;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QuestInfoModel extends SuperModel {
+
+    private String name;
+
+    private Object data;
+}

+ 24 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/quest/QuestInfoParam.java

@@ -0,0 +1,24 @@
+package com.zhongshu.card.client.model.quest;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QuestInfoParam {
+
+    @Schema(description = "", hidden = true)
+    private String id;
+
+    private String name;
+
+    private Object data;
+
+}

+ 24 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/quest/QuestInfoSearch.java

@@ -0,0 +1,24 @@
+package com.zhongshu.card.client.model.quest;
+
+import com.zhongshu.card.client.model.base.SuperSearch;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QuestInfoSearch extends SuperSearch {
+
+    private String name;
+
+    private String keyWord;
+
+    @Schema(description = "操作密码")
+    private String psd;
+}

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/quest/QuestInfoUpdateParam.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.quest;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class QuestInfoUpdateParam {
+
+    @Schema(description = "", hidden = true)
+    private String id;
+
+    private String psd;
+
+    private String name;
+
+    private Object data;
+
+}

+ 65 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/quest/QuestInfoController.java

@@ -0,0 +1,65 @@
+package com.zhongshu.card.server.core.controller.quest;
+
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.quest.QuestInfoModel;
+import com.zhongshu.card.client.model.quest.QuestInfoParam;
+import com.zhongshu.card.client.model.quest.QuestInfoSearch;
+import com.zhongshu.card.client.model.quest.QuestInfoUpdateParam;
+import com.zhongshu.card.server.core.service.quest.QuestService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author TRX
+ * @date 2024/6/5
+ */
+@RestController
+@RequestMapping("/questInfo")
+@Tag(name = "问卷调查")
+public class QuestInfoController {
+
+    @Autowired
+    private QuestService questService;
+
+    @Operation(summary = "添加问卷结果", description = "添加问卷结果")
+    @RequestMapping(value = "saveInfo", method = {RequestMethod.POST})
+    public ResultContent saveInfo(@RequestBody QuestInfoParam param) {
+        return this.questService.saveInfo(param);
+    }
+
+    @Operation(summary = "编辑问卷结果", description = "添加问卷结果")
+    @RequestMapping(value = "updateInfo", method = {RequestMethod.POST})
+    public ResultContent updateInfo(@RequestBody QuestInfoUpdateParam param) {
+        return this.questService.updateInfo(param);
+    }
+
+    @Operation(summary = "删除", description = "删除")
+    @RequestMapping(value = "deleteById", method = {RequestMethod.POST})
+    public ResultContent deleteById(@RequestBody IDParam param) {
+        return this.questService.deleteById(param.getId());
+    }
+
+    @Operation(summary = "列表-分页查询", description = "列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<QuestInfoModel>> page(@Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable, @Parameter(required = false) QuestInfoSearch param) {
+        return questService.page(param, pageable);
+    }
+
+    @RequestMapping(value = "exportData", method = RequestMethod.POST)
+    @Operation(summary = "导出数据", description = "导出数据")
+    public void exportData(HttpServletRequest request, HttpServletResponse response, QuestInfoSearch param) throws Exception {
+        questService.exportData(request, response, param);
+    }
+}

+ 21 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/quest/QuestInfoDao.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.server.core.dao.quest;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.devices.extend.DeviceInfoDaoExtend;
+import com.zhongshu.card.server.core.dao.quest.extend.QuestInfoDaoExtend;
+import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.domain.quest.QuestInfo;
+
+import java.util.List;
+
+/**
+ * 设备Dao
+ *
+ * @author TRX
+ * @date 2024/3/21
+ */
+public interface QuestInfoDao extends MongoDao<QuestInfo>, QuestInfoDaoExtend {
+
+    QuestInfo findTopById(String id);
+
+}

+ 21 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/quest/extend/QuestInfoDaoExtend.java

@@ -0,0 +1,21 @@
+package com.zhongshu.card.server.core.dao.quest.extend;
+
+import com.zhongshu.card.client.model.devices.DeviceInfoSearch;
+import com.zhongshu.card.client.model.quest.QuestInfoSearch;
+import com.zhongshu.card.server.core.domain.devices.DeviceInfo;
+import com.zhongshu.card.server.core.domain.quest.QuestInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * 设备管理
+ *
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface QuestInfoDaoExtend {
+
+    Page<QuestInfo> page(Pageable pageable, QuestInfoSearch param);
+
+}

+ 68 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/quest/impl/QuestInfoDaoImpl.java

@@ -0,0 +1,68 @@
+package com.zhongshu.card.server.core.dao.quest.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.quest.QuestInfoSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.quest.extend.QuestInfoDaoExtend;
+import com.zhongshu.card.server.core.domain.quest.QuestInfo;
+import com.zhongshu.card.server.core.util.CommonUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+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.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class QuestInfoDaoImpl extends BaseImpl implements QuestInfoDaoExtend {
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<QuestInfo> page(Pageable pageable, QuestInfoSearch param) {
+        param.setOid("");
+        Criteria criteria = buildCriteria(param);
+
+        if (!CommonUtil.longIsEmpty(param.getStartTime()) && !CommonUtil.longIsEmpty(param.getEndTime())) {
+            criteria.and("createTime").gte(param.getStartTime()).lte(param.getEndTime());
+        }
+
+        // 模糊搜索
+        List<Criteria> criterias = new ArrayList<>();
+        if (StringUtils.isNotEmpty(param.getName())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getName() + ".*$");
+            criterias.add(Criteria.where("name").is(pattern));
+        }
+
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+
+        if (StringUtils.isNotEmpty(param.getKeyWord())) {
+            Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
+            criteria.orOperator(
+                    Criteria.where("name").regex(pattern)
+            );
+        }
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, QuestInfo.class);
+    }
+
+}

+ 27 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/quest/QuestInfo.java

@@ -0,0 +1,27 @@
+package com.zhongshu.card.server.core.domain.quest;
+
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class QuestInfo extends SuperMain {
+
+    @Schema(description = "")
+    private String name;
+
+    private Object data;
+
+}

+ 134 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/quest/QuestService.java

@@ -0,0 +1,134 @@
+package com.zhongshu.card.server.core.service.quest;
+
+import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.github.microservice.core.util.bean.BeanUtil;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.quest.QuestInfoModel;
+import com.zhongshu.card.client.model.quest.QuestInfoParam;
+import com.zhongshu.card.client.model.quest.QuestInfoSearch;
+import com.zhongshu.card.client.model.quest.QuestInfoUpdateParam;
+import com.zhongshu.card.client.utils.DateUtils;
+import com.zhongshu.card.server.core.dao.quest.QuestInfoDao;
+import com.zhongshu.card.server.core.domain.quest.QuestInfo;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import com.zhongshu.card.server.core.util.ExcelUtils;
+import com.zhongshu.card.server.core.util.excel.CommonExeclParam;
+import com.zhongshu.card.server.core.util.excel.CommonExeclTd;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author TRX
+ * @date 2024/11/29
+ */
+@Slf4j
+@Service
+public class QuestService {
+
+    @Value("${quest.psd}")
+    public String psd = "";
+
+    @Autowired
+    private QuestInfoDao questInfoDao;
+
+    public ResultContent saveInfo(QuestInfoParam param) {
+        QuestInfo entity = new QuestInfo();
+        BeanUtils.copyProperties(param, entity);
+        questInfoDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent updateInfo(QuestInfoUpdateParam param) {
+        QuestInfo entity = questInfoDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail("数据不存在");
+        }
+        if (StringUtils.isEmpty(param.getPsd())) {
+            return ResultContent.buildFail("操作密码为空");
+        }
+        if (!param.getPsd().equals(psd)) {
+            return ResultContent.buildFail("密码错误");
+        }
+
+        BeanUtils.copyProperties(param, entity);
+        questInfoDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent<Page<QuestInfoModel>> page(QuestInfoSearch param, Pageable pageable) {
+        if (StringUtils.isEmpty(param.getPsd())) {
+            return ResultContent.buildFail("操作密码为空");
+        }
+        if (!param.getPsd().equals(psd)) {
+            return ResultContent.buildFail("密码错误");
+        }
+
+        Page<QuestInfo> page = questInfoDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    public ResultContent deleteById(String id) {
+        QuestInfo entity = questInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail("数据不存在");
+        }
+        questInfoDao.delete(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public void exportData(HttpServletRequest request, HttpServletResponse response, QuestInfoSearch param) throws Exception {
+        Assert.hasText(param.getPsd(), "psd不能为空");
+        if (!param.getPsd().equals(psd)) {
+            throw new Exception("密码错误");
+        }
+        Pageable pageable = PageRequest.of(0, Integer.MAX_VALUE);
+        Page<QuestInfo> page = questInfoDao.page(pageable, param);
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (page.getContent() != null) {
+            List<QuestInfo> list = page.getContent();
+            maps = list.stream().map(it -> {
+                Map<String, Object> map = BeanUtil.bean2Map(it);
+
+                map.put("timeStr", DateUtils.paresTime(it.getCreateTime(), DateUtils.patternyyyyMis));
+                return map;
+            }).collect(Collectors.toList());
+        }
+
+        CommonExeclParam execlParam = new CommonExeclParam();
+        execlParam.setTitle(String.format("问卷调查"));
+        execlParam.setStartRow(2);
+        execlParam.setDatas(maps);
+        List<CommonExeclTd> tds = new ArrayList<>();
+        tds.add(CommonExeclTd.build("1", "code"));
+        tds.add(CommonExeclTd.build("2", "cardStr"));
+        tds.add(CommonExeclTd.build("3", "useStr"));
+        tds.add(CommonExeclTd.build("4", "cancelStr"));
+        tds.add(CommonExeclTd.build("时间", "timeStr"));
+        execlParam.setTds(tds);
+        ExcelUtils.commonExecuteExcel(request, response, execlParam);
+    }
+
+    private QuestInfoModel toModel(QuestInfo entity) {
+        QuestInfoModel model = new QuestInfoModel();
+        if (ObjectUtils.isNotEmpty(entity)) {
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}

+ 1 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/user/UserAccountServiceImpl.java

@@ -164,7 +164,7 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             userCountDao.save(userAccount);
         } else {
             // 编辑
-            BeanUtils.copyPropertiesWithoutNull(param, userAccount);
+             BeanUtils.copyPropertiesWithoutNull(param, userAccount);
             String realName = param.getRealName();
             if (StringUtils.isEmpty(realName)) {
                 realName = param.getName();