瀏覽代碼

修改发布版本的限制逻辑

caiaolin 8 年之前
父節點
當前提交
5e7b2398e2

+ 1 - 1
modules/common/base/base_model.js

@@ -115,7 +115,7 @@ class BaseModel {
     /**
      * 更新数据
      *
-     * @param {Number} id
+     * @param {Number|String} id
      * @param {Object} updateData
      * @return {Promise}
      */

+ 10 - 8
modules/users/controllers/version_controller.js

@@ -252,26 +252,28 @@ class VersionController extends BaseController {
      * @return {void}
      */
     async release(request, response) {
-        let id = request.params.id;
-        let release = request.params.release;
+        let id = request.body.id;
+        let release = request.body.status;
         release = parseInt(release);
 
+        let responseData = {
+            err: 0,
+            msg: ''
+        };
         try {
             let versionModel = new VersionModel();
-            let updateData = {
-                is_release: release === 1,
-                release_time: new Date().getTime()
-            };
-            let result = await versionModel.updateById(id, updateData);
+            let result = await versionModel.release(id, release);
 
             if (!result) {
                 throw '发布版本失败';
             }
         } catch (error) {
             console.log(error);
+            responseData.err = 1;
+            responseData.msg = error;
         }
 
-        response.redirect(request.headers.referer);
+        response.json(responseData);
     }
 
     /**

+ 38 - 0
modules/users/models/version_model.js

@@ -253,6 +253,44 @@ class VersionModel extends BaseModel {
         return result !== null && result.ok === 1;
     }
 
+    /**
+     * 发布版本
+     *
+     * @param {String} id
+     * @param {Number} status
+     * @return {Promise}
+     */
+    async release(id, status) {
+        // 如果是发布版本则需要判断配置的内容是否满足发布条件
+        if (status) {
+            let versionData = await this.findDataByCondition({_id: id});
+            // 最少需要有一个计价规则存在
+            if (versionData.bill_valuation.length <= 0 && versionData.ration_valuation.length <= 0) {
+                throw '至少需要一个计价规则';
+            }
+
+            // 判断是否全部禁止
+            let hasEnable = false;
+            let valuationList = versionData.bill_valuation.concat(versionData.ration_valuation);
+            for (let valuation of valuationList) {
+                if (valuation.enable) {
+                    hasEnable = true;
+                    break;
+                }
+            }
+
+            if (!hasEnable) {
+                throw '至少需要一个可用的计价规则';
+            }
+        }
+
+        let updateData = {
+            is_release: status === 1,
+            release_time: new Date().getTime()
+        };
+        return this.updateById(id, updateData);
+    }
+
 }
 
 export default VersionModel;

+ 1 - 1
modules/users/routes/version_route.js

@@ -16,8 +16,8 @@ module.exports =function (app) {
     router.get('/', versionController.auth, versionController.init, versionController.index);
     router.get('/valuation/:section/:id', versionController.auth, versionController.init, versionController.editValuation);
     router.get('/valuation/:section/delete/:id', versionController.auth, versionController.init, versionController.deleteValuation);
-    router.get('/release/:id/:release', versionController.auth, versionController.init, versionController.release);
 
+    router.post('/release', versionController.auth, versionController.init, versionController.release);
     router.post('/add', versionController.auth, versionController.init, versionController.addVersion);
     router.post('/add-valuation', versionController.auth, versionController.init, versionController.addValuation);
     router.post('/save-valuation', versionController.auth, versionController.init, versionController.saveValuation);

+ 32 - 0
web/users/js/version.js

@@ -216,6 +216,38 @@ $(document).ready(function() {
         });
     });
 
+    // 发布版本
+    $("#release").click(function() {
+        let id = $(this).data("id");
+        let status = $(this).data("status");
+        status = parseInt(status);
+        if (isAdding || id === '' || isNaN(status)) {
+            return false;
+        }
+
+        $.ajax({
+            url: '/version/release',
+            type: 'post',
+            data: {id: id, status: status},
+            dataType: "json",
+            error: function() {
+                isAdding = false;
+            },
+            beforeSend: function() {
+                isAdding = true;
+            },
+            success: function(response) {
+                isAdding = false;
+                if (response.err === 0) {
+                    window.location.reload();
+                } else {
+                    let msg = response.msg === undefined ? "未知错误" : response.msg;
+                    alert(msg);
+                }
+            }
+        });
+
+    });
 
 });
 

+ 1 - 1
web/users/views/version/index.html

@@ -8,7 +8,7 @@
                 <% if(selectedVersion.is_release) {%>
                 <span class="text-muted" style="margin-left: 5px;">已发布 <%= moment(selectedVersion.update_time).format('YYYY-MM-DD')%></span>
                 <% } %>
-                <a href="/version/release/<%= selectedVersion._id %>/<%= selectedVersion.is_release ? 0 : 1%>" class="btn btn-primary btn-sm pull-right" id="save"><% if(selectedVersion.is_release) {%>取消<% }else{ %>发布<% } %>版本</a>
+                <a href="javascript:void(0);" data-id="<%= selectedVersion._id %>" data-status="<%= selectedVersion.is_release ? 0 : 1 %>" class="btn btn-primary btn-sm pull-right" id="release"><% if(selectedVersion.is_release) {%>取消<% }else{ %>发布<% } %>版本</a>
             </h2>
         </div>
     </div>