From 77a12468215a8a8a5b3a22544bdcc239efddf287 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 12 Aug 2022 14:26:51 +0800
Subject: [PATCH] 20220810

---
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java    |   15 ++
 src/main/resources/mapper/modules/MallTeamLeaderMapper.xml                         |    5 
 src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java                |    7 +
 src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java                       |    9 +
 src/test/java/cc/mrbird/febs/ProfitTest.java                                       |    2 
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java     |   11 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java    |   62 ++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java |   17 ++
 pom.xml                                                                            |    6 +
 src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java                      |   29 ++++
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java                  |   14 ++
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java         |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java   |    1 
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java             |    2 
 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java               |   51 ++++++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java         |   14 +-
 src/main/resources/templates/febs/views/modules/leader/leaderList.html             |   13 ++
 src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html      |   54 +++++++++
 src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java                 |    3 
 19 files changed, 307 insertions(+), 11 deletions(-)

diff --git a/pom.xml b/pom.xml
index 782a844..8d3c8ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,12 @@
     </properties>
 
     <dependencies>
+        <!--微信小程序三方sdk-->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-miniapp</artifactId>
+            <version>4.1.0</version>
+        </dependency>
         <dependency>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 8532909..936282e 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
 
 @Getter
 public enum DataDictionaryEnum {
+    //微信订阅模板ID,微信订单通知
+    WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
     //配送设置
     HOME_DELIVERY_AMOUNT("DELIVERY_SETTING", "HOME_DELIVERY_AMOUNT"),
     FRIST_COST_LEVEL("HOME_DELIVERY_SETTING", "FRIST_COST_LEVEL"),
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
index a3e1ece..f9c0364 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -5,6 +5,7 @@
 import cc.mrbird.febs.common.entity.DeptTree;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
@@ -15,10 +16,7 @@
 import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.MallMemberMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper;
-import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IAdminMallGoodsService;
 import cc.mrbird.febs.mall.service.IAdminMallOrderService;
 import cc.mrbird.febs.mall.vo.AdminAddAddressTreeVo;
@@ -62,6 +60,7 @@
     private final IXcxPayService iXcxPayService;
     private final MallTeamLeaderMapper mallTeamLeaderMapper;
     private final MallMemberMapper mallMemberMapper;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     /**
      * 订单列表
@@ -324,12 +323,15 @@
             String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
             orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames);
             orderStateDto.setOrderState("已送达自提点");
+            orderStateDto.setTakeCode(mallOrderInfo.getTakeCode());
             String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
             MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
             orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
             orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
-            orderStateDto.setTemplateId(WechatConfigure.WX_ORDER_STATEMSG_TEMPLATE_ID);
-            iXcxPayService.pushOrderToAddress(orderStateDto);
+            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode());
+            orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
+//            iXcxPayService.pushOrderToAddress(orderStateDto);
+            iXcxPayService.uniformMessageSend(orderStateDto);
         }
         return new FebsResponse().success();
     }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
index 1eeebc2..9a42352 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -6,6 +6,8 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
 import cc.mrbird.febs.mall.entity.MallGoodsCategory;
+import cc.mrbird.febs.mall.entity.MallLeaderStock;
+import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallTeamLeader;
 import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
 import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
@@ -64,4 +66,17 @@
         return iAdminMallTeamLeaderService.leaderCancel(id);
     }
 
+    /**
+     * 团长信息-商品库存编辑
+     */
+    @GetMapping("/leaderGoodsUpdate")
+    public FebsResponse leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock, Integer parentId) {
+        if (parentId == null) {
+            ViewMallTeamLeaderController.idLeaderGoodsUpdate = 0;
+        }
+        mallLeaderStock.setTeamLeaderId(ViewMallTeamLeaderController.idLeaderGoodsUpdate);
+        Map<String, Object> dataTable = getDataTable(iAdminMallTeamLeaderService.leaderGoodsUpdate(request, mallLeaderStock));
+        return new FebsResponse().success().data(dataTable);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
index dcc8b26..fef6585 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
@@ -41,4 +41,15 @@
         model.addAttribute("leaderInfo", data);
         return FebsUtil.view("modules/leader/leaderUpdate");
     }
