浏览代码

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

lhm 3 年之前
父节点
当前提交
bfdebce68c
共有 45 个文件被更改,包括 415 次插入386 次删除
  1. 7 2
      kmall-admin/src/main/java/com/kmall/admin/controller/CategoryController.java
  2. 17 2
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivityFormController.java
  3. 1 0
      kmall-admin/src/main/java/com/kmall/admin/dao/CategoryDao.java
  4. 9 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java
  5. 10 0
      kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2MemberConsumptionRecordsDao.java
  6. 4 2
      kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java
  7. 10 8
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CategoryServiceImpl.java
  8. 36 120
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  9. 4 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/MerchServiceImpl.java
  10. 19 7
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  11. 31 117
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  12. 8 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/SupplierServiceImpl.java
  13. 11 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java
  14. 0 1
      kmall-admin/src/main/resources/XmlTemplate/CategoryDtoList.xml
  15. 1 1
      kmall-admin/src/main/resources/XmlTemplate/GoodsDtoList.xml
  16. 0 1
      kmall-admin/src/main/resources/XmlTemplate/StoreGoodsDtoList.xml
  17. 9 2
      kmall-admin/src/main/resources/mybatis/mapper/CashierDao.xml
  18. 22 17
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  19. 1 2
      kmall-admin/src/main/resources/mybatis/mapper/HaiKongResendMsgDao.xml
  20. 6 0
      kmall-admin/src/main/resources/mybatis/mapper/ProductDao.xml
  21. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml
  22. 11 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml
  23. 27 0
      kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml
  24. 3 0
      kmall-admin/src/main/webapp/WEB-INF/page/cashier/cashierManager.html
  25. 55 55
      kmall-admin/src/main/webapp/WEB-INF/page/shop/category.html
  26. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/shop/merch.html
  27. 3 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/product.html
  28. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/shop/supplier.html
  29. 7 4
      kmall-admin/src/main/webapp/js/cashier/cashierManager.js
  30. 1 1
      kmall-admin/src/main/webapp/js/cashier/salerecord.js
  31. 4 2
      kmall-admin/src/main/webapp/js/mk/mkactivityform.js
  32. 13 3
      kmall-admin/src/main/webapp/js/sale/sale.js
  33. 16 9
      kmall-admin/src/main/webapp/js/shop/category.js
  34. 1 1
      kmall-admin/src/main/webapp/js/shop/goods.js
  35. 0 9
      kmall-admin/src/main/webapp/js/shop/merch.js
  36. 7 6
      kmall-admin/src/main/webapp/js/shop/product.js
  37. 4 2
      kmall-admin/src/main/webapp/js/shop/supplier.js
  38. 1 1
      kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js
  39. 1 2
      kmall-admin/src/main/webapp/login.html
  40. 二进制
      kmall-admin/src/main/webapp/statics/file/category_yyyy_mm_dd_v1.0.0.xls
  41. 二进制
      kmall-admin/src/main/webapp/statics/file/goods_export_yyyy_mm_dd_v1.0.0.xls
  42. 二进制
      kmall-admin/src/main/webapp/statics/file/mall2RulesDetil_1.0.xlsx
  43. 5 6
      kmall-admin/src/main/webapp/userLogin.html
  44. 26 0
      kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/CashInfo.java
  45. 21 0
      kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/Goods.java

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

