1
0
Переглянути джерело

Merge branch 'master' of http://git.ds-bay.com/project/kmall-pt

csk 5 роки тому
батько
коміт
9997ceb88e

+ 21 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.controller;
 
+import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.admin.entity.GoodsGalleryEntity;
@@ -281,4 +282,24 @@ public class GoodsController {
         }
         return R.ok().put("goods", goods);
     }
+
+    @RequestMapping("/details/{prodBarcode}")
+//    @RequiresPermissions("goods:details") http://127.0.0.1:8080/goods/details/11111
+    public R details(@PathVariable("prodBarcode")String prodBarcode) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if(user == null) {
+            return R.error("用户登录超时,请重新登录");
+        }
+        if (!user.getRoleType().equalsIgnoreCase("2")) {
+            return R.error("该操作只允许店员账户操作");
+        }
+        GoodsDetailsDto goods = goodsService.queryGoodsDetailsByProdBarcode(prodBarcode);
+        if(goods == null) {
+            return R.error("商品信息不存在");
+        }
+        return R.ok().put("goodsDetails", goods);
+    }
+
+
+
 }

+ 205 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/PickUpCodeController.java

@@ -0,0 +1,205 @@
+package com.kmall.admin.controller;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.kmall.admin.entity.PickUpCodeEntity;
+import com.kmall.admin.service.PickUpCodeService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 取货码信息表Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-05-19 09:11:26
+ */
+@Controller
+@RequestMapping("pickupcode")
+public class PickUpCodeController {
+    @Autowired
+    private PickUpCodeService pickUpCodeService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("pickupcode:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setName(params, "name");
+        String name = (String)params.get("name");
+        if(org.apache.commons.lang3.StringUtils.isNotEmpty(name)){
+            params.put("orderSn", name);
+        }
+
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<PickUpCodeEntity> pickUpCodeList = pickUpCodeService.queryList(query);
+        int total = pickUpCodeService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(pickUpCodeList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    @RequestMapping("/queryByPickTime")
+    @RequiresPermissions("pickupcode:list")
+    @ResponseBody
+    public R queryByPickTime(@RequestParam Map<String, Object> params) {
+        String pickTime = (String)params.get("pickTime");
+        //有日期检查格式,没有生成当天日期
+        if (org.apache.commons.lang3.StringUtils.isNotEmpty(pickTime)){
+            try{
+                String regEx = "\\d{4}(\\-)\\d{2}\\1\\d{2}";
+                // 编译正则表达式
+                Pattern pattern = Pattern.compile(regEx);
+                Matcher matcher = pattern.matcher(pickTime);
+                // 字符串是否与正则表达式相匹配
+                boolean rs = matcher.matches();
+
+                if (!rs){
+                    throw new Exception();
+                }
+            }catch(Exception e){
+                return R.error("传入日期格式错误,请修改日期格式为'yyyy-MM-dd'!");
+            }
+        } else {
+            DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+            pickTime = formatter.format(new Date());
+        }
+        params.put("pickUpCodeCreatetime", pickTime);
+
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<PickUpCodeEntity> pickUpCodeList = pickUpCodeService.queryList(query);
+        int total = pickUpCodeService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(pickUpCodeList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{orderSn}")
+    @RequiresPermissions("pickupcode:info")
+    @ResponseBody
+    public R info(@PathVariable("orderSn") String orderSn) {
+        PickUpCodeEntity pickUpCode = pickUpCodeService.queryObject(orderSn);
+
+        return R.ok().put("pickUpCode", pickUpCode);
+    }
+
+    /**
+     * 生成取货码
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("pickupcode:save")
+    @ResponseBody
+    public R save(@RequestBody PickUpCodeEntity pickUpCode) {
+        if(org.apache.commons.lang3.StringUtils.isEmpty(pickUpCode.getOrderSn())){
+            return R.error("订单编号为空!");
+        }
+
+        //生成一个 5 位的随机字符串
+        String randomCode = RandomStringUtils.randomAlphanumeric(5).toUpperCase();
+        //K: 跨境电商 , Y:一般贸易
+        pickUpCode.setPickUpCodeSn("K-"+randomCode);
+        //  pickUpCode.setPickUpCodeSn("Y-");
+        pickUpCode.setPickUpCodeStatus("0");
+        if (pickUpCode.getPickUpCodeCreatetime()==null){
+            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+            pickUpCode.setPickUpCodeCreatetime(df.format(new Date()));// new Date()为获取当前系统时间
+        }
+        pickUpCode.setModerSn(ShiroUtils.getUserEntity().getUserId().toString());
+        pickUpCode.setCreateTime(new Date());
+        pickUpCode.setModTime(new Date());
+
+
+        int result = pickUpCodeService.save(pickUpCode);
+        if (result <= 0 ){
+            return R.error("生成取货码失败!");
+        }
+
+        return R.ok().put("pickUpCode",pickUpCode );
+    }
+
+    /**
+     * 取货码核销
+     */
+    @RequestMapping("/verification")
+    @RequiresPermissions("pickupcode:update")
+    @ResponseBody
+    public R Verification(@RequestBody PickUpCodeEntity pickUpCode) {
+        if(org.apache.commons.lang3.StringUtils.isEmpty(pickUpCode.getOrderSn())){
+            return R.error("订单编号为空!");
+        }
+
+        String status = pickUpCodeService.queryPickUpCodeStatus(pickUpCode.getOrderSn());
+        if(status.equals("1")){
+            return R.error("取货码已核销过!");
+        }
+
+        pickUpCode.setPickUpCodeStatus("1");
+        if (pickUpCode.getPickUpCodeCreatetime()==null){
+            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+            pickUpCode.setPickUpCodeVerificationtime(df.format(new Date()));// new Date()为获取当前系统时间
+        }
+        pickUpCode.setModerSn(ShiroUtils.getUserEntity().getUserId().toString());
+        pickUpCode.setModTime(new Date());
+
+        int result = pickUpCodeService.update(pickUpCode);
+        if (result <= 0 ){
+            return R.error("取货码核销失败!");
+        }
+        PickUpCodeEntity pickUpCodeEntity = pickUpCodeService.queryObject(pickUpCode.getOrderSn());
+
+        return R.ok().put("pickUpCode",pickUpCodeEntity );
+    }
+
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("pickupcode:delete")
+    @ResponseBody
+    public R delete(@RequestBody String[]orderSns) {
+        int result = pickUpCodeService.deleteBatch(orderSns);
+
+        return R.ok().put("result", result);
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<PickUpCodeEntity> list = pickUpCodeService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.dao;
 
+import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
@@ -21,6 +22,8 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
 
     GoodsEntity queryObjectByProdBarcodeAndBizType(@Param("prodBarcode")String prodBarcode, @Param("storeId")Integer storeId);
 
+    GoodsDetailsDto queryGoodsDetailsByProdBarcode(@Param("prodBarcode")String prodBarcode);
+
     List<GoodsEntity> querySame(Map<String, Object> map);
 
     List<GoodsEntity> queryObjectByProdBarcode(@Param("prodBarcode") String prodBarcode, @Param("merchSn") String merchSn,@Param("goodsId")Long id);

+ 22 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/PickUpCodeDao.java

@@ -0,0 +1,22 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.PickUpCodeEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 取货码信息表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-05-19 09:11:26
+ */
+public interface PickUpCodeDao extends BaseDao<PickUpCodeEntity> {
+
+    /**
+     * 根据订单编号查询核销状态
+     * @param orderSn
+     * @return
+     */
+    public String queryPickUpCodeStatus(@Param("orderSn") String orderSn);
+}

+ 127 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDetailsDto.java

@@ -0,0 +1,127 @@
+package com.kmall.admin.dto;
+
+/**
+ * @author hhq
+ * @version 1.0.0
+ * 2020-5-18
+ */
+
+import com.kmall.common.utils.R;
+
+import java.math.BigDecimal;
+
+/**
+ * 商品详情
+ */
+public class GoodsDetailsDto {
+    //商品序列号
+    private String goodsSn;
+    //商品条形号
+    private String prodBarcode;
+    //名称
+    private String name;
+    //品牌
+    private String brand;
+    //商品描述
+    private String goodsDesc;
+    //商品单位
+    private String goodsUnit;
+    //商品零售价
+    private BigDecimal retailPrice;
+    //商品税率
+    private String goodsRate;
+    //商品税费 -系统计算
+    private String goodstaxes;
+    //商品规格
+    private String specification;
+    //商品主图
+    private String primaryPicUrl;
+
+    public String getGoodsSn() {
+        return goodsSn;
+    }
+
+    public void setGoodsSn(String goodsSn) {
+        this.goodsSn = goodsSn;
+    }
+
+    public String getProdBarcode() {
+        return prodBarcode;
+    }
+
+    public void setProdBarcode(String prodBarcode) {
+        this.prodBarcode = prodBarcode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public String getGoodsDesc() {
+        return goodsDesc;
+    }
+
+    public void setGoodsDesc(String goodsDesc) {
+        this.goodsDesc = goodsDesc;
+    }
+
+    public String getGoodsUnit() {
+        return goodsUnit;
+    }
+
+    public void setGoodsUnit(String goodsUnit) {
+        this.goodsUnit = goodsUnit;
+    }
+
+    public String getGoodsRate() {
+        return goodsRate;
+    }
+
+    public void setGoodsRate(String goodsRate) {
+        this.goodsRate = goodsRate;
+    }
+
+    public String getGoodstaxes() {
+        return goodstaxes;
+    }
+
+    public void setGoodstaxes(String goodstaxes) {
+        this.goodstaxes = goodstaxes;
+    }
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
+    public String getPrimaryPicUrl() {
+        return primaryPicUrl;
+    }
+
+    public void setPrimaryPicUrl(String primaryPicUrl) {
+        this.primaryPicUrl = primaryPicUrl;
+    }
+
+    public BigDecimal getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(BigDecimal retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+}

+ 188 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/PickUpCodeEntity.java

@@ -0,0 +1,188 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 取货码信息表实体
+ * 表名 mall_pick_up_code
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-05-19 09:11:26
+ */
+public class PickUpCodeEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 订单编号:商户(拼音首字母)+业务类型+编号
+     */
+    private String orderSn;
+    /**
+     * 取货码
+     */
+    private String pickUpCodeSn;
+    /**
+     * 商户订单编号
+     */
+    private String merchOrderSn;
+    /**
+     * 取货码状态,0:未取,1:已取
+     */
+    private String pickUpCodeStatus;
+    /**
+     * 取货码生成时间
+     */
+    private String pickUpCodeCreatetime;
+    /**
+     * 取货码核销时间
+     */
+    private String pickUpCodeVerificationtime;
+    /**
+     * 创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:订单编号:商户(拼音首字母)+业务类型+编号
+     */
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    /**
+     * 获取:订单编号:商户(拼音首字母)+业务类型+编号
+     */
+    public String getOrderSn() {
+        return orderSn;
+    }
+    /**
+     * 设置:取货码
+     */
+    public void setPickUpCodeSn(String pickUpCodeSn) {
+        this.pickUpCodeSn = pickUpCodeSn;
+    }
+
+    /**
+     * 获取:取货码
+     */
+    public String getPickUpCodeSn() {
+        return pickUpCodeSn;
+    }
+    /**
+     * 设置:商户订单编号
+     */
+    public void setMerchOrderSn(String merchOrderSn) {
+        this.merchOrderSn = merchOrderSn;
+    }
+
+    /**
+     * 获取:商户订单编号
+     */
+    public String getMerchOrderSn() {
+        return merchOrderSn;
+    }
+    /**
+     * 设置:取货码状态,0:未取,1:已取
+     */
+    public void setPickUpCodeStatus(String pickUpCodeStatus) {
+        this.pickUpCodeStatus = pickUpCodeStatus;
+    }
+
+    /**
+     * 获取:取货码状态,0:未取,1:已取
+     */
+    public String getPickUpCodeStatus() {
+        return pickUpCodeStatus;
+    }
+    /**
+     * 设置:取货码生成时间
+     */
+    public void setPickUpCodeCreatetime(String pickUpCodeCreatetime) {
+        this.pickUpCodeCreatetime = pickUpCodeCreatetime;
+    }
+
+    /**
+     * 获取:取货码生成时间
+     */
+    public String getPickUpCodeCreatetime() {
+        return pickUpCodeCreatetime;
+    }
+    /**
+     * 设置:取货码核销时间
+     */
+    public void setPickUpCodeVerificationtime(String pickUpCodeVerificationtime) {
+        this.pickUpCodeVerificationtime = pickUpCodeVerificationtime;
+    }
+
+    /**
+     * 获取:取货码核销时间
+     */
+    public String getPickUpCodeVerificationtime() {
+        return pickUpCodeVerificationtime;
+    }
+    /**
+     * 设置:+创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:+创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:+修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:+修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:+修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:+修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:+时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:+时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 8 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.service;
 
+import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.common.utils.R;
@@ -123,4 +124,11 @@ public interface GoodsService {
      * @return
      */
     int uploadExcel(List<GoodsDto> goodsEntityList,int exportDataType);
+
+    /**
+     * 条形码查询商品详情
+     * @param prodBarcode 条形码
+     * @return
+     */
+    GoodsDetailsDto queryGoodsDetailsByProdBarcode(String prodBarcode);
 }

+ 79 - 0
kmall-admin/src/main/java/com/kmall/admin/service/PickUpCodeService.java

@@ -0,0 +1,79 @@
+package com.kmall.admin.service;
+
+import com.kmall.admin.entity.PickUpCodeEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 取货码信息表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-05-19 09:11:26
+ */
+public interface PickUpCodeService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param orderSn 主键
+     * @return 实体
+     */
+    PickUpCodeEntity queryObject(String orderSn);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<PickUpCodeEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param pickUpCode 实体
+     * @return 保存条数
+     */
+    int save(PickUpCodeEntity pickUpCode);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param pickUpCode 实体
+     * @return 更新条数
+     */
+    int update(PickUpCodeEntity pickUpCode);
+
+    /**
+     * 根据主键删除
+     *
+     * @param orderSn
+     * @return 删除条数
+     */
+    int delete(String orderSn);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param orderSns
+     * @return 删除条数
+     */
+    int deleteBatch(String[] orderSns);
+
+    /**
+     * 根据订单编号查询核销状态
+     * @param orderSn
+     * @return
+     */
+    public String queryPickUpCodeStatus(String orderSn);
+}

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -3,6 +3,7 @@ package com.kmall.admin.service.impl;
 import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.Maps;
 import com.kmall.admin.dao.*;
+import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.service.GoodsService;
@@ -1017,6 +1018,11 @@ public class GoodsServiceImpl implements GoodsService {
         }
         return 1;
     }
+
+    @Override
+    public GoodsDetailsDto queryGoodsDetailsByProdBarcode(String prodBarcode) {
+        return goodsDao.queryGoodsDetailsByProdBarcode(prodBarcode);
+    }
 /*  @Override
     @Transactional
     public int uploadExcel(MultipartFile file) {

+ 61 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/PickUpCodeServiceImpl.java

@@ -0,0 +1,61 @@
+package com.kmall.admin.service.impl;
+
+import com.kmall.admin.dao.PickUpCodeDao;
+import com.kmall.admin.entity.PickUpCodeEntity;
+import com.kmall.admin.service.PickUpCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 取货码信息表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-05-19 09:11:26
+ */
+@Service("pickUpCodeService")
+public class PickUpCodeServiceImpl implements PickUpCodeService {
+    @Autowired
+    private PickUpCodeDao pickUpCodeDao;
+
+    @Override
+    public PickUpCodeEntity queryObject(String orderSn) {
+        return pickUpCodeDao.queryObject(orderSn);
+    }
+
+    @Override
+    public List<PickUpCodeEntity> queryList(Map<String, Object> map) {
+        List<PickUpCodeEntity> pickUpCodeEntities = pickUpCodeDao.queryList(map);
+        return pickUpCodeEntities;
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return pickUpCodeDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(PickUpCodeEntity pickUpCode) {
+        return pickUpCodeDao.save(pickUpCode);
+    }
+
+    @Override
+    public int update(PickUpCodeEntity pickUpCode) {
+        return pickUpCodeDao.update(pickUpCode);
+    }
+
+    @Override
+    public int delete(String orderSn) {
+        return pickUpCodeDao.delete(orderSn);
+    }
+
+    @Override
+    public int deleteBatch(String[]orderSns) {
+        return pickUpCodeDao.deleteBatch(orderSns);
+    }
+
+    public String queryPickUpCodeStatus(String orderSn){return pickUpCodeDao.queryPickUpCodeStatus(orderSn); }
+}

+ 77 - 62
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -41,11 +41,11 @@
         <result property="goodsType" column="goodsType"/>
         <result property="sku" column="sku"/>
         <result property="goodsBizType" column="goods_biz_type"/>
-        <result column="creater_sn" property="createrSn" jdbcType="VARCHAR" />
-        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
-        <result column="moder_sn" property="moderSn" jdbcType="VARCHAR" />
-        <result column="mod_time" property="modTime" jdbcType="TIMESTAMP" />
-        <result column="tstm" property="tstm" jdbcType="TIMESTAMP" />
+        <result column="creater_sn" property="createrSn" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="moder_sn" property="moderSn" jdbcType="VARCHAR"/>
+        <result column="mod_time" property="modTime" jdbcType="TIMESTAMP"/>
+        <result column="tstm" property="tstm" jdbcType="TIMESTAMP"/>
         <result property="prodBarcode" column="prod_barcode"/>
         <result property="unitCode" column="unit_code"/>
         <result property="goodsDesc" column="goods_desc"/>
@@ -59,13 +59,13 @@
         <result property="storeName" column="store_name"/>
         <result property="productId" column="productId"/>
         <result property="storeId" column="storeId"/>
-        <result column="merch_name" property="merchName" />
-        <result column="storeMarketPrice" property="storeMarketPrice" />
-        <result column="storeRetailPrice" property="storeRetailPrice" />
-        <result column="third_party_merch_code" property="thirdPartyMerchCode" />
-        <result column="isStockShare" property="isStockShare" />
-        <result column="gross_weight" property="grossWeight" />
-        <result column="net_weight" property="netWeight" />
+        <result column="merch_name" property="merchName"/>
+        <result column="storeMarketPrice" property="storeMarketPrice"/>
+        <result column="storeRetailPrice" property="storeRetailPrice"/>
+        <result column="third_party_merch_code" property="thirdPartyMerchCode"/>
+        <result column="isStockShare" property="isStockShare"/>
+        <result column="gross_weight" property="grossWeight"/>
+        <result column="net_weight" property="netWeight"/>
         <result property="isGoodsShareStock" column="is_goods_share_stock"/>
 
     </resultMap>
@@ -212,6 +212,17 @@
         </if>
     </select>
 
+    <select id="queryGoodsDetailsByProdBarcode" resultType="com.kmall.admin.dto.GoodsDetailsDto">
+        SELECT
+        a.goods_sn as GoodsSn,a.retail_price as retailPrice,a.prod_barcode as prodBarcode,a.name,a.brand,a.goods_desc as goodsDesc,a.goods_unit as goodsUnit,a.goods_rate as goodsRate,a.primary_pic_url ,r.value as specification
+        FROM
+            mall_goods a
+        LEFT JOIN mall_goods_specification r ON r.goods_id = a.id
+
+        where a.prod_barcode = #{prodBarcode}
+    </select>
+
+
     <select id="queryObjectBySn" resultType="com.kmall.admin.entity.GoodsEntity">
         SELECT
             a.*, CASE
@@ -231,7 +242,8 @@
         from mall_goods
         left join mall_merch m on mall_goods.merch_sn = m.merch_sn
         left join mall_goods_group on mall_goods_group.goods_id = mall_goods.id and mall_goods_group.open_status != 3
-        left join third_merchant_biz mb on mb.third_party_merch_code = mall_goods.third_party_merch_code and mb.merch_sn=mall_goods.merch_sn
+        left join third_merchant_biz mb on mb.third_party_merch_code = mall_goods.third_party_merch_code and
+        mb.merch_sn=mall_goods.merch_sn
         WHERE 1=1
         <!--  数据过滤  -->
         ${filterSql}
@@ -284,7 +296,8 @@
             AND mall_goods.id = #{id}
         </if>
         <if test="storeId != null and storeId != ''">
-            AND mall_goods.third_party_merch_code = ( SELECT third_party_merch_code FROM mall_store WHERE id = #{storeId} )
+            AND mall_goods.third_party_merch_code = ( SELECT third_party_merch_code FROM mall_store WHERE id =
+            #{storeId} )
             AND mall_goods.id NOT IN (
             SELECT
             goods_id
@@ -328,7 +341,8 @@
         <!--  数据过滤  -->
         ${filterSql}
         <if test="isSame != null and isSame != ''">
-            AND ((mall_goods.sku = #{sku} AND mall_goods.goods_biz_type = #{goodsBizType}) OR mall_goods.goods_sn = #{goodsSn})
+            AND ((mall_goods.sku = #{sku} AND mall_goods.goods_biz_type = #{goodsBizType}) OR mall_goods.goods_sn =
+            #{goodsSn})
             <if test="id != null and id != ''">
                 AND mall_goods.id != #{id}
             </if>
@@ -381,7 +395,8 @@
             AND mall_goods.goods_biz_type = #{goodsBizType}
         </if>
         <if test="storeId != null and storeId != ''">
-            AND mall_goods.third_party_merch_code = ( SELECT third_party_merch_code FROM mall_store WHERE id = #{storeId} )
+            AND mall_goods.third_party_merch_code = ( SELECT third_party_merch_code FROM mall_store WHERE id =
+            #{storeId} )
             AND mall_goods.id NOT IN (
             SELECT
             goods_id
@@ -500,52 +515,52 @@
     <update id="update" parameterType="com.kmall.admin.entity.GoodsEntity">
         update mall_goods
         <set>
-            <if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
-            <if test="thirdPartyMerchCode != null">`third_party_merch_code` = #{thirdPartyMerchCode}, </if>
-            <if test="supplierId != null">`supplier_id` = #{supplierId}, </if>
-            <if test="goodsSn != null">`goods_sn` = #{goodsSn}, </if>
-            <if test="prodBarcode != null">`prod_barcode` = #{prodBarcode}, </if>
-            <if test="sku != null">`sku` = #{sku}, </if>
-            <if test="goodsBizType != null">`goods_biz_type` = #{goodsBizType}, </if>
-            <if test="name != null">`name` = #{name}, </if>
-            <if test="unitCode != null">`unit_code` = #{unitCode}, </if>
-            <if test="brand != null">`brand` = #{brand}, </if>
-            <if test="goodsNumber != null">`goods_number` = #{goodsNumber}, </if>
-            <if test="keywords != null">`keywords` = #{keywords}, </if>
-            <if test="goodsBrief != null">`goods_brief` = #{goodsBrief}, </if>
-            <if test="goodsDesc != null">`goods_desc` = #{goodsDesc}, </if>
-            <if test="cusGoodsCode != null">`cus_goods_code` = #{cusGoodsCode}, </if>
-            <if test="ciqProdModel != null">`ciq_prod_model` = #{ciqProdModel}, </if>
-            <if test="oriCntCode != null">`ori_cnt_code` = #{oriCntCode}, </if>
-            <if test="cusDeclEle != null">`cus_decl_ele` = #{cusDeclEle}, </if>
-            <if test="cusRecCode != null">`cus_rec_code` = #{cusRecCode}, </if>
-            <if test="isOnSale != null">`is_on_sale` = #{isOnSale}, </if>
-            <if test="addTime != null">`add_time` = #{addTime}, </if>
-            <if test="sortOrder != null">`sort_order` = #{sortOrder}, </if>
-            <if test="isDelete != null">`is_delete` = #{isDelete}, </if>
-            <if test="counterPrice != null">`counter_price` = #{counterPrice}, </if>
-            <if test="extraPrice != null">`extra_price` = #{extraPrice}, </if>
-            <if test="isNew != null">`is_new` = #{isNew}, </if>
-            <if test="goodsUnit != null">`goods_unit` = #{goodsUnit}, </if>
-            <if test="primaryPicUrl != null">`primary_pic_url` = #{primaryPicUrl}, </if>
-            <if test="listPicUrl != null">`list_pic_url` = #{listPicUrl}, </if>
-            <if test="goodsRate != null">`goods_rate` = #{goodsRate}, </if>
-            <if test="sellVolume != null">`sell_volume` = #{sellVolume}, </if>
-            <if test="primaryProductId != null">`primary_product_id` = #{primaryProductId}, </if>
-            <if test="unitPrice != null">`unit_price` = #{unitPrice}, </if>
-            <if test="promotionDesc != null">`promotion_desc` = #{promotionDesc}, </if>
-            <if test="promotionTag != null">`promotion_tag` = #{promotionTag}, </if>
-            <if test="appExclusivePrice != null">`app_exclusive_price` = #{appExclusivePrice}, </if>
-            <if test="isAppExclusive != null">`is_app_exclusive` = #{isAppExclusive}, </if>
-            <if test="grossWeight != null">`gross_weight` = #{grossWeight}, </if>
-            <if test="netWeight != null">`net_weight` = #{netWeight}, </if>
-            <if test="isGoodsShareStock != null">`is_goods_share_stock` = #{isGoodsShareStock}, </if>
-            <if test="isLimited != null">`is_limited` = #{isLimited}, </if>
-            <if test="isHot != null">`is_hot` = #{isHot}, </if>
-            <if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
-            <if test="createTime != null">`create_time` = #{createTime}, </if>
-            <if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
-            <if test="modTime != null">`mod_time` = #{modTime}, </if>
+            <if test="merchSn != null">`merch_sn` = #{merchSn},</if>
+            <if test="thirdPartyMerchCode != null">`third_party_merch_code` = #{thirdPartyMerchCode},</if>
+            <if test="supplierId != null">`supplier_id` = #{supplierId},</if>
+            <if test="goodsSn != null">`goods_sn` = #{goodsSn},</if>
+            <if test="prodBarcode != null">`prod_barcode` = #{prodBarcode},</if>
+            <if test="sku != null">`sku` = #{sku},</if>
+            <if test="goodsBizType != null">`goods_biz_type` = #{goodsBizType},</if>
+            <if test="name != null">`name` = #{name},</if>
+            <if test="unitCode != null">`unit_code` = #{unitCode},</if>
+            <if test="brand != null">`brand` = #{brand},</if>
+            <if test="goodsNumber != null">`goods_number` = #{goodsNumber},</if>
+            <if test="keywords != null">`keywords` = #{keywords},</if>
+            <if test="goodsBrief != null">`goods_brief` = #{goodsBrief},</if>
+            <if test="goodsDesc != null">`goods_desc` = #{goodsDesc},</if>
+            <if test="cusGoodsCode != null">`cus_goods_code` = #{cusGoodsCode},</if>
+            <if test="ciqProdModel != null">`ciq_prod_model` = #{ciqProdModel},</if>
+            <if test="oriCntCode != null">`ori_cnt_code` = #{oriCntCode},</if>
+            <if test="cusDeclEle != null">`cus_decl_ele` = #{cusDeclEle},</if>
+            <if test="cusRecCode != null">`cus_rec_code` = #{cusRecCode},</if>
+            <if test="isOnSale != null">`is_on_sale` = #{isOnSale},</if>
+            <if test="addTime != null">`add_time` = #{addTime},</if>
+            <if test="sortOrder != null">`sort_order` = #{sortOrder},</if>
+            <if test="isDelete != null">`is_delete` = #{isDelete},</if>
+            <if test="counterPrice != null">`counter_price` = #{counterPrice},</if>
+            <if test="extraPrice != null">`extra_price` = #{extraPrice},</if>
+            <if test="isNew != null">`is_new` = #{isNew},</if>
+            <if test="goodsUnit != null">`goods_unit` = #{goodsUnit},</if>
+            <if test="primaryPicUrl != null">`primary_pic_url` = #{primaryPicUrl},</if>
+            <if test="listPicUrl != null">`list_pic_url` = #{listPicUrl},</if>
+            <if test="goodsRate != null">`goods_rate` = #{goodsRate},</if>
+            <if test="sellVolume != null">`sell_volume` = #{sellVolume},</if>
+            <if test="primaryProductId != null">`primary_product_id` = #{primaryProductId},</if>
+            <if test="unitPrice != null">`unit_price` = #{unitPrice},</if>
+            <if test="promotionDesc != null">`promotion_desc` = #{promotionDesc},</if>
+            <if test="promotionTag != null">`promotion_tag` = #{promotionTag},</if>
+            <if test="appExclusivePrice != null">`app_exclusive_price` = #{appExclusivePrice},</if>
+            <if test="isAppExclusive != null">`is_app_exclusive` = #{isAppExclusive},</if>
+            <if test="grossWeight != null">`gross_weight` = #{grossWeight},</if>
+            <if test="netWeight != null">`net_weight` = #{netWeight},</if>
+            <if test="isGoodsShareStock != null">`is_goods_share_stock` = #{isGoodsShareStock},</if>
+            <if test="isLimited != null">`is_limited` = #{isLimited},</if>
+            <if test="isHot != null">`is_hot` = #{isHot},</if>
+            <if test="createrSn != null">`creater_sn` = #{createrSn},</if>
+            <if test="createTime != null">`create_time` = #{createTime},</if>
+            <if test="moderSn != null">`moder_sn` = #{moderSn},</if>
+            <if test="modTime != null">`mod_time` = #{modTime},</if>
             <if test="tstm != null">`tstm` = #{tstm}</if>
         </set>
         where id = #{id}

+ 138 - 0
kmall-admin/src/main/resources/mybatis/mapper/PickUpCodeDao.xml

@@ -0,0 +1,138 @@
+<?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.kmall.admin.dao.PickUpCodeDao">
+
+    <resultMap type="com.kmall.admin.entity.PickUpCodeEntity" id="pickUpCodeMap">
+        <result property="orderSn" column="order_sn"/>
+        <result property="pickUpCodeSn" column="pick_up_code_sn"/>
+        <result property="merchOrderSn" column="merch_order_sn"/>
+        <result property="pickUpCodeStatus" column="pick_up_code_status"/>
+        <result property="pickUpCodeCreatetime" column="pick_up_code_createtime"/>
+        <result property="pickUpCodeVerificationtime" column="pick_up_code_verificationtime"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.PickUpCodeEntity">
+		select
+			`order_sn`,
+			`pick_up_code_sn`,
+			`merch_order_sn`,
+			`pick_up_code_status`,
+			`pick_up_code_createtime`,
+			`pick_up_code_verificationtime`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mall_pick_up_code
+		where order_sn = #{orderSn}
+	</select>
+
+	<select id="queryPickUpCodeStatus" resultType="String">
+		select
+			`pick_up_code_status`
+		from mall_pick_up_code
+		where order_sn = #{orderSn}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.PickUpCodeEntity">
+		select
+    		`order_sn`,
+    		`pick_up_code_sn`,
+    		`merch_order_sn`,
+    		`pick_up_code_status`,
+    		`pick_up_code_createtime`,
+    		`pick_up_code_verificationtime`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mall_pick_up_code
+		WHERE 1=1
+		<if test="orderSn != null and orderSn.trim() != ''">
+			AND `order_sn` LIKE concat('%',#{orderSn},'%')
+		</if>
+		<if test="pickUpCodeCreatetime != null and pickUpCodeCreatetime.trim() != ''">
+			AND `pick_up_code_createtime` LIKE concat('%',#{pickUpCodeCreatetime},'%')
+		</if>
+		<if test="pickUpCodeStatus != null and pickUpCodeStatus.trim() != ''">
+			AND `pick_up_code_status` = #{pickUpCodeStatus}
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by order_sn desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mall_pick_up_code
+		WHERE 1=1
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND `order_sn` LIKE concat('%',#{orderSn},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.PickUpCodeEntity">
+		insert into mall_pick_up_code(
+			`order_sn`,
+			`pick_up_code_sn`,
+			`merch_order_sn`,
+			`pick_up_code_status`,
+			`pick_up_code_createtime`,
+			`pick_up_code_verificationtime`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{orderSn},
+			#{pickUpCodeSn},
+			#{merchOrderSn},
+			#{pickUpCodeStatus},
+			#{pickUpCodeCreatetime},
+			#{pickUpCodeVerificationtime},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.PickUpCodeEntity">
+		update mall_pick_up_code 
+		<set>
+			<if test="pickUpCodeSn != null">`pick_up_code_sn` = #{pickUpCodeSn}, </if>
+			<if test="merchOrderSn != null">`merch_order_sn` = #{merchOrderSn}, </if>
+			<if test="pickUpCodeStatus != null">`pick_up_code_status` = #{pickUpCodeStatus}, </if>
+			<if test="pickUpCodeCreatetime != null">`pick_up_code_createtime` = #{pickUpCodeCreatetime}, </if>
+			<if test="pickUpCodeVerificationtime != null">`pick_up_code_verificationtime` = #{pickUpCodeVerificationtime}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where order_sn = #{orderSn}
+	</update>
+	
+	<delete id="delete">
+		delete from mall_pick_up_code where order_sn = #{orderSn}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mall_pick_up_code where order_sn in 
+		<foreach item="orderSn" collection="array" open="(" separator="," close=")">
+			#{orderSn}
+		</foreach>
+	</delete>
+
+</mapper>

+ 78 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/pickupcode.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>取货码信息表</title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="订单编号"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                <!-- #if($shiro.hasPermission("pickupcode:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("pickupcode:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("pickupcode:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end -->
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="pickUpCode" :rules="ruleValidate" :label-width="80">
+            <Form-item label="订单编号" prop="orderSn">
+                <i-input v-model="pickUpCode.orderSn" placeholder="订单编号"/>
+            </Form-item>
+            <Form-item label="取货码" prop="pickUpCode">
+                <i-input v-model="pickUpCode.pickUpCode" placeholder="取货码"/>
+            </Form-item>
+            <Form-item label="商户订单编号" prop="merchOrderSn">
+                <i-input v-model="pickUpCode.merchOrderSn" placeholder="商户订单编号"/>
+            </Form-item>
+            <Form-item label="取货码状态,0:未取,1:已取" prop="pickUpCodeStatus">
+                <i-input v-model="pickUpCode.pickUpCodeStatus" placeholder="取货码状态,0:未取,1:已取"/>
+            </Form-item>
+            <Form-item label="取货码生成时间" prop="pickUpCodeCreatetime">
+                <i-input v-model="pickUpCode.pickUpCodeCreatetime" placeholder="取货码生成时间"/>
+            </Form-item>
+            <Form-item label="取货码核销时间" prop="pickUpCodeVerificationtime">
+                <i-input v-model="pickUpCode.pickUpCodeVerificationtime" placeholder="取货码核销时间"/>
+            </Form-item>
+            <Form-item label="创建时间" prop="createTime">
+                <i-input v-model="pickUpCode.createTime" placeholder="创建时间"/>
+            </Form-item>
+            <Form-item label="修改人编号" prop="moderSn">
+                <i-input v-model="pickUpCode.moderSn" placeholder="修改人编号"/>
+            </Form-item>
+            <Form-item label="修改时间" prop="modTime">
+                <i-input v-model="pickUpCode.modTime" placeholder="修改时间"/>
+            </Form-item>
+            <Form-item label="时间戳" prop="tstm">
+                <i-input v-model="pickUpCode.tstm" placeholder="时间戳"/>
+            </Form-item>
+            <Form-item>
+                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+	</Card>
+</div>
+
+<script src="${rc.contextPath}/js/shop/pickupcode.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 147 - 0
kmall-admin/src/main/webapp/js/shop/pickupcode.js

@@ -0,0 +1,147 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../pickupcode/list',
+        datatype: "json",
+        colModel: [
+			{label: '订单编号', name: 'orderSn', index: 'order_sn', key: true, hidden: false},
+			{label: '取货码', name: 'pickUpCodeSn', index: 'pick_up_code_sn', width: 80},
+			{label: '商户订单编号', name: 'merchOrderSn', index: 'merch_order_sn', width: 80},
+			{label: '取货码状态,0:未取,1:已取', name: 'pickUpCodeStatus', index: 'pick_up_code_status', width: 80},
+			{label: '取货码生成时间', name: 'pickUpCodeCreatetime', index: 'pick_up_code_createtime', width: 80},
+			{label: '取货码核销时间', name: 'pickUpCodeVerificationtime', index: 'pick_up_code_verificationtime', width: 80},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 80},
+			{label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80},
+			{label: '修改时间', name: 'modTime', index: 'mod_time', width: 80},
+			{label: '时间戳', name: 'tstm', index: 'tstm', width: 80}],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		pickUpCode: {},
+		ruleValidate: {
+			name: [
+				{required: true, message: '名称不能为空', trigger: 'blur'}
+			]
+		},
+		q: {
+		    name: ''
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.pickUpCode = {};
+		},
+		update: function (event) {
+            let orderSn = getSelectedRow();
+			if (orderSn == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(orderSn)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.pickUpCode.orderSn == null ? "../pickupcode/save" : "../pickupcode/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.pickUpCode),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let orderSns = getSelectedRows();
+			if (orderSns == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../pickupcode/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(orderSns),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(orderSn){
+			$.get("../pickupcode/info/"+orderSn, function (r) {
+                vm.pickUpCode = r.pickUpCode;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                name: ''
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+			vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'name': vm.q.name},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        }
+	}
+});

+ 7 - 5
kmall-common/src/main/java/com/kmall/common/utils/Query.java

@@ -23,11 +23,13 @@ public class Query extends LinkedHashMap<String, Object> {
         this.putAll(params);
 
         //分页参数
-        this.page = Integer.parseInt(params.get("page").toString());
-        this.limit = Integer.parseInt(params.get("limit").toString());
-        this.put("offset", (page - 1) * limit);
-        this.put("page", page);
-        this.put("limit", limit);
+        Object page = params.get("page");
+        Object limit = params.get("limit");
+        this.page = page == null ? 1 :Integer.parseInt(page.toString());
+        this.limit = limit == null ? this.limit :Integer.parseInt(limit.toString());
+        this.put("offset", (this.page - 1) * this.limit);
+        this.put("page", this.page);
+        this.put("limit", this.limit);
 
         //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
         String sidx = null != params.get("sidx") ? params.get("sidx").toString() : "";