Jelajahi Sumber

小程序管理后台bbc代码开发,前端复制订单功能

hyq 6 tahun lalu
induk
melakukan
97b41e20bb
35 mengubah file dengan 1089 tambahan dan 200 penghapusan
  1. 70 0
      kmall-admin/src/main/java/com/kmall/admin/controller/ExportExceptionDataController.java
  2. 2 2
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java
  3. 4 4
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  4. 1 11
      kmall-admin/src/main/java/com/kmall/admin/controller/SupplierController.java
  5. 18 0
      kmall-admin/src/main/java/com/kmall/admin/dao/ExportExceptionDataDao.java
  6. 10 0
      kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java
  7. 196 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ExportExceptionDataEntity.java
  8. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/ExportExceptionDataService.java
  9. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java
  10. 1 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
  11. 58 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ExportExceptionDataServiceImpl.java
  12. 115 42
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  13. 29 18
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  14. 28 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/StoreServiceImpl.java
  15. 26 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/SupplierServiceImpl.java
  16. 13 12
      kmall-admin/src/main/resources/XmlTemplate/GeneralGoodsDtoList.xml
  17. 22 21
      kmall-admin/src/main/resources/XmlTemplate/GoodsDtoList.xml
  18. 129 0
      kmall-admin/src/main/resources/mybatis/mapper/ExportExceptionDataDao.xml
  19. 3 0
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  20. 29 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/exportexceptiondata.html
  21. TEMPAT SAMPAH
      kmall-admin/src/main/webapp/WEB-INF/page/shop/file/general_goods_export_yyyy_mm_dd_v1.0.0.xls
  22. TEMPAT SAMPAH
      kmall-admin/src/main/webapp/WEB-INF/page/shop/file/goods_export_yyyy_mm_dd_v1.0.0.xls
  23. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html
  24. 5 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/store.html
  25. 7 4
      kmall-admin/src/main/webapp/WEB-INF/page/shop/supplier.html
  26. 2 1
      kmall-admin/src/main/webapp/js/shop/coupongrads.js
  27. 106 0
      kmall-admin/src/main/webapp/js/shop/exportexceptiondata.js
  28. 78 61
      kmall-admin/src/main/webapp/js/shop/offilineOrderList.js
  29. 13 2
      kmall-admin/src/main/webapp/js/shop/store.js
  30. 22 13
      kmall-admin/src/main/webapp/js/shop/supplier.js
  31. 6 1
      kmall-admin/src/main/webapp/js/sys/user.js
  32. 1 1
      kmall-pt.iml
  33. 6 1
      wx-mall/pages/goods/goods.wxml
  34. 14 1
      wx-mall/pages/ucenter/orderDetail/orderDetail.js
  35. 1 1
      wx-mall/pages/ucenter/orderDetail/orderDetail.wxml

+ 70 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/ExportExceptionDataController.java