@@ -63,13 +63,13 @@ public class CategoryController {
 
         List<CategoryEntity> categoryList = categoryService.queryList(query);
 
-        // 获取id
+        // 获取当前一级节点的id
         List<Integer> parentIdList = new ArrayList<>();
          for (CategoryEntity c : categoryList) {
              parentIdList.add(c.getId());
         }
 
-        // 获取对应的所有子节点
+        // 查询所有一级节点的子节点
         List<CategoryEntity> categoryChildList = categoryService.queryListByParentId(parentIdList);
         categoryList.addAll(categoryChildList);
 
@@ -127,6 +127,10 @@ public class CategoryController {
     @RequestMapping("/update")
     @RequiresPermissions("category:update")
     public R update(@RequestBody CategoryEntity category) {
+        if (category.getSortOrder() == null) {
+            category.setSortOrder(0);
+        }
+
         category.setName(HtmlUtils.htmlUnescape(category.getName()));
         category.setFrontDesc(HtmlUtils.htmlUnescape(category.getFrontDesc()));
         categoryService.update(category);
@@ -148,6 +152,7 @@ public class CategoryController {
     /**
      * 查看所有列表
      */
+    @Deprecated
     @RequestMapping("/queryAll")
     public R queryAll(@RequestParam Map<String, Object> params) {
 

+ 17 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivityFormController.java

@@ -9,7 +9,10 @@ import com.kmall.admin.service.mk.MkActivityFormService;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
+import com.kmall.common.utils.RRException;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.util.CollectionUtils;
@@ -25,6 +28,8 @@ import org.springframework.web.bind.annotation.*;
 @Controller
 @RequestMapping("mkactivityform")
 public class MkActivityFormController {
+    private static final Logger logger = LoggerFactory.getLogger(MkActivityFormController.class);
+
     @Autowired
     private MkActivityFormService mkActivityFormService;
 
@@ -69,7 +74,12 @@ public class MkActivityFormController {
     @RequiresPermissions("mkactivityform:save")
     @ResponseBody
     public R save(@RequestBody MkActivityFormEntity mkActivityForm) {
-        mkActivityFormService.save(mkActivityForm);
+        try {
+            mkActivityFormService.save(mkActivityForm);
+        } catch (RRException e) {
+            logger.error(e.getMsg());
+            return R.error(e.getMsg());
+        }
 
         return R.ok();
     }
@@ -81,7 +91,12 @@ public class MkActivityFormController {
     @RequiresPermissions("mkactivityform:update")
     @ResponseBody
     public R update(@RequestBody MkActivityFormEntity mkActivityForm) {
-        mkActivityFormService.update(mkActivityForm);
+        try {
+            mkActivityFormService.update(mkActivityForm);
+        } catch (RRException e) {
+            logger.error(e.getMsg());
+            return R.error(e.getMsg());
+        }
 
         return R.ok();
     }

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/CategoryDao.java

@@ -44,6 +44,7 @@ public interface CategoryDao extends BaseDao<CategoryEntity> {
     /**
      * 根据名称和级别查询是否存在对象
      *
+     * @author zhuhh
      * @param name
      * @param level
      * @return

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java

@@ -3,6 +3,7 @@ package com.kmall.admin.dao.mk;
 import com.kmall.admin.entity.mk.MkActivitiesEntity;
 import com.kmall.admin.entity.mk.MkActivityFormEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -20,4 +21,12 @@ public interface MkActivityFormDao extends BaseDao<MkActivityFormEntity> {
 
     List<MkActivitiesEntity> queryMkactivitiesList(Map<String, Object> map);
 
+    /**
+     * 根据活动代码查询
+     *
+     * @param mkCode 活动代码
+     * @return
+     */
+    MkActivityFormEntity queryObjectByMkCode(@Param("mkCode") String mkCode);
+
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2MemberConsumptionRecordsDao.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao.vip;
 
 import com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 会员消费记录表Dao
@@ -12,4 +13,13 @@ import com.kmall.manager.dao.BaseDao;
  */
 public interface Mall2MemberConsumptionRecordsDao extends BaseDao<Mall2MemberConsumptionRecordsEntity> {
 
+    /**
+     * 根据订单编号orderSn查询对象
+     *
+     * @author zhuhh
+     * @param orderSn 订单编号
+     * @return
+     */
+    Mall2MemberConsumptionRecordsEntity queryObjectByOrderSn(@Param("orderSn") String orderSn);
+
 }

+ 4 - 2
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java

@@ -129,10 +129,11 @@ public class GoodsDto implements Serializable {
     private String hsCodeName;
 
     private String plu;
-
+    //品牌唯一简码
     private String uniqueIdentifier;
-
+    //一级分类
     private String firstLevel;
+    //二级分类
     private String secondLevel;
     //第一法定单位数量
     private String legalUnit1Qty;
@@ -153,6 +154,7 @@ public class GoodsDto implements Serializable {
     private String defectiveProductsGrade;
     //商品重量
     private String netWeight;
+    //增值税率
     private String valueAddedTaxRate;
 
     public String getCounterPrice() {

+ 10 - 8
kmall-admin/src/main/java/com/kmall/admin/service/impl/CategoryServiceImpl.java

@@ -58,7 +58,7 @@ public class CategoryServiceImpl implements CategoryService {
 
     @Override
     public int save(CategoryEntity category) {
-        if (Dict.Level.item_L1.getItem().equals(category.getLevel())) {
+        if (Dict.Level.item_L1.getItem().equalsIgnoreCase(category.getLevel())) {
             category.setParentId(0);
         } else {
             if (category.getParentId() == null) {
@@ -66,7 +66,7 @@ public class CategoryServiceImpl implements CategoryService {
             }
         }
 
-        Map<String, Object> valideDate = MapBeanUtil.fromObject(category);
+        // Map<String, Object> valideDate = MapBeanUtil.fromObject(category);
 //        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
 //        builder.put("merchSn", "商户");
 //        if("2".equals(category.getShare())){
@@ -76,9 +76,6 @@ public class CategoryServiceImpl implements CategoryService {
 //        if (Integer.valueOf(r.get("code").toString()) != 0) {
 //            throw new RRException(r.get("msg").toString());
 //        }
-        if(category.getLevel().equalsIgnoreCase("L1")){
-            category.setParentId(0);
-        }
 
         return categoryDao.save(category);
     }
@@ -94,8 +91,15 @@ public class CategoryServiceImpl implements CategoryService {
 //        if (Integer.valueOf(r.get("code").toString()) != 0) {
 //            throw new RRException(r.get("msg").toString());
 //        }
-        if(category.getLevel().equalsIgnoreCase("L1")){
+        if (category.getLevel().equalsIgnoreCase(Dict.Level.item_L1.getItem())){
             category.setParentId(0);
+        } else {
+            List<Integer> parentId = new ArrayList<>();
+            parentId.add(category.getId());
+            List<CategoryEntity> list = categoryDao.queryListByParentId(parentId);
+            if (list != null && list.size() > 0) {
+                throw new RRException("该L1分类存在子分类,不允许变更分类级别!");
+            }
         }
 
         return categoryDao.update(category);
@@ -327,8 +331,6 @@ public class CategoryServiceImpl implements CategoryService {
             String level = categoryDto.getLevel();
             // 父节点
             String parentName = categoryDto.getParentName();
-            // 类型
-            Integer type = categoryDto.getType();
 
             // 校验
             if (!ValidateUtils.validateSpecialAllowChinese(name)) {

+ 36 - 120
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -804,34 +804,29 @@ public class GoodsServiceImpl implements GoodsService {
                 builder.put("thirdPartyMerchCode", "第三方商户代码");
                 builder.put("goodsBizType", "货品业务类型");
                 builder.put("name", "商品名称");
+                builder.put("prodBarcode", "产品条码");
+                builder.put("sku", "sku");
                 builder.put("isOnSaleStr", "上架");
                 builder.put("goodsUnit", "商品单位");
-                builder.put("isHotStr", "热销");
-                builder.put("prodBarcode", "产品条码");
-//                builder.put("marketPrice", "市场价");
-//                builder.put("retailPrice", "零售价");
-                builder.put("supplierName", "供应商");
-                builder.put("goodsNumber", "商品总库存");
+                builder.put("isHotStr", "是否热销");
+                builder.put("goodsRate", "商品税率");
+                builder.put("brand", "产品品牌");
+                builder.put("uniqueIdentifier", "品牌唯一简码");
+                builder.put("unitName", "计量单位");
+                builder.put("oriCntName", "原产国");
+                builder.put("valueAddedTaxRate", "增值税率");
+                builder.put("goodsNumber", "库存数");
+                builder.put("firstLevel", "一级分类");
+                builder.put("secondLevel", "二级分类");
+                builder.put("warehouseSn", "仓库编码");
+                builder.put("consignorSn", "货主编码");
+                builder.put("warehousSysGoodId", "仓储系统商品ID");
+                builder.put("inventoryType", "库存类型");
+                builder.put("legalUnit1Qty", "第一法定单位数量");
+                builder.put("legalUnit2Qty", "第二法定单位数量");
                 R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
                 if (Integer.valueOf(r.get("code").toString()) != 0) {
                     throw new RRException(r.get("msg").toString());
-                } else {
-                    if (!Dict.orderBizType.item_11.getItem().equals(goodsDto.getGoodsBizType())) {
-                        // 海关信息,普通货物可不添加
-                        builder.put("goodsRate", "商品税率");
-                        builder.put("sku", "SKU");
-//                        builder.put("brand", "产品品牌");
-                        builder.put("unitName", "计量单位");
-                        builder.put("oriCntName", "原产国");
-                        //builder.put("cusGoodsCode", "海关商品编码");
-                        //builder.put("ciqProdModel", "国检规格型号");
-                        //builder.put("cusDeclEle", "海关申报要素");
-                        //builder.put("cusRecCode", "海关备案编号");
-                    }
-                    r = ValidatorUtil.isEmpty(builder.build(), valideDate);
-                    if (Integer.valueOf(r.get("code").toString()) != 0) {
-                        throw new RRException(r.get("msg").toString());
-                    }
                 }
                 //业务类型校验
                 if(!Dict.orderBizType.item_11.getItem().equalsIgnoreCase(goodsDto.getGoodsBizType())){
@@ -895,10 +890,10 @@ public class GoodsServiceImpl implements GoodsService {
                         goodsEntity.setSupplierId(supplierEntity.getId());
                     }
                 }
-                //商品配置校验
-                /*
-                 先在redis在查询该品牌是否存在,如果存在获取品牌id,如果不存在,先新增该品牌,在将品牌存入到redis中,在获取品牌id
-                 */
+                 GoodsEntity goodsNew = goodsDao.queryObjectBySnNew(goodsDto.getGoodsSn());
+                 if(goodsNew!=null){
+                     throw new RRException("该商品数据已存在,请勿重复导入:"+goodsNew.getGoodsSn());
+                 }
                 // 获取品牌唯一简码
                 checkBrand(goodsDto, goodsEntity);
                 // 获取二级分类id
@@ -957,7 +952,7 @@ public class GoodsServiceImpl implements GoodsService {
                 goodsEntity.setConsignorSn(goodsDto.getConsignorSn());
                 goodsEntity.setInventoryType(goodsDto.getInventoryType());
                 goodsEntity.setDefectiveProductsGrade(goodsDto.getDefectiveProductsGrade());
-                goodsEntity.setNetWeight(new BigDecimal(goodsDto.getNetWeight()));
+                //goodsEntity.setNetWeight(new BigDecimal(goodsDto.getNetWeight()));
                 goodsEntity.setLegalUnit1Qty(new BigDecimal(goodsDto.getLegalUnit1Qty()));
                 goodsEntity.setLegalUnit2Qty(new BigDecimal(goodsDto.getLegalUnit2Qty()));
                 if(null!=goodsDto.getImpConsumTaxRate()){
@@ -1139,105 +1134,26 @@ public class GoodsServiceImpl implements GoodsService {
     }
 
     private void checkCategory(GoodsDto goodsDto, GoodsEntity goodsEntity) {
-        String secondLevel = goodsDto.getSecondLevel(); // 二级分类名称
-        Map<String, String> categoryCache = JedisUtil.getMap(secondLevel);
-        if(categoryCache != null){
-            String categoryId = categoryCache.get("categoryId");
-            String level = categoryCache.get("level");
+        // 二级分类名称
+        String secondLevel = goodsDto.getSecondLevel().trim();
+        String firstLevelName = goodsDto.getFirstLevel().trim();
+        CategoryEntity categoryNew = categoryDao.queryByName(secondLevel);
+        if(categoryNew != null){
+            String categoryId = categoryNew.getId().toString();
+            String level = categoryNew.getLevel();
             if(categoryId == null){
-                CategoryEntity category = categoryDao.queryByName(secondLevel);
-                if (category == null) {
-
-                    // 将该id存入带缓存中
-                    Map<String,String> categoryCacheData = new HashMap<>();
-                    categoryCacheData.put("level",Dict.Level.item_L2.getItem());
-
-                    // 查询数据库中是否有一级分类
-                    String firstLevel = goodsDto.getFirstLevel();
-                    CategoryEntity firstCategory = categoryDao.queryByName(firstLevel);
-                    // if(firstCategory == null){
-                    //     // 一级分类不存在
-                    //     // 新增一级分类
-                    //     CategoryEntity firstCategoryEntity = initCategory(firstLevel, 0, Dict.Level.item_L1);
-                    //     categoryDao.save(firstCategoryEntity);
-                    //     // 新增二级分类
-                    //     CategoryEntity secondCategoryEntity = initCategory(secondLevel, firstCategoryEntity.getId(), Dict.Level.item_L2);
-                    //     categoryDao.save(secondCategoryEntity);
-                    //     categoryId = secondCategoryEntity.getId()+"";
-                    // }else{
-                    //     // 新增二级分类
-                    //     CategoryEntity saveCategoryEntity = initCategory(secondLevel, firstCategory.getId(), Dict.Level.item_L2);
-                    //     categoryDao.save(saveCategoryEntity);
-                    //     categoryId = saveCategoryEntity.getId()+"";
-                    //
-                    // }
-//                    categoryCacheData.put("categoryId",categoryId);
-//                    JedisUtil.setMap(secondLevel,categoryCacheData,0);
-//                    goodsEntity.setCategoryId(Integer.parseInt(categoryId));
-                    throw new RuntimeException("该分类不是二级分类,请检查,对应条码是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
-                }else if(category != null && Dict.Level.item_L2.getItem().equals(category.getLevel())){
-                    // 缓存中没有,数据库中有,直接存入数据库中查询到的数据
-                    goodsEntity.setCategoryId(category.getId());
-                    // 将该id存入带缓存中
-                    Map<String,String> categoryCacheData = new HashMap<>();
-                    categoryCacheData.put("level",Dict.Level.item_L2.getItem());
-                    categoryCacheData.put("categoryId",category.getId()+"");
-                    JedisUtil.setMap(secondLevel,categoryCacheData,0);
-
-                }else{
-                    throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
-                }
+                   throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
             }else if(Dict.Level.item_L2.getItem().equals(level)){
+                CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
+                if(firstCategory==null) {
+                    throw new RuntimeException("该分类不是一级分类,请检查,对应sku是:" + goodsDto.getSku() + ",分类名称为:" + firstLevelName);
+                }
+                goodsEntity.setAttributeCategory(firstCategory.getId());
                 // 二级分类id在缓存中有,直接存入商品
                 goodsEntity.setCategoryId(Integer.parseInt(categoryId));
-            }else {
-                throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
             }
         }else {
-            String categoryId = "";
-            CategoryEntity category = categoryDao.queryByName(secondLevel);
-            if (category == null) {
-                // 将该id存入带缓存中
-                Map<String,String> categoryCacheData = new HashMap<>();
-                categoryCacheData.put("level",Dict.Level.item_L2.getItem());
-
-                // 查询数据库中是否有一级分类
-                String firstLevel = goodsDto.getFirstLevel();
-                CategoryEntity firstCategory = categoryDao.queryByName(firstLevel);
-                // if(firstCategory == null){
-                //     // 一级分类不存在
-                //     // 新增一级分类
-                //     CategoryEntity firstCategoryEntity = initCategory(firstLevel, 0, Dict.Level.item_L1);
-                //     categoryDao.save(firstCategoryEntity);
-                //     // 新增二级分类
-                //     CategoryEntity secondCategoryEntity = initCategory(secondLevel, firstCategoryEntity.getId(), Dict.Level.item_L2);
-                //     categoryDao.save(secondCategoryEntity);
-                //     categoryId = secondCategoryEntity.getId()+"";
-                // }else{
-                //     // 新增二级分类
-                //     CategoryEntity saveCategoryEntity = initCategory(secondLevel, firstCategory.getId(), Dict.Level.item_L2);
-                //     categoryDao.save(saveCategoryEntity);
-                //     categoryId = saveCategoryEntity.getId()+"";
-                //
-                // }
-//                categoryCacheData.put("categoryId",categoryId);
-//                JedisUtil.setMap(secondLevel,categoryCacheData,0);
-//                goodsEntity.setCategoryId(Integer.parseInt(categoryId));
-                throw new RuntimeException("该分类不是二级分类,请检查,对应条码是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
-
-
-            }else if(category != null && Dict.Level.item_L2.getItem().equals(category.getLevel())){
-                // 缓存中没有,数据库中有,直接存入数据库中查询到的数据
-                goodsEntity.setCategoryId(category.getId());
-                // 将该id存入带缓存中
-                Map<String,String> categoryCacheData = new HashMap<>();
-                categoryCacheData.put("level",Dict.Level.item_L2.getItem());
-                categoryCacheData.put("categoryId",category.getId()+"");
-                JedisUtil.setMap(secondLevel,categoryCacheData,0);
-
-            }else{
                 throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ goodsDto.getSku()+",分类名称为:"+ goodsDto.getSecondLevel());
-            }
         }
     }
 

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/MerchServiceImpl.java

@@ -49,6 +49,10 @@ public class MerchServiceImpl
 
     @Override
     public int update(MerchEntity merch) {
+        if (merch.getSortOrder() == null) {
+            merch.setSortOrder(0);
+        }
+
         MerchEntity tempMerch = merchDao.findByMerchSn(merch.getMerchSn());
         if(tempMerch != null && tempMerch.getId() != merch.getId()){
             throw new RRException("商户编号已经存在");

+ 19 - 7
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -294,6 +294,12 @@ public class OrderServiceImpl implements OrderService {
     private WxCusDeclareBiz wxCusDeclareBiz;
 
     /**
+     * 取货码信息表
+     */
+    @Autowired
+    private PickUpCodeDao pickUpCodeDao;
+
+    /**
      * 支付宝海关申报
      */
     @Autowired
@@ -552,10 +558,14 @@ public class OrderServiceImpl implements OrderService {
                     goodsTax.toString(),
                     orderGoods.getNumber().toString(),
                     new BigDecimal(orderGoods.getNumber()).multiply(orderGoods.getRetailPrice()).setScale(2, RoundingMode.HALF_UP).toString(),
-                    orderGoods.getDiscountedPrice().toString());
+                    orderGoods.getDiscountedPrice().toString(),
+                    orderGoods.getRetailPrice().subtract(orderGoods.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP).toString()
+                    );
             goodsList.add(goods);
         }
 
+        // 订单积分详情
+        Mall2MemberConsumptionRecordsEntity memberConsumptionRecordsEntity = memberConsumptionRecordsDao.queryObjectByOrderSn(orderEntity.getOrderSn());
         // 收银信息
         CashInfo cashInfo = new CashInfo();
         cashInfo.setGoodsTotal(goodsTotal.toString());
@@ -566,6 +576,8 @@ public class OrderServiceImpl implements OrderService {
         cashInfo.setCoupon(orderEntity.getCouponPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString());
         cashInfo.setFreight(
                 new BigDecimal(orderEntity.getFreightPrice()).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
+        cashInfo.setDeductionScore(memberConsumptionRecordsEntity.getDeductionScore());
+        cashInfo.setScoreDeductionPrice(memberConsumptionRecordsEntity.getScoreDeductionPrice().toString());
         if ("alipay".equals(orderEntity.getPayFlag())) {
             cashInfo.setPaymentMode("支付宝支付");
         } else {
@@ -2691,7 +2703,7 @@ public class OrderServiceImpl implements OrderService {
             Integer afterScoreStrInteger = (Integer) param.get("afterScore");
             int deductionScore = org.springframework.util.StringUtils.isEmpty((String) param.get("deductionScore")) ? 0 : Integer.parseInt((String) param.get("deductionScore"));
             String memberPhone = String.valueOf(param.get("memberPhone"));
-            BigDecimal scoreDeductionPrice = new BigDecimal(org.springframework.util.StringUtils.isEmpty((String) param.get("scoreDeductionPrice")) ? "0" : (String) param.get("scoreDeductionPrice"));
+            BigDecimal scoreDeductionPrice = new BigDecimal(org.springframework.util.StringUtils.isEmpty(param.get("scoreDeductionPrice").toString()) ? "0" : param.get("scoreDeductionPrice").toString());
             consumptionRecords.setBeforeScore(beforeScoreInteger);
             consumptionRecords.setAfterScore(afterScoreStrInteger);
             consumptionRecords.setOrderTotalPrice(order.getActual_price());
@@ -3539,7 +3551,7 @@ public class OrderServiceImpl implements OrderService {
             LOGGER.info("=======> [vipIntegralGoBack-----调用会员系统积分全量回退接口数据]" + responseMsg);
 
             //解析数据
-            if ("true".equals(res.get("success"))) {
+            if ("true".equals(res.get("success").toString())) {
                 LOGGER.info("=======> [vipIntegralGoBack-----调用会员系统积分全量回退接口数据]" + responseMsg);
             } else {
                 LOGGER.error("=======> [vipIntegralGoBack-----调用会员系统积分全量回退接口异常数据]" + responseMsg);
@@ -4730,12 +4742,12 @@ public class OrderServiceImpl implements OrderService {
         ) {
             return R.error(500,"无法重发订单,请检查订单状态");
         }
-        OrderProcessRecordEntity orderProcessRecordEntity = orderProcessRecordDao.queryObjectByOrderSn(orderEntity.getOrderSn());
-        if(null==orderProcessRecordEntity.getIsCustomsSend()){
+        String orderCode = pickUpCodeDao.queryPickUpCodeStatus(orderEntity.getOrderSn());
+        if(null==orderCode||"6".equals(orderCode)){
             return R.error(500,"订单尚未发送至下游系统,无法重发订单");
         }else{
-            if(Dict.orderCustomsStatus.item_1.getItem().equals(orderProcessRecordEntity.getIsCustomsSend())||
-                    Dict.orderCustomsStatus.item_2.getItem().equals(orderProcessRecordEntity.getIsCustomsSend())){
+            if(Dict.orderCustomsStatus.item_2.getItem().equals(orderCode)||
+                    Dict.orderCustomsStatus.item_4.getItem().equals(orderCode)){
                 return R.error(500,"订单处于清关放行状态或查验状态,无需重发订单");
             }
         }

+ 31 - 117
kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java

@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.kmall.admin.dao.*;
 import com.kmall.admin.dao.mk.dist.MkDistSellAllocationDao;
+import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.dto.StoreGoodsDto;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.entity.kmall2eccs.KtoEccsEntity;
@@ -902,6 +903,25 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
 
             for (int i = 0; i < storeGoodsDtoList.size(); i++) {
                 StoreGoodsDto storeGoodsDto = storeGoodsDtoList.get(i);
+
+                Map<String, Object> valideDate = MapBeanUtil.fromObject(storeGoodsDto);
+                ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+                builder.put("storeName", "门店名称");
+                builder.put("goodsSn", "sku");
+                builder.put("stockNum", "库存");
+                builder.put("categoryName", "一级分类");
+                builder.put("attributeCategory", "二级分类");
+                builder.put("brandName", "品牌");
+                builder.put("uniqueIdentifier", "品牌唯一简码");
+                builder.put("retailPrice", "零售价(税后)");
+                builder.put("marketPrice", "市场价");
+                builder.put("bottomLinePrice", "底线价");
+                builder.put("exitRegionNumber", "出区数");
+                R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+                if (Integer.valueOf(r.get("code").toString()) != 0) {
+                    throw new RRException(r.get("msg").toString());
+                }
+
                 ProductStoreRelaEntity storeRelaEntity = new ProductStoreRelaEntity();
                 StoreEntity store = storeDao.queryObjectByName(storeGoodsDto.getStoreName().trim());
                 storeRelaEntity.setExitRegionNumber(storeGoodsDto.getExitRegionNumber());
@@ -914,133 +934,24 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
                 }
 
                 // 获取分类id
-                String firstLevelName = storeGoodsDto.getCategoryName();
-                String secondLevelName = storeGoodsDto.getAttributeCategory();
+                String firstLevelName = storeGoodsDto.getCategoryName().trim();
+                String secondLevelName = storeGoodsDto.getAttributeCategory().trim();
                 CategoryEntity categoryNew = categoryDao.queryByName(secondLevelName);
                 if(categoryNew != null){
                     String categoryId = categoryNew.getId().toString();
                     String level = categoryNew.getLevel();
-
-                    String firstLevelCategoryId = "";
-                    String secondLevelCategoryId = "";
-
                     if(categoryId == null){
-                        CategoryEntity category = categoryDao.queryByName(secondLevelName);
-                        if (category == null) {
-
-                            // 查询数据库中是否有一级分类
-//                            CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
-//                            if(firstCategory == null){
-//                                // 一级分类不存在
-//                                // 新增一级分类
-//                                CategoryEntity firstCategoryEntity = initCategory(firstLevelName, 0, Dict.Level.item_L1);
-//                                categoryDao.save(firstCategoryEntity);
-//                                // 新增二级分类
-//                                CategoryEntity secondCategoryEntity = initCategory(secondLevelName, firstCategoryEntity.getId(), Dict.Level.item_L2);
-//                                categoryDao.save(secondCategoryEntity);
-//                                categoryId = secondCategoryEntity.getId()+"";
-//
-//                                firstLevelCategoryId = firstCategoryEntity.getId() + "";
-//                                secondLevelCategoryId = secondCategoryEntity.getId()+"";
-//                            }else{
-//                                // 新增二级分类
-//                                CategoryEntity saveCategoryEntity = initCategory(secondLevelName, firstCategory.getId(), Dict.Level.item_L2);
-//                                categoryDao.save(saveCategoryEntity);
-//                                firstLevelCategoryId = firstCategory.getId() + "";
-//                                secondLevelCategoryId = saveCategoryEntity.getId()+"";
-//
-//                            }
-//                            // 存储一级分类
-//                            set2Redis(firstLevelName, firstLevelCategoryId, Dict.Level.item_L1);
-//                            // 存储二级分类
-//                            set2Redis(secondLevelName, secondLevelCategoryId, Dict.Level.item_L2);
-//
-//                            // 设置一级、二级分类id
-//
-//                            storeRelaEntity.setAttributeCategory(Integer.parseInt(firstLevelCategoryId));
-//                            storeRelaEntity.setCategoryId(Integer.parseInt(secondLevelCategoryId));
-                            throw new RuntimeException("该分类不是一级或二级分类,请检查,对应条码是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
-
-                        }else if(category != null && Dict.Level.item_L2.getItem().equals(category.getLevel())){
-                            // 缓存中没有,数据库中有,直接存入数据库中查询到的数据
-                            storeRelaEntity.setCategoryId(category.getId());
-                            // 将该id存入带缓存中
-                            CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
-                            // 存储一级分类
-                            set2Redis(firstLevelName, firstCategory.getId()+"", Dict.Level.item_L1);
-                            // 存储二级分类
-                            set2Redis(secondLevelName, category.getId() + "", Dict.Level.item_L2);
-
-                            // 设置一级、二级分类id
-                            storeRelaEntity.setAttributeCategory(firstCategory.getId());
-                            storeRelaEntity.setCategoryId(category.getId());
-
-                        }else{
-                            throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
-                        }
+                        throw new RuntimeException("该分类不是二级分类,请检查,对应条码是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
                     }else if(Dict.Level.item_L2.getItem().equals(level)){
-
                         CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
+                        if(firstCategory==null) {
+                            throw new RuntimeException("该分类不是一级分类,请检查,对应条码是:" + storeGoodsDto.getGoodsSn() + ",分类名称为:" + firstLevelName);
+                        }
                         storeRelaEntity.setAttributeCategory(firstCategory.getId());
                         storeRelaEntity.setCategoryId(Integer.parseInt(categoryId));
-                    }else {
-                        throw new RuntimeException("该分类不是一级或二级分类,请检查,对应sku是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
                     }
                 }else {
-                    String firstLevelCategoryId = "";
-                    String secondLevelCategoryId = "";
-                    CategoryEntity category = categoryDao.queryByName(secondLevelName);
-                    if (category == null) {
-
-
-                        // 查询数据库中是否有一级分类
-//                        CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
-//                        if(firstCategory == null){
-//                            // 一级分类不存在
-//                            // 新增一级分类
-//                            CategoryEntity firstCategoryEntity = initCategory(firstLevelName, 0, Dict.Level.item_L1);
-//                            categoryDao.save(firstCategoryEntity);
-//                            // 新增二级分类
-//                            CategoryEntity secondCategoryEntity = initCategory(secondLevelName, firstCategoryEntity.getId(), Dict.Level.item_L2);
-//                            categoryDao.save(secondCategoryEntity);
-//                            firstLevelCategoryId = firstCategoryEntity.getId() + "";
-//                            secondLevelCategoryId = secondCategoryEntity.getId()+"";
-//                        }else{
-//                            // 新增二级分类
-//                            CategoryEntity saveCategoryEntity = initCategory(secondLevelName, firstCategory.getId(), Dict.Level.item_L2);
-//                            categoryDao.save(saveCategoryEntity);
-//                            firstLevelCategoryId = firstCategory.getId() + "";
-//                            secondLevelCategoryId = saveCategoryEntity.getId()+"";
-//
-//                        }
-//                        // 存储一级分类
-//                        set2Redis(firstLevelName, firstLevelCategoryId, Dict.Level.item_L1);
-//                        // 存储二级分类
-//                        set2Redis(secondLevelName, secondLevelCategoryId, Dict.Level.item_L2);
-//
-//                        // 设置一级、二级分类id
-//                        storeRelaEntity.setAttributeCategory(Integer.parseInt(firstLevelCategoryId));
-//                        storeRelaEntity.setCategoryId(Integer.parseInt(secondLevelCategoryId));
-                        throw new RuntimeException("该分类不是一级或二级分类,请检查,对应sku是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
-
-
-                    }else if(category != null && Dict.Level.item_L2.getItem().equals(category.getLevel())){
-                        // 缓存中没有,数据库中有,直接存入数据库中查询到的数据
-                        // 将该id存入带缓存中
-                        CategoryEntity firstCategory = categoryDao.queryByName(firstLevelName);
-                        // 存储一级分类
-                        set2Redis(firstLevelName, firstCategory.getId()+"", Dict.Level.item_L1);
-                        // 存储二级分类
-                        set2Redis(secondLevelName, category.getId() + "", Dict.Level.item_L2);
-
-                        // 设置一级、二级分类id
-                        storeRelaEntity.setAttributeCategory(firstCategory.getId());
-                        storeRelaEntity.setCategoryId(category.getId());
-
-
-                    }else{
-                        throw new RuntimeException("该分类不是二级分类,请检查,对应sku是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
-                    }
+                        throw new RuntimeException("该分类不是二级分类,请检查,对应条码是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
                 }
 
                 checkBrand(storeGoodsDto, storeRelaEntity);
@@ -1048,7 +959,10 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
                 storeRelaEntity.setRetailPrice(new BigDecimal(storeGoodsDto.getRetailPrice()));
                 storeRelaEntity.setBottomLinePrice(storeGoodsDto.getBottomLinePrice());
                 storeRelaEntity.setStockNum(Integer.valueOf(storeGoodsDto.getStockNum()));
-
+                String strCheck = productStoreRelaDao.queryproductStoreByName(storeRelaEntity.getSku(),storeRelaEntity.getStoreId());
+                if(strCheck!=null&&!"".equals(strCheck)){
+                    throw new RuntimeException("该商品在当前账号所属门店已存在,请勿重复导入!"+storeRelaEntity.getGoodsSn());
+                }
                 ProductStoreRelaEntity productStoreRelaEntity = productStoreRelaDao.queryByGoodsIdAndStoreId(storeRelaEntity.getStoreId(), storeRelaEntity.getGoodsId());
                 if (Objects.isNull(productStoreRelaEntity)) {
                     ((ProductStoreRelaService) AopContext.currentProxy()).save(storeRelaEntity);

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

@@ -50,6 +50,8 @@ public class SupplierServiceImpl implements SupplierService {
     public int save(SupplierEntity supplier) {
         if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
             throw new RRException("一级商户编号不能为空");
+        } else if (StringUtils.isEmpty(supplier.getThirdPartyMerchCode())) {
+            throw new RRException("第三方商户不能为空");
         }else{
             MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
             if(merchEntity != null){
@@ -68,8 +70,14 @@ public class SupplierServiceImpl implements SupplierService {
 
     @Override
     public int update(SupplierEntity supplier) {
+        if (supplier.getSortOrder() == null) {
+            supplier.setSortOrder(0);
+        }
+
         if(StringUtils.isEmpty(supplier.getLevelMerchSn())){
             throw new RRException("一级商户编号不能为空");
+        } else if (StringUtils.isEmpty(supplier.getThirdPartyMerchCode())) {
+            throw new RRException("第三方商户不能为空");
         }else{
             MerchEntity merchEntity = merchDao.findByMerchSn(supplier.getLevelMerchSn());
             if(merchEntity != null){

+ 11 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java

@@ -6,6 +6,7 @@ import com.kmall.admin.entity.mk.MkActivityFormEntity;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.mk.MkActivityFormService;
 import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.utils.RRException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -44,6 +45,11 @@ public class MkActivityFormServiceImpl implements MkActivityFormService {
     public int save(MkActivityFormEntity mkActivityForm) {
         SysUserEntity user = ShiroUtils.getUserEntity();
 
+        MkActivityFormEntity isExistEntity = mkActivityFormDao.queryObjectByMkCode(mkActivityForm.getMkCode());
+        if (isExistEntity != null) {
+            throw new RRException("活动代码已存在!");
+        }
+
         mkActivityForm.setCreaterSn(user.getUserId().toString());
         mkActivityForm.setCreateTime(new Date());
         return mkActivityFormDao.save(mkActivityForm);
@@ -51,6 +57,11 @@ public class MkActivityFormServiceImpl implements MkActivityFormService {
 
     @Override
     public int update(MkActivityFormEntity mkActivityForm) {
+        MkActivityFormEntity isExistEntity = mkActivityFormDao.queryObjectByMkCode(mkActivityForm.getMkCode());
+        if (isExistEntity != null && !isExistEntity.getMmId().equals(mkActivityForm.getMmId())) {
+            throw new RRException("活动代码已存在!");
+        }
+
         return mkActivityFormDao.update(mkActivityForm);
     }
 

+ 0 - 1
kmall-admin/src/main/resources/XmlTemplate/CategoryDtoList.xml

@@ -12,7 +12,6 @@
                 <mapping row="1" col="4">categoryDto.isShow</mapping>
                 <mapping row="1" col="5">categoryDto.level</mapping>
                 <mapping row="1" col="6">categoryDto.parentName</mapping>
-                <mapping row="1" col="7">categoryDto.type</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

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

@@ -35,7 +35,7 @@
                 <mapping row="1" col="25">GoodsDto.warehousSysGoodId</mapping>
                 <mapping row="1" col="26">GoodsDto.inventoryType</mapping>
                 <mapping row="1" col="27">GoodsDto.defectiveProductsGrade</mapping>
-                <mapping row="1" col="28">GoodsDto.netWeight</mapping>
+<!--                <mapping row="1" col="28">GoodsDto.netWeight</mapping>-->
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 0 - 1
kmall-admin/src/main/resources/XmlTemplate/StoreGoodsDtoList.xml

@@ -12,7 +12,6 @@
                 <mapping row="1" col="4">StoreGoodsDto.attributeCategory</mapping>
                 <mapping row="1" col="5">StoreGoodsDto.brandName</mapping>
                 <mapping row="1" col="6">StoreGoodsDto.uniqueIdentifier</mapping>
-<!--                <mapping row="1" col="6">StoreGoodsDto.freightName</mapping>-->
                 <mapping row="1" col="7">StoreGoodsDto.retailPrice</mapping>
                 <mapping row="1" col="8">StoreGoodsDto.marketPrice</mapping>
                 <mapping row="1" col="9">StoreGoodsDto.bottomLinePrice</mapping>

+ 9 - 2
kmall-admin/src/main/resources/mybatis/mapper/CashierDao.xml

@@ -62,6 +62,9 @@
 		<if test="machineCode != null and machineCode.trim() != ''">
 			AND cashier.machine_code LIKE concat('%',#{machineCode},'%')
 		</if>
+		<if test="storeName != null and storeName.trim() != ''">
+			AND store.store_name LIKE concat('%',#{storeName},'%')
+		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -76,10 +79,14 @@
 	</select>
 
  	<select id="queryTotal" resultType="int">
-		select count(*) from mall2_cashier
+		select count(*) from mall2_cashier cashier
+		left join mall_store store on cashier.shop_sn = store.id
 		WHERE 1=1
 		<if test="machineCode != null and machineCode.trim() != ''">
-			AND machine_code LIKE concat('%',#{machineCode},'%')
+			AND cashier.machine_code LIKE concat('%',#{machineCode},'%')
+		</if>
+		<if test="storeName != null and storeName.trim() != ''">
+			AND store.store_name LIKE concat('%',#{storeName},'%')
 		</if>
 	</select>
 

+ 22 - 17
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -153,7 +153,7 @@
         LEFT JOIN mall_store s ON s.id = psr1.store_id
         LEFT JOIN third_merchant_biz mb on s.third_party_merch_code = mb.third_party_merch_code
         LEFT JOIN third_merchant_biz mb2 ON a.third_party_merch_code = mb2.third_party_merch_code
-        where a.id = #{id} and psr1.store_id = #{storeId}
+        where a.is_delete=0 and a.id = #{id} and psr1.store_id = #{storeId}
     </select>
 
     <select id="queryGoodsByGoodsSnAndStoreId" resultMap="goodsMap">
@@ -207,7 +207,7 @@
         LEFT JOIN mall_store s ON s.id = psr1.store_id
         LEFT JOIN third_merchant_biz mb on s.third_party_merch_code = mb.third_party_merch_code
         LEFT JOIN third_merchant_biz mb2 ON a.third_party_merch_code = mb2.third_party_merch_code
-        where a.goods_sn = #{goodsSn} and psr1.store_id = #{storeId}
+        where a.is_delete=0 and a.goods_sn = #{goodsSn} and psr1.store_id = #{storeId}
     </select>
 
     <select id="queryObjectByProdBarcodeAndBizType" resultType="com.kmall.admin.entity.GoodsEntity">
@@ -218,7 +218,7 @@
             mall_goods a
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
-        where a.prod_barcode = #{prodBarcode} and a.goods_biz_type = 11 and r.store_id = #{storeId}
+        where a.is_delete=0 and a.prod_barcode = #{prodBarcode} and a.goods_biz_type = 11 and r.store_id = #{storeId}
     </select>
 
 
@@ -230,7 +230,7 @@
             mall_goods a
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
-        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId}
+        where a.is_delete=0 and a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId}
         and r.stock_num > 0
         limit 1
     </select>
@@ -260,12 +260,12 @@
         FROM
             mall_goods a
         LEFT JOIN mall_goods_specification r ON r.goods_id = a.id
-        left join mall_product_store_rela m on m.goods_id = a.id and r.goods_id = m.goods_id and a.is_on_sale = 1
+        left join mall_product_store_rela m on m.goods_id = a.id and r.goods_id = m.goods_id and a.is_on_sale = 1 and a.is_delete=0
         where a.prod_barcode = #{prodBarcode} and m.store_id = #{storeId}
         <if test="sku != null and sku != ''">
             and a.sku=#{sku}
         </if>
-        and m.stock_num > 0 order by m.stock_num desc
+        and m.stock_num > 0 and a.is_delete = 0 order by m.stock_num desc
         limit 1
     </select>
 
@@ -281,7 +281,7 @@
         LEFT JOIN mall_goods_specification r ON r.goods_id = a.id
         left join mall_product_store_rela m on m.goods_id = a.id and r.goods_id = m.goods_id
         where a.prod_barcode = #{prodBarcode} and m.store_id = #{storeId}
-        and m.stock_num > 0 and a.is_on_sale = 1 order by m.stock_num desc
+        and m.stock_num > 0 and a.is_on_sale = 1 and a.is_delete = 0 order by m.stock_num desc
 
     </select>
 
@@ -293,7 +293,7 @@
         FROM
             mall_goods a
         LEFT JOIN mall_goods_group g ON g.goods_id = a.id
-        AND g.open_status != 3
+        AND g.open_status != 3 and a.is_delete=0
         where a.goods_sn = #{goodsSn}
     </select>
 
@@ -302,7 +302,7 @@
             a.*
         FROM
             mall_goods a
-        where a.sku = #{goodsSn}
+        where a.is_delete=0 and a.is_on_sale=1 and a.sku = #{goodsSn}
     </select>
 
     <select id="queryList" resultType="com.kmall.admin.entity.GoodsEntity">
@@ -516,6 +516,7 @@
 			`brand`,
 			`brand_id`,
 			`category_id`,
+			 attribute_category,
 			`goods_number`,
 			`keywords`,
 			`goods_brief`,
@@ -587,6 +588,7 @@
 			#{brand},
 			#{brandId},
 			#{categoryId},
+			#{attributeCategory},
 			#{goodsNumber},
 			#{keywords},
 			#{goodsBrief},
@@ -662,6 +664,7 @@
             <if test="brand != null">`brand` = #{brand},</if>
             <if test="brandId != null">`brand_id` = #{brandId},</if>
             <if test="categoryId != null">`category_id` = #{categoryId},</if>
+            <if test="attributeCategory != null">`attribute_category` = #{attributeCategory},</if>
             <if test="goodsNumber != null">`goods_number` = #{goodsNumber},</if>
             <if test="keywords != null">`keywords` = #{keywords},</if>
             <if test="goodsBrief != null">`goods_brief` = #{goodsBrief},</if>
@@ -747,6 +750,7 @@
             INNER JOIN mall_supplier s
         WHERE
             g.category_id = c.id
+            and g.is_delete=0
             and g.supplier_id = s.id
             AND (g.goods_sn=#{keyword} OR g.prod_barcode=#{keyword})
     </select>
@@ -814,7 +818,7 @@
             g.prod_barcode as barCode
         from
             mall_goods g
-        left join mall_product_store_rela rela on g.id = rela.goods_id
+        left join mall_product_store_rela rela on g.id = rela.goods_id and g.is_delete = 0
         <where>
             <if test="sku != null and sku != ''">
                and g.sku = #{sku}
@@ -833,13 +837,13 @@
     <select id="queryByBarcode" resultType="com.kmall.admin.entity.GoodsEntity">
         select *
         from mall_goods
-        where prod_barcode = #{barCode}
+        where is_delete = 0 and prod_barcode = #{barCode}
     </select>
 
     <select id="queryBySku" resultType="com.kmall.admin.entity.GoodsEntity">
         select *
         from mall_goods
-        where sku = #{sku}
+        where is_delete = 0 and sku = #{sku}
     </select>
 
     <select id="queryListByBarcode" resultType="com.kmall.admin.entity.GoodsEntity">
@@ -850,7 +854,7 @@
             mall_goods a
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
-        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId} and a.sku = #{sku} and a.is_on_sale = 1
+        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId} and a.sku = #{sku} and a.is_on_sale = 1 and a.is_delete = 0
         and r.stock_num > 0 order by r.stock_num desc
     </select>
 
@@ -877,7 +881,7 @@
     <select id="queryListBySku" resultType="com.kmall.admin.entity.GoodsEntity">
          select *
         from mall_goods
-        where sku = #{sku}
+        where is_delete = 0 and sku = #{sku}
     </select>
     <select id="queryNonSyncOmsGoodsRateSkuList" resultType="com.kmall.admin.entity.GoodsEntity">
         select *
@@ -892,7 +896,7 @@
     </select>
 
     <select id="queryByBarcodeAndSku" resultType="com.kmall.admin.entity.GoodsEntity">
-        select * from mall_goods where
+        select * from mall_goods where is_delete = 0 and
         goods_sn = #{goodsSn} and prod_barcode = #{prodBarcode}
     </select>
 
@@ -905,7 +909,7 @@
             m.store_id as storeId
         FROM
             mall_goods a
-        left join mall_product_store_rela m on m.goods_id = a.id
+        left join mall_product_store_rela m on m.goods_id = a.id and a.is_delete = 0
         <where>
             a.cus_rec_code in
             <foreach collection="hdCodeSet" item="item" open="(" close=")" separator=",">
@@ -1172,7 +1176,7 @@
             mall_goods a
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
-        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId} and a.sku = #{sku} and a.is_on_sale = 1
+        where a.prod_barcode = #{prodBarcode}  and r.store_id = #{storeId} and a.sku = #{sku} and a.is_on_sale = 1 and a.is_delete = 0
         and r.stock_num > 0 order by r.stock_num desc
     </select>
 
@@ -1186,6 +1190,7 @@
         LEFT JOIN mall_product_store_rela r ON r.goods_id = a.id
         inner join mall_store s on r.store_id=s.id
         where
+        a.is_delete = 0 and
         a.is_on_sale = 1
         and
         <foreach collection="list" item="item" open="(" separator=" or " close=")">

+ 1 - 2
kmall-admin/src/main/resources/mybatis/mapper/HaiKongResendMsgDao.xml

@@ -11,9 +11,7 @@
 			interface_type,
 			request_msg,
 			response_msg,
-			resend_num,
 			resend_time,
-			last_resend_time,
 			is_valid
 		)
 		values
@@ -23,6 +21,7 @@
 			#{interfaceType},
 			#{requestMsg},
 			#{responseMsg},
+			sysdate(),
 			#{isValid}
 		)
 	</insert>

+ 6 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductDao.xml

@@ -61,6 +61,9 @@
         <if test="goodsName != null and goodsName.trim() != ''">
             AND mall_goods.name LIKE concat('%',#{goodsName},'%')
         </if>
+        <if test="goodsSn != null and goodsSn.trim() != ''">
+            AND mall_goods.goods_sn LIKE concat('%',#{goodsSn},'%')
+        </if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -87,6 +90,9 @@
         <if test="goodsSpecificationIds != null and goodsSpecificationIds != ''">
             AND mall_product.goods_specification_ids = #{goodsSpecificationIds}
         </if>
+        <if test="goodsSn != null and goodsSn.trim() != ''">
+            AND mall_goods.goods_sn LIKE concat('%',#{goodsSn},'%')
+        </if>
     </select>
 
     <insert id="save" parameterType="com.kmall.admin.entity.ProductEntity" useGeneratedKeys="true" keyProperty="id">

+ 1 - 1
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml

@@ -131,7 +131,7 @@
 			<if test="createTime != null">`create_time` = #{createTime}, </if>
 			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
 			<if test="updateTime != null">`update_time` = #{updateTime}, </if>
-			<if test="moderSn != null">`moder_sn` = #{moderSn}</if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn},</if>
 			<if test="priority != null">`priority` = #{priority}</if>
 		</set>
 		where mka_id = #{mkaId}

+ 11 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml

@@ -153,5 +153,16 @@
 		</if>
 	</select>
 
+	<select id="queryObjectByMkCode" resultType="com.kmall.admin.entity.mk.MkActivityFormEntity">
+		select
+			`mm_id`,
+			`mk_name`,
+			`mk_code`,
+			`create_time`,
+			`creater_sn`
+		from mk_activity_form
+		where mk_code = #{mkCode}
+	</select>
+
 
 </mapper>

+ 27 - 0
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2MemberConsumptionRecordsDao.xml

@@ -110,6 +110,33 @@
 		</if>
 	</select>
 
+	<select id="queryObjectByOrderSn"
+			resultType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity">
+		select
+			`mmcr_id`,
+			`user_id`,
+			`order_sn`,
+			`consumption_time`,
+			`shop_sn`,
+			`is_use_birthday_offer`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,
+			`deduction_score`,
+			`member_code`,
+			`member_phone`,
+			`order_total_price`,
+			`score_deduction_price`,
+			`score_limit`,
+			`before_score`,
+			`after_score`,
+			`order_gift_score`
+		from mall2_member_consumption_records
+		where `order_sn` = #{orderSn}
+	</select>
+
 	<insert id="save" parameterType="com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity" useGeneratedKeys="true" keyProperty="id">
 		insert into mall2_member_consumption_records(
 			`mmcr_id`,

+ 3 - 0
kmall-admin/src/main/webapp/WEB-INF/page/cashier/cashierManager.html

@@ -12,6 +12,9 @@
                 <i-col span="4">
                     <i-input v-model="q.machineCode" @on-enter="query" placeholder="机器码"/>
                 </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.storeName" @on-enter="query" placeholder="门店名称"/>
+                </i-col>
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>
             </div>

+ 55 - 55
kmall-admin/src/main/webapp/WEB-INF/page/shop/category.html

@@ -98,12 +98,12 @@
                 </i-select>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <Input-number :min="0" :step="1" v-model="category.sortOrder" placeholder="排序" style="width: 188px;"/>
-            </Form-item>
-            <Form-item label="首页展示排序" prop="showIndex">
-                <Input-number :min="0" :step="1" v-model="category.showIndex" placeholder="首页展示排序"
-                              style="width: 188px;"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="category.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
+<!--            <Form-item label="首页展示排序" prop="showIndex">-->
+<!--                <Input-number :min="0" :step="1" v-model="category.showIndex" placeholder="首页展示排序"-->
+<!--                              style="width: 188px;"/>-->
+<!--            </Form-item>-->
             <Form-item label="显示" prop="isShow">
                 <Radio-group v-model="category.isShow">
                     <Radio label="1">
@@ -142,29 +142,29 @@
                     <!--<span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议320*105像素以内,大小2M以下</span>-->
                 <!--</i-col>-->
             <!--</Row>-->
-            <Row>
-                <i-col span="16">
-                    <Form-item label="首页icon" prop="iconUrl">
-                        <i-input v-model="category.iconUrl" placeholder="尺寸建议90*90像素以内,大小100K以下" readonly/>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"
-                                max-size="100"
-                                :on-success="handleSuccessIconUrl" :on-format-error="handleFormatError"
-                                :show-upload-list="false"
-                                :on-exceeded-size="handleMaxSize">
-                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>
-                        </Upload>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <i-button icon="eye" @click="eyeImageIconUrl">预览图片</i-button>
-                    </Form-item>
-                </i-col>
-            </Row>
+<!--            <Row>-->
+<!--                <i-col span="16">-->
+<!--                    <Form-item label="首页icon" prop="iconUrl">-->
+<!--                        <i-input v-model="category.iconUrl" placeholder="尺寸建议90*90像素以内,大小100K以下" readonly/>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"-->
+<!--                                max-size="100"-->
+<!--                                :on-success="handleSuccessIconUrl" :on-format-error="handleFormatError"-->
+<!--                                :show-upload-list="false"-->
+<!--                                :on-exceeded-size="handleMaxSize">-->
+<!--                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>-->
+<!--                        </Upload>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <i-button icon="eye" @click="eyeImageIconUrl">预览图片</i-button>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--            </Row>-->
             <!--<Row>
                 <i-col span="16" style="margin-top: -30px;">
                     <span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议90*90像素以内,大小100K以下</span>
@@ -198,31 +198,31 @@
                     <!--<span style="margin-left: 100px;color: red;font-size: 12px;">* 尺寸建议320*105像素以内,大小2M以下</span>-->
                 <!--</i-col>-->
             <!--</Row>-->
-            <Row>
-                <i-col span="16">
-                    <Form-item label="分类banner" prop="wapBannerUrl">
-                        <i-input v-model="category.wapBannerUrl" placeholder="一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下" readonly/>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"
-                                max-size="100"
-                                :on-success="handleSuccessWapBannerUrl" :on-format-error="handleFormatError"
-                                :show-upload-list="false"
-                                :on-exceeded-size="handleMaxSize"
+<!--            <Row>-->
+<!--                <i-col span="16">-->
+<!--                    <Form-item label="分类banner" prop="wapBannerUrl">-->
+<!--                        <i-input v-model="category.wapBannerUrl" placeholder="一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下" readonly/>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"-->
+<!--                                max-size="100"-->
+<!--                                :on-success="handleSuccessWapBannerUrl" :on-format-error="handleFormatError"-->
+<!--                                :show-upload-list="false"-->
+<!--                                :on-exceeded-size="handleMaxSize"-->
 
-                        >
-                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>
-                        </Upload>
-                    </Form-item>
-                </i-col>
-                <i-col span="4">
-                    <Form-item :label-width="1">
-                        <i-button icon="eye" @click="eyeImageWapBannerUrl">预览图片</i-button>
-                    </Form-item>
-                </i-col>
-            </Row>
+<!--                        >-->
+<!--                            <i-button icon="ios-cloud-upload-outline">上传图片</i-button>-->
+<!--                        </Upload>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--                <i-col span="4">-->
+<!--                    <Form-item :label-width="1">-->
+<!--                        <i-button icon="eye" @click="eyeImageWapBannerUrl">预览图片</i-button>-->
+<!--                    </Form-item>-->
+<!--                </i-col>-->
+<!--            </Row>-->
             <!--<Row>
                 <i-col span="16" style="margin-top: -30px;">
                     <span style="margin-left: 100px;color: red;font-size: 12px;">* 一级分类图片尺寸建议720*246像素以内,二级分类图片尺寸建议250*250像素以内,大小100K以下</span>
@@ -238,9 +238,9 @@
             <!--</Radio>-->
             <!--</Radio-group>-->
             <!--</Form-item>-->
-            <Form-item label="frontName" prop="frontName">
-                <i-input type="textarea" v-model="category.frontName" placeholder="frontName"/>
-            </Form-item>
+<!--            <Form-item label="frontName" prop="frontName">-->
+<!--                <i-input type="textarea" v-model="category.frontName" placeholder="frontName"/>-->
+<!--            </Form-item>-->
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
                 <i-button type="warning" @click="reload" style="margin-left: 8px"/>

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

@@ -47,7 +47,7 @@
                 <i-input v-model="merch.merchShortName" placeholder="商户简称"/>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <i-input v-model="merch.sortOrder" placeholder="排序"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="merch.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
             <Form-item label="显示" prop="isShow">
                 <Radio-group v-model="merch.isShow">

+ 3 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/product.html

@@ -12,6 +12,9 @@
                 <i-col span="4">
                     <i-input v-model="q.goodsName" @on-enter="query" placeholder="商品名称"/>
                 </i-col>
+                <i-col span="4">
+                    <i-input v-model="q.goodsSn" @on-enter="query" placeholder="商品序列号"/>
+                </i-col>
                 <i-button @click="query">查询</i-button>
             </div>
             <div class="buttons-group">

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

@@ -64,7 +64,7 @@
                 <i-input v-model="supplier.childSupplierFlag" placeholder="二级供货商标识"/>
             </Form-item>
             <Form-item label="排序" prop="sortOrder">
-                <i-input v-model="supplier.sortOrder" placeholder="排序"/>
+                <Input-Number :min="0" :max="999" :step="1" v-model="supplier.sortOrder" placeholder="排序" style="width: 188px;"/>
             </Form-item>
             <Form-item label="是否禁用" prop="isShow">
                 <!--<i-input v-model="supplier.isShow" placeholder="是否禁用:0:否;1:是"/>-->

+ 7 - 4
kmall-admin/src/main/webapp/js/cashier/cashierManager.js

@@ -84,7 +84,8 @@ let vm = new Vue({
             // ]
 		},
 		q: {
-            machineCode: ''
+            machineCode: '',
+            storeName: ''
 		}
 	},
 	methods: {
@@ -112,7 +113,7 @@ let vm = new Vue({
 		},
 		saveOrUpdate: function (event) {
             let url = vm.cashier.mcId == null ? "../cashier/save" : "../cashier/update";
-            console.log(vm.cashier);
+
 			$.ajax({
 				type: "POST",
 			    url: url,
@@ -156,11 +157,13 @@ let vm = new Vue({
 		getInfo: function(mcId){
 			$.get("../cashier/info/"+mcId, function (r) {
                 vm.cashier = r.cashier;
+                vm.cashier.shopSn = r.cashier.shopSn * 1;
             });
 		},
         reloadSearch: function() {
             vm.q = {
-                machineCode: ''
+                machineCode: '',
+                storeName: ''
             }
             vm.reload();
 		},
@@ -171,7 +174,7 @@ let vm = new Vue({
                 page = $("#jqGrid").jqGrid('getGridParam', 'page');
             }
 			$("#jqGrid").jqGrid('setGridParam', {
-                postData: {'machineCode': vm.q.machineCode},
+                postData: {'machineCode': vm.q.machineCode, 'storeName': vm.q.storeName},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');

+ 1 - 1
kmall-admin/src/main/webapp/js/cashier/salerecord.js

@@ -16,7 +16,7 @@ $(function () {
 				}
 				return value;
 				}},
-			{label: '活动id', name: 'discountName', index: 'discountName', align: 'center', width: 120,},
+			// {label: '活动id', name: 'discountName', index: 'discountName', align: 'center', width: 120,},
 			{label: '销售时间', name: 'salesTime', index: 'sales_time',align: 'center', width: 160,formatter:function(value){
 					return transDate(value, 'yyyy-MM-dd hh:mm:ss');
 				}}

+ 4 - 2
kmall-admin/src/main/webapp/js/mk/mkactivityform.js

@@ -163,10 +163,12 @@ let vm = new Vue({
         mkActivityForm: {},
         ruleValidate: {
             mkCode: [
-                {required: true, message: '活动形式代码不能为空', trigger: 'blur'}
+                {required: true, message: '活动形式代码不能为空', trigger: 'blur'},
+                {max: 32, message: '活动形式代码长度不能超过32', trigger: 'blur'}
             ],
             mkName: [
-                {required: true, message: '活动形式名称不能为空', trigger: 'blur'}
+                {required: true, message: '活动形式名称不能为空', trigger: 'blur'},
+                {max: 32, message: '活动形式名称长度不能超过32', trigger: 'blur'}
             ]
         },
         q: {

+ 13 - 3
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1564,6 +1564,7 @@ function getPrintContentOrder(ticket, callback) {
     content += "<td style=\"width: 40%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
     content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
     content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">优惠</td>";
+    content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">优惠后单价</td>";
     // content += "<td style=\"width: 16%;text-align: right;font-size: 10px;font-weight: bold;\">税费</td>";
     content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
     content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
@@ -1583,6 +1584,7 @@ function getPrintContentOrder(ticket, callback) {
         content += "</td>";
         content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
         content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].discountPrice + "</td>";
+        content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].afterDiscountPrice + "</td>";
         // content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].taxation + "</td>";
         content += "<td style=\"width: 15%;text-align: center;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
         content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "</td>";
@@ -1597,10 +1599,18 @@ function getPrintContentOrder(ticket, callback) {
     content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
     content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.total + "元</span>";
     content += "</div>";
+    // content += "<div style=\"width: 100%;\">";
+    // content += "<span style=\"float: left;width: 50%;text-align: left;\">税费合计:</span>";
+    // content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
+    // content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.taxTotal + "元</span>";
+    // content += "</div>";
     content += "<div style=\"width: 100%;\">";
-    content += "<span style=\"float: left;width: 50%;text-align: left;\">税费合计:</span>";
-    content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
-    content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.taxTotal + "元</span>";
+    content += "<span style=\"float: left;width: 50%;text-align: left;\">积分抵扣合计:</span>";
+    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.deductionScore + "分</span>";
+    content += "</div>";
+    content += "<div style=\"width: 100%;\">";
+    content += "<span style=\"float: left;width: 50%;text-align: left;\">积分抵扣金额:</span>";
+    content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.scoreDeductionPrice + "元</span>";
     content += "</div>";
     content += "<div style=\"width: 100%;\">";
     content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠合计:</span>";

+ 16 - 9
kmall-admin/src/main/webapp/js/shop/category.js

@@ -51,7 +51,7 @@ TreeGrid.initColumn = function () {
         // {title: '所属商户', field: 'merchName',  width: '100px', align: 'center'},
         // {title: '所属门店', field: 'storeName', width: '80px', align: 'center'},
         {title: '描述', field: 'frontDesc', align: 'center', valign: 'middle', width: '150px'},
-        {title: '首页排序', field: 'sortOrder', align: 'center', valign: 'middle', width: '50px'},
+        {title: '排序', field: 'sortOrder', align: 'center', valign: 'middle', width: '50px'},
         {
             title: '显示',
             field: 'isShow',
@@ -84,23 +84,28 @@ var vm = new Vue({
         category: {isShow: 1, type: 0, level: 'L1', bannerUrl: '', iconUrl: '', imgUrl: '', wapBannerUrl: ''},
         ruleValidate: {
             name: [
-                {required: true, message: '分类名称不能为空', trigger: 'blur'}
+                {required: true, message: '分类名称不能为空', trigger: 'blur'},
+                {max: 32, message: '分类名称长度不能超过32', trigger: 'blur'}
+            ],
+            keywords: [
+                {max: 20, message: '关键字长度不能超过20', trigger: 'blur'}
             ],
             frontDesc: [
-                {required: true, message: '描述不能为空', trigger: 'blur'}
+                {required: true, message: '描述不能为空', trigger: 'blur'},
+                {max: 128, message: '描述长度不能超过128', trigger: 'blur'}
             ],
             // bannerUrl: [
             //     {required: true, message: 'banner图片不能为空', trigger: 'blur'}
             // ],
-            iconUrl: [
-                {required: true, message: '首页icon不能为空', trigger: 'blur'}
-            ],
+            // iconUrl: [
+            //     {required: true, message: '首页icon不能为空', trigger: 'blur'}
+            // ],
             // imgUrl: [
             //     {required: true, message: '图片不能为空', trigger: 'blur'}
             // ],
-            wapBannerUrl: [
-                {required: true, message: '分类banner不能为空', trigger: 'blur'}
-            ]
+            // wapBannerUrl: [
+            //     {required: true, message: '分类banner不能为空', trigger: 'blur'}
+            // ]
             // frontName: [
             //     {required: true, message: 'frontName不能为空', trigger: 'blur'}
             // ]
@@ -326,6 +331,8 @@ var vm = new Vue({
             // TreeGrid.table.refresh();
             initialPage();
             getGrid();
+            // 清除验证信息
+            vm.handleReset('formValidate');
         },
         handleSubmit: function (name) {
             handleSubmitValidate(this, name, function () {

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

@@ -3,7 +3,7 @@ $(function () {
         url: '../goods/list',
         datatype: "json",
         colModel: [
-            // {label: 'ID', name: 'id', index: 'id', width: 60, key: true},
+            {label: 'ID', name: 'id', index: 'id', width: 60, key: true},
             {label: '商户名称', name: 'merchName', index: 'merchName', width: 100, align: 'center'},
             {label: '第三方商户编号', name: 'thirdPartyMerchCode', index: 'thirdPartyMerchCode', width: 160, align: 'center'},
             // {label: '海关商品编码', name: 'cusGoodsCode', index: 'cus_goods_code', width: 180, align: 'center'},

+ 0 - 9
kmall-admin/src/main/webapp/js/shop/merch.js

@@ -67,15 +67,6 @@ let vm = new Vue({
                 {required: true, message: '商户简称不能为空', trigger: 'blur'},
                 {max: 10, message: '商户简称长度不能超过10', trigger: 'blur'}
             ],
-            sortOrder: [
-                {
-                    type: 'integer', message: '排序只能输入正整数,最大不超过9999', trigger: 'blur', min: 0, max: 9999,
-                    transform(value) {
-                        return Number(value);
-                    }
-                },
-                {pattern: /^[1-9]\d*$/, message: '排序只能输入正整数', trigger: 'blur'}
-            ],
             remark: [
                 {max: 32, message: '备注长度不能超过32', trigger: 'blur'}
             ]

+ 7 - 6
kmall-admin/src/main/webapp/js/shop/product.js

@@ -14,10 +14,10 @@ $(function () {
                 label: '商品规格',
                 name: 'goodsSpecificationNameValue',
                 index: 'goods_specification_ids',
-                width: 160,
-                formatter: function (value, options, row) {
-                    return value.replace(row.goodsName + " ", '');
-                }
+                width: 160
+                // formatter: function (value, options, row) {
+                //     return value.replace(row.goodsName + " ", '');
+                // }
             },
             {label: '商品序列号', name: 'goodsSn', index: 'goods_sn', width: 180},
             // {label: '商品库存', name: 'goodsNumber', index: 'goods_number', width: 80},
@@ -65,7 +65,8 @@ let vm = new Vue({
             ]
         },
         q: {
-            goodsName: ''
+            goodsName: '',
+            goodsSn: ''
         },
         goodss: [],
         attribute: [],
@@ -157,7 +158,7 @@ let vm = new Vue({
             vm.showList = true;
             let page = $("#jqGrid").jqGrid('getGridParam', 'page');
             $("#jqGrid").jqGrid('setGridParam', {
-                postData: {'goodsName': vm.q.goodsName},
+                postData: {'goodsName': vm.q.goodsName, 'goodsSn': vm.q.goodsSn},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');

+ 4 - 2
kmall-admin/src/main/webapp/js/shop/supplier.js

@@ -52,10 +52,12 @@ let vm = new Vue({
 		supplier: {childSupplierName: '', childSupplierFlag: '', isShow: 0},
 		ruleValidate: {
             childSupplierName: [
-				{required: true, message: '二级供货商名称不能为空', trigger: 'blur'}
+				{required: true, message: '二级供货商名称不能为空', trigger: 'blur'},
+                {max: 32, message: '二级供货商名称长度不能超过32', trigger: 'blur'}
 			],
             childSupplierFlag: [
-                {required: true, message: '二级供货商标识不能为空', trigger: 'blur'}
+                {required: true, message: '二级供货商标识不能为空', trigger: 'blur'},
+                {max: 20, message: '二级供货商标识长度不能超过20', trigger: 'blur'}
             ]
 		},
 		q: {

+ 1 - 1
kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js

@@ -20,7 +20,7 @@ $(function () {
 			},
 			// {label: '积分金额', name: 'pointsRulesMoney', index: 'points_rules_money', width: 80},
 			// {label: '对应积分数', name: 'pointsRulesNum', index: 'points_rules_num', width: 80},
-			{label: '对应积分', name: 'ratio', index: 'ratio', width: 80},
+			{label: '对应积分生成比例', name: 'ratio', index: 'ratio', width: 80},
 			{
 				label: '规则适用开始时间', name: 'pointsBeginTime', index: 'points_begin_time',align:"center", width: 200, formatter: function (value) {
 					return transDate(value, 'yyyy-MM-dd');

+ 1 - 2
kmall-admin/src/main/webapp/login.html

@@ -24,7 +24,7 @@
     <!--<div class="row" style="background: rgba(109, 109, 109, 0.23);border: 0px solid #dddee1;padding:72px 2px">-->
     <div class="row" style="background: rgba(109, 109, 109, 0.45);border-radius: 20px;border: 0px solid #6d6d6d;padding:13px 22px 35px 22px;">
         <div class="row" style="border: 0px solid #6d6d6d">
-            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>跨 境 电 商 &nbsp;&nbsp;新零售</b></p>
+            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>珠 免 展 销 店</b></p>
             <hr/>
         </div>
         <!--<div class="col-md-7">
@@ -53,7 +53,6 @@
         </div>-->
         <div class="col-md-7" >
             <p style="font-size: 35px;font-family: 微软雅黑;color: #3bc8ff;text-shadow: 2px 2px 5px #000;padding-right: 10px;margin: 45px 0 0;" align="center">
-                <span >CW大药房</span>
                 <br/>
                 <span style="font-size: 45px">管 理 后 台</span>
                 <br/>

二进制
kmall-admin/src/main/webapp/statics/file/category_yyyy_mm_dd_v1.0.0.xls


二进制
kmall-admin/src/main/webapp/statics/file/goods_export_yyyy_mm_dd_v1.0.0.xls


二进制
kmall-admin/src/main/webapp/statics/file/mall2RulesDetil_1.0.xlsx


+ 5 - 6
kmall-admin/src/main/webapp/userLogin.html

@@ -25,12 +25,11 @@
 <div class="loginscreen animated fadeInDown signinpanel" id="loginBox" v-cloak>
     <div class="row" style="background: rgba(109, 109, 109, 0.45);border-radius: 20px;border: 0px solid #6d6d6d;padding:13px 22px 35px 22px;">
         <div class="row" style="border: 0px solid #6d6d6d">
-            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>跨 境 电 商 &nbsp;&nbsp;新零售</b></p>
+            <p style="font-size: 45px;font-family: 微软雅黑;color: #ffffff;text-shadow: 5px 5px 5px #000;margin-bottom: 10px" align="center"><b>珠 免 线 下 店</b></p>
             <hr/>
         </div>
         <div class="col-md-7" >
             <p style="font-size: 35px;font-family: 微软雅黑;color: #3bc8ff;text-shadow: 2px 2px 5px #000;padding-right: 10px;margin: 45px 0 0;" align="center">
-                <span >CW大药房</span>
                 <br/>
                 <span style="font-size: 45px">收 银 系 统</span>
                 <br/>
@@ -133,10 +132,10 @@
                 // var data = "username=" + vm.username + "&password=" + vm.password + "&captcha=" + vm.captcha + "&machineCode=0z4kBPFEve0=&loginType=2"; //TODO  新增加一个机器码;
                 sessionStorage.removeItem("permsSet");
                 var code = sessionStorage.getItem("machineCode");
-                if(!code){
-                    alert("正在获取机器码,请稍后登录,大约5s");
-                    return;
-                }
+                // if(!code){
+                //     alert("正在获取机器码,请稍后登录,大约5s");
+                //     return;
+                // }
                 $.ajax({
                     type: "POST",
                     url: "sys/login",

+ 26 - 0
kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/CashInfo.java

@@ -36,6 +36,16 @@ public class CashInfo implements Serializable {
     // 支付方式名称
     private String paymentMode;
 
+    /**
+     * 积分抵扣合计
+     */
+    private Integer deductionScore;
+
+    /**
+     * 积分抵扣金额
+     */
+    private String scoreDeductionPrice;
+
 
     public String getTotal() {
         return total;
@@ -116,4 +126,20 @@ public class CashInfo implements Serializable {
     public void setPaymentMode(String paymentMode) {
         this.paymentMode = paymentMode;
     }
+
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
+    public String getScoreDeductionPrice() {
+        return scoreDeductionPrice;
+    }
+
+    public void setScoreDeductionPrice(String scoreDeductionPrice) {
+        this.scoreDeductionPrice = scoreDeductionPrice;
+    }
 }

+ 21 - 0
kmall-common/src/main/java/com/kmall/common/utils/print/ticket/item/Goods.java

@@ -25,6 +25,8 @@ public class Goods implements Serializable {
     private String subtotal;
     // 优惠金额
     private String discountPrice;
+    // 优惠后金额
+    private String afterDiscountPrice;
 
 
     public Goods(String gname, String uprice, String taxation, String num, String subtotal) {
@@ -44,6 +46,16 @@ public class Goods implements Serializable {
         this.discountPrice = discountPrice;
     }
 
+    public Goods(String gname, String uprice, String taxation, String num, String subtotal,String discountPrice, String afterDiscountPrice) {
+        this.gname = gname;
+        this.uprice = uprice;
+        this.taxation = taxation;
+        this.num = num;
+        this.subtotal = subtotal;
+        this.discountPrice = discountPrice;
+        this.afterDiscountPrice = afterDiscountPrice;
+    }
+
 
     public String getGname() {
         return gname;
@@ -93,6 +105,14 @@ public class Goods implements Serializable {
         this.discountPrice = discountPrice;
     }
 
+    public String getAfterDiscountPrice() {
+        return afterDiscountPrice;
+    }
+
+    public void setAfterDiscountPrice(String afterDiscountPrice) {
+        this.afterDiscountPrice = afterDiscountPrice;
+    }
+
     @Override
     public String toString() {
         return "Goods{" +
@@ -101,6 +121,7 @@ public class Goods implements Serializable {
                 ", taxation='" + taxation + '\'' +
                 ", num='" + num + '\'' +
                 ", subtotal='" + subtotal + '\'' +
+                ", afterDiscountPrice='" + afterDiscountPrice + '\'' +
                 '}';
     }
 }