Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

peiguo před 5 roky
rodič
revize
92533d752a
26 změnil soubory, kde provedl 575 přidání a 173 odebrání
  1. 1 1
      admin-ui/app/whepi/mock/menu5.json
  2. 54 58
      admin-ui/app/whepi/tugou/dialogTugou.js
  3. 128 0
      admin-ui/app/whepi/tugou/import.js
  4. 86 17
      admin-ui/app/whepi/tugou/tugou.js
  5. 13 5
      whepi-doc/group.sql
  6. 2 2
      whepi-ui/templates/home/buy.ftl
  7. 6 2
      whepi-ui/templates/home/buyClient.ftl
  8. 10 10
      whepi-ui/templates/home/ribao.ftl
  9. 23 18
      whepi-ui/templates/home/ribao.js
  10. 4 4
      whepi-web/src/main/java/com/bofeng/controller/WxUserOpenController.java
  11. 3 0
      whepi-web/src/main/java/com/bofeng/dao/JmTuangouDao.java
  12. 2 0
      whepi-web/src/main/java/com/bofeng/dao/UserOpenMapper.java
  13. 4 0
      whepi-web/src/main/java/com/bofeng/entity/Buy.java
  14. 29 0
      whepi-web/src/main/java/com/bofeng/entity/JmTuangou.java
  15. 14 4
      whepi-web/src/main/java/com/bofeng/entity/JmTuangouMember.java
  16. 40 24
      whepi-web/src/main/java/com/bofeng/service/BuyService.java
  17. 41 0
      whepi-web/src/main/java/com/bofeng/service/HomeService.java
  18. 63 15
      whepi-web/src/main/java/com/bofeng/service/JmTuangouService.java
  19. 4 4
      whepi-web/src/main/java/com/bofeng/wx/controller/UserOpenController.java
  20. 24 0
      whepi-web/src/main/java/com/bofeng/wx/controller/YeWeiHuiController.java
  21. 1 1
      whepi-web/src/main/resources/application-lll.yml
  22. 1 1
      whepi-web/src/main/resources/application.yml
  23. 2 2
      whepi-web/src/main/resources/mapper/BuyMapper.xml
  24. 10 4
      whepi-web/src/main/resources/mapper/JmTuangouMapper.xml
  25. 1 1
      whepi-web/src/main/resources/mapper/JmTuangouMemberMapper.xml
  26. 9 0
      whepi-web/src/main/resources/mapper/UserOpen.xml

+ 1 - 1
admin-ui/app/whepi/mock/menu5.json

