Browse Source

兑换码

yuhaitao14 7 years ago
parent
commit
dc48c82acf

+ 25 - 2
shop/src/main/java/com/zskk/shop/controller/admin/ExchangeCodeController.java

@@ -8,6 +8,8 @@
 
 package com.zskk.shop.controller.admin;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,9 +20,12 @@ import com.zskk.shop.controller.AbstractController;
 import com.zskk.shop.controller.bean.ControllerResult;
 import com.zskk.shop.controller.bean.UserInfoBean;
 import com.zskk.shop.dao.entry.ExchangeCode;
+import com.zskk.shop.dao.entry.ExchangeCodeItem;
+import com.zskk.shop.dao.entry.GoodBase;
 import com.zskk.shop.exception.ErrorConstant;
 import com.zskk.shop.exception.ZSKKException;
 import com.zskk.shop.service.ExchangeCodeService;
+import com.zskk.shop.service.GoodService;
 import com.zskk.shop.utils.ToolsUtil;
 
 @Controller
@@ -30,6 +35,9 @@ public class ExchangeCodeController extends AbstractController {
 	@Autowired
 	public ExchangeCodeService exchangeCodeService;
 	
+	@Autowired
+	public GoodService goodService;
+	
 	@RequestMapping("list")
 	@ResponseBody
 	public ControllerResult list(@RequestParam(name="gid", required=false) Integer gid, 
@@ -37,7 +45,18 @@ public class ExchangeCodeController extends AbstractController {
 		if (search != null && search.isEmpty()){
 			search = null;
 		}
-		return new ControllerResult(exchangeCodeService.queryAllExchangeCode(search, status, gid));
+		
+		GoodBase good = goodService.queryOneGoodBase(gid);
+		if (good == null){
+			throw new ZSKKException(ErrorConstant.PARAM_ERROR);
+		}
+		
+		List<ExchangeCode> list = exchangeCodeService.queryAllExchangeCode(search, status, gid);
+		for (ExchangeCode it: list){
+			it.setGname(good.getName());
+		}
+		
+		return new ControllerResult(list);
 	}
 	
 	@RequestMapping("create")
@@ -72,6 +91,10 @@ public class ExchangeCodeController extends AbstractController {
 	@RequestMapping("getitems")
 	@ResponseBody
 	public ControllerResult getItems(@RequestParam("eid") Integer eid, @RequestParam(name="status", required=false) Integer status){
-		return new ControllerResult(exchangeCodeService.getItems(eid, status));
+		List<ExchangeCodeItem> list = exchangeCodeService.getItems(eid, status);
+		for (ExchangeCodeItem it: list){
+			it.setEipwd(it.getEipwd().replaceAll(".", "*"));
+		}
+		return new ControllerResult(list);
 	}
 }

+ 9 - 0
shop/src/main/java/com/zskk/shop/dao/entry/ExchangeCode.java

@@ -19,6 +19,9 @@ public class ExchangeCode {
 	private Integer endtime;
 	private Integer ctime;
 	private Integer utime;
+	
+	private String gname;
+	
 	public Integer getId() {
 		return id;
 	}
@@ -79,4 +82,10 @@ public class ExchangeCode {
 	public void setGid(Integer gid) {
 		this.gid = gid;
 	}
+	public String getGname() {
+		return gname;
+	}
+	public void setGname(String gname) {
+		this.gname = gname;
+	}
 }

+ 6 - 0
shop/static/manager/src/api/index.js

@@ -95,5 +95,11 @@ export default {
     bannerSave: (params, vue) => post(`${serverPath}manage/banner/save`, params, vue),
     bannerSetStatus: (params, vue) => post(`${serverPath}manage/banner/setstatus`, params, vue),
 
+    exchangeCodeList: (params, vue) => post(`${serverPath}manage/exchangecode/list`, params, vue),
+    echangeCodeGet: (params, vue) => post(`${serverPath}manage/exchangecode/get`, params, vue),
+    exchangeCodeCreate: (params, vue) => post(`${serverPath}manage/exchangecode/create`, params, vue),
+    exchangeCodeUpdate: (params, vue) => post(`${serverPath}manage/exchangecode/update`, params, vue),
+    echangeCodeGetitems: (params, vue) => post(`${serverPath}manage/exchangecode/getitems`, params, vue),
+
     loginout: (params, vue) => post(`${serverPath}help/loginout`, params, vue),
 }

+ 5 - 0
shop/static/manager/src/components/page/GoodsManager.vue

@@ -79,6 +79,7 @@
                     </template>
                     <el-button type="text" size="small" @click="goEdit(scope.row)">编辑</el-button>
                     <el-button type="text" size="small" @click="goEditLabel(scope.row)">标签</el-button>
+                    <el-button type="text" size="small" @click="goExchangeCode(scope.row)">兑换码</el-button>
                     <a :href="serverPath + 'good/detail/' + scope.row.gid" target="_black">
                         <el-button type="text" size="small">预览</el-button>
                     </a>
@@ -179,6 +180,10 @@ export default {
     goAdd: function(){
          this.$router.push({ path: '/editGoods', query: { gid: 0 } })
     },
+    goExchangeCode:function(row){
+        this.$router.push({ path: '/exchangeCodeList', query: { gid: row.gid } })
+
+    },
     setRecommand: function(row) {
       var msg = row.isRecommend
         ? '您是否要停止推荐此商品吗?'

+ 123 - 0
shop/static/manager/src/components/page/exchange/Edit.vue

@@ -0,0 +1,123 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+        <el-form-item label="说明">
+            <el-input v-model="form.rewark" placeholder="请输入说明"></el-input>
+        </el-form-item>
+        <el-form-item label="数量">
+            <el-input v-model="form.num" :readonly="numReadonly" placeholder="请输入生成兑换码书里那个"></el-input>
+        </el-form-item>
+        <el-form-item label="有效期">
+            <el-date-picker v-model="form.endtime" value-format="yyyy-MM-dd" type="date" placeholder="选择兑换码有效期">
+            </el-date-picker>
+        </el-form-item>
+        <el-form-item label="标签状态">
+            <el-switch v-model="form.status" active-color="#13ce66" inactive-color="#ff4949">
+            </el-switch>
+        </el-form-item>
+
+        <el-form-item>
+            <el-button type="primary" @click="save">保存</el-button>
+            <el-button @click="goBack">取消</el-button>
+        </el-form-item>
+    </el-form>
+</template>
+<script>
+import {timeFormater} from '../../../util'
+export default {
+  data() {
+    return {
+      form: {
+        rewark: '',
+        num: '',
+        endtime: '',
+        status: true
+      },
+      gid: 0,
+      eid: 0,
+      numReadonly:false
+    }
+  },
+  methods: {
+    save() {
+      if (this.eid === 0) {
+        this.add()
+      } else {
+        this.update()
+      }
+    },
+    add() {
+      let that = this
+      this.$http
+        .exchangeCodeCreate(
+          {
+            gid: this.gid,
+            num: this.form.num,
+            remark: this.form.rewark,
+            endtime: this.form.endtime
+          },
+          this
+        )
+        .then(res => {
+          if (res.code === 0) {
+            this.$message({
+              message: '操作成功',
+              type: 'success',
+              duration: 1000,
+              onClose: function() {
+                that.goBack()
+              }
+            })
+          }
+        })
+    },
+    update() {
+      let that = this
+      this.$http
+        .exchangeCodeUpdate(
+          {
+            id: this.eid,
+            remark: this.form.rewark,
+            endtime: this.form.endtime,
+            status: this.form.status? 1:0
+          },
+          this
+        )
+        .then(res => {
+          if (res.code === 0) {
+            this.$message({
+              message: '操作成功',
+              type: 'success',
+              duration: 1000,
+              onClose: function() {
+                that.goBack()
+              }
+            })
+          }
+        })
+    },
+    goBack() {
+      this.$router.back()
+    }
+  },
+  mounted: function() {
+    let queryObj = this.$route.query
+    this.gid = queryObj.gid
+    this.eid = queryObj.id
+
+    if (this.eid !== 0){
+        this.$http.echangeCodeGet({id: this.eid}, this).then(res => {
+            if (res.code === 0){
+                this.form.rewark = res.obj.remark
+                this.form.num = res.obj.num
+                this.form.endtime = timeFormater(res.obj.endtime)
+                this.form.status = res.obj.status === 1
+
+                this.numReadonly = true
+
+            }
+        })
+    }
+  }
+}
+</script>
+

+ 60 - 0
shop/static/manager/src/components/page/exchange/ItemList.vue

@@ -0,0 +1,60 @@
+<template>
+    <div>
+        <el-table :data="items">
+            <el-table-column label="兑换码" prop="eicode"></el-table-column>
+            <el-table-column label="密码" prop="eipwd"></el-table-column>
+            <el-table-column label="使用状态" prop="status">
+                <template slot-scope="scope">
+                    <template v-if="scope.row.status === 1">
+                        <p  class="online">已使用</p>
+                    </template>
+                    <template v-else>
+                        <p class="offline">未使用</p>
+                    </template>
+                </template>
+            </el-table-column>
+            <el-table-column label="使用时间" prop="utime" :formatter="utimeFormat"></el-table-column>
+        </el-table>
+    </div>
+</template>
+<script>
+import {timeFormater} from '../../../util'
+export default {
+    data () {
+        return {
+            items:[],
+            eid:0
+        }
+    },
+    methods:{
+        getItems () {
+            this.$http.echangeCodeGetitems({eid:this.eid}, this).then(res => {
+                if (res.code === 0){
+                    this.items = res.obj;
+                }
+            })
+        },
+        utimeFormat (row) {
+            if (row.utime === 0){
+                return '-'
+            }else{
+                return timeFormater(row.utime)
+            }
+        }
+    },
+    mounted:function(){
+        this.eid = this.$route.query.id;
+        this.getItems()
+    }
+}
+</script>
+
+
+<style>
+.online {
+  color: #67c23a;
+}
+.offline {
+  color: #f56c6c;
+}
+</style>

+ 78 - 0
shop/static/manager/src/components/page/exchange/List.vue

@@ -0,0 +1,78 @@
+<template>
+    <div>
+        <div>
+             <el-button type="primary" @click="goAdd">创建</el-button>
+        </div>
+        <el-table :data="items">
+            <el-table-column label="商品名称" prop="gname"></el-table-column>
+            <el-table-column label="说明" prop="remark"></el-table-column>
+            <el-table-column label="创建人" prop="cuname"></el-table-column>
+            <el-table-column label="生成数量" prop="num"></el-table-column>
+            <el-table-column label="状态">
+                <template slot-scope="scope">
+                    <template v-if="scope.row.status === 1">
+                        <p  class="online">启用</p>
+                    </template>
+                    <template v-else>
+                        <p class="offline">禁用</p>
+                    </template>
+                </template>
+            </el-table-column>
+            <el-table-column label="截止日期" prop="endtime" :formatter="endTimeFormat"></el-table-column>
+            <el-table-column label="操作">
+                <template slot-scope="scope">
+                    <el-button type="text" size="small" @click="goEdit(scope.row)">编辑</el-button>
+                    <el-button type="text" size="small" @click="goShowItems(scope.row)">列表</el-button>
+                    <el-button type="text" size="small" >下载</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+    </div>
+</template>
+<script>
+import {timeFormater} from '../../../util'
+export default {
+    data () {
+        return {
+            items:[],
+            gid:0
+        }
+    },
+    methods:{
+        getItems () {
+            this.$http.exchangeCodeList({gid:this.gid}, this).then(res => {
+                if (res.code === 0){
+                    this.items = res.obj;
+                }
+            })
+        },
+        goShowItems (row) {
+            this.$router.push({ path: '/exchangeCodeItemList', query: { id: row.id } })
+        },
+        endTimeFormat (row) {
+            return timeFormater(row.endtime)
+        },
+        goAdd () {
+            this.$router.push({path:'/exchangeCodeEdit', query: {gid:this.gid,id:0}})
+        },
+        goEdit (row) {
+            this.$router.push({path:'/exchangeCodeEdit', query: {gid:this.gid,id:row.id}})
+        }
+    },
+    mounted:function(){
+        let gid = this.$route.query.gid
+        this.gid = gid;
+        this.getItems()
+    }
+}
+</script>
+
+
+<style>
+.online {
+  color: #67c23a;
+}
+.offline {
+  color: #f56c6c;
+}
+</style>

+ 12 - 0
shop/static/manager/src/router/index.js

@@ -73,6 +73,18 @@ export default new Router({
                 {
                     path: 'editBanner',
                     component: resolve => require(['../components/page/banner/EditBanner'], resolve)
+                },
+                {
+                    path: 'exchangeCodeList',
+                    component: resolve => require(['../components/page/exchange/List'], resolve)
+                },
+                {
+                    path: 'exchangeCodeItemList',
+                    component: resolve => require(['../components/page/exchange/ItemList'], resolve)
+                },
+                {
+                    path: 'exchangeCodeEdit',
+                    component: resolve => require(['../components/page/exchange/Edit'], resolve)
                 }
             ]
         },