qng 3 éve
szülő
commit
edbf69a606

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

@@ -1099,40 +1099,21 @@ public class OrderController {
         }
     }
 
-    @RequestMapping("/resendOrderToCCNET/{orderSn}/{resendType}")
-    public R resendWayBill(@PathVariable("orderSn") String orderSn, @PathVariable("resendType") String resendType){
+    /**
+     * 海控支付单重推
+     * @param orderSn
+     * @return
+     */
+    @RequestMapping("/resendOrderWayBill/{orderSn}")
+    public R resendWayBill(@PathVariable("orderSn") String orderSn){
 
-        String response = null;
-        Map map = new HashMap();
-        map.put("orderSn",orderSn);
         try {
-            String url = "";
-            if("waybill".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/resendWaybill/"+orderSn;
-
-            }else if("payment".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/resendPayment/"+orderSn;
-            }else if("notice".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/notice/"+orderSn;
-            }else if("clsOrder".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/clsOrder/"+orderSn;
-            }else if("forceSend".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/forceSend/"+orderSn;
-            }else if("resendOrder".equals(resendType)){
-                url = OmsMerchPropertiesBuilder.instance().getWxOrderResendUrl() + "/resendOrder/"+orderSn;
-            }
-            // 同步访问,返回结果字符串
-            response = OkHttpUtils.post(map, url, "SSL");
-            ResponseData responseData = JacksonUtils.fromStringJson(response, ResponseData.class);
-            if(responseData.getCode().equalsIgnoreCase("0")){
-                List<WxOrderEntity> list = responseData.getData().getRows();
-            }
+            return orderService.resendWayHkBill(orderSn);
         } catch (Exception e) {
             logger.error("查询失败。"+e.getMessage());
+            return R.error("重发支付单失败");
         }
 
-
-        return R.ok(response);
     }
 
 

+ 1 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/vip/Mall2PointsRulesController.java

@@ -92,7 +92,6 @@ public class Mall2PointsRulesController {
      * 删除
      */
     @RequestMapping("/delete")
-//    @RequiresPermissions("mall2pointsrules:delete")
     @ResponseBody
     public R delete(@RequestBody Integer[]mprIds) {
         mall2PointsRulesService.deleteBatch(mprIds);
@@ -120,8 +119,7 @@ public class Mall2PointsRulesController {
             return R.error("导入失败!");
         }
         mall2PointsRulesService.rulesUploadDetil(mall2RulesDtoList,mkaId);
-        //上传文件
-        return R.ok("导入成功!");
+        return R.ok();
     }
 
     /**

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

@@ -244,4 +244,11 @@ public interface OrderService {
      * @return      结果
      */
     int updateBuyerPayCheck(Map<String, Object> wxMap);
+
+    /**
+     * 支付单重推
+     * @param orderSn
+     * @return
+     */
+    R resendWayHkBill(String orderSn) throws Exception;
 }

+ 62 - 4
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -2279,6 +2279,9 @@ public class OrderServiceImpl implements OrderService {
 
             // 商品总重量
             BigDecimal weight = new BigDecimal(0);
+            //生成商户订单号
+            SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+            String orderSn = "ZWCW" + format.format(new Date()) + CommonUtil.generateOrderNumber();
             // 检查库存和更新库存
             for (QueryGoodsVO goodsDto : queryGoodsVOList) {
                 // 要购买的数量
@@ -2306,6 +2309,7 @@ public class OrderServiceImpl implements OrderService {
                     // 门店库存变化记录
                     StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
                     storeMngChangeEntity.setChangeType(Dict.changeType.item_1.getItem());
+                    storeMngChangeEntity.setOrderSn(orderSn);
                     storeMngChangeEntity.setChangeReason("商品销售扣减");
                     storeMngChangeEntity.setGoodsId(goodsDto.getId().intValue());
                     storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(goodsDto.getStoreId())));
@@ -2452,6 +2456,7 @@ public class OrderServiceImpl implements OrderService {
             BigDecimal actualPrice = new BigDecimal((String) param.get("actualPrice"));
             // OrderVo order = setOrderVo(goodsEntities, userEntity, storeId.longValue(), user.getMerchSn(), disCountAmount, totalTax, status, mapAddr);
             OrderVo order = setOrderVo(goodsEntities, userEntity, storeId.longValue(), user.getMerchSn(), totalTax, status, mapAddr, actualPrice);
+            order.setOrder_sn(orderSn);
             order.setStore_id(storeId.longValue());
             String couponSn = (String) userInfo.get("couponSn");
             order.setMerchOrderSn(merchOrderSn);
@@ -4891,10 +4896,10 @@ public class OrderServiceImpl implements OrderService {
         // 加上税额
         goodsTotalPrice = goodsTotalPrice.subtract(totalTax).setScale(2, RoundingMode.HALF_UP);
 
-        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-
-        String orderSn = "ZWCW" + format.format(new Date()) + CommonUtil.generateOrderNumber();
-        orderInfo.setOrder_sn(orderSn);
+//        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+//
+//        String orderSn = "ZWCW" + format.format(new Date()) + CommonUtil.generateOrderNumber();
+//        orderInfo.setOrder_sn(orderSn);
         orderInfo.setMerchSn(merchSn);
         orderInfo.setUser_id(loginUser.getId().longValue());
         orderInfo.setNumber(number);
@@ -5077,4 +5082,57 @@ public class OrderServiceImpl implements OrderService {
     public int updateBuyerPayCheck(Map<String, Object> wxMap) {
         return orderDao.updateBuyerPayCheck(wxMap);
     }
+
+    /**
+     * 支付单重推
+     * @param orderSn
+     * @return
+     */
+    @Override
+    public R resendWayHkBill(String orderSn) throws Exception {
+
+        OrderEntity orderEntity = orderDao.queryObjectByOrderSn(orderSn);
+        if(null==orderEntity){
+            return R.error("该订单不存在");
+        }
+        StoreEntity store = storeService.queryObject(orderEntity.getStoreId().intValue());
+        if(null==store){
+            return R.error("该订单所属门店不存在:"+orderEntity.getOrderSn());
+        }
+        MerchEntity merchEntity = merchDao.findByMerchSn(orderEntity.getMerchSn());
+        if(null==merchEntity){
+            return R.error("该订单所属商户不存在:"+orderEntity.getOrderSn());
+        }
+        // 组装支付单信息
+        Map<String, Object> orderSendCusParams = new HashMap<>();
+        if(Dict.payFlag.item_weixin.getItem().equals(orderEntity.getPayFlag())){
+            orderSendCusParams.put("merchSn", orderEntity.getMerchSn());
+            orderSendCusParams.put("orderSn", orderEntity.getOrderSn());
+            orderSendCusParams.put("merchName", merchEntity.getMerchName());
+            orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
+            orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
+            orderSendCusParams.put("outTradeNo", orderEntity.getMerchOrderSn());
+            //微信支付流水号
+            orderSendCusParams.put("transactionId", orderEntity.getPayTransactionId());
+            orderSendCusParams.put("subOrderId", "");   // ccnet原逻辑没有对该字段赋值
+            orderSendCusParams.put("subOrderNo", orderEntity.getOrderSn());
+
+            // 将支付单信息发送到当前项目下的 cuspay
+            wxCusDeclareBiz.biz(orderSendCusParams);
+        }else {
+            // 组装支付单信息
+            orderSendCusParams.put("merchSn", orderEntity.getMerchSn());
+            orderSendCusParams.put("orderSn", orderEntity.getOrderSn());
+            orderSendCusParams.put("merchName", merchEntity.getMerchName());
+            orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
+            orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
+            //阿里支付流水号
+            orderSendCusParams.put("tradeNo", orderEntity.getAliTradeNo());
+            orderSendCusParams.put("amount", orderEntity.getActualPrice());
+
+            // 将支付单信息发送到当前项目下的 cuspay
+            aliCusDeclareBiz.biz(orderSendCusParams);
+        }
+        return R.ok();
+    }
 }

+ 52 - 39
kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java

@@ -959,16 +959,16 @@ 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());
-                }
+//                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);
                 }else{
                     storeRelaEntity.setId(productStoreRelaEntity.getId());
-                    storeRelaEntity.setStockNum(productStoreRelaEntity.getStockNum()+Integer.valueOf(storeGoodsDto.getStockNum()));
+                    storeRelaEntity.setStockNum(productStoreRelaEntity.getStockNum());
                     ((ProductStoreRelaService) AopContext.currentProxy()).update(storeRelaEntity);
                 }
 
@@ -1054,17 +1054,37 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     }
 
     /**
-     * 这里调用当前bean的save()和update(),事务会失效
+     * 这里调用当前bean的save()和update(),事务会失效,【修改库存】
      */
     @Override
     @Transactional
     public int uploadExcelByCover(List<StoreGoodsDto> storeGoodsDtoList) {
         if (storeGoodsDtoList != null && storeGoodsDtoList.size() > 0) {
+
             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());
                 storeRelaEntity.setStoreId(store.getId());
                 GoodsEntity goodsEntity = goodsDao.queryObjectBySnNew(storeGoodsDto.getGoodsSn());
                 if (goodsEntity != null) {
@@ -1072,52 +1092,45 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
                 }else{
                     throw new RRException("商品[" + storeGoodsDto.getGoodsSn() + "]未录入系统");
                 }
-                CategoryEntity parentCategoryEntity = categoryDao.queryObjectByName(storeGoodsDto.getCategoryName(), store.getMerchSn(),0);
-                CategoryEntity categoryEntity;//二级分类
-                if (parentCategoryEntity != null) {
-                    categoryEntity = categoryDao.queryObjectByName(storeGoodsDto.getAttributeCategory(), store.getMerchSn(),parentCategoryEntity.getId());
-                    if (categoryEntity == null) {
-                        categoryEntity = initSaveCategoryEntity(storeGoodsDto.getAttributeCategory(), store.getMerchSn(), parentCategoryEntity.getId());
-                        categoryDao.save(categoryEntity);
-                        categoryEntity = categoryDao.queryObjectByName(storeGoodsDto.getAttributeCategory(), store.getMerchSn(),parentCategoryEntity.getId());
-                    }
-                }else{
-//                    throw new RRException("商品[" + storeGoodsDto.getGoodsSn() + "]的一级类别输入有误");
-                    // 如果没有一级分类就自动创建一二级分类
-                    parentCategoryEntity = initSaveCategoryEntity(storeGoodsDto.getCategoryName(), store.getMerchSn(),0);
-                    categoryDao.save(parentCategoryEntity);
-                    // 保存后再查出来
-                    parentCategoryEntity = categoryDao.queryObjectByName(storeGoodsDto.getCategoryName(), store.getMerchSn(),0);
-                    categoryEntity = initSaveCategoryEntity(storeGoodsDto.getAttributeCategory(),store.getMerchSn(),parentCategoryEntity.getId());
-                    categoryDao.save(categoryEntity);
-                    categoryEntity = categoryDao.queryObjectByName(storeGoodsDto.getAttributeCategory(), store.getMerchSn(),parentCategoryEntity.getId());
-                }
-
-                storeRelaEntity.setCategoryId(parentCategoryEntity.getId());
-                storeRelaEntity.setAttributeCategory(categoryEntity.getId());
 
-                BrandEntity brandEntity = brandDao.queryObjectByName(storeGoodsDto.getBrandName(), store.getMerchSn(),storeRelaEntity.getAttributeCategory());
-                if (brandEntity == null) {
-                    // throw new RRException("商品[" + storeGoodsDto.getGoodsSn() + "]的品牌输入有误");
-                    brandEntity = initSaveBrandEntity(storeGoodsDto.getBrandName(), store.getMerchSn(),storeRelaEntity.getAttributeCategory());
-                    brandDao.save(brandEntity);
-                    brandEntity = brandDao.queryObjectByName(storeGoodsDto.getBrandName(), store.getMerchSn(),storeRelaEntity.getAttributeCategory());
+                // 获取分类id
+                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();
+                    if(categoryId == null){
+                        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("该分类不是二级分类,请检查,对应条码是:"+ storeGoodsDto.getGoodsSn()+",分类名称为:"+ storeGoodsDto.getAttributeCategory());
                 }
 
-                storeRelaEntity.setBrandId(brandEntity.getId());
+                checkBrand(storeGoodsDto, storeRelaEntity);
                 storeRelaEntity.setMarketPrice(new BigDecimal(storeGoodsDto.getMarketPrice()));
                 storeRelaEntity.setRetailPrice(new BigDecimal(storeGoodsDto.getRetailPrice()));
                 storeRelaEntity.setBottomLinePrice(storeGoodsDto.getBottomLinePrice());
                 storeRelaEntity.setStockNum(Integer.valueOf(storeGoodsDto.getStockNum()));
                 ProductStoreRelaEntity productStoreRelaEntity = productStoreRelaDao.queryByGoodsIdAndStoreId(storeRelaEntity.getStoreId(), storeRelaEntity.getGoodsId());
                 if (Objects.isNull(productStoreRelaEntity)) {
-                    save(storeRelaEntity);
+                    throw new RuntimeException("该商品不存在无法修改库存:"+ storeRelaEntity.getGoodsSn());
                 }else{
                     storeRelaEntity.setId(productStoreRelaEntity.getId());
                     storeRelaEntity.setStockNum(productStoreRelaEntity.getStockNum()+Integer.valueOf(storeGoodsDto.getStockNum()));
-                    update(storeRelaEntity);
+                    ((ProductStoreRelaService) AopContext.currentProxy()).update(storeRelaEntity);
                 }
+
             }
+
+
         }else{
             throw new RRException("导入数据为空,或者检查数据是否为空");
         }