+
+
+    public static long idLeaderGoodsUpdate;
+    /**
+     * 团长信息-商品库存编辑
+     */
+    @GetMapping("leaderGoodsUpdate/{id}")
+    public String leaderGoodsUpdate(@PathVariable long id, Model model) {
+        idLeaderGoodsUpdate = id;
+        return FebsUtil.view("modules/leader/leaderGoodsUpdate");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java
new file mode 100644
index 0000000..9d778c6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 团长商品库存表
+ */
+@Data
+@TableName("mall_leader_stock")
+public class MallLeaderStock extends BaseEntity {
+
+    //团长ID
+    private Long teamLeaderId;
+
+    //商品ID
+    private Long goodsId;
+
+    //商品名称
+    private String goodsName;
+
+    //库存
+    private Integer goodsStock;
+
+    //销售数量
+    private Integer goodsVolume;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java
new file mode 100644
index 0000000..87d44c6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallLeaderStock;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallLeaderStockMapper extends BaseMapper<MallLeaderStock> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
index 30978b4..a3b7955 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.mall.dto.ApiLeaderListDto;
 import cc.mrbird.febs.mall.dto.ApiLeaderOrderListDto;
+import cc.mrbird.febs.mall.entity.MallLeaderStock;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.entity.MallTeamLeader;
 import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
@@ -27,4 +28,6 @@
     MallTeamLeader selectLeaderByUniqueCode(@Param("uniqueCode")String uniqueCode);
 
     MallTeamLeader selectLeaderByLonAndLat(@Param("longitude")Double longitude, @Param("latitude")Double latitude);
+
+    IPage<MallLeaderStock> selectleaderGoodsStockListInPage(Page<MallLeaderStock> page, @Param("record")MallLeaderStock mallLeaderStock);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
index fcf3239..e0bdf54 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
+import cc.mrbird.febs.mall.entity.MallLeaderStock;
 import cc.mrbird.febs.mall.entity.MallTeamLeader;
 import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
 import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
@@ -22,4 +23,6 @@
     List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader);
 
     FebsResponse leaderCancel(Long id);
+
+    IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
index 31e930d..a6d007d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -5,7 +5,11 @@
 import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion;
 import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
 import cc.mrbird.febs.mall.entity.MallGoodsCategory;
+import cc.mrbird.febs.mall.entity.MallLeaderStock;
 import cc.mrbird.febs.mall.entity.MallTeamLeader;
+import cc.mrbird.febs.mall.mapper.MallGoodsMapper;
+import cc.mrbird.febs.mall.mapper.MallLeaderStockMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper;
 import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
 import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
@@ -13,6 +17,7 @@
 import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -29,6 +34,10 @@
 @RequiredArgsConstructor
 @Transactional
 public class AdminMallTeamLeaderServiceImpl extends ServiceImpl<MallTeamLeaderMapper, MallTeamLeader> implements IAdminMallTeamLeaderService {
+
+    private final MallLeaderStockMapper mallLeaderStockMapper;
+    private final MallGoodsMapper mallGoodsMapper;
+
     @Override
     public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) {
         Page<AdminMallTeamLeaderVo> page = new Page<>(request.getPageNum(), request.getPageSize());
@@ -93,4 +102,12 @@
         return new FebsResponse().success().message("已取消");
     }
 
+    @Override
+    public IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock) {
+
+        Integer goodsNumber = mallGoodsMapper.selectCount(new QueryWrapper<>());
+        Page<MallLeaderStock> page = new Page<>(request.getPageNum(), goodsNumber);
+        IPage<MallLeaderStock> mallTeamLeaders = this.baseMapper.selectleaderGoodsStockListInPage(page, mallLeaderStock);
+        return mallTeamLeaders;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 8a4e680..62bf853 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -16,6 +16,7 @@
 import cc.mrbird.febs.mall.vo.OrderListVo;
 import cc.mrbird.febs.mall.vo.OrderRefundVo;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
+import cc.mrbird.febs.pay.model.OrderStateDto;
 import cc.mrbird.febs.pay.service.IPayService;
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.WeixinServiceUtil;
@@ -33,6 +34,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -69,6 +71,9 @@
     private final IXcxPayService iXcxPayService;
     private final IMallAchieveService mallAchieveService;
     private final MallRefundMapper mallRefundMapper;
+    private final MallTeamLeaderMapper mallTeamLeaderMapper;
+    private final MallMemberMapper mallMemberMapper;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -184,7 +189,7 @@
         orderInfo.setPhone(address.getPhone());
         orderInfo.setIsHome(addOrderDto.getIsHome());
         //订单金额大于50,且选择送货上门,订单需要选择地址信息
-        if(total.compareTo(new BigDecimal(50)) > 0 && 1 == addOrderDto.getIsHome()){
+        if(1 == addOrderDto.getIsHome()){
             if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) {
                 throw new FebsException("请添加地址");
             }
@@ -215,6 +220,44 @@
         orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
         orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
         this.baseMapper.updateById(orderInfo);
+    }
+
+    /**
+     * 根据用户ID和订单ID获取所购买商品名称
+     * @return 所含商品名称(多个以","隔开)
+     */
+    public String getProductNames(Long memberId, Long orderId) {
+        MallOrderInfo mallOrderInfo = this.baseMapper.selectOrderByMemberIdAndId(memberId, orderId);
+        List<MallOrderItem> details = mallOrderInfo.getItems();
+        if (CollectionUtils.isEmpty(details)) {
+            return "";
+        }
+        StringBuffer productNameBuffer = new StringBuffer();
+        Integer maxLength = 30;
+        for (int i = 0; i< details.size(); i++) {
+            MallOrderItem mallOrderItem = details.get(i);
+            String goodsName = mallOrderItem.getGoodsName();
+            if (goodsName == null) {
+                continue;
+            }
+            if (i == 0 && goodsName.length() > maxLength) {
+                productNameBuffer.append(goodsName.substring(0, maxLength) + "...");
+                break;
+            }
+            if ((productNameBuffer.length() + goodsName.length()) > maxLength) {
+                productNameBuffer.append("等");
+                break;
+            }
+            productNameBuffer.append(goodsName + ",");
+        }
+        String productNames = productNameBuffer.toString();
+        if (productNames.endsWith(",")) {
+            productNames = productNames.substring(0, productNames.length() - 1);
+        }
+        if (productNames.endsWith(",等")) {
+            productNames = productNames.substring(0, productNames.length() - 2) + "等";
+        }
+        return productNames;
     }
 
     @Override
@@ -327,6 +370,23 @@
         orderInfo.setTakeCode(takeCode);
 
         this.baseMapper.updateById(orderInfo);
+
+
+
+        OrderStateDto orderStateDto = new OrderStateDto();
+        orderStateDto.setOrderNo(orderInfo.getOrderNo());
+        String productNames = getProductNames(orderInfo.getMemberId(), orderInfo.getId());
+        orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames);
+        orderStateDto.setOrderState("已送达自提点");
+        orderStateDto.setTakeCode(orderInfo.getTakeCode());
+        String takeUniqueCode = orderInfo.getTakeUniqueCode();
+        MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
+        orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
+        orderStateDto.setOpenId(mallMemberMapper.selectById(orderInfo.getMemberId()).getOpenId());
+        DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode());
+        orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
+//            iXcxPayService.pushOrderToAddress(orderStateDto);
+        iXcxPayService.uniformMessageSend(orderStateDto);
         Map<String, Object> map = new HashMap<>();
         map.put("orderInfo", payResultStr);
         map.put("orderNo", orderInfo.getOrderNo());
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
index 19a12ee..99ecdfa 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -155,6 +155,7 @@
             String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
             orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames);
             orderStateDto.setOrderState("已送达自提点");