@@ -4,7 +4,7 @@
   "data": [
     {
       "id": "ENT10001",
-      "text": "团购系统",
+      "text": "资源需求管理",
       "href": "/app/whepi/tugou/tugou.js",
       "iconCls": "icon-blank fa fa-align-justify",
       "state": "close",

+ 54 - 58
admin-ui/app/whepi/tugou/dialogTugou.js

@@ -5,6 +5,7 @@ define(function (require) {
 
     var isLoading = false;
 
+
     function queryGrid1(data) {
       console.log(data);
     }
@@ -72,7 +73,7 @@ define(function (require) {
                 xtype: 'yvselect',
                 name: 'uptownIds',
                 multiple: true,
-                label: '小区',
+                label: '发布小区',
                 data: queryGrid2(),
                 width: 900,
                 height: 35,
@@ -82,62 +83,64 @@ define(function (require) {
                   queryGrid1(data);
                 },
               }],
-            [
-              {
-                name: 'tgTitle',
-                label: '组团标题',
-                required: true,
-                maxlength: 20,
-                readonly: context.isEdit ? true : false,
-                width: 450,
-                height: 35, validType: 'isBlank'
+            [{
+              xtype: 'yvselect',
+              name: 'tgType',
+              label: '需求类型',
+              data: [{id: '1', text: '食蔬采购'}, {id: '2', text: '药品采购'}, {id: '3', text: '医疗服务'}, {
+                id: '4',
+                text: '生活用品'
+              }, {id: '5', text: '其他服务'}],
+              width: 450,
+              height: 35,
+              onChange: function (data) {
+
               },
+            },{
+              name: 'tgPrice',
+              label: '单价',
+              readonly: context.isEdit ? true : false,
+              maxlength: 4, validType: 'integer',
+              width: 450, height: 35,
+            },
               {
-                name: 'tgSupplier', label: '组织者', maxlength: 20,
-                width: 450, height: 35,
-                required: true, value: '指挥部',
-                readonly: true,
-              }],
+                name: 'tgSupplier',
+                label: '指挥者',
+                xtype: 'hidden',
+                value:'指挥者',
+              }
+            ],
             [{
-              name: 'tgGoods', label: '团购套餐',
+              name: 'tgGoods', label: '套餐描述',
               required: true, width: 900, height: 35,
-              maxlength: 50,
+              maxlength: 500,
               readonly: context.isEdit ? true : false,
               height: '100px', multiline: true,
             }],
             [{
-              name: 'tgPrice',
-              label: '单价',
+              name: 'tgMinNum',
+              label: '最低配送',
               readonly: context.isEdit ? true : false,
               maxlength: 4, validType: 'integer',
-              required: true, width: 450, height: 35,
-            },
-              {
-                name: 'tgMinNum',
-                label: '最小起订量',
-                readonly: context.isEdit ? true : false,
-                maxlength: 4, validType: 'integer',
-                required: true, width: 450, height: 35,
-              }],
-            [{
+              width: 450, height: 35,
+            }, {
               name: 'tgMaxNum',
               readonly: context.isEdit ? true : false,
-              label: '最大上限', required: true, validType: 'integer',
+              label: '配送上限', validType: 'integer',
               maxlength: 4, width: 450, height: 35,
-            },
-              {
-                name: 'tgEndTime',
-                label: '团购截止时间',
-                readonly: context.isEdit ? true : false,
-                xtype: 'datetimebox',
-                required: true, width: 450, height: 35,
-              }],
+            }],
             [{
+              name: 'tgEndTime',
+              label: '需求截止时间',
+              readonly: context.isEdit ? true : false,
+              xtype: 'datetimebox',
+              required: true, width: 450, height: 35,
+            }, {
               name: 'tgDeliverTime',
               multiline: true,
               readonly: context.isEdit ? true : false,
               xtype: 'datetimebox',
-              label: '预计送货时间',
+              label: '预计货时间',
               required: true, width: 450, height: 35,
             },
               {
@@ -146,39 +149,31 @@ define(function (require) {
                 readonly: context.isEdit ? true : false,
                 required: true, maxlength: 11,
               }],
-            [{
-              name: 'remark',
-              label: '备注',
-              multiline: true,
-              width: 900,
-              height: '100px',
-              maxlength: 100,
-            }]
           ],
         }
       },
       buttons: [
         {
           text: "保存", iconCls: "fa fa-save", onClick: function () {
-            if (isLoading === true) {
-              return;
-            }
-            else {
-              isLoading = true;
-            }
-            if ($form.formGet().uptownIds.trim() == '') {
+            if ($form.formGet().uptownIds == '') {
               $.yvan.msg('请先选择小区');
               return;
             }
-            if ($form.formGet().tgMinNum > $form.formGet().tgMaxNum) {
+           /* if ($form.formGet().tgMinNum > $form.formGet().tgMaxNum) {
               $.yvan.msg('最大上限必须大于等于最小起订量');
               return;
-            }
+            }*/
             if ($form.formGet().tgEndTime > $form.formGet().tgDeliverTime) {
               $.yvan.msg('团购截止时间必须小于预计送货时间');
               return;
             }
-            console.log($form.formGet())
+            console.log($form.formGet());
+            if (isLoading === true) {
+              return;
+            }
+            else {
+              isLoading = true;
+            }
             $.yvan.postForm($form, {
               url: (context.isEdit ? api('/yeweihui/tgStatus') : api('/yeweihui/tgPublish')),
               success: function (data) {
@@ -201,6 +196,7 @@ define(function (require) {
           }
         }
       ]
-    };
+    }
+      ;
   };
 });

+ 128 - 0
admin-ui/app/whepi/tugou/import.js

@@ -0,0 +1,128 @@
+define(function (require) {
+  return function (context) {
+
+    var $dlg, $grid1, $form;
+
+    // 输入搜索文本后点击回车按钮查询列表
+    function enterQueryGrid1(e) {
+      if (e.keyCode === 13) {
+        var tmp = $(this).val();
+        $form.formSet({queryProperties: tmp});
+        queryGrid1();
+      }
+    }
+
+
+
+    function queryGrid() {
+      $grid1.jqGrid("clearGridData");
+      var queryForm = $form.formGet();
+      $grid1.reload({
+        mtype: 'POST',
+        url: api('/zhihuibu/tgDetail'),
+        queryParams: queryForm
+      }, true);
+    }
+
+    var queryToolbar = {
+      xtype: 'toolbar',
+      title: '需求统计',
+      items: [
+        {
+          text: '查询', iconCls: 'fa fa-search', onClick: function () {
+            queryGrid();
+          }
+        }, {
+          text: '重置', iconCls: 'fa fa-refresh', onClick: function () {
+            $form.formClear();
+            queryGrid();
+          }
+        }, {
+          text: '关闭', iconCls: 'fa fa-times-circle', onClick: function () {
+            $dlg.window('close');
+          }
+        }
+      ]
+    };
+
+    // 搜索条件
+    var queryForm = {
+      onRender: function () {
+        $form = $(this);
+      },
+      xtype: 'form',
+      items: [[
+        {
+          xtype: 'textbox',
+          label: '检索条件',
+          name: 'queryProperties',
+          prompt: '小区',
+          labelWidth: 'auto',
+          events: {keydown: enterQueryGrid1}, width: 350
+        },
+      ]]
+    };
+
+    // 列表2增删改查按钮
+    var gridToolbar2 = {
+      xtype: 'toolbar',
+      title: '需求列表',
+      items: [
+        {
+          text: '导出excel', iconCls: 'fa fa-external-link-square', onClick: function () {
+            $.yvan.download({
+              method: 'get',
+              url: api('/sys/importExcel/errorPeopleInfo'),
+              fileName: '人员基本信息错误数据-' + $.yvan.getMoment().format('YYYY-MM-DD HH:mm:ss') + '.xlsx'
+            });
+          }
+        },
+      ]
+    };
+
+    return {
+      xtype: 'dialog',
+      dialogId: 'dialogimport',
+      title: '',
+      width: '100%',
+      height: '100%',
+      onOpen: function () {
+        $dlg = $(this);
+        queryGrid();
+      },
+      north: {
+        height: 90,
+        split: true,
+        border: false,
+        items: [
+          queryToolbar,
+          queryForm
+        ]
+      },
+      center: {
+        border: false,
+        items: {
+          onRender: function () {
+            $grid1 = $(this);
+          },
+          autoSizeColumns: true,
+          xtype: 'grid',
+          toolbar: gridToolbar2,
+          idField: 'peopleId',
+          columns: [[
+            {field: 'peopleId', hidden: true},
+            {field: 'excelNum', title: '序号', align: "right", maxWidth: 100, },
+            {field: 'peopleCode', title: '小区名称', minWidth: 100, maxWidth: 200},
+            {field: 'name', title: '楼栋', minWidth: 100, maxWidth: 200},
+            {field: 'nativePlace', title: '单元', minWidth: 100, maxWidth: 200},
+            {field: 'birthday', title: '门牌号', minWidth: 100, maxWidth: 200},
+            {field: 'joIdAffiliated', title: '数量', minWidth: 100, maxWidth: 200},
+            {field: 'joIdCode', title: '联系方式', minWidth: 100, maxWidth: 200},
+            {field: 'phone', title: '需求备注', minWidth: 100, maxWidth: 200},
+
+          ]],
+        }
+      }
+    };
+  };
+});

+ 86 - 17
admin-ui/app/whepi/tugou/tugou.js

@@ -26,6 +26,7 @@ define(function (require) {
         return _datas;
       }
 
+
       // 输入搜索文本后点击回车按钮查询列表
       function enterQueryGrid1(e) {
         if (e.keyCode === 13) {
@@ -47,7 +48,7 @@ define(function (require) {
       }
 
       // 搜索按钮
-      var queryToolbarTitle = '团购信息管理';// 自行替换此参数
+      var queryToolbarTitle = '资源需求管理';// 自行替换此参数
       var queryToolbar = {
         xtype: 'toolbar', title: queryToolbarTitle, items: [
           {
@@ -112,7 +113,7 @@ define(function (require) {
         ]]
       };
 
-      var gridToolbarTitle = '团购信息列表';// 自行替换此参数
+      var gridToolbarTitle = '资源需求列表';// 自行替换此参数
       var gridToolbar = {
         xtype: 'toolbar',
         title: gridToolbarTitle,
@@ -130,7 +131,7 @@ define(function (require) {
             }
           },
           {
-            text: '取消', iconCls: 'fa fa-pencil-square-o', onClick: function () {
+            text: '取消', iconCls: 'fa fa-times-circle', onClick: function () {
               var row = $grid1.rowData();
               if (!row) {
                 $.yvan.msg('请先选择一行数据');
@@ -140,17 +141,70 @@ define(function (require) {
                 $.yvan.msg('在团状态才能取消');
                 return;
               }
+              $.yvan.confirm('是否' + "<span style='color: red; font-weight:bold;'>取消</span>" + '[' + (row.tgTitle) + ']吗?', {
+                yes: function (index) {
+                  $.yvan.ajax({
+                    method: 'post',
+                    url: api('/yeweihui/updateStatus'),
+                    data: {
+                      jmId: row.jmId,
+                      tgStatus: 4,
+                    },
+                    success: function (data) {
+                      $.yvan.msg('取消成功');
+                      $grid1.reload();
+                    }
+                  });
+                }
+              });
+            }
+          },
+          {
+            text: '完成', iconCls: 'fa fa-circle-o-notch', onClick: function () {
+              var row = $grid1.rowData();
+              if (!row) {
+                $.yvan.msg('请先选择一行数据');
+                return;
+              }
+              if (row.tgStatus != 1) {
+                $.yvan.msg('在团状态才能完成');
+                return;
+              }
+              $.yvan.confirm('是否' + "<span style='color: green; font-weight:bold;'>发布</span>" + '[' + (row.joName) + ']任务?', {
+                yes: function (index) {
+                  $.yvan.ajax({
+                    method: 'post',
+                    url: api('/yeweihui/updateStatus'),
+                    data: {
+                      jmId: row.jmId,
+                      tgStatus: 2,
+                    },
+                    success: function (data) {
+                      $.yvan.msg('完成');
+                      $grid1.reload();
+                    }
+                  });
+                }
+              });
+            }
+          },
+          {
+            text: '查看需求详情', iconCls: 'fa fa-search', onClick: function () {
+              var row = $grid1.rowData();
+              if (!row) {
+                $.yvan.msg('请先选择一行数据');
+                return;
+              }
               $.yvan.showDialog(this,
-                require('/app/whepi/tugou/dialogTugou.js')({
-                  isEdit: true,
+                require('/app/whepi/tugou/import.js')({
                   jmId: row.jmId,
                   confirm: function () {
                     $grid1.reload();
-                  }
+                  },
                 })
               );
             }
-          }
+          },
         ]
       };
 
@@ -182,13 +236,26 @@ define(function (require) {
                 [
                   [
                     {field: 'jmId', title: '信息id', hidden: true},
-                    {field: 'uptown_id', title: '小区id', maxWidth: 200, align: 'left', hidden: true},
-                    {field: 'uptownName', title: '小区', maxWidth: 200, align: 'left',},
-                    {field: 'tgTitle', title: '组团标题', maxWidth: 200, align: 'left',},
+                    {field: 'tgTitle', title: '标题', maxWidth: 200, align: 'left'},
+                    {
+                      field: 'tgType', title: '需求类型', maxWidth: 200, align: 'left', formatter: function (value) {
+                        if (value == 1) {
+                          return '食蔬采购';
+                        } else if (value == 2) {
+                          return '药品采购';
+                        } else if (value == 3) {
+                          return '医疗服务';
+                        } else if (value == 4) {
+                          return '生活用品';
+                        } else if (value == 5) {
+                          return '其他服务';
+                        }
+                      }
+                    },
                     {field: 'tgSupplier', title: '组织者', maxWidth: 200,},
                     {
                       field: 'tgGoods',
-                      title: '团购套餐', maxWidth: 200,
+                      title: '套餐描述', maxWidth: 200,
                     },
                     {
                       field: 'tgPrice',
@@ -196,25 +263,25 @@ define(function (require) {
                     },
                     {
                       field: 'tgMinNum',
-                      title: '最小起订量',
+                      title: '最低配送(份)',
                       align: 'left',
                     },
                     {
                       field: 'tgMaxNum',
-                      title: '最大上限',
+                      title: '配送上限(份)',
                       align: 'left',
                     },
                     {
                       field: 'tgEndTime',
-                      title: '团购截止时间',
+                      title: '需求截止时间',
                       align: 'center',
                     },
                     {
-                      field: 'tgDeliverTime', title: '预计送时间', align: 'center',
+                      field: 'tgDeliverTime', title: '预计送时间', align: 'center',
                     },
 
-                    {field: 'tgPhoneNumber', title: '联系电话', align: 'center'},
-                    {field: 'remark', title: '备注', maxWidth: 200, align: 'left'},
+                    {field: 'tgPhoneNumber', title: '服务电话', align: 'center'},
+                    /*{field: 'remark', title: '备注', maxWidth: 200, align: 'left'},*/
                     {
                       field: 'tgStatus', title: '状态',
                       align: 'center', formatter: function (value) {
@@ -230,6 +297,8 @@ define(function (require) {
                       },
                     },
                     {field: 'tgStatus', title: '状态', hidden: true},
+                    {field: 'timeCreate', title: '创建时间', align: 'center'},
+                    {field: 'timeUpdate', title: '修改时间', align: 'center'},
                   ]
                 ]
             }

+ 13 - 5
whepi-doc/group.sql

@@ -26,15 +26,15 @@ create table jm_tuangou (
     jm_id           bigint(20)      NOT NULL DEFAULT 0          COMMENT '团购id',
     user_id         bigint(20)      NOT NULL DEFAULT 0          COMMENT '用户id',
     uptown_id       bigint(20)      NOT NULL DEFAULT 0          COMMENT '小区ID',
-    tg_title        varchar(20)     NOT NULL DEFAULT ''         COMMENT '团购标题',
-    tg_supplier     varchar(20)     NOT NULL DEFAULT ''         COMMENT '团购供应商',
-    tg_goods        varchar(50)     NOT NULL DEFAULT ''         COMMENT '团购物资(套餐)',
+    tg_title        varchar(50)     NOT NULL DEFAULT ''         COMMENT '团购标题',
+    tg_supplier     varchar(50)     NOT NULL DEFAULT ''         COMMENT '团购供应商',
+    tg_goods        varchar(500)    NOT NULL DEFAULT ''         COMMENT '团购物资(套餐)',
     tg_price        varchar(20)     NOT NULL DEFAULT ''         COMMENT '价格',
     tg_min_num      int(11)         NOT NULL DEFAULT 0          COMMENT '最低起送',
     tg_end_time     datetime(0)     NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '团购截止时间',
     tg_deliver_time datetime(0)     NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '预计送货时间',
     tg_phone_number varchar(20)     NOT NULL DEFAULT ''         COMMENT '联系人电话',
-    remark          varchar(100)    NOT NULL DEFAULT ''         COMMENT '增补修订',
+    remark          varchar(500)    NOT NULL DEFAULT ''         COMMENT '增补修订',
     tg_status       int(11)         NOT NULL DEFAULT 0          COMMENT '团购状态:1在团,2发货,3完成,4取消',
     PRIMARY KEY (jm_id) USING BTREE,
     INDEX user_id(user_id) USING BTREE,
@@ -46,4 +46,12 @@ COMMENT = '团购表'
 ;
 
 ALTER TABLE jm_tuangou
-ADD  tg_max_num     int(11)         NOT NULL DEFAULT 0          COMMENT '最大订量' AFTER tg_min_num;
+ADD  tg_max_num     int(11)         NOT NULL DEFAULT 0          COMMENT '最大订量' AFTER tg_min_num;
+
+ALTER TABLE jm_tuangou
+ADD  tg_type        int(11)         NOT NULL DEFAULT 0          COMMENT '团购类型' AFTER tg_title,
+ADD  user_create    bigint(20)      NOT NULL DEFAULT 0          COMMENT '新增人',
+ADD  time_create    datetime(0)     NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '新增时间',
+ADD  user_update    bigint(20)      NOT NULL DEFAULT 0          COMMENT '修改人',
+ADD  time_update    datetime(0)     NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间';
+ADD  role_type      int(11)         NOT NULL DEFAULT 0          COMMENT '角色类型  1 业委会角色 2 指挥部' AFTER tg_min_num;

+ 2 - 2
whepi-ui/templates/home/buy.ftl

@@ -103,7 +103,7 @@
             $('#buyAll').append(' <a href="javascript:void(0);" style="color: grey;font-size: large" data-id="form"\n' +
                     '                                             onclick=\'myBuyClick(' + JSON.stringify(v) + ')\'>\n' +
                     '                <div style="display: flex; flex-direction: row; text-align: center; font-size: x-small; line-height: 4vh;">\n' +
-                    '                    <div style="width: 30%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px;text-align: left;">' + v.tgTitle + '</div>\n' +
+                    '                    <div style="width: 30%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px;text-align: left;">' +'【'+v.tgSupplier+'】'+ v.tgTitle + '</div>\n' +
                     '                    <div style="width: 20%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px">\n' + v.count + '/' + v.tgMinNum + '</div>\n' +
                     '                    <div style="width: 35%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px">' + sub(v.tgEndTime) + '</div>\n' +
                     '                    <div style="width: 15%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px">' + getStatus(v.tgStatus) + '</div>\n' +
@@ -143,7 +143,7 @@
         function MybuyList(v) {
             $('#MyBuyAll').append('<a href="javascript:void(0);" style="color: grey;font-size: large" data-id="form" onclick=\'myBuyClick2(' + JSON.stringify(v) + ')\'>\n' +
                     '                        <div style="display: flex; flex-direction: row; text-align: center; font-size: x-small; line-height: 4vh;">\n' +
-                    '                            <div style="width: 33%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px;text-align: left;">' + v.tgTitle + '</div>\n' +
+                    '                            <div style="width: 33%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px;text-align: left;">' +'【'+v.tgSupplier+'】'+ v.tgTitle + '</div>\n' +
                     '                            <div style="width: 33%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px">' + timestampY(v.timeCreate) + '</div>\n' +
                     '                            <div style="width: 33%; overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: 14px">' + getStatus(v.tgStatus) + '</div>\n' +
                     '                        </div>\n' + '                    </a>')

+ 6 - 2
whepi-ui/templates/home/buyClient.ftl

@@ -11,7 +11,7 @@
         <div style="display: inline;margin-top: 1vh;" id="myStatus"></div>
     </div>
 
-    <div class="weui-flex__item">
+    <div class="weui-flex__item" id="tc1">
         <div style="display: inline;align-items: flex-end">剩余套餐(份):</div>
         <div style="display: inline;margin-top: 1vh;" id="tc"></div>
     </div>
@@ -80,7 +80,11 @@
                 $("#Buycount").html(data.data.count);
                 $("#myStatus").html(getStatus(data.data.tgStatus));
                 $("#myPhone").val(data.data.phone);
-                $("#tc").html(data.data.tgMaxNum - data.data.count);
+                if (data.data.roleType == 1) {
+                    $("#tc1").toggle();
+                }else {
+                    $("#tc").html(data.data.tgMaxNum - data.data.count);
+                }
                 if (data.data.myRemark != null)
                     $('#Myremarks').text(data.data.myRemark);
                 if (data.data.buyMoney != null)

+ 10 - 10
whepi-ui/templates/home/ribao.ftl

@@ -124,61 +124,61 @@
                     <input id="suspectedId" type="text" hidden="hidden" value=""/>
                     <div style="height: 5vh; line-height: 5vh;margin-left: 2vw;">病情描述</div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">确诊新冠肺炎</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">确诊新冠肺炎</div>
                         <input id="switchQuezhen" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">单间隔离</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">单间隔离</div>
                         <input id="switchDanjiangeli" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
 
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">体温</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">体温</div>
                         <input id="js_input_user_tiwen" class="weui-input" autofocus="" type="number" placeholder="请输入"
                                maxlength="4"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">咳嗽现象</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">咳嗽现象</div>
                         <input id="js_input_user_kesou" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh;line-height: 5vh; width: 35%;">肌肉酸痛</div>
+                        <div style="color: gray;height: 5vh;line-height: 5vh; width: 55%;">肌肉酸痛</div>
                         <input id="js_input_user_jirou" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh;line-height: 5vh; width: 35%;">呼吸困难</div>
+                        <div style="color: gray;height: 5vh;line-height: 5vh; width: 55%;">呼吸困难</div>
                         <input id="js_input_user_huxi" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">乏力现象</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">乏力现象</div>
                         <input id="js_input_user_fali" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 35%;">腹泻现象</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh; width: 55%;">腹泻现象</div>
                         <input id="js_input_user_fuxie" class="weui-input" autofocus="" type="text" placeholder="请选择"
                                maxlength="20"
                                style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; height: 5vh;"/>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh;width: 35%;">其他描述</div>
+                        <div style="color: gray;height: 5vh; line-height: 5vh;width: 55%;">其他描述</div>
                         <textarea id="shuruqita" class="weui-textarea" placeholder="输入内容(300字内)" rows="5"
                                   style="border: 1px solid rgba(0,0,0,.2);box-sizing:border-box; border-radius: 5px; margin-top: 1vh;"></textarea>
                     </div>
                     <div style="display:flex; flex-direction: row; justify-content: space-between; margin-top: 1vh;">
-                        <div style="color: gray;height: 5vh; line-height: 5vh;width: 35%;">
+                        <div style="color: gray;height: 5vh; line-height: 5vh;width: 55%;">
                             <button id="ribao_score" style="height:5vh;"
                                     class="weui-btn weui-btn_mini weui-btn_primary">健康评估
                             </button>

+ 23 - 18
whepi-ui/templates/home/ribao.js

@@ -298,7 +298,7 @@ function ribao_cell(v) {
     diarrhea = "腹泻现象:" + getDiarrhea(v.diarrhea) + ";";
   var others = "";
   if (v.others != "")
-    others = "其他描述:" + v.others+ ";";
+    others = "其他描述:" + v.others + ";";
   var scoreRezult = "";
   if (v.scoreRezult != 0)
     scoreRezult = "评估结果:" + getScoreRezult(v.scoreRezult, v.temperatureScore) + ";";
@@ -383,7 +383,7 @@ function ribaoCommit() {
     return;
   }
   //男性不能选择妊娠期
-  if ( $("#js_input_user_sex").attr("data-values")==1 && $("input[name='checkbox7']:checked").val() == "on") {
+  if ($("#js_input_user_sex").attr("data-values") == 1 && $("input[name='checkbox7']:checked").val() == "on") {
     $.alert("男性不能选择妊娠期");
     return;
   }
@@ -631,7 +631,8 @@ function addReport() {
     },
     success: function (data) {
       $.toast(data.msg);
-      document.getElementById("btn_shangbao").style['background-color'] = "#D9D9D9";
+      if (data.msg == "操作成功")
+        document.getElementById("btn_shangbao").style['background-color'] = "#D9D9D9";
     },
   });
 }
@@ -726,21 +727,25 @@ function getGreder(greder) {
 
 function getFamilyStatus(familyStatus) {
   var familyStatusList = familyStatus.split(",");
-  var familyStatusString = "无病史,";
-  if (familyStatusList[0] == 1)
-    familyStatusString += "心脑血管疾病(服用ARB),";
-  if (familyStatusList[1] == 1)
-    familyStatusString += "心脑血管疾病(未服ARB),";
-  if (familyStatusList[2] == 1)
-    familyStatusString += "呼吸系统病史,";
-  if (familyStatusList[3] == 1)
-    familyStatusString += "肿瘤病史,";
-  if (familyStatusList[4] == 1)
-    familyStatusString += "糖尿病史,";
-  if (familyStatusList[5] == 1)
-    familyStatusString += "服用过激素药物,";
-  if (familyStatusList[6] == 1)
-    familyStatusString += "妊娠期,";
+  var familyStatusString = "";
+  if (familyStatus == '0,0,0,0,0,0,0')
+    familyStatusString += "无病史,";
+  else {
+    if (familyStatusList[0] == 1)
+      familyStatusString += "心脑血管疾病(服用ARB),";
+    if (familyStatusList[1] == 1)
+      familyStatusString += "心脑血管疾病(未服ARB),";
+    if (familyStatusList[2] == 1)
+      familyStatusString += "呼吸系统病史,";
+    if (familyStatusList[3] == 1)
+      familyStatusString += "肿瘤病史,";
+    if (familyStatusList[4] == 1)
+      familyStatusString += "糖尿病史,";
+    if (familyStatusList[5] == 1)
+      familyStatusString += "服用过激素药物,";
+    if (familyStatusList[6] == 1)
+      familyStatusString += "妊娠期,";
+  }
   return familyStatusString.substring(0, familyStatusString.length - 1);
 }
 

+ 4 - 4
whepi-web/src/main/java/com/bofeng/controller/WxUserOpenController.java

@@ -33,14 +33,14 @@ public class WxUserOpenController {
     private WxUserOpenService wxUserOpenService;
 
     @GetMapping("/userOpen/loginTest")
-    public Model<UserOpen> loginTest() {
+    public Model<UserOpen> loginTest() throws Exception {
         val parser = HttpParameterParser.newInstance(HttpUtils.currentRequest());
         String openId = parser.getString("openId");
         String code = parser.getString("code");
         if (StringUtils.isNullOrEmpty(code)) {
             return Model.newFail("code为空");
         }
-        UserOpen userOpen = homeService.getUserOpenByCode(code);
+        UserOpen userOpen = homeService.getUserOpenByCodeForWx(code);
         if (userOpen == null) {
             return Model.newFail("微信登录失败");
         }
@@ -54,7 +54,7 @@ public class WxUserOpenController {
 
     @ApiOperation("用户注册页面点登录")
     @PostMapping("/userOpen/login")
-    public Model<UserOpen> login(JsonWapper jsonWapper) {
+    public Model<UserOpen> login(JsonWapper jsonWapper) throws Exception {
         val parser = HttpParameterParser.newInstance(HttpUtils.currentRequest());
         String openId = parser.getString("openId");
         String code = parser.getString("code");
@@ -69,7 +69,7 @@ public class WxUserOpenController {
                 return Model.newFail("code为空");
             }
         }
-        UserOpen userOpen = homeService.getUserOpenByCode(code);
+        UserOpen userOpen = homeService.getUserOpenByCodeForWx(code);
         if (userOpen == null) {
             return Model.newFail("微信登录失败");
         }

+ 3 - 0
whepi-web/src/main/java/com/bofeng/dao/JmTuangouDao.java

@@ -38,4 +38,7 @@ public interface JmTuangouDao extends BaseMapper<JmTuangou> {
   JmTuangou selectByUserId();
 
   JmTuangou getSelectOne(@Param("jmId") Long jmId);
+
+  JmTuangou getSelectOneRoleId(@Param("jmId") Long jmId);
+
 }

+ 2 - 0
whepi-web/src/main/java/com/bofeng/dao/UserOpenMapper.java

@@ -29,4 +29,6 @@ public interface UserOpenMapper extends BaseMapper<UserOpen> {
             "select user_id as userId, open_id as openId, nick_name as nickName from sys_user_open limit #{start}, #{count}"
     )
     List<UserOpen> getOpenUser(@Param("start") Long start, @Param("count") Long count);
+
+    List<UserOpen> getUsersByUptownId(@Param("uptownId") Long uptownId);
 }

+ 4 - 0
whepi-web/src/main/java/com/bofeng/entity/Buy.java

@@ -54,5 +54,9 @@ public class Buy {
   private String tgPrice;
   @TableField(exist = false)
   private Integer tgMaxNum;
+  @TableField(exist = false)
+  private String tgSupplier;
+  @TableField(exist = false)
+  private Integer roleType;
 
 }

+ 29 - 0
whepi-web/src/main/java/com/bofeng/entity/JmTuangou.java

@@ -34,6 +34,11 @@ public class JmTuangou implements Serializable {
     private String tgTitle;
 
     /**
+     * 团购标题
+     */
+    private Integer tgType;
+
+    /**
      * 团购供应商
      */
     private String tgSupplier;
@@ -84,6 +89,8 @@ public class JmTuangou implements Serializable {
     @TableField(exist = false)
     private String deliverTime;
 
+    private Integer roleType;
+
     /**
      * 联系人电话
      */
@@ -101,5 +108,27 @@ public class JmTuangou implements Serializable {
 
     private Integer count;
 
+    /**
+     * 新增人
+     */
+    private Long userCreate;
+
+    /**
+     * 新增时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date timeCreate;
+
+    /**
+     * 修改人
+     */
+    private Long userUpdate;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date timeUpdate;
+
     private static final long serialVersionUID = 1L;
 }

+ 14 - 4
whepi-web/src/main/java/com/bofeng/entity/JmTuangouMember.java

@@ -36,9 +36,9 @@ public class JmTuangouMember {
     @ExcelProperty(value = "最低起送", index = 4)
     private Integer tgMinNum;
     /**
-     * 最大订量
+     * 配送上限
      */
-    @ExcelProperty(value = "最大订量", index = 5)
+    @ExcelProperty(value = "配送上限", index = 5)
     private Integer tgMaxNum;
     /**
      * 小区名称
@@ -66,14 +66,24 @@ public class JmTuangouMember {
     @ExcelProperty(value = "参团数量", index = 10)
     private Integer buyCount;
     /**
+     * 应付款
+     */
+    @ExcelProperty(value = "应付款", index = 11)
+    private Integer buyMoney;
+    /**
+     * 已付款
+     */
+    @ExcelProperty(value = "已付款", index = 12)
+    private Integer payMoney;
+    /**
      * 联系方式
      */
-    @ExcelProperty(value = "联系方式", index = 11)
+    @ExcelProperty(value = "联系方式", index = 13)
     private String phone;
     /**
      * 备注
      */
-    @ExcelProperty(value = "备注", index = 12)
+    @ExcelProperty(value = "备注", index = 14)
     private String myRemark;
 
     private Integer uptownId;

+ 40 - 24
whepi-web/src/main/java/com/bofeng/service/BuyService.java

@@ -27,21 +27,31 @@ public class BuyService {
   @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
   public int buyGroup(Buy buy) {
     Buy buy1 = buyMapper.selectBuyOne(buy.getUserId(), buy.getJmId());
+    JmTuangou roleType = jmTuangouDao.getSelectOneRoleId(buy.getJmId());
     if (buy1 != null) {
       JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy1.getJmId());
       Buy buy2 = buyMapper.selectById(buy1.getBuyId());
-      if (jmTuangou.getTgMaxNum().intValue() >= jmTuangou.getCurrentNum().intValue() - buy2.getBuyCount().intValue() + buy.getBuyCount().intValue()) {
+      if (roleType.getRoleType() != 1) {
+        if (jmTuangou.getTgMaxNum().intValue() >= jmTuangou.getCurrentNum().intValue() - buy2.getBuyCount().intValue() + buy.getBuyCount().intValue()) {
+          buy.setBuyId(buy1.getBuyId());
+          return buyMapper.updateById(buy);
+        } else {
+          return 3;//不允许更改团购数量
+        }
+      } else {
         buy.setBuyId(buy1.getBuyId());
         return buyMapper.updateById(buy);
-      } else {
-        return 3;//不允许更改团购数量
       }
     }
-    //第一次购买团购数量大于最大上限数量不允许
-    JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy.getJmId());
-    if (jmTuangou.getTgMaxNum().intValue() < buy.getBuyCount().intValue()) {
-      return 3;
+    //1 是指挥部
+    if (roleType.getRoleType() != 1) {
+      //第一次购买团购数量大于最大上限数量不允许
+      JmTuangou jmTuangou = jmTuangouDao.selectJmTuangouByJmId(buy.getJmId());
+      if (jmTuangou.getTgMaxNum().intValue() < jmTuangou.getCurrentNum().intValue() + buy.getBuyCount().intValue()) {
+        return 3;
+      }
     }
+
     buy.setBuyId(IdWorker.getId());
     buy.setUserCreate(buy.getUserId());
     buy.setTimeCreate(new DateTime());
@@ -94,29 +104,35 @@ public class BuyService {
     List<JmTuangou> jmTuangous = jmTuangouDao.selectAll();
     if (jmTuangous != null && jmTuangous.size() > 0) {
       for (JmTuangou list : jmTuangous) {
-        // 团购数量  最小起订量
-        Buy buy = buyMapper.selectCountNum(list.getJmId());
-        //已经到截止时间
-        if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
-
-          if (buy != null) { //最小起订量
-            if (list.getTgMinNum().intValue() > buy.getCount().intValue()) {
-              jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
+        //判断是指挥部还是管理员
+        if (list.getRoleType()==1) {
+          if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
+            jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
+          }
+        } else {
+          // 团购数量  最小起订量
+          Buy buy = buyMapper.selectCountNum(list.getJmId());
+          //已经到截止时间
+          if (list.getTgEndTime().getTime() < new DateTime().getMillis()) {
+
+            if (buy != null) { //最小起订量
+              if (list.getTgMinNum().longValue() > buy.getCount().longValue()) {
+                jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
+              } else {
+                jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
+              }
             } else {
-              jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
+              jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
             }
           } else {
-            jmTuangouDao.updateStatusByJmId(list.getJmId(), 4L);//取消
-          }
-        } else {
-          //团购数量已经过了最大起订量的 就直接发货
-          if (buy != null) {
-            if (list.getTgMaxNum().intValue() == buy.getCount().intValue()) {
-              jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
+            //团购数量已经过了最大起订量的 就直接发货
+            if (buy != null) {
+              if (list.getTgMaxNum().intValue() == buy.getCount().intValue()) {
+                jmTuangouDao.updateStatusByJmId(list.getJmId(), 2L);//发货
+              }
             }
           }
         }
-
       }
     }
     return 1;

+ 41 - 0
whepi-web/src/main/java/com/bofeng/service/HomeService.java

@@ -90,4 +90,45 @@ public class HomeService {
         }
         return user;
     }
+
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public UserOpen getUserOpenByCodeForWx(String code) throws Exception {
+        ParseCurrentOpenId wxToken = userService.currentWxUserByCode(code);
+        if (wxToken == null || wxToken.getWxMpUser() == null) {
+            throw new Exception("token获取失败!");
+        }
+        WxMpUser wxMpUser = wxToken.getWxMpUser();
+        if (wxMpUser == null) {
+            throw new Exception("微信用户信息获取失败!");
+        }
+        UserOpen user = userOpenMapper.selectByOpenId(wxMpUser.getOpenId());
+        if (user == null) {
+            // 账户没有注册,需要注册
+            UserOpen userOpen = new UserOpen();
+            userOpen.setUserId(IdWorker.getId());
+            userOpen.setOpenId(wxMpUser.getOpenId());
+            userOpen.setNickName(wxMpUser.getNickname());
+            userOpen.setSexDesc(wxMpUser.getSexDesc());
+            userOpen.setSex(wxMpUser.getSex());
+            userOpen.setCity(wxMpUser.getCity());
+            userOpen.setProvince(wxMpUser.getProvince());
+            userOpen.setCountry(wxMpUser.getCountry());
+            userOpen.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+            userOpen.setBeActive("Y");
+            userOpenMapper.insert(userOpen);
+            return userOpen;
+        }
+        if (!user.getNickName().equals(wxMpUser.getNickname())) {
+            user.setOpenId(wxMpUser.getOpenId());
+            user.setNickName(wxMpUser.getNickname());
+            user.setSexDesc(wxMpUser.getSexDesc());
+            user.setSex(wxMpUser.getSex());
+            user.setCity(wxMpUser.getCity());
+            user.setProvince(wxMpUser.getProvince());
+            user.setCountry(wxMpUser.getCountry());
+            user.setHeadImgUrl(wxMpUser.getHeadImgUrl());
+            userOpenMapper.updateById(user);
+        }
+        return user;
+    }
 }

+ 63 - 15
whepi-web/src/main/java/com/bofeng/service/JmTuangouService.java

@@ -3,9 +3,11 @@ package com.bofeng.service;
 import com.baomidou.mybatisplus.toolkit.IdWorker;
 import com.bofeng.JwtHelper;
 import com.bofeng.dao.JmTuangouDao;
+import com.bofeng.dao.UserOpenMapper;
 import com.bofeng.dao.YeweihuiSysOwnerMapper;
 import com.bofeng.dao.YeweihuiUserRoleMapper;
 import com.bofeng.entity.JmTuangou;
+import com.bofeng.entity.UserOpen;
 import com.yvan.PageDb;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -34,6 +37,12 @@ public class JmTuangouService {
   @Autowired
   private YeweihuiSysOwnerMapper yeweihuiSysOwnerMapper;
 
+  @Autowired
+  private EpiTemplateMessageService epiTemplateMessageService;
+
+  @Autowired
+  private UserOpenMapper userOpenMapper;
+
   @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
   public Integer tuangouPublish(JmTuangou jmTuangou) {
 
@@ -59,12 +68,28 @@ public class JmTuangouService {
     jmTuangou.setTgEndTime(tgEndTime);
     jmTuangou.setTgDeliverTime(tgDeliverTime);
 
-    return jmTuangouDao.insert(jmTuangou);
+    jmTuangou.setUserCreate(jmTuangou.getUserId());
+    jmTuangou.setTimeCreate(new Date());
+    jmTuangou.setUserUpdate(jmTuangou.getUserId());
+    jmTuangou.setTimeUpdate(new Date());
+
+    Integer success = jmTuangouDao.insert(jmTuangou);
+
+    if (success == 1) {
+      List<UserOpen> userList = userOpenMapper.getUsersByUptownId(uptownId);
+      for (UserOpen user : userList) {
+        epiTemplateMessageService.tuangouSendRemindMessage(user.getUserId(), user.getOpenId(), tgEndTime);
+      }
+    }
+
+    return success;
   }
 
   @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
   public Integer whepiTuangouPublish(String uptownIds, JmTuangou jmTuangou) {
-
+    Calendar cal = Calendar.getInstance();
+    int moth = cal.get(Calendar.MONTH) + 1;
+    int date = cal.get(Calendar.DAY_OF_MONTH);
     Integer success = 0;
     List<String> uptownIdArray = Arrays.asList(uptownIds.split(","));
     for (String uptownId : uptownIdArray) {
@@ -74,23 +99,32 @@ public class JmTuangouService {
       jmTuangou.setUptownId(Long.parseLong(uptownId));
 
       jmTuangou.setTgStatus(1);
+      jmTuangou.setRoleType(1);
+      jmTuangou.setUserUpdate(JwtHelper.getUserId());
+
+      if (jmTuangou.getTgType() == 1) {
+        jmTuangou.setTgTitle("食蔬采购需求统计(指挥部" + moth + "月" + date + "日)");
 
-            /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+      } else if (jmTuangou.getTgType() == 2) {
+        jmTuangou.setTgTitle("药品采购需求统计((指挥部" + moth + "月" + date + "日)");
 
-            Date tgEndTime = new Date();
-            Date tgDeliverTime = new Date();
-            try {
-                tgEndTime = sdf.parse(jmTuangou.getEndTime());
-                tgDeliverTime = sdf.parse(jmTuangou.getDeliverTime());
-            }
-            catch (ParseException e) {
-                e.printStackTrace();
-            }
+      } else if (jmTuangou.getTgType() == 3) {
+        jmTuangou.setTgTitle("医疗服务需求统计((指挥部" + moth + "月" + date + "日)");
 
-            jmTuangou.setTgEndTime(jmTuangou.gettgEndTime);
-            jmTuangou.setTgDeliverTime(tgDeliverTime);*/
+      } else if (jmTuangou.getTgType() == 4) {
+        jmTuangou.setTgTitle("生活用品需求统计((指挥部" + moth + "月" + date + "日)");
+      } else if (jmTuangou.getTgType() == 5) {
+        jmTuangou.setTgTitle("其他服务需求统计((指挥部" + moth + "月" + date + "日)");
+
+      }
       jmTuangou.setUserId(JwtHelper.getUserId());
       success = jmTuangouDao.insert(jmTuangou);
+      if (success == 1) {
+        List<UserOpen> userList = userOpenMapper.getUsersByUptownId(Long.parseLong(uptownId));
+        for (UserOpen user : userList) {
+          epiTemplateMessageService.tuangouSendRemindMessage(user.getUserId(), user.getOpenId(), jmTuangou.getTgEndTime());
+        }
+      }
     }
     return success;
   }
@@ -147,11 +181,25 @@ public class JmTuangouService {
     return jmTuangouDao.updateStatusRemarkByJmId(jmId, status, remark);
   }
 
+  @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
   public JmTuangou selectByUserId() {
+    buyService.updateStatus();
     return jmTuangouDao.selectByUserId();
   }
 
-  public JmTuangou getSelectOne(Long jmId){
+  @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+  public JmTuangou getSelectOne(Long jmId) {
+    buyService.updateStatus();
     return jmTuangouDao.getSelectOne(jmId);
   }
+
+  @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+  public Integer zhihuibuUpdateStatus(Long jmId, Long status) {
+    return jmTuangouDao.updateStatusByJmId(jmId, status);
+  }
+
+  @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+  public int updateStatus(Long jmId,Long tgStatus){
+    return jmTuangouDao.updateStatusByJmId(jmId,tgStatus);
+  }
 }

+ 4 - 4
whepi-web/src/main/java/com/bofeng/wx/controller/UserOpenController.java

@@ -65,10 +65,10 @@ public class UserOpenController {
                              @RequestParam(value = "userType", required = false, defaultValue = "0") Integer userType) throws JsonProcessingException {
         List<UserRole> list = new ArrayList<>();
         if (userId == 0) {
-            UserOpen userOpen = homeService.getUserOpen();
-            list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
-            /*list = userRoleMapper.getUserRoleByUserId(1225321682867105793L);
-            UserOpen userOpen = userOpenMapper.selectByUserId(1225321682867105793L);*/
+           /* UserOpen userOpen = homeService.getUserOpen();
+            list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());*/
+            list = userRoleMapper.getUserRoleByUserId(1225321682867105793L);
+            UserOpen userOpen = userOpenMapper.selectByUserId(1225321682867105793L);
             userId = userOpen.getUserId();
             model.put("user", userOpen);
             model.put("user_id", "\"" + userOpen.getUserId() + "\"");

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

@@ -417,4 +417,28 @@ public class YeWeiHuiController {
   public Model<JmTuangou> getSelectOne(@Pd(name = "jmId")Long jmId){
     return Model.newSuccess(jmTuangouService.getSelectOne(jmId));
   }
+
+  @PostMapping("/whepi/zhihuibu/updateStatus")
+  public Model zhihuibuUpdateStatus(@Pd(name = "jmId") Long jmId, @Pd(name = "status", required = false, defaultValue = "0") Long status) {
+
+    Integer success = jmTuangouService.zhihuibuUpdateStatus(jmId, status);
+
+    if (success == 1) {
+      return Model.newSuccess("操作成功");
+    } else {
+      return Model.newFail("操作失败");
+    }
+  }
+
+  @PostMapping("/whepi/zhihuibu/tgDetail")
+  public Model groupBuyingXx(@Pd(name = "jmId") Long jmId) {
+    List<JmTuangouMember> members = jmTuangouMemberService.querMemberListByJmId(jmId);
+    return Model.newSuccess(members);
+  }
+
+
+  @PostMapping("/whepi/yeweihui/updateStatus")
+  public ModelOps updateStatus(@Pd(name = "jmId") Long jmId,@Pd(name = "tgStatus") Long tgStatus){
+    return ModelOps.newSuccess(jmTuangouService.updateStatus(jmId,tgStatus));
+  }
 }

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

@@ -57,7 +57,7 @@ yvan:
       结账信息: '5t4LSW4cb7j4mcHxoYyzTvLHnp2gehpxn1faf7G4ABs'
       结算信息: 'GoZBKvyqAfP8uM3xrJk40YHhMoM_E44aPLEoKV_1-pQ'
       每日提醒: 'yJDr5rSc9q9OkX-wuchH4N_msKcnA1zXgjEA3XXxKbs'
-      系统提醒: 'jZknynqXHF2lOuUKQtXwMsbLE3wvLCyM10sikJ957LY'
+      系统提醒: 'BtF6CRrIAHxx7LEJoVmoCWePqqlK_KSzikbL8aCO8yw'
     #  round_out_template_id: 'xpQJsBwlhZ5r7P7Glur8hiNl1IgjQxtMGTVwdVOfGKg'
     #  round_in_template_id: 'oobiXKFatguG1H7K-HPi2lipzF-Qv0pMY12e1JaQxdA'
 

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

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

+ 2 - 2
whepi-web/src/main/resources/mapper/BuyMapper.xml

@@ -19,7 +19,7 @@
     </select>
 
     <select id="MyGroup" resultType="com.bofeng.entity.Buy">
-        select DISTINCT a.tg_title,b.time_create,a.tg_status,a.jm_id,b.buy_status,b.buy_id
+        select DISTINCT a.tg_title,b.time_create,a.tg_status,a.jm_id,b.buy_status,b.buy_id,a.tg_supplier
         from  jm_tuangou a
         INNER JOIN jm_buy b on a.jm_id=b.jm_id
         where b.user_id=#{userId} and buy_status=1
@@ -32,7 +32,7 @@
     </select>
 
     <select id="status" resultType="com.bofeng.entity.Buy">
-       SELECT a.tg_status, a.tg_price,a.tg_max_num,b.buy_count,b.buy_money,b.my_remark,
+       SELECT a.tg_status, a.tg_price,a.tg_max_num,b.buy_count,b.buy_money,b.my_remark,a.role_type,
        IFNULL(( SELECT SUM(b.buy_count)
        FROM jm_buy b WHERE a.jm_id = b.jm_id AND buy_status = 1 ), 0 ) AS count,
        ( SELECT phone FROM sys_user_role aa

+ 10 - 4
whepi-web/src/main/resources/mapper/JmTuangouMapper.xml

@@ -58,15 +58,15 @@
     </select>
 
     <update id="updateRemarkByJmId">
-        update jm_tuangou set remark=#{remark} where jm_id=#{JmId}
+        update jm_tuangou set remark=#{remark}, time_update=now() where jm_id=#{JmId}
     </update>
 
     <update id="updateStatusByJmId">
-        update jm_tuangou set tg_status=#{status} where jm_id=#{JmId}
+        update jm_tuangou set tg_status=#{status}, time_update=now() where jm_id=#{JmId}
     </update>
 
     <update id="updateStatusRemarkByJmId">
-        update jm_tuangou set tg_status=#{status},remark=#{remark} where jm_id=#{JmId}
+        update jm_tuangou set tg_status=#{status},remark=#{remark}, time_update=now() where jm_id=#{JmId}
     </update>
 
     <select id="selectAll" resultType="com.bofeng.entity.JmTuangou">
@@ -75,7 +75,7 @@
 
     <update id="updateAll">
         <foreach collection="tg" item="item" index="index" separator=";">
-            update jm_tuangou set tg_status=#{item.tgStatus} where jm_id=#{item.jmId}
+            update jm_tuangou set tg_status=#{item.tgStatus}, time_update=now() where jm_id=#{item.jmId}
         </foreach>
     </update>
 
@@ -86,4 +86,10 @@
     <select id="getSelectOne" resultType="com.bofeng.entity.JmTuangou">
         select *,uptown_id as uptownIds from jm_tuangou where jm_id=#{jmId}
     </select>
+
+    <select id="getSelectOneRoleId" resultType="com.bofeng.entity.JmTuangou">
+        select * from jm_tuangou where jm_id=#{jmId}
+    </select>
+
+
 </mapper>

+ 1 - 1
whepi-web/src/main/resources/mapper/JmTuangouMemberMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.bofeng.dao.JmTuangouMemberDao">
 
     <select id="querMemberListByJmId" resultType="com.bofeng.entity.JmTuangouMember">
-        select a.user_id,a.buy_count,a.phone, a.my_remark, y.houseNumber, y.ridgepole, y.unit, y.uptown_id, y.uptown_name, z.tg_title, z.tg_supplier, z.tg_goods, z.tg_price, z.tg_min_num, z.tg_max_num from jm_buy a
+        select a.user_id,a.buy_count, a.buy_money, a.phone, a.my_remark, y.houseNumber, y.ridgepole, y.unit, y.uptown_id, y.uptown_name, z.tg_title, z.tg_supplier, z.tg_goods, z.tg_price, z.tg_min_num, z.tg_max_num from jm_buy a
            LEFT JOIN
        (
            select a.user_id, b.house_id, b.doorplate as houseNumber, c.uptown_id, c.ridgepole, c.unit, u.uptown_name

+ 9 - 0
whepi-web/src/main/resources/mapper/UserOpen.xml

@@ -19,4 +19,13 @@
     <select id="getAllUser" resultType="com.bofeng.entity.UserOpen">
         select * from sys_user_open
     </select>
+
+    <select id="getUsersByUptownId" resultType="com.bofeng.entity.UserOpen">
+        select uo.*,uu.unit,uu.uptown_id from sys_user_open uo
+          inner join sys_user_role ur on ur.user_id = uo.user_id and ur.role_id = 1
+          inner join sys_uptown_house uh on uh.house_id = ur.property_id
+          inner join sys_uptown_unit uu on uu.unit_id = uh.unit_id
+          inner join sys_uptown u on u.uptown_id = uu.uptown_id
+        where u.uptown_id = #{uptownId}
+    </select>
 </mapper>