@@ -0,0 +1,70 @@
+package com.kmall.admin.controller;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.ExportExceptionDataEntity;
+import com.kmall.admin.service.ExportExceptionDataService;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+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 2018-12-07 09:41:15
+ */
+@Controller
+@RequestMapping("exportexceptiondata")
+public class ExportExceptionDataController {
+    @Autowired
+    private ExportExceptionDataService exportExceptionDataService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("exportexceptiondata:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<ExportExceptionDataEntity> exportExceptionDataList = exportExceptionDataService.queryList(query);
+        int total = exportExceptionDataService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(exportExceptionDataList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{id}")
+    @RequiresPermissions("exportexceptiondata:info")
+    @ResponseBody
+    public R info(@PathVariable("id") Integer id) {
+        ExportExceptionDataEntity exportExceptionData = exportExceptionDataService.queryObject(id);
+
+        return R.ok().put("exportExceptionData", exportExceptionData);
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<ExportExceptionDataEntity> list = exportExceptionDataService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

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

@@ -225,7 +225,7 @@ public class GoodsController {
             e.printStackTrace();
             return R.error("导入失败!");
         }
-        goodsService.uploadExcel(goodsDtoList);
+        goodsService.uploadExcel(goodsDtoList,1);
         //上传文件
         return R.ok();
     }
@@ -246,7 +246,7 @@ public class GoodsController {
             e.printStackTrace();
             return R.error("导入失败!");
         }
-        goodsService.uploadExcel(generalGoodsDtoList);
+        goodsService.uploadExcel(generalGoodsDtoList,2);
         //上传文件
         return R.ok();
     }

+ 4 - 4
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -412,16 +412,16 @@ public class OrderController {
             throw new RRException("该操作只允许店员账户操作");
         }
         OrderEntity orderEntity = orderService.queryObject(id);
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_201.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
             throw new RRException("此订单已付款!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_301.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_301.getItem())) {
             throw new RRException("此订单已完成!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_101.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_101.getItem())) {
             throw new RRException("此订单已取消!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_102.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_102.getItem())) {
             throw new RRException("此订单已删除!");
         }
 

+ 1 - 11
kmall-admin/src/main/java/com/kmall/admin/controller/SupplierController.java

@@ -53,15 +53,7 @@ public class SupplierController {
     @RequiresPermissions("supplier:info")
     @ResponseBody
     public R info(@PathVariable("id") Integer id) {
-        SupplierEntity supplier = new SupplierEntity();
-        if(id==0){
-            supplier.setLevelMerchSn(OmsMerchPropertiesBuilder.instance().getMerchSn());
-            supplier.setLevelMerchFlag(OmsMerchPropertiesBuilder.instance().getMerchShortName());
-            supplier.setIsShow("0");
-        }else{
-            supplier = supplierService.queryObject(id);
-        }
-
+        SupplierEntity supplier = supplierService.queryObject(id);
         return R.ok().put("supplier", supplier);
     }
 
@@ -72,8 +64,6 @@ public class SupplierController {
     @RequiresPermissions("supplier:save")
     @ResponseBody
     public R save(@RequestBody SupplierEntity supplier) {
-        supplier.setLevelMerchSn(OmsMerchPropertiesBuilder.instance().getMerchSn());
-        supplier.setLevelMerchFlag(OmsMerchPropertiesBuilder.instance().getMerchShortName());
         supplierService.save(supplier);
 
         return R.ok();

+ 18 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/ExportExceptionDataDao.java

@@ -0,0 +1,18 @@
+package com.kmall.admin.dao;
+
+
+import com.kmall.admin.entity.ExportExceptionDataEntity;
+import com.kmall.common.dao.BaseDao;
+import org.springframework.stereotype.Component;
+
+/**
+ * 数据导入异常数据记录Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-12-07 09:41:15
+ */
+@Component
+public interface ExportExceptionDataDao extends BaseDao<ExportExceptionDataEntity> {
+
+}

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java

@@ -115,6 +115,16 @@ public class GoodsDto implements Serializable {
     //热销
     private String isHotStr;
 
+    private String merchSn;
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
     public Integer getStoreId() {
         return storeId;
     }

+ 196 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/ExportExceptionDataEntity.java

@@ -0,0 +1,196 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 数据导入异常数据记录实体
+ * 表名 mall_export_exception_data
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-12-07 09:41:15
+ */
+public class ExportExceptionDataEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 导入商品异常数据
+     */
+    private String exportExceptionData;
+    /**
+     * 导入数据类型:1:商品导入;2:普通商品导入
+     */
+    private String exportDataType;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 商户编号
+     */
+    private String merchSn;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:主键
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取:主键
+     */
+    public Integer getId() {
+        return id;
+    }
+    /**
+     * 设置:导入商品异常数据
+     */
+    public void setExportExceptionData(String exportExceptionData) {
+        this.exportExceptionData = exportExceptionData;
+    }
+
+    /**
+     * 获取:导入商品异常数据
+     */
+    public String getExportExceptionData() {
+        return exportExceptionData;
+    }
+    /**
+     * 设置:导入数据类型:1:商品导入;2:普通商品导入
+     */
+    public void setExportDataType(String exportDataType) {
+        this.exportDataType = exportDataType;
+    }
+
+    /**
+     * 获取:导入数据类型:1:商品导入;2:普通商品导入
+     */
+    public String getExportDataType() {
+        return exportDataType;
+    }
+    /**
+     * 设置:用户id
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取:用户id
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/ExportExceptionDataService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service;
+
+import com.kmall.admin.entity.ExportExceptionDataEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 数据导入异常数据记录Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-12-07 09:41:15
+ */
+public interface ExportExceptionDataService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param id 主键
+     * @return 实体
+     */
+    ExportExceptionDataEntity queryObject(Integer id);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<ExportExceptionDataEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param exportExceptionData 实体
+     * @return 保存条数
+     */
+    int save(ExportExceptionDataEntity exportExceptionData);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param exportExceptionData 实体
+     * @return 更新条数
+     */
+    int update(ExportExceptionDataEntity exportExceptionData);
+
+    /**
+     * 根据主键删除
+     *
+     * @param id
+     * @return 删除条数
+     */
+    int delete(Integer id);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param ids
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] ids);
+}

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

@@ -122,5 +122,5 @@ public interface GoodsService {
      * @param goodsEntityList
      * @return
      */
-    int uploadExcel(List<GoodsDto> goodsEntityList);
+    int uploadExcel(List<GoodsDto> goodsEntityList,int exportDataType);
 }

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -4,6 +4,7 @@ import com.kmall.admin.entity.OfflineCartEntity;
 import com.kmall.admin.entity.OrderEntity;
 import com.kmall.admin.entity.OrderRefundEntity;
 import com.kmall.common.entity.SysUserEntity;
+import com.kmall.common.utils.R;
 import com.kmall.common.utils.print.ticket.item.Ticket;
 import com.kmall.common.utils.wechat.WechatRefundApiResult;
 

+ 58 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/ExportExceptionDataServiceImpl.java

@@ -0,0 +1,58 @@
+package com.kmall.admin.service.impl;
+
+import com.kmall.admin.dao.ExportExceptionDataDao;
+import com.kmall.admin.entity.ExportExceptionDataEntity;
+import com.kmall.admin.service.ExportExceptionDataService;
+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 2018-12-07 09:41:15
+ */
+@Service("exportExceptionDataService")
+public class ExportExceptionDataServiceImpl implements ExportExceptionDataService {
+    @Autowired
+    private ExportExceptionDataDao exportExceptionDataDao;
+
+    @Override
+    public ExportExceptionDataEntity queryObject(Integer id) {
+        return exportExceptionDataDao.queryObject(id);
+    }
+
+    @Override
+    public List<ExportExceptionDataEntity> queryList(Map<String, Object> map) {
+        return exportExceptionDataDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return exportExceptionDataDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(ExportExceptionDataEntity exportExceptionData) {
+        return exportExceptionDataDao.save(exportExceptionData);
+    }
+
+    @Override
+    public int update(ExportExceptionDataEntity exportExceptionData) {
+        return exportExceptionDataDao.update(exportExceptionData);
+    }
+
+    @Override
+    public int delete(Integer id) {
+        return exportExceptionDataDao.delete(id);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]ids) {
+        return exportExceptionDataDao.deleteBatch(ids);
+    }
+}

+ 115 - 42
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -56,6 +56,10 @@ public class GoodsServiceImpl implements GoodsService {
     private SysCusNationCodeDao sysCusNationCodeDao;
     @Autowired
     private SysCusUnitCodeDao sysCusUnitCodeDao;
+    @Autowired
+    private MerchDao merchDao;
+    @Autowired
+    private ExportExceptionDataDao exportExceptionDataDao;
 
     @Override
     public GoodsEntity queryObject(Integer id) {
@@ -96,7 +100,7 @@ public class GoodsServiceImpl implements GoodsService {
     public int save(GoodsEntity goods) {
         Map<String, Object> valideDate = MapBeanUtil.fromObject(goods);
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
-        builder.put("merchSn", "商户");
+        builder.put("merchSn", "商户编号");
         builder.put("attributeCategory", "商品分类");
         builder.put("categoryId", "商品二级分类");
         builder.put("goodsSn", "商品编码");
@@ -237,7 +241,7 @@ public class GoodsServiceImpl implements GoodsService {
     public int update(GoodsEntity goods) {
         Map<String, Object> valideDate = MapBeanUtil.fromObject(goods);
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
-        builder.put("merchSn", "商户");
+        builder.put("merchSn", "商户编号");
         builder.put("attributeCategory", "商品分类");
         builder.put("categoryId", "商品二级分类");
         builder.put("goodsSn", "商品编码");
@@ -499,14 +503,15 @@ public class GoodsServiceImpl implements GoodsService {
     }
 
     @Override
-    @Transactional
-    public int uploadExcel(List<GoodsDto> goodsEntityList) {
+    public int uploadExcel(List<GoodsDto> goodsEntityList,int exportDataType) {
         SysUserEntity user = ShiroUtils.getUserEntity();
+        String merchSn = user.getMerchSn();
         boolean isSuccess = false;
-        List<String> failSameSkuList = new ArrayList<>(), failHotSkuList = new ArrayList<>(), failCateSkuList = new ArrayList<>(),
-                failBrandSkuList = new ArrayList<>(), failFreightSkuList = new ArrayList<>(), failSuppSkuList = new ArrayList<>(),
-                failUnitSkuList = new ArrayList<>(), failNationSkuList = new ArrayList<>(),failProdbarSkuList = new ArrayList<>(),
-                failCateL2SkuList = new ArrayList<>(), failTypeSkuList = new ArrayList<>();
+        List<String> failSameSkuList = new ArrayList<>(), failHotGoodsSnList = new ArrayList<>(), failCateGoodsSnList = new ArrayList<>(),
+                failBrandGoodsSnList = new ArrayList<>(), failFreightGoodsSnList = new ArrayList<>(), failSuppGoodsSnList = new ArrayList<>(),
+                failUnitGoodsSnList = new ArrayList<>(), failNationGoodsSnList = new ArrayList<>(),failProdbarGoodsSnList = new ArrayList<>(),
+                failCateL2GoodsSnList = new ArrayList<>(), failTypeGoodsSnList = new ArrayList<>(), failMerchGoodsSnList = new ArrayList<>(),
+                failMerchUserGoodsSnList = new ArrayList<>();
         List<String> failGoodsSnList = new ArrayList<>();
         List<String> failGoodsTypeList = new ArrayList<>();
         List<String> failFreightList = new ArrayList<>();
@@ -516,6 +521,7 @@ public class GoodsServiceImpl implements GoodsService {
                 GoodsEntity goodsEntity = new GoodsEntity();
                 Map<String, Object> valideDate = MapBeanUtil.fromObject(goodsDto);
                 ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+                builder.put("merchSn", "商户编号");
                 builder.put("goodsSn", "商品编码");
                 builder.put("categoryName", "商品分类");
                 builder.put("goodsBizType", "货品业务类型");
@@ -550,14 +556,30 @@ public class GoodsServiceImpl implements GoodsService {
                         throw new RRException(r.get("msg").toString());
                     }
                 }
+                //业务类型校验
                 if(!Dict.orderBizType.item_11.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())){
                     if(!(Dict.orderBizType.item_02.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())
                             || Dict.orderBizType.item_10.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())
                             || Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType()))){
                         isSuccess = true;
-                        failTypeSkuList.add(goodsDto.getSku());
+                        failTypeGoodsSnList.add(goodsDto.getSku());
                     }
                 }
+                if(!user.getRoleType().equalsIgnoreCase(Dict.roleType.item_1.getItem())) {
+                    if (!merchSn.equalsIgnoreCase(goodsDto.getMerchSn())) {
+                        isSuccess = true;
+                        failMerchUserGoodsSnList.add(goodsDto.getGoodsSn());
+                    }
+                }
+                MerchEntity merchEntity = merchDao.findByMerchSn(goodsDto.getMerchSn());
+                if(merchEntity != null){
+                    goodsEntity.setMerchSn(merchEntity.getMerchSn());
+                }else{//商户不存在
+                    isSuccess = true;
+                    failMerchGoodsSnList.add(goodsDto.getGoodsSn());
+                }
+
+                //校验商品信息是否已存在
                 Map<String, Object> map = new HashMap<>();
                 map.put("isSame", "true");
                 map.put("sku", goodsDto.getSku());
@@ -567,42 +589,45 @@ public class GoodsServiceImpl implements GoodsService {
                 if (list != null && list.size() != 0) {
                     isSuccess = true;
                     if(goodsDto.getSku()!=null) {
-                        failSameSkuList.add(goodsDto.getGoodsSn());
+                        failSameSkuList.add(goodsDto.getSku());
                     }
                     failGoodsSnList.add(goodsDto.getGoodsSn());
                     failGoodsTypeList.add(goodsDto.getGoodsBizType());
                 }
-                GoodsEntity prodbarGoods = goodsDao.queryObjectByProdBarcode(goodsDto.getProdBarcode(),"",null);
+                //校验产品条码是否存在
+                GoodsEntity prodbarGoods = goodsDao.queryObjectByProdBarcode(goodsDto.getProdBarcode(),merchSn,null);
                 if(prodbarGoods != null){
                     isSuccess = true;
-                    failProdbarSkuList.add(goodsDto.getGoodsSn());
+                    failProdbarGoodsSnList.add(goodsDto.getGoodsSn());
                 }else{
                     goodsEntity.setProdBarcode(goodsDto.getProdBarcode());
                 }
+                //热销商品校验
                 if (Dict.orderBizType.item_02.getItem().equals(goodsDto.getGoodsBizType())
                         || Dict.orderBizType.item_10.getItem().equals(goodsDto.getGoodsBizType())) {
                     if(goodsDto.getIsHotStr().equalsIgnoreCase("1")){
                         isSuccess = true;
-                        failHotSkuList.add(goodsDto.getGoodsSn());
+                        failHotGoodsSnList.add(goodsDto.getGoodsSn());
                     }
                 }
+                //商品配置校验
                 CategoryEntity categoryEntity = categoryDao.queryObjectByName(goodsDto.getCategoryName());
                 if(categoryEntity==null){
                     isSuccess = true;
-                    failCateSkuList.add(goodsDto.getGoodsSn());
+                    failCateGoodsSnList.add(goodsDto.getGoodsSn());
                 }else{
                     if(categoryEntity.getLevel().equalsIgnoreCase("L2")) {
                         goodsEntity.setCategoryId(categoryEntity.getId());
                         goodsEntity.setAttributeCategory(categoryEntity.getParentId());
                     }else{
                         isSuccess = true;
-                        failCateL2SkuList.add(goodsDto.getGoodsSn());
+                        failCateL2GoodsSnList.add(goodsDto.getGoodsSn());
                     }
                 }
                 BrandEntity brandEntity = brandDao.queryObjectByName(goodsDto.getBrandName());
                 if (brandEntity == null) {
                     isSuccess = true;
-                    failBrandSkuList.add(goodsDto.getGoodsSn());
+                    failBrandGoodsSnList.add(goodsDto.getGoodsSn());
                 } else {
                     goodsEntity.setBrandId(brandEntity.getId());
                 }
@@ -610,7 +635,7 @@ public class GoodsServiceImpl implements GoodsService {
                 FreightEntity freightEntity = freightDao.queryObjectByName(goodsDto.getDefaultFreight());
                 if(freightEntity==null){
                     isSuccess = true;
-                    failFreightSkuList.add(goodsDto.getGoodsSn());
+                    failFreightGoodsSnList.add(goodsDto.getGoodsSn());
                     failFreightList.add(goodsDto.getDefaultFreight());
                 }else {
                     goodsEntity.setFreightId(freightEntity.getId());
@@ -619,14 +644,14 @@ public class GoodsServiceImpl implements GoodsService {
                     SupplierEntity supplierEntity = supplierDao.queryObjectByName(goodsDto.getSupplierName());
                     if (supplierEntity == null) {
                         isSuccess = true;
-                        failSuppSkuList.add(goodsDto.getGoodsSn());
+                        failSuppGoodsSnList.add(goodsDto.getGoodsSn());
                     } else {
                         goodsEntity.setSupplierId(supplierEntity.getId());
                     }
                     SysCusUnitCodeEntity sysCusUnitCodeEntity = sysCusUnitCodeDao.queryObjectByName(goodsDto.getUnitName());
                     if (sysCusUnitCodeEntity == null) {
                         isSuccess = true;
-                        failUnitSkuList.add(goodsDto.getGoodsSn());
+                        failUnitGoodsSnList.add(goodsDto.getGoodsSn());
                     } else {
                         goodsEntity.setUnitCode(sysCusUnitCodeEntity.getCode());
                     }
@@ -634,7 +659,7 @@ public class GoodsServiceImpl implements GoodsService {
                     SysCusNationCodeEntity sysCusNationCodeEntity = sysCusNationCodeDao.queryObjectByName(goodsDto.getOriCntName());
                     if (sysCusNationCodeEntity == null) {
                         isSuccess = true;
-                        failNationSkuList.add(goodsDto.getGoodsSn());
+                        failNationGoodsSnList.add(goodsDto.getGoodsSn());
                     } else {
                         goodsEntity.setOriCntCode(sysCusNationCodeEntity.getCode());
                     }
@@ -715,45 +740,93 @@ public class GoodsServiceImpl implements GoodsService {
                     }
                 }
             }
+            ExportExceptionDataEntity exportExceptionDataEntity = new ExportExceptionDataEntity();
+            exportExceptionDataEntity.setCreaterSn(user.getUserId().toString());
+            exportExceptionDataEntity.setUserId(user.getUserId().intValue());
+            exportExceptionDataEntity.setCreateTime(new Date());
+            exportExceptionDataEntity.setModTime(new Date());
+            exportExceptionDataEntity.setMerchSn(merchSn);
+            exportExceptionDataEntity.setStoreId(user.getStoreId());
+            if(exportDataType == 1) {
+                exportExceptionDataEntity.setExportDataType("1");
+            }else{
+                exportExceptionDataEntity.setExportDataType("2");
+            }
+            if(failMerchUserGoodsSnList != null && failMerchUserGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("不能操作除了登录用户以外商户的商品,当前商户编号为【"+merchSn+"】,请检查商品编码【"+failMerchUserGoodsSnList+"】的商品信息");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
+            }
+            if(failMerchGoodsSnList != null && failMerchGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("商户编号不存在,请检查商品编码【"+failMerchGoodsSnList+"】的商品信息,请先维护用户商户编号信息再继续操作!");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
+            }
             if(failGoodsSnList != null && failGoodsSnList.size() > 0){
                 if(failSameSkuList.size()>0) {
-                    throw new RRException("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
+                    exportExceptionDataEntity.setExportExceptionData("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
                             failGoodsTypeList + "】,SKU【" + failSameSkuList + "】的商品信息");
+                    exportExceptionDataDao.save(exportExceptionDataEntity);
+                    throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
                 }else{
-                    throw new RRException("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
+                    exportExceptionDataEntity.setExportExceptionData("不能有重复的商品编码、sku信息!请检查商品编码【" + failGoodsSnList + "】,业务类型【" +
                             failGoodsTypeList + "】的商品信息");
+                    exportExceptionDataDao.save(exportExceptionDataEntity);
+                    throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
                 }
             }
-            if(failTypeSkuList != null && failTypeSkuList.size() > 0){
-                throw new RRException("货品业务类型只能是【00保税备货、02保税补货、10保税展示】!请检查SKU【"+failTypeSkuList+"】的商品信息");
+            if(failTypeGoodsSnList != null && failTypeGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("货品业务类型只能是【00保税备货、02保税补货、10保税展示】!请检查商品编码【"+failTypeGoodsSnList+"】的商品信息");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failProdbarSkuList != null && failProdbarSkuList.size() > 0){
-                throw new RRException("不能有重复的产品条码信息!请检查SKU【"+failProdbarSkuList+"】的商品产品条码信息");
+            if(failProdbarGoodsSnList != null && failProdbarGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("不能有重复的产品条码信息!请检查商品编码【"+failProdbarGoodsSnList+"】的商品产品条码信息");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failHotSkuList != null && failHotSkuList.size() > 0){
-                throw new RRException("请检查业务类型为【保税补货或保税展示】的商品,sku【"+failHotSkuList+"】的商品不能设置为热销!");
+            if(failHotGoodsSnList != null && failHotGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("请检查业务类型为【保税补货或保税展示】的商品,商品编码【"+failHotGoodsSnList+"】的商品不能设置为热销!");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failCateSkuList != null && failCateSkuList.size() > 0){
-                throw new RRException("分类信息请在商城配置》商品分类中维护,不存在的商品sku【"+failCateSkuList+"】");
+            if(failCateGoodsSnList != null && failCateGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("分类信息请在商城配置》商品分类中维护,不存在的商品编码【"+failCateGoodsSnList+"】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failCateL2SkuList != null && failCateL2SkuList.size() > 0){
-                throw new RRException("分类信息请在商城配置》商品分类中查看,商品分类必须为二级分类,错误的商品sku【"+failCateL2SkuList+"】");
+            if(failCateL2GoodsSnList != null && failCateL2GoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("分类信息请在商城配置》商品分类中查看,商品分类必须为二级分类,不存在的商品编码【"+failCateL2GoodsSnList+"】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failBrandSkuList != null && failBrandSkuList.size() > 0){
-                throw new RRException("品牌信息请在商城配置》品牌制造商中维护,不存在的商品sku【" + failBrandSkuList + "】");
+            if(failBrandGoodsSnList != null && failBrandGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("品牌信息请在商城配置》品牌制造商中维护,不存在的商品编码【" + failBrandGoodsSnList + "】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failFreightSkuList != null && failFreightSkuList.size() > 0){
-                throw new RRException("运费信息请在商城配置》运费模板中维护,不存在的商品sku【"+failFreightSkuList+"】,运费【"+failFreightList+"】");
+            if(failFreightGoodsSnList != null && failFreightGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("运费信息请在商城配置》运费模板中维护,不存在的商品编码【"+failFreightGoodsSnList+"】,运费【"+failFreightList+"】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failSuppSkuList != null && failSuppSkuList.size() > 0){
-                throw new RRException("供应商信息请在商城配置》商品供应商中维护,不存在的商品sku【" + failSuppSkuList + "】");
+            if(failSuppGoodsSnList != null && failSuppGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("供应商信息请在商城配置》商品供应商中维护,不存在的商品编码【" + failSuppGoodsSnList + "】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failUnitSkuList != null && failUnitSkuList.size() > 0){
-                throw new RRException("计算单位信息请在商城配置》计算单位中维护,不存在的商品sku【" + failUnitSkuList + "】");
+            if(failUnitGoodsSnList != null && failUnitGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("计算单位信息请在商城配置》计算单位中维护,不存在的商品编码【" + failUnitGoodsSnList + "】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
-            if(failNationSkuList != null && failNationSkuList.size() > 0){
-                throw new RRException("原产国信息请在商城配置》原产国中维护,不存在的商品sku【" + failNationSkuList + "】");
+            if(failNationGoodsSnList != null && failNationGoodsSnList.size() > 0){
+                exportExceptionDataEntity.setExportExceptionData("原产国信息请在商城配置》原产国中维护,不存在的商品编码【" + failNationGoodsSnList + "】");
+                exportExceptionDataDao.save(exportExceptionDataEntity);
+                throw new RRException("导入数据异常,异常信息请在商品管理》》商品导入异常数据中查看检查");
             }
+        }else{
+            throw new RRException("导入数据为空,或者检查商品编码数据是否为空");
         }
         return 1;
     }

+ 29 - 18
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -57,6 +57,8 @@ public class OrderServiceImpl implements OrderService {
     private OfflineCartDao offlineCartDao;
     @Autowired
     private GoodsDao goodsDao;
+    @Autowired
+    private MerchDao merchDao;
 
     @Override
     public OrderEntity queryObject(Long id) {
@@ -155,28 +157,28 @@ public class OrderServiceImpl implements OrderService {
         if (0 == shippingStatus) {
             throw new RRException("此订单未发货,不能确认收货!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_301.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_301.getItem())) {
             throw new RRException("此订单已完成!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_0.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
             throw new RRException("此订单待付款!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_100.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_100.getItem())) {
             throw new RRException("此订单付款中!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_101.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_101.getItem())) {
             throw new RRException("此订单已取消!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_102.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_102.getItem())) {
             throw new RRException("此订单已删除!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_201.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
             throw new RRException("此订单还未发货!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_401.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_401.getItem())) {
             throw new RRException("此订单已退款!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_402.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
             throw new RRException("此订单已退款!");
         }
         orderEntity.setShippingStatus(2);
@@ -204,7 +206,6 @@ public class OrderServiceImpl implements OrderService {
 
     @Override
     public Ticket printMsg(Long id) {
-        System.out.println("打印小票>>>>>>>>>>"+id);
         OrderEntity orderEntity = queryInfos(id);
         List<OrderGoodsEntity> orderGoodsEntityList = orderEntity.getOrderGoodsEntityList();
         // 获取门店
@@ -215,7 +216,7 @@ public class OrderServiceImpl implements OrderService {
         // 小票头
         TicketHead head = new TicketHead();
         head.setTitle(OmsMerchPropertiesBuilder.instance().getMerchName() + storeEntity.getStoreName());
-        head.setMemberId(orderEntity.getUserName().toString());
+//        head.setMemberId(orderEntity.getUserName().toString());
         head.setOrderId(orderEntity.getOrderSn());
         head.setTradeTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE").format(new Date()));
 
@@ -499,6 +500,11 @@ public class OrderServiceImpl implements OrderService {
                 resultObj.put("errmsg", "该操作只允许店员账户操作");
                 return resultObj;
             }
+            if(org.apache.commons.lang3.StringUtils.isEmpty(user.getMerchSn())){
+                resultObj.put("errno", 400);
+                resultObj.put("errmsg", "操作用户的商户编号为空,请先维护用户商户编号信息再来操作");
+                return resultObj;
+            }
             Long userId = user.getUserId();
             Integer storeId = user.getStoreId();
             //获取要购买的商品
@@ -539,7 +545,7 @@ public class OrderServiceImpl implements OrderService {
                 }
             }
             String merchOrderSn = "EMATO"+CommonUtil.generateOrderNumber();
-            OrderEntity order = setOrderVo(user,offlineCartEntityList);
+            OrderEntity order = setOrderVo(user,offlineCartEntityList,user.getMerchSn());
             order.setStoreId(storeId);
             order.setMerchOrderSn(merchOrderSn);
 
@@ -578,7 +584,7 @@ public class OrderServiceImpl implements OrderService {
      * @param loginUser
      * @return
      */
-    public OrderEntity setOrderVo(SysUserEntity loginUser,List<OfflineCartEntity> offlineCartEntityList){
+    public OrderEntity setOrderVo(SysUserEntity loginUser,List<OfflineCartEntity> offlineCartEntityList,String merchSn){
         OrderEntity orderInfo = new OrderEntity();
         BigDecimal freightPrice = new BigDecimal(0.00);
         BigDecimal goodsTotalPrice = new BigDecimal(0.00);
@@ -596,8 +602,13 @@ public class OrderServiceImpl implements OrderService {
         BigDecimal actualPrice = orderTotalPrice.subtract(couponPrice);
 
         //商户(拼音首字母)+业务类型+编号
-        String merchSn = OmsMerchPropertiesBuilder.instance().getMerchSn();
-        String merchShortName = OmsMerchPropertiesBuilder.instance().getMerchShortName();
+//        String merchSn = OmsMerchPropertiesBuilder.instance().getMerchSn();
+//        String merchShortName = OmsMerchPropertiesBuilder.instance().getMerchShortName();
+        MerchEntity merchEntity = merchDao.findByMerchSn(merchSn);
+        String merchShortName = "";
+        if(merchEntity != null){
+            merchShortName = merchEntity.getMerchShortName();
+        }
         String orderSn = merchShortName + Dict.orderBizType.item_11.getItem() + CommonUtil.generateOrderNumber();
         orderInfo.setOrderSn(orderSn);
         orderInfo.setMerchSn(merchSn);
@@ -675,16 +686,16 @@ public class OrderServiceImpl implements OrderService {
             throw new RRException("该操作只允许店员账户操作");
         }
         OrderEntity orderEntity = queryObject(id);
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_201.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
             throw new RRException("此订单已付款!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_301.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_301.getItem())) {
             throw new RRException("此订单已完成!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_101.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_101.getItem())) {
             throw new RRException("此订单已取消!");
         }
-        if (orderEntity.getOrderStatus() == Integer.valueOf(Dict.orderStatus.item_102.getItem())) {
+        if (orderEntity.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_102.getItem())) {
             throw new RRException("此订单已删除!");
         }
         orderEntity.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_201.getItem()));

+ 28 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/StoreServiceImpl.java

@@ -1,9 +1,13 @@
 package com.kmall.admin.service.impl;
 
+import com.kmall.admin.dao.MerchDao;
 import com.kmall.admin.dao.StoreDao;
+import com.kmall.admin.entity.MerchEntity;
 import com.kmall.admin.entity.StoreEntity;
 import com.kmall.admin.service.StoreService;
 import com.kmall.api.service.merch.OmsMerchPropertiesBuilder;
+import com.kmall.common.utils.RRException;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +25,8 @@ import java.util.Map;
 public class StoreServiceImpl implements StoreService {
     @Autowired
     private StoreDao storeDao;
+    @Autowired
+    private MerchDao merchDao;
 
     @Override
     public StoreEntity queryObject(Integer id) {
@@ -39,13 +45,33 @@ public class StoreServiceImpl implements StoreService {
 
     @Override
     public int save(StoreEntity store) {
-        store.setMerchSn(OmsMerchPropertiesBuilder.instance().getMerchSn());
-        store.setMerchName(OmsMerchPropertiesBuilder.instance().getMerchName());
+//        store.setMerchSn(OmsMerchPropertiesBuilder.instance().getMerchSn());
+//        store.setMerchName(OmsMerchPropertiesBuilder.instance().getMerchName());
+        if(StringUtils.isEmpty(store.getMerchSn())){
+            throw new RRException("商户编号不能为空");
+        }else{
+            MerchEntity merchEntity = merchDao.findByMerchSn(store.getMerchSn());
+            if(merchEntity != null){
+                store.setMerchName(merchEntity.getMerchName());
+            }else{
+                throw new RRException("商户编号不存在,请先维护用户商户编号信息再来操作");
+            }
+        }
         return storeDao.save(store);
     }
 
     @Override
     public int update(StoreEntity store) {
+        if(StringUtils.isEmpty(store.getMerchSn())){
+            throw new RRException("商户编号不能为空");
+        }else{
+            MerchEntity merchEntity = merchDao.findByMerchSn(store.getMerchSn());
+            if(merchEntity != null){
+                store.setMerchName(merchEntity.getMerchName());
+            }else{
+                throw new RRException("商户编号不存在,请先维护用户商户编号信息再来操作");
+            }
+        }
         return storeDao.update(store);
     }
 

+ 26 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/SupplierServiceImpl.java

@@ -1,8 +1,12 @@
 package com.kmall.admin.service.impl;
 
+import com.kmall.admin.dao.MerchDao;
 import com.kmall.admin.dao.SupplierDao;
+import com.kmall.admin.entity.MerchEntity;
 import com.kmall.admin.entity.SupplierEntity;
 import com.kmall.admin.service.SupplierService;
+import com.kmall.common.utils.RRException;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -20,6 +24,8 @@ import java.util.Map;
 public class SupplierServiceImpl implements SupplierService {
     @Autowired
     private SupplierDao supplierDao;
+    @Autowired
+    private MerchDao merchDao;
 
     @Override
     public SupplierEntity queryObject(Integer id) {
@@ -38,11 +44,31 @@ public class SupplierServiceImpl implements SupplierService {
 
     @Override
     public int save(SupplierEntity supplier) {
+        if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
+            throw new RRException("一级商户编号不能为空");
+        }else{
+            MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
+            if(merchEntity != null){
+                supplier.setLevelMerchFlag(merchEntity.getMerchShortName());
+            }else{
+                throw new RRException("商户编号不存在,请先维护用户商户编号信息再来操作");
+            }
+        }
         return supplierDao.save(supplier);
     }
 
     @Override
     public int update(SupplierEntity supplier) {
+        if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
+            throw new RRException("一级商户编号不能为空");
+        }else{
+            MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
+            if(merchEntity != null){
+                supplier.setLevelMerchFlag(merchEntity.getMerchShortName());
+            }else{
+                throw new RRException("商户编号不存在,请先维护用户商户编号信息再来操作");
+            }
+        }
         return supplierDao.update(supplier);
     }
 

+ 13 - 12
kmall-admin/src/main/resources/XmlTemplate/GeneralGoodsDtoList.xml

@@ -6,18 +6,19 @@
               varType="com.kmall.admin.dto.GoodsDto">
             <section startRow="1" endRow="1">
                 <mapping row="1" col="0">GoodsDto.goodsSn</mapping>
-                <mapping row="1" col="1">GoodsDto.categoryName</mapping>
-                <mapping row="1" col="2">GoodsDto.goodsBizType</mapping>
-                <mapping row="1" col="3">GoodsDto.name</mapping>
-                <mapping row="1" col="4">GoodsDto.prodBarcode</mapping>
-                <mapping row="1" col="5">GoodsDto.supplierName</mapping>
-                <mapping row="1" col="6">GoodsDto.brandName</mapping>
-                <mapping row="1" col="7">GoodsDto.defaultFreight</mapping>
-                <mapping row="1" col="8">GoodsDto.isOnSaleStr</mapping>
-                <mapping row="1" col="9">GoodsDto.goodsUnit</mapping>
-                <mapping row="1" col="10">GoodsDto.isHotStr</mapping>
-                <mapping row="1" col="11">GoodsDto.marketPrice</mapping>
-                <mapping row="1" col="12">GoodsDto.retailPrice</mapping>
+                <mapping row="1" col="1">GoodsDto.merchSn</mapping>
+                <mapping row="1" col="2">GoodsDto.categoryName</mapping>
+                <mapping row="1" col="3">GoodsDto.goodsBizType</mapping>
+                <mapping row="1" col="4">GoodsDto.name</mapping>
+                <mapping row="1" col="5">GoodsDto.prodBarcode</mapping>
+                <mapping row="1" col="6">GoodsDto.supplierName</mapping>
+                <mapping row="1" col="7">GoodsDto.brandName</mapping>
+                <mapping row="1" col="8">GoodsDto.defaultFreight</mapping>
+                <mapping row="1" col="9">GoodsDto.isOnSaleStr</mapping>
+                <mapping row="1" col="10">GoodsDto.goodsUnit</mapping>
+                <mapping row="1" col="11">GoodsDto.isHotStr</mapping>
+                <mapping row="1" col="12">GoodsDto.marketPrice</mapping>
+                <mapping row="1" col="13">GoodsDto.retailPrice</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 22 - 21
kmall-admin/src/main/resources/XmlTemplate/GoodsDtoList.xml

@@ -6,27 +6,28 @@
               varType="com.kmall.admin.dto.GoodsDto">
             <section startRow="1" endRow="1">
                 <mapping row="1" col="0">GoodsDto.goodsSn</mapping>
-                <mapping row="1" col="1">GoodsDto.categoryName</mapping>
-                <mapping row="1" col="2">GoodsDto.goodsBizType</mapping>
-                <mapping row="1" col="3">GoodsDto.name</mapping>
-                <mapping row="1" col="4">GoodsDto.prodBarcode</mapping>
-                <mapping row="1" col="5">GoodsDto.supplierName</mapping>
-                <mapping row="1" col="6">GoodsDto.sku</mapping>
-                <mapping row="1" col="7">GoodsDto.brandName</mapping>
-                <mapping row="1" col="8">GoodsDto.defaultFreight</mapping>
-                <mapping row="1" col="9">GoodsDto.isOnSaleStr</mapping>
-                <mapping row="1" col="10">GoodsDto.goodsUnit</mapping>
-                <mapping row="1" col="11">GoodsDto.isHotStr</mapping>
-                <mapping row="1" col="12">GoodsDto.cusGoodsCode</mapping>
-                <mapping row="1" col="13">GoodsDto.ciqProdModel</mapping>
-                <mapping row="1" col="14">GoodsDto.goodsRate</mapping>
-                <mapping row="1" col="15">GoodsDto.marketPrice</mapping>
-                <mapping row="1" col="16">GoodsDto.retailPrice</mapping>
-                <mapping row="1" col="17">GoodsDto.brand</mapping>
-                <mapping row="1" col="18">GoodsDto.unitName</mapping>
-                <mapping row="1" col="19">GoodsDto.oriCntName</mapping>
-                <mapping row="1" col="20">GoodsDto.cusDeclEle</mapping>
-                <mapping row="1" col="21">GoodsDto.cusRecCode</mapping>
+                <mapping row="1" col="1">GoodsDto.merchSn</mapping>
+                <mapping row="1" col="2">GoodsDto.categoryName</mapping>
+                <mapping row="1" col="3">GoodsDto.goodsBizType</mapping>
+                <mapping row="1" col="4">GoodsDto.name</mapping>
+                <mapping row="1" col="5">GoodsDto.prodBarcode</mapping>
+                <mapping row="1" col="6">GoodsDto.supplierName</mapping>
+                <mapping row="1" col="7">GoodsDto.sku</mapping>
+                <mapping row="1" col="8">GoodsDto.brandName</mapping>
+                <mapping row="1" col="9">GoodsDto.defaultFreight</mapping>
+                <mapping row="1" col="10">GoodsDto.isOnSaleStr</mapping>
+                <mapping row="1" col="11">GoodsDto.goodsUnit</mapping>
+                <mapping row="1" col="12">GoodsDto.isHotStr</mapping>
+                <mapping row="1" col="13">GoodsDto.cusGoodsCode</mapping>
+                <mapping row="1" col="14">GoodsDto.ciqProdModel</mapping>
+                <mapping row="1" col="15">GoodsDto.goodsRate</mapping>
+                <mapping row="1" col="16">GoodsDto.marketPrice</mapping>
+                <mapping row="1" col="17">GoodsDto.retailPrice</mapping>
+                <mapping row="1" col="18">GoodsDto.brand</mapping>
+                <mapping row="1" col="19">GoodsDto.unitName</mapping>
+                <mapping row="1" col="20">GoodsDto.oriCntName</mapping>
+                <mapping row="1" col="21">GoodsDto.cusDeclEle</mapping>
+                <mapping row="1" col="22">GoodsDto.cusRecCode</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 129 - 0
kmall-admin/src/main/resources/mybatis/mapper/ExportExceptionDataDao.xml

@@ -0,0 +1,129 @@
+<?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.ExportExceptionDataDao">
+
+    <resultMap type="com.kmall.admin.entity.ExportExceptionDataEntity" id="exportExceptionDataMap">
+        <result property="id" column="id"/>
+        <result property="exportExceptionData" column="export_exception_data"/>
+        <result property="exportDataType" column="export_data_type"/>
+        <result property="userId" column="user_id"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="storeId" column="store_id"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.ExportExceptionDataEntity">
+		select
+			`id`,
+			`export_exception_data`,
+			`export_data_type`,
+			`user_id`,
+			`merch_sn`,
+			`store_id`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mall_export_exception_data
+		where id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.ExportExceptionDataEntity">
+		select
+    		`id`,
+    		`export_exception_data`,
+    		`export_data_type`,
+    		`user_id`,
+			`merch_sn`,
+			`store_id`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mall_export_exception_data
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by create_time desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mall_export_exception_data
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.ExportExceptionDataEntity" useGeneratedKeys="true" keyProperty="id">
+		insert into mall_export_exception_data(
+			`export_exception_data`,
+			`export_data_type`,
+			`user_id`,
+			`merch_sn`,
+			`store_id`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{exportExceptionData},
+			#{exportDataType},
+			#{userId},
+			#{merchSn},
+			#{storeId},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.ExportExceptionDataEntity">
+		update mall_export_exception_data 
+		<set>
+			<if test="exportExceptionData != null">`export_exception_data` = #{exportExceptionData}, </if>
+			<if test="exportDataType != null">`export_data_type` = #{exportDataType}, </if>
+			<if test="userId != null">`user_id` = #{userId}, </if>
+			<if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
+			<if test="storeId != null">`store_id` = #{storeId}, </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}
+	</update>
+	
+	<delete id="delete">
+		delete from mall_export_exception_data where id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mall_export_exception_data where id in 
+		<foreach item="id" collection="array" open="(" separator="," close=")">
+			#{id}
+		</foreach>
+	</delete>
+
+</mapper>

+ 3 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -91,6 +91,9 @@
         <if test="goodsId != null and goodsId != ''">
             AND a.id != #{goodsId}
         </if>
+        <if test="merchSn != null and merchSn != ''">
+            AND a.merch_sn = #{merchSn}
+        </if>
     </select>
 
     <select id="queryObjectBySn" resultType="com.kmall.admin.entity.GoodsEntity">

+ 29 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/exportexceptiondata.html

@@ -0,0 +1,29 @@
+<!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-select v-model="q.exportDataType" placeholder="导入数据类型">
+                        <i-option value="1">商品导入</i-option>
+                        <i-option value="2">普通商品导入</i-option>
+                    </i-select>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+</div>
+
+<script src="${rc.contextPath}/js/shop/exportexceptiondata.js?_${date.systemTime}"></script>
+</body>
+</html>

TEMPAT SAMPAH
kmall-admin/src/main/webapp/WEB-INF/page/shop/file/general_goods_export_yyyy_mm_dd_v1.0.0.xls


TEMPAT SAMPAH
kmall-admin/src/main/webapp/WEB-INF/page/shop/file/goods_export_yyyy_mm_dd_v1.0.0.xls


+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html

@@ -217,7 +217,7 @@
                         <td style="text-align: center; width: 600px; font-weight: bold;">描述</td>
                     </tr>
                     <tr v-for="(item,index) in payRecordList">
-                        <td align="center">{{item.outTradeNoWX}}</td>
+                        <td align="left">{{item.outTradeNoWX}}</td>
                         <td align="center">{{item.totalFee}}</td>
                         <td align="center" v-show="item.tradeState == 'SUCCESS'">支付成功</td>
                         <td align="center" v-show="item.tradeState == 'REFUND'">转入退款</td>

+ 5 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/store.html

@@ -37,6 +37,11 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
         <i-form ref="formValidate" :model="store" :rules="ruleValidate" :label-width="80">
+            <Form-item label="商户编号" prop="merchSn">
+                <i-select v-model="store.merchSn" filterable placeholder="商户编号" label-in-value>
+                    <i-option v-for="merch in merchList" :value="merch.merchSn" :key="merch.merchSn">{{merch.merchName}}</i-option>
+                </i-select>
+            </Form-item>
             <Form-item label="门店名称" prop="storeName">
                 <i-input v-model="store.storeName" placeholder="门店名称"/>
             </Form-item>

+ 7 - 4
kmall-admin/src/main/webapp/WEB-INF/page/shop/supplier.html

@@ -35,11 +35,14 @@
         <p slot="title">{{title}}</p>
 		<i-form ref="formValidate" :model="supplier" :rules="ruleValidate" :label-width="150">
             <Form-item label="一级商户编号" prop="levelMerchSn">
-                <i-input v-model="supplier.levelMerchSn" placeholder="一级商户编号" readonly/>
-            </Form-item>
-            <Form-item label="一级商户标识" prop="levelMerchFlag">
-                <i-input v-model="supplier.levelMerchFlag" placeholder="一级商户标识" readonly/>
+                <i-select v-model="supplier.levelMerchSn" filterable placeholder="一级商户编号" label-in-value>
+                    <i-option v-for="merch in merchList" :value="merch.merchSn" :key="merch.merchSn">{{merch.merchName}}</i-option>
+                </i-select>
             </Form-item>
+
+            <!--<Form-item label="一级商户标识" prop="levelMerchFlag">-->
+                <!--<i-input v-model="supplier.levelMerchFlag" placeholder="一级商户标识" readonly/>-->
+            <!--</Form-item>-->
             <Form-item label="二级供货商名称" prop="childSupplierName">
                 <i-input v-model="supplier.childSupplierName" placeholder="二级供货商名称"/>
             </Form-item>

+ 2 - 1
kmall-admin/src/main/webapp/js/shop/coupongrads.js

@@ -53,7 +53,8 @@ $(function () {
                     return '';
                 }
             }*/
-        ]
+        ],
+        multiselect: true
     });
 });
 

+ 106 - 0
kmall-admin/src/main/webapp/js/shop/exportexceptiondata.js

@@ -0,0 +1,106 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../exportexceptiondata/list',
+        datatype: "json",
+        colModel: [
+			{label: 'id', name: 'id', index: 'id', key: true, hidden: true},
+			{label: '导入商品异常数据', name: 'exportExceptionData', index: 'export_exception_data', width: 550},
+			{label: '导入数据类型', name: 'exportDataType', index: 'export_data_type', width: 40,align: 'center',
+                formatter: function (value) {
+                    if (value == '1') {
+                        return '商品导入';
+                    } else if (value == '2') {
+                        return '普通商品导入';
+                    }
+                    return '-';
+                }},
+			// {label: '用户id', name: 'userId', index: 'user_id', width: 80},
+			// {label: '创建人编号', name: 'createrSn', index: 'creater_sn', width: 80},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 40, align: 'center',formatter: function (value) {
+                return transDate(value);
+            }},
+			// {label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80},
+			// {label: '修改时间', name: 'modTime', index: 'mod_time', width: 80},
+			// {label: '时间戳', name: 'tstm', index: 'tstm', width: 80},
+            // {
+             //    label: '操作', width: 180, sortable: false, align: 'center',
+             //    formatter: function (value, col, row) {
+             //        let htmlStr = '<button class="btn btn-outline btn-info" onclick="vm.getInfoData(' + row.id + ')"><i class="fa fa-info-circle"></i>异常详情</button>&nbsp;';
+             //        return htmlStr;
+             //    }
+            // }
+            ],
+		viewrecords: true,
+        height: 385,
+        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,
+		exportExceptionData: {},
+		ruleValidate: {
+		},
+		q: {
+		    name: ''
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		getInfoData: function (id) {
+            vm.getInfo(id);
+            layer.prompt({title: '异常详情', formType: 3}, function(pass, index){
+
+            	layer.close(index);
+            });
+		},
+		getInfo: function(id){
+			$.get("../exportexceptiondata/info/"+id, function (r) {
+                vm.exportExceptionData = r.exportExceptionData;
+            });
+		},
+        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');
+		},
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        }
+	}
+});

+ 78 - 61
kmall-admin/src/main/webapp/js/shop/offilineOrderList.js

@@ -269,71 +269,88 @@ let vm = new Vue({
             if (id == null) {
                 return;
             }
-            confirm('确定付款?', function () {
-                $.ajax({
-                    type: "POST",
-                    url: "../order/confirmPay",
-                    contentType: "application/json",
-                    data: JSON.stringify(id),
-                    dataType: "json",
-                    success: function (r) {
+            var rowData = $("#jqGrid").jqGrid('getRowData', id);
+            if(rowData.orderStatus == '订单已付款'){
+                alert('该订单已支付');
+            }else if(rowData.orderStatus == '订单已取消'){
+                alert('该订单已取消');
+            }else if(rowData.orderStatus == '订单已删除'){
+                alert('该订单已删除');
+            }else {
+                confirm('确定付款?', function () {
+                    $.ajax({
+                        type: "POST",
+                        url: "../order/confirmPay",
+                        contentType: "application/json",
+                        data: JSON.stringify(id),
+                        dataType: "json",
+                        success: function (r) {
 
-                        if (r.code == 0) {
-                            alert('操作成功', function (index) {
-                                $("#jqGrid").trigger("reloadGrid");
-                            });
-                        } else {
-                            alert(r.msg);
+                            if (r.code == 0) {
+                                alert('操作成功', function (index) {
+                                    $("#jqGrid").trigger("reloadGrid");
+                                });
+                            } else {
+                                alert(r.msg);
+                            }
                         }
-                    }
+                    });
                 });
-            });
+            }
         },
         showInputAuthCode: function (event) {
             let id = getSelectedRow();
             if (id == null) {
                 return;
             }
+            var rowData = $("#jqGrid").jqGrid('getRowData', id);
+            if(rowData.orderStatus == '订单已付款'){
+                alert('该订单已支付');
+            }else if(rowData.orderStatus == '订单已取消'){
+                alert('该订单已取消');
+            }else if(rowData.orderStatus == '订单已删除'){
+                alert('该订单已删除');
+            }else{
+                var layer_index = layer.prompt({title: '请输入微信付款码',
+                    formType: 3,   //隐藏用户输入内容
+                    // 这个是确定按钮的事件
+                    "success":function(layero,index){
+                        // 键盘事件,判断回车
+                        $("input.layui-layer-input").on('keydown',function(e){
+                            if (e.which == 13) {
+                                var authCode = $(this).val();
+                                if (authCode == null || authCode == "") {
+                                    iview.Message.error("请输入微信付款码");
+                                    return;
+                                }
 
-            var layer_index = layer.prompt({title: '请输入微信付款码',
-                formType: 3,   //隐藏用户输入内容
-                // 这个是确定按钮的事件
-                "success":function(layero,index){
-                    // 键盘事件,判断回车
-                    $("input.layui-layer-input").on('keydown',function(e){
-                        if (e.which == 13) {
-                            var authCode = $(this).val();
-                            if (authCode == null || authCode == "") {
-                                iview.Message.error("请输入微信付款码");
-                                return;
+                                layer.close(layer_index);
+                                var msg_index = layer.msg('支付中', {
+                                    icon: 16
+                                    ,shade: 0.01
+                                });
+                                wxPay(authCode,id,msg_index);
                             }
-
-                            layer.close(layer_index);
-                            var msg_index = layer.msg('支付中', {
-                                icon: 16
-                                ,shade: 0.01
-                            });
-                            wxPay(authCode,id,msg_index);
+                        });
+                    },
+                    // 点击确定按钮事件
+                    yes : function(index,layero){
+                        // 取输入框数据
+                        var authCode =$(document.getElementsByClassName('layui-layer-input')[0]).val();
+                        if (authCode == null || authCode == "") {
+                            iview.Message.error("请输入微信付款码");
+                            return;
                         }
-                    });
-                },
-                // 点击确定按钮事件
-                yes : function(index,layero){
-                    // 取输入框数据
-                    var authCode =$(document.getElementsByClassName('layui-layer-input')[0]).val();
-                    if (authCode == null || authCode == "") {
-                        iview.Message.error("请输入微信付款码");
-                        return;
-                    }
 
-                    layer.close(layer_index);
-                    var msg_index = layer.msg('支付中', {
-                        icon: 16,
-                        shade: 0.01
-                    });
-                    wxPay(authCode,id,msg_index);
-                }
-            });
+                        layer.close(layer_index);
+                        var msg_index = layer.msg('支付中', {
+                            icon: 16,
+                            shade: 0.01
+                        });
+                        wxPay(authCode,id,msg_index);
+                    }
+                });
+            }
 
             // layer.prompt({title: '请输入微信付款码', formType: 3}, function(pass, index){
             //     var authCode= pass;
@@ -440,9 +457,9 @@ let vm = new Vue({
         content += "<div style=\"text-align: center;width: 100%;font-weight:bold;font-size: 13px;\">";
         content += ticket.ticketHead.title;
         content += "</div>";
-        content += "<div style=\"width: 100%;\">";
-        content += "会员:" + ticket.ticketHead.memberId;
-        content += "</div>";
+        // content += "<div style=\"width: 100%;\">";
+        // content += "会员:" + ticket.ticketHead.memberId;
+        // content += "</div>";
         content += "<div style=\"width: 100%;\">";
         content += "订单号:" + ticket.ticketHead.orderId;
         content += "</div>";
@@ -510,12 +527,12 @@ let vm = new Vue({
         content += "<div style=\"width: 100%;\">";
         content += "订单号:" + ticket.cusListing.orderId;
         content += "</div>";
-        content += "<div style=\"width: 100%;\">";
-        content += "始发地:" + ticket.cusListing.originAddress;
-        content += "</div>";
-        content += "<div style=\"width: 100%;\">";
-        content += "交货地:" + ticket.cusListing.deliveryAddress;
-        content += "</div>";
+        // content += "<div style=\"width: 100%;\">";
+        // content += "始发地:" + ticket.cusListing.originAddress;
+        // content += "</div>";
+        // content += "<div style=\"width: 100%;\">";
+        // content += "交货地:" + ticket.cusListing.deliveryAddress;
+        // content += "</div>";
         content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
         content += "<div style=\"width: 100%;\">";
         content += ticket.ticketFoot.summary;

+ 13 - 2
kmall-admin/src/main/webapp/js/shop/store.js

@@ -4,6 +4,8 @@ $(function () {
         datatype: "json",
         colModel: [
             {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
+            {label: '商户编号', name: 'merchSn', index: 'merch_sn', width: 80},
+            {label: '商户名称', name: 'merchName', index: 'merch_name', width: 60},
             {label: '门店名称', name: 'storeName', index: 'store_name', width: 80},
             {label: '门店编号', name: 'storeNumber', index: 'store_number', width: 80},
             {label: '门店地址', name: 'storeAddress', index: 'store_address', width: 80},
@@ -57,7 +59,8 @@ let vm = new Vue({
         q: {
             storeName: '',
             storeNumber: ''
-        }
+        },
+        merchList: []
     },
     methods: {
         query: function () {
@@ -67,6 +70,8 @@ let vm = new Vue({
             vm.showList = false;
             vm.title = "新增";
             vm.store = {};
+            vm.merchList = [];
+            vm.getMerchList();
         },
         update: function (event) {
             let id = getSelectedRow();
@@ -76,7 +81,8 @@ let vm = new Vue({
             vm.showList = false;
             vm.title = "修改";
 
-            vm.getInfo(id)
+            vm.getInfo(id);
+            vm.getMerchList();
         },
         saveOrUpdate: function (event) {
             let url = vm.store.id == null ? "../store/save" : "../store/update";
@@ -120,6 +126,11 @@ let vm = new Vue({
                 });
             });
         },
+        getMerchList: function() {
+            $.get("../merch/queryAll", function (r) {
+                vm.merchList = r.list;
+            });
+        },
         getInfo: function (id) {
             $.get("../store/info/" + id, function (r) {
                 vm.store = r.store;

+ 22 - 13
kmall-admin/src/main/webapp/js/shop/supplier.js

@@ -4,12 +4,16 @@ $(function () {
         datatype: "json",
         colModel: [
 			{label: 'id', name: 'id', index: 'id', key: true, hidden: true},
-			{label: '一级商户编号', name: 'levelMerchSn', index: 'level_merch_sn', width: 80},
-			{label: '一级商户标识', name: 'levelMerchFlag', index: 'level_merch_flag', width: 80},
-			{label: '二级供货商名称', name: 'childSupplierName', index: 'child_supplier_sn', width: 80},
-			{label: '二级供货商标识', name: 'childSupplierFlag', index: 'child_supplier_flag', width: 80},
-			{label: '排序', name: 'sortOrder', index: 'sort_order', width: 80},
-			{label: '是否禁用:0:否;1:是', name: 'isShow', index: 'is_show', width: 80}],
+			{label: '一级商户编号', name: 'levelMerchSn', index: 'level_merch_sn', width: 80, align: 'center'},
+			{label: '一级商户标识', name: 'levelMerchFlag', index: 'level_merch_flag', width: 80, align: 'center'},
+			{label: '二级供货商名称', name: 'childSupplierName', index: 'child_supplier_sn', width: 80, align: 'center'},
+			{label: '二级供货商标识', name: 'childSupplierFlag', index: 'child_supplier_flag', width: 80, align: 'center'},
+			{label: '排序', name: 'sortOrder', index: 'sort_order', width: 80, align: 'center'},
+			{label: '是否禁用', name: 'isShow', index: 'is_show', width: 80, align: 'center', formatter: function (value) {
+                return value === 0 ?
+                    '<span class="label label-danger">否</span>' :
+                    '<span class="label label-success">是</span>';
+            }}],
 		viewrecords: true,
         height: 385,
         rowNum: 10,
@@ -48,14 +52,12 @@ let vm = new Vue({
 			],
             childSupplierFlag: [
                 {required: true, message: '二级供货商标识不能为空', trigger: 'blur'}
-            ],
-            isShow: [
-                {required: true, message: '是否禁用不能为空', trigger: 'blur'}
             ]
 		},
 		q: {
 		    name: ''
-		}
+		},
+        merchList: []
 	},
 	methods: {
 		query: function () {
@@ -64,8 +66,9 @@ let vm = new Vue({
 		add: function () {
 			vm.showList = false;
 			vm.title = "新增";
-			vm.supplier = {};
-            vm.getInfo(0)
+			vm.supplier = {isShow:0};
+            vm.merchList = [];
+            vm.getMerchList();
 		},
 		update: function (event) {
             let id = getSelectedRow();
@@ -75,7 +78,8 @@ let vm = new Vue({
 			vm.showList = false;
             vm.title = "修改";
 
-            vm.getInfo(id)
+            vm.getInfo(id);
+            vm.getMerchList();
 		},
 		saveOrUpdate: function (event) {
             let url = vm.supplier.id == null ? "../supplier/save" : "../supplier/update";
@@ -119,6 +123,11 @@ let vm = new Vue({
 				});
 			});
 		},
+        getMerchList: function() {
+            $.get("../merch/queryAll", function (r) {
+                vm.merchList = r.list;
+            });
+        },
 		getInfo: function(id){
 			$.get("../supplier/info/"+id, function (r) {
                 vm.supplier = r.supplier;

+ 6 - 1
kmall-admin/src/main/webapp/js/sys/user.js

@@ -148,13 +148,18 @@ var vm = new Vue({
                 vm.user = r.user;
                 //获取角色信息
                 // vm.getStoreList();
-                vm.getStoresByMerch();
+                vm.getStoresByMerchAndUpd(r.user.merchSn);
                 vm.getRoleList();
                 vm.getMerchList();
                 // vm.getDept();
             });
 
         },
+        getStoresByMerchAndUpd: function (merchSn) {
+            $.get("../store/getStoresByMerch?merchSn=" + merchSn, function (r) {
+                vm.storeList = r.list;
+            });
+        },
         del: function () {
             var userIds = getSelectedRows();
             if (userIds == null) {

+ 1 - 1
kmall-pt.iml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />

+ 6 - 1
wx-mall/pages/goods/goods.wxml

@@ -186,6 +186,12 @@
         </view>
       </view>
     </view>
+    <!-- <view class="comments" bindtap="hideSwitchAttrPop">
+      <view class="h">
+          <text class="t">{{goods.storeName}}</text>
+          <text class="i">全部商品</text>
+      </view>
+    </view> -->
     <view class="goods-attr" wx:if="{{attribute.length>0}}" bindtap="hideSwitchAttrPop">
       <view class="t">商品参数</view>
       <view class="l">
@@ -195,7 +201,6 @@
         </view>
       </view>
     </view>
-
     <view class="detail"  bindtap="hideSwitchAttrPop">
       <view class="t">商品详情</view>
       <import src="../../lib/wxParse/wxParse.wxml" />

+ 14 - 1
wx-mall/pages/ucenter/orderDetail/orderDetail.js

@@ -15,7 +15,8 @@ Page({
     refundTime:'',
     isRefundStatus: '',//true :申请中; false :已退款
     refundStatus:'',
-    approvalRemark:''
+    approvalRemark:'',
+    orderSn: ''
   },
   onLoad: function (options) {
     // 页面初始化 options为页面跳转所带来的参数
@@ -28,6 +29,17 @@ Page({
       approvalRemark: options.approvalRemark
     });
   },
+  copyBtn: function (e) { 
+    var self = this;
+    wx.setClipboardData({
+      data: this.data.orderSn,
+      success: function (res) {
+        wx.showToast({
+          title: '复制成功',
+        });
+      }
+    });
+  },
   getOrderDetail() {
     let that = this;
     util.request(api.OrderDetail, {
@@ -37,6 +49,7 @@ Page({
         // console.log(res.data);
         that.setData({
           orderInfo: res.data.orderInfo,
+          orderSn: res.data.orderInfo.order_sn,
           orderGoods: res.data.orderGoods,
           handleOption: res.data.handleOption,
           wuliu: res.data.wuliu

+ 1 - 1
wx-mall/pages/ucenter/orderDetail/orderDetail.wxml

@@ -125,7 +125,7 @@
     <view class="item-a">下单时间:{{orderInfo.add_time}}</view>
     <view class="item-a" wx:if="{{orderInfo.pay_time}}">付款时间:{{orderInfo.pay_time}}</view>
     <view class="item-a" wx:if="{{orderInfo.confirm_time}}">成交时间:{{orderInfo.confirm_time}}</view>
-    <view class="item-b">订单编号:{{orderInfo.order_sn}}</view>
+    <view class="item-b">订单编号:{{orderInfo.order_sn}} <view style='font-size:26rpx;color:#FE7200;float:right;' bindtap="copyBtn">复制</view></view>
     <view class="item-c">
       <view class="l">实付:
         <text class="cost">¥{{orderInfo.actual_price}}</text>