+            orderStateDto.setTakeCode(mallOrderInfo.getTakeCode());
             String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
             MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
             orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index 5a770c1..70cc703 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -12,15 +12,19 @@
 import cc.mrbird.febs.pay.model.OrderStateDto;
 import cc.mrbird.febs.pay.model.OrderStateMsgVo;
 import cc.mrbird.febs.pay.model.WxTemplateData;
+import cc.mrbird.febs.pay.service.IPayService;
+import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.PayThreadPool;
 import cc.mrbird.febs.pay.util.Signature;
 import cc.mrbird.febs.pay.util.Util;
 import cc.mrbird.febs.pay.util.WechatConfigure;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
@@ -45,6 +49,9 @@
     MallOrderInfoMapper mallOrderInfoMapper;
     @Autowired
     RedisUtils redisUtils;
+
+    @Autowired
+    private IXcxPayService iXcxPayService;
 
     private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
     /**
@@ -75,7 +82,6 @@
             NotifyData data = new NotifyData();
             BeanUtils.copyProperties(bb,data);
             log.info("----return_code = {}", data.getReturn_code());
-
 
             // 返回状态码 SUCCESS/FAIL
             if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) {
@@ -150,4 +156,10 @@
         out.close();
     }
 
+    @ApiOperation(value = "获取微信订阅TemplateId")
+    @GetMapping(value = "/getTemplateId")
+    public FebsResponse getTemplateId() {
+        return new FebsResponse().success().data(iXcxPayService.getTemplateId());
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
index b4ed8cd..43aa0be 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java
@@ -4,6 +4,8 @@
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
 import cc.mrbird.febs.pay.model.OrderStateDto;
 
+import java.util.List;
+
 public interface IXcxPayService {
 
     /**
@@ -15,4 +17,11 @@
      * 发送订单送达消息
      */
     void pushOrderToAddress(OrderStateDto info);