+ 37 - 7
kmall-admin/src/main/java/com/kmall/admin/service/impl/vip/Mall2PointsRulesServiceImpl.java

@@ -1,12 +1,15 @@
 package com.kmall.admin.service.impl.vip;
 
+import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.dao.CategoryDao;
 import com.kmall.admin.dao.ProductStoreRelaDao;
 import com.kmall.admin.dao.StoreDao;
+import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.dto.Mall2RulesDto;
+import com.kmall.admin.entity.GoodsEntity;
 import com.kmall.admin.entity.vip.Mall2DetilEntity;
 import com.kmall.admin.haikong.vo.PointsRulesAndDetailVO;
-import com.kmall.common.utils.Query;
+import com.kmall.common.utils.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -83,29 +86,32 @@ public class Mall2PointsRulesServiceImpl implements Mall2PointsRulesService {
     public void rulesUploadDetil(List<Mall2RulesDto> pointsRulesList, Long mkaId) {
         Integer pointsType = mall2PointsRulesDao.queryRulesDetilId(mkaId);
         if(pointsRulesList.size()>0){
-            pointsRulesList.forEach(mall2RulesDto -> {
+            for(Mall2RulesDto mall2RulesDto : pointsRulesList) {
+                //校验参数
+                checkMsg(pointsType,mall2RulesDto);
                 switch (pointsType) {
                     //门店
                     case 0:
-                        mall2RulesDto.setRulesId(storeDao.queryObjectRulesByName(mall2RulesDto.getPointsRulesName().trim())+"");
+                        mall2RulesDto.setRulesId(storeDao.queryObjectRulesByName(mall2RulesDto.getPointsRulesName().trim()) + "");
                         break;
                     //商品类别
                     case 1:
-                        mall2RulesDto.setRulesId(categoryDao.queryObjectCategoryByName(mall2RulesDto.getPointsRulesName().trim())+"");
+                        mall2RulesDto.setRulesId(categoryDao.queryObjectCategoryByName(mall2RulesDto.getPointsRulesName().trim()) + "");
                         break;
                     //商品
                     case 2:
                         //获取门店ID
                         Long id = storeDao.queryObjectRulesByName(mall2RulesDto.getStoreName().trim());
                         mall2RulesDto.setStoreId(id);
-                        mall2RulesDto.setRulesId(productStoreRelaDao.queryproductStoreByName(mall2RulesDto.getPointsRulesName().trim(),id));
+                        mall2RulesDto.setRulesId(productStoreRelaDao.queryproductStoreByName(mall2RulesDto.getPointsRulesName().trim(), id));
                         break;
                     default:
                         break;
                 }
                 mall2RulesDto.setMkaId(mkaId);
                 mall2RulesDto.setPointsRulesType(pointsType);
-            });
+
+            }
             if(pointsRulesList.size()>0){
                 mall2PointsRulesDao.saveMall2PointsRulesDetil(pointsRulesList);
             }
@@ -150,7 +156,31 @@ public class Mall2PointsRulesServiceImpl implements Mall2PointsRulesService {
     @Override
     public int querymall2PointsRulesDetilTotal(Query query) {
         Long id = Long.parseLong(query.get("mkaId")+"");
-        Map<String,Object> map = new HashMap<>();
         return mall2PointsRulesDao.querymall2PointsRulesDetilTotal(id);
     }
+
+    /**
+     * 导入参数校验
+     * @param mall2RulesDto
+     */
+    private void checkMsg(Integer pointsType,Mall2RulesDto mall2RulesDto){
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mall2RulesDto);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("rulesType", "积分规则类型");
+        if(pointsType==0){
+            builder.put("pointsRulesName", "门店");
+        }else if(pointsType==1){
+            builder.put("pointsRulesName", "商品分类");
+        }else if(pointsType==2){
+            builder.put("pointsRulesName", "商品");
+            builder.put("storeName", "对应的商品门店");
+        }else{
+            throw new RRException("导入异常,请检查导入数据是否正确");
+        }
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+
+    }
 }

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

@@ -5,6 +5,7 @@ import com.kmall.admin.entity.vip.Mall2DetilEntity;
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
 import com.kmall.admin.haikong.vo.PointsRulesAndDetailVO;
 import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;

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

@@ -254,7 +254,7 @@
 
     <select id="queryGoodsDetailsByProdBarcode" resultType="com.kmall.admin.dto.GoodsDetailsDto">
         SELECT distinct
-        a.goods_sn as GoodsSn, a.goods_sn as sku, m.retail_price as retailPrice,a.prod_barcode as prodBarcode,a.name,a.brand,a.goods_desc as goodsDesc,a.goods_unit as goodsUnit,a.goods_rate as goodsRate,a.primary_pic_url ,m.stock_num as stockNum,r.value as specification
+        a.goods_sn as GoodsSn, a.goods_sn as sku, m.retail_price as retailPrice,a.prod_barcode as prodBarcode,a.name,a.brand,a.goods_desc as goodsDesc,a.goods_unit as goodsUnit,a.goods_rate as goodsRate,a.primary_pic_url ,m.stock_num as stockNum,a.goods_unit as specification
         ,a.hs_code as hsCode , a.legal_unit1_qty as legalUnit1Qty , a.legal_unit2_qty as legalUnit2Qty,a.ciq_prod_model as ciqProdModel,a.to_be_restored, m.exit_region_number as exitRegionNumber,
         a.warehouse_sn as warehouseSn, a.consignor_sn as consignorSn, a.warehous_sys_good_id as warehouseSysGoodId
         FROM
@@ -273,7 +273,7 @@
         SELECT distinct
         a.goods_sn as GoodsSn,m.retail_price as retailPrice,a.prod_barcode as prodBarcode,a.name,
         a.brand,a.goods_desc as goodsDesc,a.goods_unit as goodsUnit,a.goods_rate as goodsRate,a.primary_pic_url ,
-        m.stock_num as stockNum,r.value as specification
+        m.stock_num as stockNum,a.goods_unit as specification
         ,a.hs_code as hsCode , a.legal_unit1_qty as legalUnit1Qty , a.legal_unit2_qty as legalUnit2Qty,
         a.ciq_prod_model as ciqProdModel,a.to_be_restored,a.sku as sku,a.name,a.market_price as marketPrice
         FROM

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

@@ -81,7 +81,8 @@
     		c.`mod_time`,
 			s.store_name storeName,
 			g.name goodsName,
-			m.merch_name merchName
+			m.merch_name merchName,
+		    c.order_sn as orderSn
 		from mall_store_mng_change c left join mall_merch m on c.merch_sn = m.merch_sn
 		left join mall_store s on s.id = c.store_id
 		left join mall_goods g on c.goods_id = g.id

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

@@ -190,6 +190,9 @@
 		from mall2_points_rules_detil
 		WHERE
 		father_id = #{id}
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
 	</select>
 
 	<select id="querymall2PointsRulesDetilTotal" parameterType="java.lang.Long" resultType="java.lang.Integer">

+ 22 - 4
kmall-admin/src/main/webapp/WEB-INF/page/mk/mall2RulesDetil.html

@@ -41,11 +41,29 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
 		<i-form ref="formValidate" :model="mkActivitiesHalfPrice" :rules="ruleValidate" :label-width="80">
-            <Form-item label="积分规则类型" prop="productName">
-                <i-input v-model="mkActivitiesHalfPrice.productName" placeholder="产品中文名"/>
+<!--            <Form-item label="积分规则类型" prop="productName">-->
+<!--                <i-input v-model="mkActivitiesHalfPrice.productName" placeholder="产品中文名"/>-->
+<!--            </Form-item>-->
+            <Form-item label="商品条码" prop="goodsSn">
+                <i-select v-model="mall2PointsRules.pointsType" placeholder="商品条码" label-in-value>
+                    <i-option v-for="category in categories" :value="category.value"
+                              :key="category.value">{{category.name}}
+                    </i-option>
+                </i-select>
             </Form-item>
-            <Form-item label="对应的商品/门店/类别" prop="goodsSn">
-                <i-input v-model="mkActivitiesHalfPrice.goodsSn" placeholder="商品编码"/>
+            <Form-item label="门店名称" prop="goodsSn">
+                <i-select v-model="mall2PointsRules.pointsType" placeholder="门店名称" label-in-value>
+                    <i-option v-for="category in categories2" :value="category.value"
+                              :key="category.value">{{category.name}}
+                    </i-option>
+                </i-select>
+            </Form-item>
+            <Form-item label="商品类别" prop="goodsSn">
+                <i-select v-model="mall2PointsRules.pointsType" placeholder="商品类别" label-in-value>
+                    <i-option v-for="category in categories3" :value="category.value"
+                              :key="category.value">{{category.name}}
+                    </i-option>
+                </i-select>
             </Form-item>
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>

+ 8 - 8
kmall-admin/src/main/webapp/WEB-INF/page/shop/storeProductStock.html

@@ -138,14 +138,14 @@
                     </Upload>
                 </i-col>
                 #end
-<!--                <i-col style="display: inline-grid;">-->
-<!--                    <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-format-error="uploadExcelFormatError"-->
-<!--                            :on-progress="uploadExcelProgress"-->
-<!--                            :format="['xls','xlsx']"-->
-<!--                            action="../productstorerela/productStoreRelaUploadByCover">-->
-<!--                        <i-button type="ghost" icon="ios-cloud-upload-outline">门店商品导入(修改库存)</i-button>-->
-<!--                    </Upload>-->
-<!--                </i-col>-->
+                <i-col style="display: inline-grid;">
+                    <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-format-error="uploadExcelFormatError"
+                            :on-progress="uploadExcelProgress"
+                            :format="['xls','xlsx']"
+                            action="../productstorerela/productStoreRelaUploadByCover">
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">门店商品导入(修改库存)</i-button>
+                    </Upload>
+                </i-col>
                 #if($shiro.hasPermission("productstorerela:down"))
                 &nbsp;&nbsp;&nbsp;<a href="../statics/file/store_goods_export_yyyy_mm_dd_v1.0.0.xlsx">门店商品模板下载</a>&nbsp;&nbsp;&nbsp;&nbsp;
                 #end

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

@@ -48,6 +48,9 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
 		<i-form ref="formValidate" :model="storeMngChange" :rules="ruleValidate" :label-width="80">
+            <Form-item label="订单编号" prop="orderSn">
+                <i-input v-model="storeMngChange.orderSn" placeholder="订单编号"/>
+            </Form-item>
             <Form-item label="门店库存变化数" prop="storeChangeNum">
                 <i-input v-model="storeMngChange.storeChangeNum" placeholder="门店库存变化数"/>
             </Form-item>

+ 2 - 2
kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html

@@ -57,8 +57,8 @@
             <Form-item label="适用结束时间" prop="pointsEndTime">
                 <i-input type="date"  v-model="mall2PointsRules.pointsEndTime" placeholder="积分规则适用结束时间"/>
             </Form-item>
-            <Form-item label="积分比例" prop="ratio">
-                <i-input v-model="mall2PointsRules.ratio" placeholder="积分比例" />
+            <Form-item label="积分比例(小数)" prop="ratio">
+                <i-input v-model="mall2PointsRules.ratio" placeholder="积分比例小数,保留两位" />
             </Form-item>
             <Form-item label="是否有效" prop="isValid">
                 <i-select v-model="mall2PointsRules.isValid" placeholder="是否有效"

+ 28 - 1
kmall-admin/src/main/webapp/js/mk/mall2RulesDetil.js

@@ -24,7 +24,7 @@ $(function () {
 
 				}
 			},
-			{label: '商品/门店/类别名称', name: 'pointsRulesName', index: 'points_detil_name', width: 80, align: 'center'},
+			{label: '商品条码/门店/类别名称', name: 'pointsRulesName', index: 'points_detil_name', width: 80, align: 'center'},
 			{label: '对应的商品门店名称', name: 'storeName', index: 'points_store_name', width: 80, align: 'center'},
 			{label: '备注', name: 'remark', index: 'remark', width: 80, align: 'center'},],
 		viewrecords: true,
@@ -61,6 +61,9 @@ let vm = new Vue({
 	data: {
         showList: true,
         title: null,
+		categories: [],//商品条码
+		categories2: [],//门店名称
+		categories3: [],//商品类别
 		mkActivitiesHalfPrice: {},
 		ruleValidate: {
 			name: [
@@ -83,6 +86,9 @@ let vm = new Vue({
 		add: function () {
 			vm.showList = false;
 			vm.title = "新增";
+			vm.getCategories();
+			vm.getCategories2();
+			vm.getCategories3();
 			vm.mkActivitiesHalfPrice = {};
 		},
 		update: function (event) {
@@ -90,6 +96,9 @@ let vm = new Vue({
 			if (mafrId == null) {
 				return;
 			}
+			vm.getCategories();
+			vm.getCategories2();
+			vm.getCategories3();
 			vm.showList = false;
             vm.title = "修改";
 
@@ -168,6 +177,24 @@ let vm = new Vue({
                 vm.saveOrUpdate()
             });
         },
+		//商品条码
+		getCategories: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=70", function (r) {
+				vm.categories = r.list;
+			});
+		},
+		//门店名称
+		getCategories2: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=70", function (r) {
+				vm.categories2 = r.list;
+			});
+		},
+		//商品类别
+		getCategories3: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=70", function (r) {
+				vm.categories3 = r.list;
+			});
+		},
         handleReset: function (name) {
             handleResetForm(this, name);
         },

+ 14 - 14
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -1210,7 +1210,7 @@ let vm = new Vue({
         },
         resendPayment:function(){
             confirm('确认重发支付单吗?', function () {
-                $.get("../order/resendOrderToCCNET/"+vm.orderEntity.orderSn+"/payment", function (r) {
+                $.get("../order/resendOrderWayBill/"+vm.orderEntity.orderSn, function (r) {
                     alert(r.msg);
                 });
             })
@@ -1472,19 +1472,19 @@ function openWebSocket() {
         };
         //收到消息事件
         webSocket.onmessage = function (msg) {
-            var data = Object.assign({}, JSON.parse(msg.data));
-            console.log('3.接收到服务端信息......data:'+data);
-            vm.sessionId = data.sessionId;
-            vm.pickUpCodeList = [];
-            if(data.pickUpCodeList.length > 0){
-                for(var i = 0 ; i < data.pickUpCodeList.length ; i++){
-                    // console.log(data.pickUpCodeList[i].storeId);
-                    if(data.pickUpCodeList[i].storeId === storeId){
-                        vm.pickUpCodeList.push(data.pickUpCodeList[i]);
-                    }
-                }
-            }
-            vm.delayResponse = data.delayResponse;
+            // var data = Object.assign({}, JSON.parse(msg.data));
+            // console.log('3.接收到服务端信息......data:'+data);
+            // vm.sessionId = data.sessionId;
+            // vm.pickUpCodeList = [];
+            // if(data.pickUpCodeList.length > 0){
+            //     for(var i = 0 ; i < data.pickUpCodeList.length ; i++){
+            //         // console.log(data.pickUpCodeList[i].storeId);
+            //         if(data.pickUpCodeList[i].storeId === storeId){
+            //             vm.pickUpCodeList.push(data.pickUpCodeList[i]);
+            //         }
+            //     }
+            // }
+            // vm.delayResponse = data.delayResponse;
         };
         //连接关闭事件
         webSocket.onclose = function () {

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

@@ -41,15 +41,15 @@ $(function () {
                     return transIsNot(value);
                 }
             },
-            {label: '库存是否共享', name: 'isStockShare', index: 'isStockShare', width: 100, align: 'center',
-                formatter: function (value) {
-                    if (value == '0') {
-                        return '否';
-                    } else if (value == '1') {
-                        return '是';
-                    }
-                    return '-';
-                }},
+            // {label: '库存是否共享', name: 'isStockShare', index: 'isStockShare', width: 100, align: 'center',
+            //     formatter: function (value) {
+            //         if (value == '0') {
+            //             return '否';
+            //         } else if (value == '1') {
+            //             return '是';
+            //         }
+            //         return '-';
+            //     }},
             {label: '门店库存', name: 'stockNum', index: 'stockNum', width: 80, align: 'center'},
             {label: '园区库存', name: 'parkStock', index: 'parkStock', width: 80, align: 'center'},
             // {label: '待恢复数量', name: 'toBeRestored', index: 'toBeRestored', width: 100, align: 'right',formatter:function(value){

BIN
kmall-admin/src/main/webapp/statics/file/mall2RulesDetil_1.0.xlsx