Quellcode durchsuchen

业委会求助

Longlin vor 5 Jahren
Ursprung
Commit
004850bc02

+ 10 - 12
whepi-ui/templates/yeweihui/home.ftl

@@ -39,26 +39,24 @@
 <script>
     <#include "/yeweihui/ribao.js" />
     <#include "/yeweihui/qiuzhu.js" />
+    var taskList = ${taskList!'[]'};
 (function ($) {
     $(function(){
-        $(function(){
-            $('.weui-navbar__item').on('click', function () {
-                $(this).addClass('weui-bar__item_on').siblings('.weui-bar__item_on').removeClass('weui-bar__item_on');
-                //内容切换
-                // var moduleClass = jQuery(this).attr("module");
-                // var ss = ".weui-tab__panel ." + moduleClass + "_weui_tab_bd_item_active";
-                // $(ss).removeClass(moduleClass + '_weui_tab_bd_item_active');
-                // var data_toggle =jQuery(this).attr("target");
-                // $(data_toggle).addClass(moduleClass + "_weui_tab_bd_item_active");
-            });
+        $('.weui-navbar__item').on('click', function () {
+            $(this).addClass('weui-bar__item_on').siblings('.weui-bar__item_on').removeClass('weui-bar__item_on');
+            //内容切换
+            var moduleClass = jQuery(this).attr("module");
+            var ss = ".weui-tab__panel ." + moduleClass + "_weui_tab_bd_item_active";
+            $(ss).removeClass(moduleClass + '_weui_tab_bd_item_active');
+            var data_toggle =jQuery(this).attr("target");
+            $(data_toggle).addClass(moduleClass + "_weui_tab_bd_item_active");
         });
-
     });
 
     <#--console.log('ssssss');-->
     <#--var tasks = ${taskList!'[]'};-->
     // console.log('ssssss', tasks);
-    console.log('asdsfdgfhjghfgdf');
+    // console.log('asdsfdgfhjghfgdf');
 
     ribao_init();
     qiuzhu_init();

+ 8 - 5
whepi-ui/templates/yeweihui/houseSelect.ftl

@@ -1,8 +1,11 @@
 <div class="weui-btn-area"  style="display: flex; flex-direction: row; justify-content: space-between;">
-    <div style="display: flex; flex-direction: row; justify-content: space-between;width: 60vw;">
-        <input id="dong" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 15vw;" href="javascript:" value="栋" onfocus="if (value =='栋'){value =''}" onblur="if (value ==''){value='栋'}" />
-        <input id="danyuan" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 17vw;" href="javascript:" value="单元" onfocus="if (value =='单元'){value =''}" onblur="if (value ==''){value='单元'}" />
-        <input id="menpaihao" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="门牌号" onfocus="if (value =='门牌号'){value =''}" onblur="if (value ==''){value='门牌号'}" />
+    <div style="display: flex; flex-direction: row; align-items: center; justify-content: space-between;width: 70vw;">
+<#--        <input id="qz_dong" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 15vw;" href="javascript:" value="栋" onfocus="if (value =='栋'){value =''}" onblur="if (value ==''){value='栋'}" />-->
+<#--        <input id="qz_danyuan" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="单元" onfocus="if (value =='单元'){value =''}" onblur="if (value ==''){value='单元'}" />-->
+<#--        <input id="qz_menpaihao" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="门牌号" onfocus="if (value =='门牌号'){value =''}" onblur="if (value ==''){value='门牌号'}" />-->
+        <input id="qz_searchNum" class="weui-input" placeholder="请输入门牌号,如:1-1-101" style="background-color: #d1d1d1; height: 5vh;" />
     </div>
-    <a id="btnQZ" class="weui-btn weui-btn_primary" style="width: 20vw;" href="javascript:">查询</a>
+    <a id="qz_btnQZ" class="weui-btn_primary" style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 10px;" href="javascript:">
+        <div style="width: 20vw; height: 5vh;line-height:5vh; text-align: center; color: white">查询</div>
+    </a>
 </div>

+ 35 - 5
whepi-ui/templates/yeweihui/qiuzhu.ftl

@@ -5,16 +5,26 @@
                 未处理
             </a>
             <a class="weui-navbar__item" target="#qz_nav2" module="qiu_zhu">
-                处理
+                处理
             </a>
             <a class="weui-navbar__item" target="#qz_nav3" module="qiu_zhu">
-                处理
+                处理
             </a>
         </div>
         <div class="weui-tab__panel">
             <div id="qz_nav1" class="weui-tab__bd-item qiu_zhu_weui_tab_bd_item_active">
 
-                <#include "/yeweihui/houseSelect.ftl" />
+                <div class="weui-btn-area"  style="display: flex; flex-direction: row; justify-content: space-between;">
+                    <div style="display: flex; flex-direction: row; align-items: center; justify-content: space-between;width: 70vw;">
+                        <#--        <input id="qz_dong" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 15vw;" href="javascript:" value="栋" onfocus="if (value =='栋'){value =''}" onblur="if (value ==''){value='栋'}" />-->
+                        <#--        <input id="qz_danyuan" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="单元" onfocus="if (value =='单元'){value =''}" onblur="if (value ==''){value='单元'}" />-->
+                        <#--        <input id="qz_menpaihao" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="门牌号" onfocus="if (value =='门牌号'){value =''}" onblur="if (value ==''){value='门牌号'}" />-->
+                        <input id="qz_searchNum1" class="weui-input" placeholder="请输入门牌号,如:1-1-101" style="background-color: #d1d1d1; height: 5vh;" />
+                    </div>
+                    <a id="qz_btnQZ1" class="weui-btn_primary" style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 10px;" href="javascript:">
+                        <div style="width: 20vw; height: 5vh;line-height:5vh; text-align: center; color: white">查询</div>
+                    </a>
+                </div>
 
                 <div class="weui-panel weui-panel_access">
                     <div id="qz_list1" class="weui-panel__bd">
@@ -39,7 +49,17 @@
             </div>
             <div id="qz_nav2" class="weui-tab__bd-item">
 
-                <#include "/yeweihui/houseSelect.ftl" />
+                <div class="weui-btn-area"  style="display: flex; flex-direction: row; justify-content: space-between;">
+                    <div style="display: flex; flex-direction: row; align-items: center; justify-content: space-between;width: 70vw;">
+                        <#--        <input id="qz_dong" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 15vw;" href="javascript:" value="栋" onfocus="if (value =='栋'){value =''}" onblur="if (value ==''){value='栋'}" />-->
+                        <#--        <input id="qz_danyuan" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="单元" onfocus="if (value =='单元'){value =''}" onblur="if (value ==''){value='单元'}" />-->
+                        <#--        <input id="qz_menpaihao" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="门牌号" onfocus="if (value =='门牌号'){value =''}" onblur="if (value ==''){value='门牌号'}" />-->
+                        <input id="qz_searchNum2" class="weui-input" placeholder="请输入门牌号,如:1-1-101" style="background-color: #d1d1d1; height: 5vh;" />
+                    </div>
+                    <a id="qz_btnQZ2" class="weui-btn_primary" style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 10px;" href="javascript:">
+                        <div style="width: 20vw; height: 5vh;line-height:5vh; text-align: center; color: white">查询</div>
+                    </a>
+                </div>
 
                 <div class="weui-panel weui-panel_access">
                     <div id="qz_list2" class="weui-panel__bd">
@@ -64,7 +84,17 @@
             </div>
             <div id="qz_nav3" class="weui-tab__bd-item">
 
-                <#include "/yeweihui/houseSelect.ftl" />
+                <div class="weui-btn-area"  style="display: flex; flex-direction: row; justify-content: space-between;">
+                    <div style="display: flex; flex-direction: row; align-items: center; justify-content: space-between;width: 70vw;">
+                        <#--        <input id="qz_dong" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 15vw;" href="javascript:" value="栋" onfocus="if (value =='栋'){value =''}" onblur="if (value ==''){value='栋'}" />-->
+                        <#--        <input id="qz_danyuan" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="单元" onfocus="if (value =='单元'){value =''}" onblur="if (value ==''){value='单元'}" />-->
+                        <#--        <input id="qz_menpaihao" class="weui-btn" style="background-color: #d1d1d1; margin-top: 0; color: #0d1215; width: 20vw;" href="javascript:" value="门牌号" onfocus="if (value =='门牌号'){value =''}" onblur="if (value ==''){value='门牌号'}" />-->
+                        <input id="qz_searchNum3" class="weui-input" placeholder="请输入门牌号,如:1-1-101" style="background-color: #d1d1d1; height: 5vh;" />
+                    </div>
+                    <a id="qz_btnQZ3" class="weui-btn_primary" style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 10px;" href="javascript:">
+                        <div style="width: 20vw; height: 5vh;line-height:5vh; text-align: center; color: white">查询</div>
+                    </a>
+                </div>
 
                 <div class="weui-panel weui-panel_access">
                     <div id="qz_list3" class="weui-panel__bd">

+ 131 - 47
whepi-ui/templates/yeweihui/qiuzhu.js

@@ -2,71 +2,155 @@ function qiuzhu_init() {
 
   makeUI(taskList);
 
-  $('#btnQZ').on('click', function () {
-    alert("查询");
-  });
+  $('#qz_btnQZ1').on('click', function () {
+
+    $.ajax({
+      url: '/yeweihui/qiuzhu/list.json',
+      type: 'post',
+      data: {
+        houseNumber: $('#qz_searchNum1').val(),
+        status: 1
+      },
+      success: function (data) {
+        makeList1(data.data);
+      },
+      error: function () {
+        $.alert("网络异常");
+      }
+    });
 
-  $("#dong").select({
-    title: "选择楼栋",
-    items: ["法官", "医生", "猎人", "学生", "记者", "其他"]
   });
 
-  $("#danyuan").select({
-    title: "选择单元",
-    items: ["法官", "医生", "猎人", "学生", "记者", "其他"]
+  $('#qz_btnQZ2').on('click', function () {
+
+    $.ajax({
+      url: '/yeweihui/qiuzhu/list.json',
+      type: 'post',
+      data: {
+        houseNumber: $('#qz_searchNum2').val(),
+        status: 2
+      },
+      success: function (data) {
+        makeList2(data.data);
+      },
+      error: function () {
+        $.alert("网络异常");
+      }
+    });
+
   });
 
-  $("#menpaihao").select({
-    title: "选择门牌号",
-    items: ["法官", "医生", "猎人", "学生", "记者", "其他"]
+  $('#qz_btnQZ3').on('click', function () {
+    $.ajax({
+      url: '/yeweihui/qiuzhu/list.json',
+      type: 'post',
+      data: {
+        houseNumber: $('#qz_searchNum3').val(),
+        status: 3
+      },
+      success: function (data) {
+        makeList3(data.data);
+      },
+      error: function () {
+        $.alert("网络异常");
+      }
+    });
   });
 }
 
 function makeUI(tasks) {
 
-  $('#qz_list1').empty();
-  $('#qz_list2').empty();
-  $('#qz_list3').empty();
+  let tasks1 = [];
+  let tasks2 = [];
+  let tasks3 = [];
 
   for (let i = 0; i < tasks.length; i++) {
-
     let task = tasks[i];
     if (task.taskStatus == 1) {
-
-      $('#qz_list1').append($('<a href="javascript:void(0);" class="weui-media-box weui-media-box_appmsg">\n' +
-          '                            <div class="weui-media-box__bd">\n' +
-          '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
-          '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
-          '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
-          '                                </div>\n' +
-          '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
-          '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
-          '                            </div>\n' +
-          '                        </a>'));
+      tasks1.push(task);
     }
     else if (task.taskStatus == 2) {
-      $('#qz_list2').append($('<a href="javascript:void(0);" class="weui-media-box weui-media-box_appmsg">\n' +
-          '                            <div class="weui-media-box__bd">\n' +
-          '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
-          '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
-          '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
-          '                                </div>\n' +
-          '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
-          '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
-          '                            </div>\n' +
-          '                        </a>'));
+      tasks2.push(task);
     }
     else if (task.taskStatus == 3) {
-      $('#qz_list3').append($('<a href="javascript:void(0);" class="weui-media-box weui-media-box_appmsg">\n' +
-          '                            <div class="weui-media-box__bd">\n' +
-          '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
-          '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
-          '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
-          '                                </div>\n' +
-          '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
-          '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
-          '                            </div>\n' +
-          '                        </a>'));
+      tasks3.push(task);
     }
   }
+
+  makeList1(tasks1);
+  makeList2(tasks2);
+  makeList3(tasks3);
+}
+
+function makeList1(tasks) {
+
+  $('#qz_list1').empty();
+  if (tasks.length <= 0) {
+    $('#qz_list1').append('<div class="weui-loadmore weui-loadmore_line">\n' +
+        '    <span class="weui-loadmore__tips">暂无数据</span>\n' +
+        '</div>');
+  }
+  for (let i = 0; i < tasks.length; i++) {
+    let task = tasks[i];
+    $('#qz_list1').append($('<a href="javascript:itemSelect(' + task.taskId + ');" class="weui-media-box weui-media-box_appmsg">\n' +
+        '                            <div class="weui-media-box__bd">\n' +
+        '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
+        '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
+        '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
+        '                                </div>\n' +
+        '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
+        '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
+        '                            </div>\n' +
+        '                        </a>'));
+  }
+}
+
+function makeList2(tasks) {
+
+  $('#qz_list2').empty();
+  if (tasks.length <= 0) {
+    $('#qz_list2').append('<div class="weui-loadmore weui-loadmore_line">\n' +
+        '    <span class="weui-loadmore__tips">暂无数据</span>\n' +
+        '</div>');
+  }
+  for (let i = 0; i < tasks.length; i++) {
+    let task = tasks[i];
+    $('#qz_list2').append($('<a href="javascript:itemSelect(' + task.taskId + ');" class="weui-media-box weui-media-box_appmsg">\n' +
+        '                            <div class="weui-media-box__bd">\n' +
+        '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
+        '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
+        '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
+        '                                </div>\n' +
+        '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
+        '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
+        '                            </div>\n' +
+        '                        </a>'));
+  }
+}
+
+function makeList3(tasks) {
+
+  $('#qz_list3').empty();
+  if (tasks.length <= 0) {
+    $('#qz_list3').append('<div class="weui-loadmore weui-loadmore_line">\n' +
+        '    <span class="weui-loadmore__tips">暂无数据</span>\n' +
+        '</div>');
+  }
+  for (let i = 0; i < tasks.length; i++) {
+    let task = tasks[i];
+    $('#qz_list3').append($('<a href="javascript:itemSelect(' + task.taskId + ');" class="weui-media-box weui-media-box_appmsg">\n' +
+        '                            <div class="weui-media-box__bd">\n' +
+        '                                <div style="display: flex; flex-direction: row; justify-content: space-between;">\n' +
+        '                                    <p class="weui-media-box__desc">' + task.houseNumber + '</p>\n' +
+        '                                    <p class="weui-media-box__desc">' + '2020-02-02 14:30' + '</p>\n' +
+        '                                </div>\n' +
+        '                                <h4 class="weui-media-box__title">' + task.taskTitle + '</h4>\n' +
+        '                                <p class="weui-media-box__desc">' + task.remark + '</p>\n' +
+        '                            </div>\n' +
+        '                        </a>'));
+  }
+}
+
+function itemSelect(taskId) {
+  window.location.href = "/yeweihui/qiuzhudetail.html?taskId=" + taskId;
 }

+ 92 - 0
whepi-ui/templates/yeweihui/qiuzhuDetail.ftl

@@ -0,0 +1,92 @@
+<#assign title="求助详情"/>
+<#include "/home/frag.head.ftl" />
+
+<div class="weui-tab">
+
+    <div class="weui-btn-area">
+
+        <h4 class="weui-media-box__title">求助标题</h4>
+        <p class="weui-media-box__desc">${ task.taskTitle }</p>
+        <br>
+        <h4 class="weui-media-box__title">求助对象</h4>
+        <p class="weui-media-box__desc">${ task.taskTarget }</p>
+        <br>
+        <h4 class="weui-media-box__title">求助内容</h4>
+        <p class="weui-media-box__desc">${ task.remark }</p>
+        <br>
+        <#if task.taskStatus == 1>
+            <div class="weui-btn-area">
+                <a class="weui-btn weui-btn_primary" href="javascript:doTask();">响应</a>
+            </div>
+        </#if>
+        <#if task.taskStatus == 2>
+            <div style="display: flex; justify-content: center;">
+                <h4 class="weui-media-box__title">处理中</h4>
+            </div>
+        </#if>
+        <#if task.taskStatus == 3>
+            <div style="display: flex; justify-content: center;">
+                <h4 class="weui-media-box__title">已处理完成</h4>
+            </div>
+        </#if>
+    </div>
+
+    <div id="qz_showPop" class="weui-popup__container popup-bottom">
+        <div class="weui-popup__overlay"></div>
+        <div class="weui-popup__modal">
+            <div class="weui-btn-area">
+                <div style="display:flex; flex-direction: row; justify-content: space-between;">
+                    <div style="width: 80%;"></div>
+                    <a class="weui-btn weui-btn_primary" style="margin-bottom: 3vh;" href="javascript:close();">关闭</a>
+            </div>
+                <textarea id="qz_content" class="weui-textarea" placeholder="请输入文本" rows="5"></textarea>
+                <a class="weui-btn weui-btn_primary" style="margin-top: 3vh;margin-bottom: 5vh;" href="javascript:send();">提交</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+<#include "/home/frag.foot.ftl" />
+
+<script>
+    var task = ${taskJson};
+
+    (function ($) {
+
+        console.log('详情页' + task);
+
+    })(jQuery);
+
+    function doTask() {
+        $("#qz_showPop").popup();
+    }
+
+    function close() {
+        $.closePopup();
+    }
+
+    function send() {
+
+        let qzcontent = $('#qz_content').val();
+        if (qzcontent.length <= 0){
+            alert("请输入内容");
+            return;
+        }
+
+        $.ajax({
+            url: '/yeweihui/qiuzhu/reply.json',
+            type: 'post',
+            data: {
+                userId: task.userId,
+                taskId: task.taskId,
+                replyContent: qzcontent
+            },
+            success: function (data) {
+                $.closePopup();
+            },
+            error: function () {
+                $.alert("网络异常");
+            }
+        });
+    }
+</script>

+ 6 - 0
whepi-web/src/main/java/com/bofeng/dao/QzTaskDao.java

@@ -3,6 +3,7 @@ package com.bofeng.dao;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.bofeng.entity.QzTask;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -13,4 +14,9 @@ public interface QzTaskDao extends BaseMapper<QzTask> {
 
     List<QzTask> selectAll();
 
+    QzTask queryByTaskId(Long taskId);
+
+    List<QzTask> queryByHouseNumber(@Param("houseNumber") String houseNumber, @Param("status") Integer status);
+
+    Integer updateStatusById(@Param("taskId") Long taskId, @Param("status") Integer status);
 }

+ 12 - 0
whepi-web/src/main/java/com/bofeng/dao/QzTaskReplyDao.java

@@ -0,0 +1,12 @@
+package com.bofeng.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.bofeng.entity.QzTaskReply;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface QzTaskReplyDao extends BaseMapper<QzTaskReply> {
+
+}

+ 55 - 0
whepi-web/src/main/java/com/bofeng/entity/QzTaskReply.java

@@ -0,0 +1,55 @@
+package com.bofeng.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * qz_task_reply
+ * @author 
+ */
+@Data
+public class QzTaskReply implements Serializable {
+    /**
+     * 回复ID
+     */
+    private Long replyId;
+
+    /**
+     * 求助ID
+     */
+    private Long taskId;
+
+    /**
+     * 回复用户ID
+     */
+    private Long userId;
+
+    /**
+     * 回复内容
+     */
+    private String replyContent;
+
+    /**
+     * 新增人
+     */
+    private Long userCreate;
+
+    /**
+     * 新增时间
+     */
+    private Date timeCreate;
+
+    /**
+     * 修改人
+     */
+    private Long userUpdate;
+
+    /**
+     * 修改时间
+     */
+    private Date timeUpdate;
+
+    private static final long serialVersionUID = 1L;
+}

+ 31 - 0
whepi-web/src/main/java/com/bofeng/service/QzTaskReplyService.java

@@ -0,0 +1,31 @@
+package com.bofeng.service;
+
+import com.baomidou.mybatisplus.toolkit.IdWorker;
+import com.bofeng.dao.QzTaskDao;
+import com.bofeng.dao.QzTaskReplyDao;
+import com.bofeng.entity.QzTaskReply;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(readOnly = true)
+public class QzTaskReplyService {
+
+    @Autowired
+    private QzTaskReplyDao qzTaskReplyDao;
+
+    @Autowired
+    private QzTaskDao qzTaskDao;
+
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public Integer insertQzTaskReply(QzTaskReply qzTaskReply) {
+
+        qzTaskDao.updateStatusById(qzTaskReply.getTaskId(), 2);
+
+        qzTaskReply.setReplyId(IdWorker.getId());
+
+        return qzTaskReplyDao.insert(qzTaskReply);
+    }
+}

+ 11 - 0
whepi-web/src/main/java/com/bofeng/service/QzTaskService.java

@@ -4,15 +4,26 @@ import com.bofeng.dao.QzTaskDao;
 import com.bofeng.entity.QzTask;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
 @Service
+@Transactional(readOnly = true)
 public class QzTaskService {
 
     @Autowired
     private QzTaskDao qzTaskDao;
+
     public List<QzTask> selectAll () {
         return qzTaskDao.selectAll();
     }
+
+    public List<QzTask> queryByHouseNumber (String houseNumber, Integer status) {
+        return qzTaskDao.queryByHouseNumber(houseNumber, status);
+    }
+
+    public QzTask queryByTaskId (Long taskId) {
+        return qzTaskDao.queryByTaskId(taskId);
+    }
 }

+ 1 - 1
whepi-web/src/main/java/com/bofeng/wx/controller/HomeController.java

@@ -29,7 +29,7 @@ public class HomeController {
 
     @GetMapping("/home/home.html")
     public ModelAndView home(ModelMap model) {
-        UserOpen userOpen = homeService.getUserOpen();
+//        UserOpen userOpen = homeService.getUserOpen();
         model.put("user", new JsonWapper("{\"www\": \"er\"}"));
         return new ModelAndView("/home/home.ftl", model);
     }

+ 73 - 0
whepi-web/src/main/java/com/bofeng/wx/controller/YeWeiHuiController.java

@@ -1,12 +1,20 @@
 package com.bofeng.wx.controller;
 
 import com.bofeng.entity.QzTask;
+import com.bofeng.entity.QzTaskReply;
+import com.bofeng.service.QzTaskReplyService;
 import com.bofeng.service.QzTaskService;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.collect.Maps;
+import com.yvan.Model;
+import com.yvan.ModelOps;
+import com.yvan.mvc.Pd;
+import com.yvan.platform.JsonWapper;
 import com.yvan.platform.YvanUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.servlet.ModelAndView;
 
@@ -19,6 +27,9 @@ public class YeWeiHuiController {
     @Autowired
     private QzTaskService qzTaskService;
 
+    @Autowired
+    private QzTaskReplyService qzTaskReplyService;
+
     @GetMapping("/yeweihui/home.html")
     public ModelAndView yeweihui(ModelMap model) {
 
@@ -32,4 +43,66 @@ public class YeWeiHuiController {
 
         return new ModelAndView("/yeweihui/home.ftl", model);
     }
+
+    @GetMapping("/yeweihui/qiuzhudetail.html")
+    public ModelAndView qiuzhudetail(@Pd(name = "taskId") Long taskId, ModelMap model) throws JsonProcessingException {
+
+        QzTask task = qzTaskService.queryByTaskId(taskId);
+//        A业委会,B居委会,C物业,D志愿者
+        StringBuffer target = new StringBuffer();
+        if (task.getTaskTarget().equals("A")) {
+            target.append("业委会");
+        }
+        else if (task.getTaskTarget().equals("B")) {
+            if (target.length() > 0) {
+                target.append("、居委会");
+            }
+            else {
+                target.append("居委会");
+            }
+        }
+        else if (task.getTaskTarget().equals("C")) {
+            if (target.length() > 0) {
+                target.append("、物业");
+            }
+            else {
+                target.append("物业");
+            }
+        }
+        else if (task.getTaskTarget().equals("D")) {
+            if (target.length() > 0) {
+                target.append("、志愿者");
+            }
+            else {
+                target.append("志愿者");
+            }
+        }
+
+        task.setTaskTarget(target.toString());
+
+        model.put("taskJson", new JsonWapper(task));
+        model.put("task", task);
+
+        return new ModelAndView("/yeweihui/qiuzhudetail.ftl", model);
+    }
+
+    @PostMapping("/yeweihui/qiuzhu/reply.json")
+    public ModelOps replyQiuzhu(QzTaskReply qzTaskReply) {
+
+        Integer success = qzTaskReplyService.insertQzTaskReply(qzTaskReply);
+
+        if (success > 0) {
+            return ModelOps.newSuccess();
+        }
+        else {
+            return ModelOps.newFail("操作失败");
+        }
+    }
+
+    @PostMapping("/yeweihui/qiuzhu/list.json")
+    public Model queryByHouseNumber(@Pd(name = "houseNumber") String houseNumber, @Pd(name = "status") Integer status) {
+        List<QzTask> list = qzTaskService.queryByHouseNumber(houseNumber, status);
+
+        return Model.newSuccess(list);
+    }
 }

+ 1 - 1
whepi-web/src/main/resources/application.yml

@@ -43,7 +43,7 @@ endpoints:
 #  whitelabel.enabled: false
 
 spring:
-  profiles.active: dev
+  profiles.active: lll
 
   application:
     name: whepi-web

+ 123 - 0
whepi-web/src/main/resources/generator/QzTaskReplyDao.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.bofeng.generator.QzTaskReplyDao">
+  <resultMap id="BaseResultMap" type="com.bofeng.generator.QzTaskReply">
+    <id column="reply_id" jdbcType="BIGINT" property="replyId" />
+    <result column="task_id" jdbcType="BIGINT" property="taskId" />
+    <result column="user_id" jdbcType="BIGINT" property="userId" />
+    <result column="reply_content" jdbcType="VARCHAR" property="replyContent" />
+    <result column="user_create" jdbcType="BIGINT" property="userCreate" />
+    <result column="time_create" jdbcType="TIMESTAMP" property="timeCreate" />
+    <result column="user_update" jdbcType="BIGINT" property="userUpdate" />
+    <result column="time_update" jdbcType="TIMESTAMP" property="timeUpdate" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    reply_id, task_id, user_id, reply_content, user_create, time_create, user_update, 
+    time_update
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from qz_task_reply
+    where reply_id = #{replyId,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    delete from qz_task_reply
+    where reply_id = #{replyId,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" keyColumn="reply_id" keyProperty="replyId" parameterType="com.bofeng.generator.QzTaskReply" useGeneratedKeys="true">
+    insert into qz_task_reply (task_id, user_id, reply_content, 
+      user_create, time_create, user_update, 
+      time_update)
+    values (#{taskId,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{replyContent,jdbcType=VARCHAR}, 
+      #{userCreate,jdbcType=BIGINT}, #{timeCreate,jdbcType=TIMESTAMP}, #{userUpdate,jdbcType=BIGINT}, 
+      #{timeUpdate,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" keyColumn="reply_id" keyProperty="replyId" parameterType="com.bofeng.generator.QzTaskReply" useGeneratedKeys="true">
+    insert into qz_task_reply
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="taskId != null">
+        task_id,
+      </if>
+      <if test="userId != null">
+        user_id,
+      </if>
+      <if test="replyContent != null">
+        reply_content,
+      </if>
+      <if test="userCreate != null">
+        user_create,
+      </if>
+      <if test="timeCreate != null">
+        time_create,
+      </if>
+      <if test="userUpdate != null">
+        user_update,
+      </if>
+      <if test="timeUpdate != null">
+        time_update,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="taskId != null">
+        #{taskId,jdbcType=BIGINT},
+      </if>
+      <if test="userId != null">
+        #{userId,jdbcType=BIGINT},
+      </if>
+      <if test="replyContent != null">
+        #{replyContent,jdbcType=VARCHAR},
+      </if>
+      <if test="userCreate != null">
+        #{userCreate,jdbcType=BIGINT},
+      </if>
+      <if test="timeCreate != null">
+        #{timeCreate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="userUpdate != null">
+        #{userUpdate,jdbcType=BIGINT},
+      </if>
+      <if test="timeUpdate != null">
+        #{timeUpdate,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.bofeng.generator.QzTaskReply">
+    update qz_task_reply
+    <set>
+      <if test="taskId != null">
+        task_id = #{taskId,jdbcType=BIGINT},
+      </if>
+      <if test="userId != null">
+        user_id = #{userId,jdbcType=BIGINT},
+      </if>
+      <if test="replyContent != null">
+        reply_content = #{replyContent,jdbcType=VARCHAR},
+      </if>
+      <if test="userCreate != null">
+        user_create = #{userCreate,jdbcType=BIGINT},
+      </if>
+      <if test="timeCreate != null">
+        time_create = #{timeCreate,jdbcType=TIMESTAMP},
+      </if>
+      <if test="userUpdate != null">
+        user_update = #{userUpdate,jdbcType=BIGINT},
+      </if>
+      <if test="timeUpdate != null">
+        time_update = #{timeUpdate,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where reply_id = #{replyId,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.bofeng.generator.QzTaskReply">
+    update qz_task_reply
+    set task_id = #{taskId,jdbcType=BIGINT},
+      user_id = #{userId,jdbcType=BIGINT},
+      reply_content = #{replyContent,jdbcType=VARCHAR},
+      user_create = #{userCreate,jdbcType=BIGINT},
+      time_create = #{timeCreate,jdbcType=TIMESTAMP},
+      user_update = #{userUpdate,jdbcType=BIGINT},
+      time_update = #{timeUpdate,jdbcType=TIMESTAMP}
+    where reply_id = #{replyId,jdbcType=BIGINT}
+  </update>
+</mapper>

+ 13 - 0
whepi-web/src/main/resources/mapper/QzTaskDao.xml

@@ -4,4 +4,17 @@
   <select id="selectAll" resultType="com.bofeng.entity.QzTask">
     select * from qz_task
   </select>
+
+  <select id="queryByTaskId" resultType="com.bofeng.entity.QzTask">
+    select * from qz_task where task_id=#{taskId}
+  </select>
+
+  <select id="queryByHouseNumber" resultType="com.bofeng.entity.QzTask">
+    select * from qz_task where task_status=#{status} and house_number like concat('%', #{houseNumber}, '%')
+  </select>
+
+  <update id="updateStatusById">
+    update qz_task set task_status=#{status} where task_id=#{taskId}
+  </update>
+
 </mapper>