+
+    /**
+     * 发送订单送达消息
+     */
+    void uniformMessageSend(OrderStateDto info);
+
+    List<String> getTemplateId();
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
index c91cfab..67a8a57 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
@@ -1,11 +1,14 @@
 package cc.mrbird.febs.pay.service.impl;
 
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.properties.XcxProperties;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
@@ -15,7 +18,12 @@
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cc.mrbird.febs.pay.util.WechatConfigure;
 import cc.mrbird.febs.pay.util.WeixinServiceUtil;
+import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import cn.hutool.log.Log;
+import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +32,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -39,6 +49,8 @@
     MallMemberMapper mallMemberMapper;
     @Autowired
     WeixinServiceUtil weixinServiceUtil;
+    @Autowired
+    DataDictionaryCustomMapper dataDictionaryCustomMapper;
     @Autowired
     RedisUtils redisUtils;
     @Autowired
@@ -74,8 +86,6 @@
         OrderStateMsgVo orderStateMsgVo = new OrderStateMsgVo();
         orderStateMsgVo.setToUser(info.getOpenId());//用户的openId
         orderStateMsgVo.setTemplateId(info.getTemplateId());//订阅消息模板id
-//        wxMssVo.setPage("pages/appointment/line_up?"+"shopId="+info.getShopId());
-
         Map<String, WxTemplateData> m = new HashMap<>(5);
         m.put("character_string1", new WxTemplateData(info.getOrderNo()));
         m.put("thing9", new WxTemplateData(info.getGoodsName()));
@@ -83,10 +93,47 @@
         m.put("thing13", new WxTemplateData(info.getAddressArea()));
         m.put("thing16", new WxTemplateData(info.getTakeCode()));
         orderStateMsgVo.setData(m);
+        String s = JSONUtil.toJsonStr(orderStateMsgVo);
+        log.info(s);
         ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, orderStateMsgVo, String.class);
         log.info(responseEntity.getBody());
     }
 
+    private static final String WXAPPLETURl="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";
+
+    @Override
+    public void uniformMessageSend(OrderStateDto info) {
+        RestTemplate restTemplate = new RestTemplate();
+        String url =  WXAPPLETURl + redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY);
+        //拼接推送的模版
+        OrderStateMsgVo orderStateMsgVo = new OrderStateMsgVo();
+        orderStateMsgVo.setToUser(info.getOpenId());//用户的openId
+        orderStateMsgVo.setTemplateId(info.getTemplateId());//订阅消息模板id
+        Map<String, WxTemplateData> m = new HashMap<>(5);
+        m.put("character_string1", new WxTemplateData(info.getOrderNo()));
+        m.put("thing9", new WxTemplateData(info.getGoodsName()));
+        m.put("phrase2", new WxTemplateData(info.getOrderState()));
+        m.put("thing13", new WxTemplateData(info.getAddressArea()));
+        m.put("thing16", new WxTemplateData(info.getTakeCode()));
+        orderStateMsgVo.setData(m);
+        String s = JSONUtil.toJsonStr(orderStateMsgVo);
+        log.info(s);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, orderStateMsgVo, String.class);
+        log.info(responseEntity.getBody());
+    }
+
+    @Override
+    public List<String> getTemplateId() {
+        List<String> wxTemplates = new ArrayList<>();
+        List<DataDictionaryCustom> wxTemplateList = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType());
+        if(CollUtil.isNotEmpty(wxTemplateList)){
+            for(DataDictionaryCustom dic : wxTemplateList){
+                wxTemplates.add(dic.getValue());
+            }
+        }
+        return wxTemplates;
+    }
+
     /**
      * 根据用户ID和订单ID获取所购买商品名称
      * @return 所含商品名称(多个以","隔开)
diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
index 963961c..57a9ccc 100644
--- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
+++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml
@@ -167,4 +167,9 @@
         order by distance ASC limit 1
     </select>
 
+    <select id="selectleaderGoodsStockListInPage" resultType="cc.mrbird.febs.mall.entity.MallLeaderStock">
+        select a.* from mall_leader_stock a
+        where a.team_leader_id = #{record.teamLeaderId}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html b/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html
new file mode 100644
index 0000000..352a4f9
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html
@@ -0,0 +1,54 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-leaderGoods-update" lay-title="用户资金流水">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <table lay-filter="leaderGoodsChild" lay-data="{id: 'leaderGoodsChild'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect' ,'eleTree'], function () {
+        var $ = layui.jquery,
+            laydate = layui.laydate,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            treeSelect = layui.treeSelect,
+            dropdown = layui.dropdown,
+            $view = $('#febs-leaderGoods-update'),
+            $query = $view.find('#queryChild'),
+            $searchForm = $view.find('formChild'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns,
+            createTimeFrom,
+            createTimeTo;
+
+        form.render();
+
+        initTable();
+
+        laydate.render({
+            elem: '#user-createTime',
+            range: true,
+            trigger: 'click'
+        });
+
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'leaderGoodsChild',
+                url: ctx + 'admin/leader/leaderGoodsUpdate?parentId=1',
+                cols: [[
+                    {field: 'goodsName', title: '商品名称', minWidth: 80,align:'center'},
+                    {field: 'goodsStock', title: '库存', minWidth: 150,align:'center'},
+                    {field: 'goodsVolume', title: '销售数量', minWidth: 150,align:'center'},
+                ]]
+            });
+        }
+
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderList.html b/src/main/resources/templates/febs/views/modules/leader/leaderList.html
index 841d023..715d263 100644
--- a/src/main/resources/templates/febs/views/modules/leader/leaderList.html
+++ b/src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -86,6 +86,18 @@
         table.on('tool(leaderTable)', function (obj) {
             var data = obj.data,
                 layEvent = obj.event;
+            if (layEvent === 'leaderGoodsUpdate') {
+                febs.modal.open('编辑', 'modules/leader/leaderGoodsUpdate/' + data.id, {
+                    btn: ['提交', '取消'],
+                    area:['100%','100%'],
+                    yes: function (index, layero) {
+                        $('#febs-leaderGoods-update').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
             if (layEvent === 'leaderUpdate') {
                 febs.modal.open('编辑', 'modules/leader/leaderUpdate/' + data.id, {
                     btn: ['提交', '取消'],
@@ -175,6 +187,7 @@
                             }else if(d.state === 1) {
                                 return ''
                                     + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">取消</button>'
+                                    // + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderGoodsUpdate" shiro:hasPermission="user:update">团长商品设置</button>'
                             }else{
                                 return '';
                             }
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 9ae857f..627a310 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -127,7 +127,7 @@
     @Test
     public void confirm(){
         ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto = new ApiLeaderOrderConfirmDto();
-        apiLeaderOrderConfirmDto.setIds("85");
+        apiLeaderOrderConfirmDto.setIds("90");
         iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto);
     }
 }

--
Gitblit v1.9.1