From c7cb86db957dc7fbf6ca30270a71a43f5b31eccf Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期三, 13 四月 2022 09:29:03 +0800
Subject: [PATCH] 电动车商城-拼团活动接口开发

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityOrderController.java                      |   10 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityActivityMapper.xml                                                |   22 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/WxPayNotifyOrderDTO.java                                               |    3 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrderCollageTeam.java                  |   13 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderCollageTeamService.java          |    7 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamVo.java                            |   17 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseOrderServiceImpl.java                  |    4 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityActivityDto.java                               |    6 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java                        |    4 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamPeopleVo.java                      |    5 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityActivityController.java                   |   12 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityActivityVo.java                                    |    6 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/PayCpmstant.java                                                             |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java            |  287 ++++++++++++---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComBatteryCommodityOrderCollageTeamPeopleMapper.java         |    7 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamMapper.xml                                        |  105 +++--
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/ComBatteryCommodityOrderFeign.java                                   |    8 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java                                                                  |    6 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderService.java                     |    7 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityOrderCollageTeamDto.java                       |    2 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityOrderCollageTeamDto.java                      |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrder.java                             |   32 +
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComBatteryCommodityActivityApi.java                                              |  102 +++++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/StartFightOrderDto.java                                              |   49 ++
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityActivityDto.java                              |    5 
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/PageComBatteryCommodityOrderCollageTeamDto.java                      |    2 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamPeopleMapper.xml                                  |   24 +
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java                                                               |   41 ++
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityActivity.java                          |   17 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderCollageTeamServiceImpl.java |  226 ++++++++++++
 30 files changed, 917 insertions(+), 118 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComBatteryCommodityActivityApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComBatteryCommodityActivityApi.java
new file mode 100644
index 0000000..48d3652
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ComBatteryCommodityActivityApi.java
@@ -0,0 +1,102 @@
+package com.panzhihua.applets.api;
+
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.common.AddComBatteryCommodityActivityDto;
+import com.panzhihua.common.model.dtos.common.EditComBatteryCommodityActivityDto;
+import com.panzhihua.common.model.dtos.common.PageComBatteryCommodityActivityDto;
+import com.panzhihua.common.model.dtos.common.PageComBatteryCommodityOrderCollageTeamDto;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.common.ComBatteryCommodityActivityVo;
+import com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamVo;
+import com.panzhihua.common.service.community.ComBatteryCommodityActivityFeign;
+import com.panzhihua.common.service.community.ComBatteryCommodityOrderCollageTeamFeign;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * title: 电动车商城-商家活动表(ComBatteryCommodityActivity)  表控制层
+ * <p>
+ * projectName 成都呐喊信息技术有限公司-智慧社区项目
+ * <p>
+ * description: 电动车商城-商家活动表
+ *
+ * @author lyq
+ * @date 2022-03-29 13:17:38
+ */
+@Slf4j
+@Api(tags = {"电动车商城-活动管理"})
+@RestController
+@RequestMapping("/comBatteryCommodityActivity")
+public class ComBatteryCommodityActivityApi extends BaseController {
+
+    @Resource
+    private ComBatteryCommodityActivityFeign comBatteryCommodityActivityService;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamFeign orderCollageTeamService;
+
+    /**
+     * description  queryByPage  分页查询
+     *
+     * @param comBatteryCommodityActivity 请求参数
+     * @return 分页查询返回参数
+     * @author lyq
+     * @date 2022-03-29 13:17:38
+     */
+    @ApiOperation(value = "分页查询活动列表",response = ComBatteryCommodityActivityVo.class)
+    @PostMapping("/page")
+    public R queryByPage(@RequestBody PageComBatteryCommodityActivityDto comBatteryCommodityActivity) {
+        comBatteryCommodityActivity.setStatus(1);
+        return this.comBatteryCommodityActivityService.queryByPage(comBatteryCommodityActivity);
+    }
+
+    /**
+     * description  detailById  查询详情
+     *
+     * @param id 主键id
+     * @return 详情数据
+     * @author lyq
+     * @date 2022-03-29 13:17:38
+     */
+    @ApiOperation(value = "查询活动详情",response = ComBatteryCommodityActivityVo.class)
+    @GetMapping("/detail")
+    public R detailById(@RequestParam("id") Long id) {
+        return this.comBatteryCommodityActivityService.detailById(id);
+    }
+
+    /**
+     * description  queryByPage  查询列表
+     *
+     * @param comBatteryCommodityActivity 请求参数
+     * @return 列表数据
+     * @author lyq
+     * @date 2022-03-29 13:17:38
+     */
+    @ApiOperation(value = "查询活动列表",response = ComBatteryCommodityActivityVo.class)
+    @PostMapping("/list")
+    public R queryByList(@RequestBody PageComBatteryCommodityActivityDto comBatteryCommodityActivity) {
+        comBatteryCommodityActivity.setStatus(1);
+        return this.comBatteryCommodityActivityService.queryByList(comBatteryCommodityActivity);
+    }
+
+    @ApiOperation(value = "查询拼团团队列表",response = ComBatteryCommodityOrderCollageTeamVo.class)
+    @PostMapping("/assorted/dough")
+    public R queryByAssortedDoughList(@RequestBody PageComBatteryCommodityOrderCollageTeamDto orderCollageTeamDto) {
+        orderCollageTeamDto.setStatus(1);
+        return this.orderCollageTeamService.queryByPage(orderCollageTeamDto);
+    }
+
+    @ApiOperation(value = "查询拼团团队详情",response = ComBatteryCommodityOrderCollageTeamVo.class)
+    @PostMapping("/assorted/dough/detail")
+    public R queryByAssortedDoughDetail(@RequestParam("id") Long id) {
+        return this.orderCollageTeamService.detailById(id);
+    }
+
+
+
+}
+
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
index 24af561..b819486 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/WxCallbackApi.java
@@ -151,6 +151,44 @@
         }
     }
 
+    @PostMapping("/batteryActivityPayNotify")
+    public void batteryActivityPayNotify(HttpServletRequest request, HttpServletResponse response) {
+        log.info("购买活动商品微信支付回调start");
+        String inputLine = "";
+        String notityXml = "";
+        try {
+            while ((inputLine = request.getReader().readLine()) != null) {
+                notityXml += inputLine;
+            }
+            // 关闭流
+            request.getReader().close();
+            log.info("购买活动商品微信回调内容信息:" + notityXml);
+            // 解析成Json
+            org.json.JSONObject xmlJson = XML.toJSONObject(notityXml);
+            if (StringUtils.isNotEmpty(xmlJson.toString())) {
+                JSONObject resultData = JSON.parseObject(xmlJson.get("xml").toString());
+                // 成功支付订单
+                if (SUCCESS.equals(resultData.getString("result_code")) && SUCCESS.equals(resultData.getString("result_code"))){
+                    WxPayNotifyOrderDTO notifyOrderDTO = getWxNotify(resultData);
+
+                    // 根据订单号修改订单信息
+                    commodityOrderFeign.batteryActivityPayNotify(notifyOrderDTO);
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxSuccessString());
+                } else {// 未成功支付订单
+                    // 给微信服务器返回 成功标示 否则会一直询问 咱们服务器 是否回调成功
+                    PrintWriter writer = response.getWriter();
+                    // 返回
+                    writer.print(getWxFailString());
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 将微信支付回调的请求参数转义为对象
      * @param resultData    微信支付回调请求参数
@@ -174,6 +212,9 @@
         // 现金支付金额
         String cashFee = resultData.getString("cash_fee");
         notifyOrderDTO.setCashFee(cashFee);
+        //附加数据
+        String attach = resultData.getString("attach");
+        notifyOrderDTO.setAttach(attach);
         return notifyOrderDTO;
     }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/PayCpmstant.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/PayCpmstant.java
index e9e5a06..029a090 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/PayCpmstant.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/PayCpmstant.java
@@ -32,4 +32,8 @@
      * 电动车商城购买商品支付回调地址
      */
     public static final String BATTERY_STORE_PAY_NOTIFY_URL = "/api/applets/wx/batteryPayNotify";
+    /**
+     * 电动车商城活动订单支付回调地址
+     */
+    public static final String BATTERY_STORE_ACTIVITY_PAY_NOTIFY_URL = "/api/applets/wx/batteryActivityPayNotify";
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityActivityDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityActivityDto.java
index c8234f4..4e33da1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityActivityDto.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityActivityDto.java
@@ -132,6 +132,10 @@
     @ApiModelProperty(value = "更新人id")
     private Long updateBy;
 
-
+    /**
+     * 商品规格id
+     */
+    @ApiModelProperty(value = "商品规格id")
+    private Long specsId;
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityOrderCollageTeamDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityOrderCollageTeamDto.java
index 7dac10e..f03873e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityOrderCollageTeamDto.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/AddComBatteryCommodityOrderCollageTeamDto.java
@@ -27,7 +27,7 @@
      * 活动id
      */
     @ApiModelProperty(value = "活动id")
-    private Long acctivityId;
+    private Long activityId;
 
     /**
      * 订单id
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityActivityDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityActivityDto.java
index bd63b9a..53faa81 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityActivityDto.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityActivityDto.java
@@ -120,5 +120,10 @@
     @ApiModelProperty(value = "更新人id")
     private Long updateBy;
 
+    /**
+     * 商品规格id
+     */
+    @ApiModelProperty(value = "商品规格id")
+    private Long specsId;
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityOrderCollageTeamDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityOrderCollageTeamDto.java
index 2e36cad..6a807ca 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityOrderCollageTeamDto.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/EditComBatteryCommodityOrderCollageTeamDto.java
@@ -31,7 +31,7 @@
      * 活动id
      */
     @ApiModelProperty(value = "活动id")
-    private Long acctivityId;
+    private Long activityId;
     /**
      * 订单id
      */
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/PageComBatteryCommodityOrderCollageTeamDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/PageComBatteryCommodityOrderCollageTeamDto.java
index dac3bae..0d5a8c0 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/PageComBatteryCommodityOrderCollageTeamDto.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/PageComBatteryCommodityOrderCollageTeamDto.java
@@ -31,7 +31,7 @@
      * 活动id
      */
     @ApiModelProperty(value = "活动id")
-    private Long acctivityId;
+    private Long activityId;
     /**
      * 订单id
      */
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/StartFightOrderDto.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/StartFightOrderDto.java
new file mode 100644
index 0000000..fef5a64
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/common/StartFightOrderDto.java
@@ -0,0 +1,49 @@
+package com.panzhihua.common.model.dtos.common;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lyq
+ * 发起拼团订单请求参数
+ */
+@Data
+@ApiModel("发起拼团订单请求参数")
+public class StartFightOrderDto {
+
+    @ApiModelProperty(value = "用户id",hidden = true)
+    private Long userId;
+
+    @ApiModelProperty(value = "用户openId",hidden = true)
+    private String openId;
+
+    @ApiModelProperty(value = "商品id")
+    private Long commodityId;
+
+    @ApiModelProperty(value = "活动id")
+    private Long activityId;
+
+    @ApiModelProperty(value = "用户收货地址id")
+    private Long addressId;
+
+    @ApiModelProperty(value = "购买商品数量")
+    private Integer count;
+
+    @ApiModelProperty(value = "订单备注")
+    private String remark;
+
+    @ApiModelProperty(value = "拼团类型(1.开团 2.参团)")
+    private Integer type;
+
+    @ApiModelProperty(value = "拼团团队id")
+    private Long teamId;
+
+    /**
+     * 拼团类型(1.开团 2.参团)
+     */
+    public interface Type{
+        int KT = 1;
+        int PT = 2;
+    }
+}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/WxPayNotifyOrderDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/WxPayNotifyOrderDTO.java
index 7d5437d..7ebfd50 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/WxPayNotifyOrderDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/shop/WxPayNotifyOrderDTO.java
@@ -25,4 +25,7 @@
 
     @ApiModelProperty(value = "支付返回参数信息")
     private String result;
+
+    @ApiModelProperty(value = "支付附加数据")
+    private String attach;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityActivityVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityActivityVo.java
index a4b5c03..4a255ef 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityActivityVo.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityActivityVo.java
@@ -131,4 +131,10 @@
 
     @ApiModelProperty(value = "商户名称")
     private String storeName;
+
+    @ApiModelProperty(value = "商户规格id")
+    private Long specsId;
+
+    @ApiModelProperty(value = "商户规格名称")
+    private Long specsName;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamPeopleVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamPeopleVo.java
index c4df5c3..94be7e3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamPeopleVo.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamPeopleVo.java
@@ -60,4 +60,9 @@
     @ApiModelProperty(value = "创建人id")
     private Long createBy;
 
+    @ApiModelProperty(value = "用户头像")
+    private String images;
+
+    @ApiModelProperty(value = "用户昵称")
+    private String nickName;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamVo.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamVo.java
index 3925f68..8da3286 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamVo.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/common/ComBatteryCommodityOrderCollageTeamVo.java
@@ -1,6 +1,7 @@
 package com.panzhihua.common.model.vos.common;
 
 import java.util.Date;
+import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -31,7 +32,7 @@
      * 活动id
      */
     @ApiModelProperty(value = "活动id")
-    private Long acctivityId;
+    private Long activityId;
     /**
      * 订单id
      */
@@ -60,4 +61,18 @@
     @ApiModelProperty(value = "创建时间")
     private Date createAt;
 
+    @ApiModelProperty(value = "已拼人数")
+    private Integer spelledNum;
+
+    @ApiModelProperty(value = "成团人数")
+    private Integer collagePeopleNum;
+
+    @ApiModelProperty(value = "团长头像")
+    private String images;
+
+    @ApiModelProperty(value = "团长昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "拼团人员列表")
+    private List<ComBatteryCommodityOrderCollageTeamPeopleVo> orderCollageTeamPeopleList;
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/ComBatteryCommodityOrderFeign.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/ComBatteryCommodityOrderFeign.java
index 1460a43..5eccd59 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/ComBatteryCommodityOrderFeign.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/ComBatteryCommodityOrderFeign.java
@@ -141,4 +141,12 @@
      */
     @PostMapping("/deliver")
     R orderDeliver(@RequestBody OrderDeliverAdminDto deliverAdminDto);
+
+    /**
+     * 电动车商城购买活动商品支付回调
+     * @param notifyOrderDTO    请求参数
+     * @return  购买商品支付回调
+     */
+    @PostMapping("/batteryActivityPayNotify")
+    R batteryActivityPayNotify(@RequestBody WxPayNotifyOrderDTO notifyOrderDTO);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
index e45714e..c47e924 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
@@ -17,7 +17,7 @@
 public class WxPayUtils {
 
     public static String getUnifiedorder(String appid, String mchId, String payKey, String notifyUrl, String body,
-        String openid, String outTradeNo, BigDecimal money) {
+        String openid, String outTradeNo, BigDecimal money,String attach) {
         String nonceStr = PayUtil.makeUUID(32);
         SortedMap<Object, Object> params = new TreeMap<>();
         params.put("appid", appid);
@@ -26,6 +26,10 @@
         params.put("nonce_str", nonceStr);
         params.put("notify_url", notifyUrl);
         params.put("openid", openid);
+        //附加数据
+        if(StringUtils.isNotEmpty(attach)){
+            params.put("attach", attach);
+        }
         params.put("out_trade_no", outTradeNo);// 商品订单号
         params.put("spbill_create_ip", PayUtil.getLocalIp());// 服务部署的ip
         params.put("total_fee", PayUtil.moneyToIntegerStr(money));// 费用的参数转型
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityActivityController.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityActivityController.java
index b435dae..04edfcc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityActivityController.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityActivityController.java
@@ -3,6 +3,7 @@
 import com.panzhihua.service_community.service.ComBatteryCommodityActivityService;
 import com.panzhihua.common.model.dtos.common.*;
 import com.panzhihua.common.model.vos.R;
+import com.panzhihua.service_community.service.ComBatteryCommodityOrderCollageTeamService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -23,6 +24,8 @@
 
     @Resource
     private ComBatteryCommodityActivityService comBatteryCommodityActivityService;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamService orderCollageTeamService;
 
     /**
      * description  queryByPage  分页查询
@@ -113,5 +116,14 @@
         return this.comBatteryCommodityActivityService.updateStatus(id,status);
     }
 
+    /**
+     * 创建拼团订单
+     * @param orderDto  请求参数
+     * @return  创建订单结果
+     */
+    @PostMapping("/start/fight")
+    public R startFight(@RequestBody StartFightOrderDto orderDto){
+        return this.orderCollageTeamService.startFight(orderDto);
+    }
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityOrderController.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityOrderController.java
index b2ac7d1..733572b 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityOrderController.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComBatteryCommodityOrderController.java
@@ -173,5 +173,15 @@
         return this.comBatteryCommodityOrderService.orderDeliver(deliverAdminDto);
     }
 
+    /**
+     * 电动车商城购买活动商品支付回调
+     * @param notifyOrderDTO    请求参数
+     * @return  购买商品支付回调
+     */
+    @PostMapping("/batteryActivityPayNotify")
+    public R batteryActivityPayNotify(@RequestBody WxPayNotifyOrderDTO notifyOrderDTO){
+        return this.comBatteryCommodityOrderService.batteryActivityPayNotify(notifyOrderDTO);
+    }
+
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComBatteryCommodityOrderCollageTeamPeopleMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComBatteryCommodityOrderCollageTeamPeopleMapper.java
index 27877c5..5cf49ea 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComBatteryCommodityOrderCollageTeamPeopleMapper.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComBatteryCommodityOrderCollageTeamPeopleMapper.java
@@ -54,5 +54,12 @@
      * @date 2022-03-29 16:07:08
      */
     List<ComBatteryCommodityOrderCollageTeamPeopleVo> queryAllByList(@Param("dto") PageComBatteryCommodityOrderCollageTeamPeopleDto comBatteryCommodityOrderCollageTeamPeople);
+
+    /**
+     * 根据拼团团队id查询团队人员信息
+     * @param teamId    团队id
+     * @return  团队人员信息
+     */
+    List<ComBatteryCommodityOrderCollageTeamPeopleVo> queryAllByTeamId(@Param("teamId") Long teamId);
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityActivity.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityActivity.java
index 24a47c2..2919b33 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityActivity.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityActivity.java
@@ -87,7 +87,14 @@
      * 更新人id
      */
     private Long updateBy;
-
+    /**
+     * 活动商品已卖出数量
+     */
+    private Integer commoditySaleNum;
+    /**
+     * 商品规格id
+     */
+    private Long specsId;
     /**
      * 是否删除枚举(1.是 2.否)
      */
@@ -95,5 +102,13 @@
         int YES = 1;
         int NO = 2;
     }
+    /**
+     * 状态(1.进行中 2.已下架 3.已结束)
+     */
+    public interface Status{
+        int JXZ = 1;
+        int YXJ = 2;
+        int YJS = 3;
+    }
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrder.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrder.java
index 3e4fcba..37fcc38 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrder.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrder.java
@@ -173,6 +173,11 @@
      * 收货地区编码
      */
     private String receivingRegionCode;
+
+    /**
+     * 拼团id
+     */
+    private Long teamId;
     /**
      * 是否删除枚举(1.是 2.否)
      */
@@ -208,5 +213,32 @@
     public interface PayType{
         int WX = 1;
     }
+
+    /**
+     * 活动状态(1.拼团活动 2.砍价活动 3.限时秒杀)
+     */
+    public interface ActivityType{
+        int PT = 1;
+        int KJ = 2;
+        int MS = 3;
+    }
+
+    /**
+     * 拼团状态(1.拼团中 2.拼团成功 3.拼团失败)
+     */
+    public interface CollageStatus{
+        int PTZ = 1;
+        int PTCG = 2;
+        int PTSB = 3;
+    }
+
+    /**
+     * 砍价状态(1.砍价中 2.砍价成功 3.砍价失败)
+     */
+    public interface BargainStatus{
+        int KJZ = 1;
+        int KJCG = 2;
+        int KJSB = 3;
+    }
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrderCollageTeam.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrderCollageTeam.java
index 4f2d228..82f36d4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrderCollageTeam.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComBatteryCommodityOrderCollageTeam.java
@@ -21,7 +21,7 @@
     /**
      * 活动id
      */
-    private Long acctivityId;
+    private Long activityId;
     /**
      * 订单id
      */
@@ -42,7 +42,14 @@
      * 创建时间
      */
     private Date createAt;
-
-
+    /**
+     * 状态(1.等待拼团 2.拼团成功 3.拼团失败 4.已退款)
+     */
+    public interface Status{
+        int DDPT = 1;
+        int PTCG = 2;
+        int PTSB = 3;
+        int YTK = 4;
+    }
 }
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderCollageTeamService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderCollageTeamService.java
index bc55693..0d5181c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderCollageTeamService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderCollageTeamService.java
@@ -75,4 +75,11 @@
      */
     R queryByList(PageComBatteryCommodityOrderCollageTeamDto comBatteryCommodityOrderCollageTeam);
 
+    /**
+     * 创建拼团订单
+     * @param orderDto  请求参数
+     * @return  创建订单结果
+     */
+    R startFight(StartFightOrderDto orderDto);
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderService.java
index dc9bcc9..b4a057b 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComBatteryCommodityOrderService.java
@@ -124,4 +124,11 @@
      * @return  发货结果
      */
     R orderDeliver(OrderDeliverAdminDto deliverAdminDto);
+
+    /**
+     * 电动车商城购买活动商品支付回调
+     * @param notifyOrderDTO    请求参数
+     * @return  购买商品支付回调
+     */
+    R batteryActivityPayNotify(WxPayNotifyOrderDTO notifyOrderDTO);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderCollageTeamServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderCollageTeamServiceImpl.java
index 726fa4c..4fa3e88 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderCollageTeamServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderCollageTeamServiceImpl.java
@@ -1,14 +1,30 @@
 package com.panzhihua.service_community.service.impl;
 
-import com.panzhihua.service_community.entity.ComBatteryCommodityOrderCollageTeam;
-import com.panzhihua.service_community.dao.ComBatteryCommodityOrderCollageTeamMapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.panzhihua.common.constants.PayCpmstant;
+import com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamPeopleVo;
+import com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamVo;
+import com.panzhihua.common.utlis.Snowflake;
+import com.panzhihua.common.utlis.WxPayUtils;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.entity.*;
 import com.panzhihua.service_community.service.ComBatteryCommodityOrderCollageTeamService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.panzhihua.service_community.service.ComBatteryTradeOrderService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import com.panzhihua.common.model.dtos.common.*;
 import com.panzhihua.common.model.vos.R;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * title: 电动车商城-拼团订单团队表表服务实现类
@@ -20,8 +36,40 @@
  * @author lyq
  * @date 2022-03-29 16:06:58
  */
+@Slf4j
 @Service("comBatteryCommodityOrderCollageTeamService")
 public class ComBatteryCommodityOrderCollageTeamServiceImpl extends ServiceImpl<ComBatteryCommodityOrderCollageTeamMapper, ComBatteryCommodityOrderCollageTeam> implements ComBatteryCommodityOrderCollageTeamService {
+
+    @Resource
+    private ComBatteryCommodityActivityMapper commodityActivityMapper;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamMapper orderCollageTeamMapper;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamPeopleMapper orderCollageTeamPeopleMapper;
+    @Resource
+    private ComBatteryUserAddressMapper userAddressMapper;
+    @Resource
+    private SysUserMapper userMapper;
+    @Resource
+    private ComBatteryTradeOrderService tradeOrderService;
+    @Value("${min.app.isTest}")
+    private Boolean isTest;
+    @Value("${min.app.isRefundTest}")
+    private Boolean isRefundTest;
+    @Value("${min.app.appid}")
+    private String appid;
+    @Value("${min.app.payKey}")
+    private String payKey;
+    @Value("${min.app.mchId}")
+    private String mchId;
+    @Value("${min.app.currencyNotifyUrl}")
+    private String currencyNotifyUrl;
+    @Resource
+    private ComBatteryCommodityMapper commodityMapper;
+    @Resource
+    private ComBatteryCommoditySpecsMapper commoditySpecsMapper;
+    @Resource
+    private ComBatteryCommodityOrderMapper commodityOrderMapper;
 
     /**
      * description  queryByPage  分页查询
@@ -101,7 +149,12 @@
      */
     @Override
     public R detailById(Long id) {
-        return R.ok(this.baseMapper.queryById(id));
+        ComBatteryCommodityOrderCollageTeamVo orderCollageTeamVo = this.baseMapper.queryById(id);
+        if(orderCollageTeamVo != null){
+            List<ComBatteryCommodityOrderCollageTeamPeopleVo> collageTeamPeopleList = orderCollageTeamPeopleMapper.queryAllByTeamId(id);
+            orderCollageTeamVo.setOrderCollageTeamPeopleList(collageTeamPeopleList);
+        }
+        return R.ok(orderCollageTeamVo);
     }
 
     /**
@@ -116,4 +169,171 @@
     public R queryByList(PageComBatteryCommodityOrderCollageTeamDto comBatteryCommodityOrderCollageTeam) {
         return R.ok(this.baseMapper.queryAllByList(comBatteryCommodityOrderCollageTeam));
     }
+
+    /**
+     * 创建拼团订单
+     * @param orderDto  请求参数
+     * @return  创建订单结果
+     */
+    @Override
+    public synchronized R startFight(StartFightOrderDto orderDto) {
+        //查询拼团活动
+        ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(orderDto.getActivityId());
+        if(commodityActivity == null){
+            return R.fail("未查询到拼团活动");
+        }
+        if(commodityActivity.getStatus().equals(ComBatteryCommodityActivity.Status.YXJ)){
+            return R.fail("该活动已下架");
+        }
+        if(commodityActivity.getEndTime().getTime() - System.currentTimeMillis() <= 0
+                || commodityActivity.getStatus().equals(ComBatteryCommodityActivity.Status.YJS)){
+            return R.fail("该活动已结束");
+        }
+        if(commodityActivity.getCommodityNum() <= commodityActivity.getCommoditySaleNum()){
+            return R.fail("活动商品已售空");
+        }
+        if(orderDto.getType().equals(StartFightOrderDto.Type.PT)){
+            //判断该团队人数是否已满
+            Integer count = orderCollageTeamPeopleMapper.selectCount(new QueryWrapper<ComBatteryCommodityOrderCollageTeamPeople>().lambda()
+                    .eq(ComBatteryCommodityOrderCollageTeamPeople::getTeamId,orderDto.getTeamId()));
+            if(count >= commodityActivity.getCollagePeopleNum()){
+                return R.fail("拼团人数已满");
+            }
+            //查询拼团团队
+            ComBatteryCommodityOrderCollageTeam orderCollageTeam = orderCollageTeamMapper.selectById(orderDto.getTeamId());
+            if(orderCollageTeam == null){
+                return R.fail("该拼团不存在");
+            }
+            if(!orderCollageTeam.getStatus().equals(ComBatteryCommodityOrderCollageTeam.Status.DDPT)){
+                return R.fail("该拼团已成功");
+            }
+        }else{
+            Integer count = orderCollageTeamMapper.selectCount(new QueryWrapper<ComBatteryCommodityOrderCollageTeam>().lambda()
+                    .eq(ComBatteryCommodityOrderCollageTeam::getActivityId,orderDto.getActivityId())
+                    .eq(ComBatteryCommodityOrderCollageTeam::getStatus,ComBatteryCommodityOrderCollageTeam.Status.DDPT));
+            if(count >= commodityActivity.getCollageNum()){
+                return R.fail("当前正在拼团的数量已达到最大值,不可在开团");
+            }
+        }
+        //查询商品
+        ComBatteryCommodity commodity = commodityMapper.selectById(orderDto.getCommodityId());
+        if(commodity == null){
+            return R.fail("未查询到商品信息");
+        }
+        //查询用户信息
+        SysUser user = userMapper.selectById(orderDto.getUserId());
+        if(user == null){
+            return R.fail("未查询到用户信息");
+        }
+        //查询商品规格信息
+        ComBatteryCommoditySpecs commoditySpecs = commoditySpecsMapper.selectById(commodityActivity.getSpecsId());
+        if(commoditySpecs == null){
+            return R.fail("未查询到商品规格信息");
+        }
+        if(commoditySpecs.getStock() < orderDto.getCount()){
+            return R.fail("该商品库存不足,无法下单");
+        }
+        //查询用户收货地址
+        ComBatteryUserAddress userAddress = userAddressMapper.selectById(orderDto.getAddressId());
+        if(userAddress == null){
+            return R.fail("未查询到用户收货地址");
+        }
+        Date nowDate = new Date();
+        //初始化订单数据
+        ComBatteryCommodityOrder commodityOrder = getCreateOrder(commodity,userAddress,user,commoditySpecs,orderDto,nowDate,commodityActivity);
+        Map<String,Object> resultMap = new HashMap<>(2);
+        if(commodityOrderMapper.insert(commodityOrder) > 0){
+            //更新商品库存
+            commoditySpecs.setStock(commoditySpecs.getStock() - orderDto.getCount());
+            commoditySpecsMapper.updateById(commoditySpecs);
+
+            //微信支付需要调取小程序微信支付
+            String result = getWxPayResult(commodityOrder.getFinalAmount(),commodityOrder.getOpenId()
+                    ,commodityOrder.getOrderNo(),"购买商品",orderDto.getType().toString());
+            resultMap.put("payResult",result);
+            resultMap.put("orderId",commodityOrder.getId());
+            // 添加微信支付交易流水
+            String wxTradeOrderNo = "wx" + Snowflake.getId();
+            tradeOrderService.addOrderTradeRecord(user.getUserId(), user.getOpenid(), wxTradeOrderNo, ComBatteryTradeOrder.PayType.WX,
+                    commodityOrder.getFinalAmount(), ComBatteryTradeOrder.TradeType.DDC_SHOP, commodityOrder.getId(),
+                    commodityOrder.getOrderNo(), user.getUserId(), nowDate);
+        }
+        return R.ok(resultMap);
+    }
+
+    /**
+     * 小程序唤起微信支付
+     *
+     * @param money
+     *            需要支付的金额
+     * @param openId
+     *            用户唤起微信支付的openid
+     * @param orderNo
+     *            业务订单号
+     * @param remark
+     *            交易备注
+     * @return 小程序支付参数
+     */
+    private String getWxPayResult(BigDecimal money, String openId, String orderNo, String remark,String type) {
+        String result = "";
+        // 将剩余金额调起微信支付
+        if (isTest) {
+            money = BigDecimal.valueOf(0.01);
+        }
+        // 调用wx支付
+        result = WxPayUtils.getUnifiedorder(appid, mchId, payKey, currencyNotifyUrl + PayCpmstant.BATTERY_STORE_ACTIVITY_PAY_NOTIFY_URL
+                , remark, openId, orderNo, money,type);
+        log.info("用户购买商品微信支付返回参数:" + result);
+        return result;
+    }
+
+    /**
+     * 初始化订单数据
+     * @param commodity         商品数据
+     * @param userAddress       用户收货地址信息
+     * @param user              用户数据
+     * @param commoditySpecs    商品规格数据
+     * @param orderDto          用户请求参数
+     * @param nowDate           操作时间
+     * @param commodityActivity           拼团活动数据
+     * @return  初始化订单数据
+     */
+    public static ComBatteryCommodityOrder getCreateOrder(ComBatteryCommodity commodity, ComBatteryUserAddress userAddress
+            , SysUser user, ComBatteryCommoditySpecs commoditySpecs, StartFightOrderDto orderDto, Date nowDate
+            ,ComBatteryCommodityActivity commodityActivity){
+        ComBatteryCommodityOrder commodityOrder = new ComBatteryCommodityOrder();
+        commodityOrder.setUserId(user.getUserId());
+        commodityOrder.setOpenId(user.getOpenid());
+        commodityOrder.setStoreId(commodity.getStoreId());
+        commodityOrder.setActivityId(commodityActivity.getId());
+        commodityOrder.setCommodityId(commodity.getId());
+        commodityOrder.setSpecsId(commoditySpecs.getId());
+        commodityOrder.setOrderNo("PT" + Snowflake.getId());
+        commodityOrder.setActivityType(commodityActivity.getType());
+        commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DFK);
+        commodityOrder.setPayStatus(ComBatteryCommodityOrder.PayStatus.WZF);
+        commodityOrder.setIsDel(ComBatteryCommodityOrder.IsDel.NO);
+        commodityOrder.setPayType(ComBatteryCommodityOrder.PayType.WX);
+        commodityOrder.setCount(orderDto.getCount());
+        commodityOrder.setPrice(commodityActivity.getPrice());
+        commodityOrder.setAmount(commodityActivity.getPrice().multiply(BigDecimal.valueOf(orderDto.getCount())));
+        commodityOrder.setFreight(commodity.getPostage());
+        commodityOrder.setFinalAmount(commodityOrder.getAmount().add(commodityOrder.getFreight()));
+        commodityOrder.setCreateAt(nowDate);
+        commodityOrder.setCreateBy(user.getUserId());
+        commodityOrder.setRemark(orderDto.getRemark());
+        //收货地址
+        commodityOrder.setAddressId(userAddress.getId());
+        commodityOrder.setReceivingName(userAddress.getName());
+        commodityOrder.setReceivingPhone(userAddress.getPhone());
+        commodityOrder.setReceivingRegionCode(userAddress.getProvinceAdcode() + "-" + userAddress.getCityAdcode() + "-" + userAddress.getDistrictAdcode());
+        commodityOrder.setReceivingRegion(userAddress.getProvinceName() + userAddress.getCityName() + userAddress.getDistrictName());
+        commodityOrder.setReceivingAddress(userAddress.getAddress());
+        if(orderDto.getTeamId() != null){
+            commodityOrder.setTeamId(orderDto.getTeamId());
+        }
+        return commodityOrder;
+    }
+
+
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java
index 2d717fc..3b3c716 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java
@@ -68,6 +68,12 @@
     private String mchId;
     @Value("${min.app.currencyNotifyUrl}")
     private String currencyNotifyUrl;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamMapper orderCollageTeamMapper;
+    @Resource
+    private ComBatteryCommodityOrderCollageTeamPeopleMapper orderCollageTeamPeopleMapper;
+    @Resource
+    private ComBatteryCommodityActivityMapper commodityActivityMapper;
 
     /**
      * description  queryByPage  分页查询
@@ -151,7 +157,7 @@
     @Override
     public R detailById(Long id) {
         ComBatteryCommodityOrderVo commodityOrderVo = this.baseMapper.queryById(id);
-        if(commodityOrderVo != null){
+        if (commodityOrderVo != null) {
             //查询商品信息
             ComBatteryCommodityVo commodityVo = commodityMapper.queryById(commodityOrderVo.getCommodityId());
             commodityOrderVo.setCommodityVo(commodityVo);
@@ -180,8 +186,9 @@
 
     /**
      * 修改订单收货地址
-     * @param editOrderAddressDto   请求参数
-     * @return  修改结果
+     *
+     * @param editOrderAddressDto 请求参数
+     * @return 修改结果
      */
     @Override
     public R updateOrderAddress(EditOrderAddressDto editOrderAddressDto) {
@@ -195,8 +202,9 @@
 
     /**
      * 修改订单物流信息
+     *
      * @param editOrderLogisticsDto 请求参数
-     * @return  修改结果
+     * @return 修改结果
      */
     @Override
     public R updateOrderLogistics(EditOrderLogisticsDto editOrderLogisticsDto) {
@@ -210,8 +218,9 @@
 
     /**
      * 电动车商城购买商品支付回调
-     * @param notifyOrderDTO    请求参数
-     * @return  购买商品支付回调
+     *
+     * @param notifyOrderDTO 请求参数
+     * @return 购买商品支付回调
      */
     @Override
     public R batteryPayNotify(WxPayNotifyOrderDTO notifyOrderDTO) {
@@ -221,7 +230,7 @@
         String payNo = notifyOrderDTO.getWxTradeNo();
         BigDecimal cashFee = new BigDecimal(notifyOrderDTO.getCashFee());
         ComBatteryCommodityOrder commodityOrder = this.baseMapper.selectOne(new QueryWrapper<ComBatteryCommodityOrder>().lambda()
-                .eq(ComBatteryCommodityOrder::getOrderNo,orderNo));
+                .eq(ComBatteryCommodityOrder::getOrderNo, orderNo));
         if (commodityOrder == null) {
             log.error("用户购买商品订单微信支付回调错误,未查询到支付订单记录,支付订单号:" + orderNo);
             return R.fail("未查询到用户购买商品支付订单记录");
@@ -246,48 +255,49 @@
 
     /**
      * 小程序用户创建订单
-     * @param createOrderDto    请求参数
-     * @return  创建结果
+     *
+     * @param createOrderDto 请求参数
+     * @return 创建结果
      */
     @Override
     public R appletsOrderCreate(UserCreateOrderDto createOrderDto) {
         //查询商品
         ComBatteryCommodity commodity = commodityMapper.selectById(createOrderDto.getCommodityId());
-        if(commodity == null){
+        if (commodity == null) {
             return R.fail("未查询到商品信息");
         }
         //查询商品规格信息
         ComBatteryCommoditySpecs commoditySpecs = commoditySpecsMapper.selectById(createOrderDto.getSpecsId());
-        if(commoditySpecs == null){
+        if (commoditySpecs == null) {
             return R.fail("未查询到商品规格信息");
         }
         //判断商品库存
-        if(commoditySpecs.getStock() < createOrderDto.getCount()){
+        if (commoditySpecs.getStock() < createOrderDto.getCount()) {
             return R.fail("您购买的商品库存不足");
         }
         //查询用户收货地址
         ComBatteryUserAddress userAddress = userAddressMapper.selectById(createOrderDto.getAddressId());
-        if(userAddress == null){
+        if (userAddress == null) {
             return R.fail("未查询到用户收货地址");
         }
         //查询用户信息
         SysUser user = userMapper.selectById(createOrderDto.getUserId());
-        if(user == null){
+        if (user == null) {
             return R.fail("未查询到用户信息");
         }
         Date nowDate = new Date();
         //初始化订单信息
-        ComBatteryCommodityOrder commodityOrder = getCreateOrder(commodity,userAddress,user,commoditySpecs,createOrderDto,nowDate);
-        Map<String,Object> resultMap = new HashMap<>(2);
-        if(this.baseMapper.insert(commodityOrder) > 0){
+        ComBatteryCommodityOrder commodityOrder = getCreateOrder(commodity, userAddress, user, commoditySpecs, createOrderDto, nowDate);
+        Map<String, Object> resultMap = new HashMap<>(2);
+        if (this.baseMapper.insert(commodityOrder) > 0) {
             //更新商品库存
             commoditySpecs.setStock(commoditySpecs.getStock() - createOrderDto.getCount());
             commoditySpecsMapper.updateById(commoditySpecs);
 
             //微信支付需要调取小程序微信支付
-            String result = getWxPayResult(commodityOrder.getFinalAmount(),commodityOrder.getOpenId(),commodityOrder.getOrderNo(),"购买商品");
-            resultMap.put("payResult",result);
-            resultMap.put("orderId",commodityOrder.getId());
+            String result = getWxPayResult(commodityOrder.getFinalAmount(), commodityOrder.getOpenId(), commodityOrder.getOrderNo(), "购买商品");
+            resultMap.put("payResult", result);
+            resultMap.put("orderId", commodityOrder.getId());
 
             // 添加微信支付交易流水
             String wxTradeOrderNo = "wx" + Snowflake.getId();
@@ -300,16 +310,17 @@
 
     /**
      * 初始化订单数据
-     * @param commodity         商品数据
-     * @param userAddress       用户收货地址信息
-     * @param user              用户数据
-     * @param commoditySpecs    商品规格数据
-     * @param createOrderDto    用户请求参数
-     * @param nowDate           操作时间
-     * @return  初始化订单数据
+     *
+     * @param commodity      商品数据
+     * @param userAddress    用户收货地址信息
+     * @param user           用户数据
+     * @param commoditySpecs 商品规格数据
+     * @param createOrderDto 用户请求参数
+     * @param nowDate        操作时间
+     * @return 初始化订单数据
      */
-    private ComBatteryCommodityOrder getCreateOrder(ComBatteryCommodity commodity, ComBatteryUserAddress userAddress
-            , SysUser user, ComBatteryCommoditySpecs commoditySpecs, UserCreateOrderDto createOrderDto, Date nowDate){
+    public static ComBatteryCommodityOrder getCreateOrder(ComBatteryCommodity commodity, ComBatteryUserAddress userAddress
+            , SysUser user, ComBatteryCommoditySpecs commoditySpecs, UserCreateOrderDto createOrderDto, Date nowDate) {
         ComBatteryCommodityOrder commodityOrder = new ComBatteryCommodityOrder();
         commodityOrder.setUserId(user.getUserId());
         commodityOrder.setOpenId(user.getOpenid());
@@ -342,14 +353,10 @@
     /**
      * 小程序唤起微信支付
      *
-     * @param money
-     *            需要支付的金额
-     * @param openId
-     *            用户唤起微信支付的openid
-     * @param orderNo
-     *            业务订单号
-     * @param remark
-     *            交易备注
+     * @param money   需要支付的金额
+     * @param openId  用户唤起微信支付的openid
+     * @param orderNo 业务订单号
+     * @param remark  交易备注
      * @return 小程序支付参数
      */
     private String getWxPayResult(BigDecimal money, String openId, String orderNo, String remark) {
@@ -359,14 +366,16 @@
             money = BigDecimal.valueOf(0.01);
         }
         // 调用wx支付
-        result = WxPayUtils.getUnifiedorder(appid, mchId, payKey, currencyNotifyUrl + PayCpmstant.BATTERY_STORE_PAY_NOTIFY_URL, remark, openId, orderNo, money);
+        result = WxPayUtils.getUnifiedorder(appid, mchId, payKey, currencyNotifyUrl + PayCpmstant.BATTERY_STORE_PAY_NOTIFY_URL
+                , remark, openId, orderNo, money,null);
         log.info("用户购买商品微信支付返回参数:" + result);
         return result;
     }
 
     /**
      * 定时关闭5分钟未支付订单
-     * @return  操作结果
+     *
+     * @return 操作结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -374,19 +383,19 @@
         log.info("定时器定时关闭超过30分钟未支付订单,并返回商品库存");
         Date nowDate = new Date();
         //获取当前时间减30分钟时间
-        Date oldDate = DateUtils.addMinutes(nowDate,-5);
+        Date oldDate = DateUtils.addMinutes(nowDate, -5);
         List<ComBatteryCommodityOrder> commodityOrderList = this.baseMapper.selectList(new QueryWrapper<ComBatteryCommodityOrder>()
-                .lambda().eq(ComBatteryCommodityOrder::getStatus,ComBatteryCommodityOrder.Status.DFK)
-                .eq(ComBatteryCommodityOrder::getPayStatus,ComBatteryCommodityOrder.PayStatus.WZF)
-                .eq(ComBatteryCommodityOrder::getIsDel,ComBatteryCommodityOrder.IsDel.NO)
-                .lt(ComBatteryCommodityOrder::getCreateAt,oldDate));
+                .lambda().eq(ComBatteryCommodityOrder::getStatus, ComBatteryCommodityOrder.Status.DFK)
+                .eq(ComBatteryCommodityOrder::getPayStatus, ComBatteryCommodityOrder.PayStatus.WZF)
+                .eq(ComBatteryCommodityOrder::getIsDel, ComBatteryCommodityOrder.IsDel.NO)
+                .lt(ComBatteryCommodityOrder::getCreateAt, oldDate));
         commodityOrderList.forEach(commodityOrder -> {
             commodityOrder.setStatus(ComBatteryCommodityOrder.Status.YGB);
             commodityOrder.setUpdateAt(nowDate);
             this.baseMapper.updateById(commodityOrder);
             //归还库存
             ComBatteryCommoditySpecs commoditySpecs = commoditySpecsMapper.selectById(commodityOrder.getSpecsId());
-            if(commoditySpecs != null){
+            if (commoditySpecs != null) {
                 commoditySpecs.setStock(commoditySpecs.getStock() + commodityOrder.getCount());
                 commoditySpecs.setUpdateAt(nowDate);
                 commoditySpecsMapper.updateById(commoditySpecs);
@@ -397,14 +406,15 @@
 
     /**
      * 电动车商城用户确认收货
-     * @param id    订单id
-     * @param userId    用户id
-     * @return  确认结果
+     *
+     * @param id     订单id
+     * @param userId 用户id
+     * @return 确认结果
      */
     @Override
     public R appletsOrderReceiving(Long id, Long userId) {
         ComBatteryCommodityOrder commodityOrder = this.baseMapper.selectById(id);
-        if(commodityOrder == null){
+        if (commodityOrder == null) {
             return R.fail("未查询到订单信息");
         }
         //确认收货
@@ -412,7 +422,7 @@
         commodityOrder.setReceivingTime(new Date());
         commodityOrder.setUpdateAt(new Date());
         commodityOrder.setUpdateBy(userId);
-        if(this.baseMapper.updateById(commodityOrder) > 0){
+        if (this.baseMapper.updateById(commodityOrder) > 0) {
             return R.ok();
         }
         return R.fail();
@@ -420,34 +430,199 @@
 
     /**
      * 后台订单发货
-     * @param deliverAdminDto   请求参数
-     * @return  发货结果
+     *
+     * @param deliverAdminDto 请求参数
+     * @return 发货结果
      */
     @Override
     public R orderDeliver(OrderDeliverAdminDto deliverAdminDto) {
         //查询订单
         ComBatteryCommodityOrder commodityOrder = this.baseMapper.selectById(deliverAdminDto.getId());
-        if(commodityOrder == null){
+        if (commodityOrder == null) {
             return R.fail("未查询到订单信息");
         }
         Date nowDate = new Date();
         //判断操作类型
-        if(deliverAdminDto.getType().equals(OrderDeliverAdminDto.Type.FH)){
+        if (deliverAdminDto.getType().equals(OrderDeliverAdminDto.Type.FH)) {
             commodityOrder.setLogisticsCompany(deliverAdminDto.getLogisticsCompany());
             commodityOrder.setLogisticsNo(deliverAdminDto.getLogisticsNo());
             commodityOrder.setUpdateBy(deliverAdminDto.getUserId());
             commodityOrder.setUpdateAt(nowDate);
             commodityOrder.setDeliveryTime(nowDate);
             commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DSH);
-        }else if(deliverAdminDto.getType().equals(OrderDeliverAdminDto.Type.XGWL)){
+        } else if (deliverAdminDto.getType().equals(OrderDeliverAdminDto.Type.XGWL)) {
             commodityOrder.setLogisticsCompany(deliverAdminDto.getLogisticsCompany());
             commodityOrder.setLogisticsNo(deliverAdminDto.getLogisticsNo());
             commodityOrder.setUpdateBy(deliverAdminDto.getUserId());
             commodityOrder.setUpdateAt(nowDate);
         }
-        if(this.baseMapper.updateById(commodityOrder) > 0){
+        if (this.baseMapper.updateById(commodityOrder) > 0) {
             return R.ok();
         }
         return R.fail();
     }
+
+    /**
+     * 电动车商城购买活动商品支付回调
+     *
+     * @param notifyOrderDTO 请求参数
+     * @return 购买商品支付回调
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized R batteryActivityPayNotify(WxPayNotifyOrderDTO notifyOrderDTO) {
+        Date payTime = DateUtils.stringToDate(notifyOrderDTO.getPayTime(), new SimpleDateFormat("yyyyMMddHHmmss"));
+        Date nowDate = new Date();
+        String orderNo = notifyOrderDTO.getOrderTradeNo();
+        String payNo = notifyOrderDTO.getWxTradeNo();
+        BigDecimal cashFee = new BigDecimal(notifyOrderDTO.getCashFee());
+        //查询该订单数据
+        ComBatteryCommodityOrder commodityOrder = this.baseMapper.selectOne(new QueryWrapper<ComBatteryCommodityOrder>().lambda()
+                .eq(ComBatteryCommodityOrder::getOrderNo, orderNo));
+        if (commodityOrder == null) {
+            log.error("用户购买商品订单微信支付回调错误,未查询到支付订单记录,支付订单号:" + orderNo);
+            return R.fail("未查询到用户购买商品支付订单记录");
+        }
+        if (!commodityOrder.getPayStatus().equals(ComBatteryCommodityOrder.PayStatus.WZF)) {
+            log.error("用户购买商品订单微信支付回调错误,错误原因:支付订单状态已发生改变,不可重复回调,订单号:" + orderNo);
+            return R.fail("支付订单状态已发生改变,不可重复回调");
+        }
+        //更新订单
+        if (commodityOrder.getActivityId() != null) {
+            switch (commodityOrder.getActivityType()) {
+                case ComBatteryCommodityOrder.ActivityType.PT:
+                    //拼团订单成功支付处理
+                    commodityOrder.setCollageStatus(ComBatteryCommodityOrder.CollageStatus.PTZ);
+                    commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DPT);
+                    ComBatteryCommodityOrderCollageTeam orderCollageTeam = null;
+                    if(notifyOrderDTO.getAttach() != null && notifyOrderDTO.getAttach().equals("1")){
+                        //用户开团,创建团队信息
+                        orderCollageTeam = getOrderCollageTeam(commodityOrder,nowDate);
+                        orderCollageTeamMapper.insert(orderCollageTeam);
+                    }else{
+                        //用户参团,查询参加的团队信息
+                        orderCollageTeam = orderCollageTeamMapper.selectById(commodityOrder.getTeamId());
+                        //判断当前拼团人员是否已足够成团
+                        syncAssortedDoughStatus(orderCollageTeam.getId(),nowDate);
+                        //判断当前拼团活动是否已完成
+                        syncAssortedDoughActivityStatus(commodityOrder.getActivityId(),nowDate);
+                    }
+                    if(orderCollageTeam != null){
+                        //创建用户开团人员记录
+                        ComBatteryCommodityOrderCollageTeamPeople orderCollageTeamPeople = getOrderCollageTeamPeople(commodityOrder.getUserId()
+                                ,nowDate,orderCollageTeam,notifyOrderDTO.getAttach());
+                        orderCollageTeamPeopleMapper.insert(orderCollageTeamPeople);
+                    }
+                    break;
+                case ComBatteryCommodityOrder.ActivityType.KJ:
+                    break;
+                case ComBatteryCommodityOrder.ActivityType.MS:
+                    commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DFH);
+                    break;
+                default:
+                    break;
+            }
+        }
+        // 更新微信支付流水记录
+        tradeOrderService.renewPayTrade(commodityOrder.getId(), cashFee, notifyOrderDTO.getWxTradeNo(), payTime, nowDate);
+
+        commodityOrder.setPayStatus(ComBatteryCommodityOrder.PayStatus.YZF);
+        commodityOrder.setPayNo(payNo);
+        commodityOrder.setPayAmount(cashFee);
+        commodityOrder.setUpdateAt(nowDate);
+        commodityOrder.setPayTime(payTime);
+        this.baseMapper.updateById(commodityOrder);
+        return R.ok();
+    }
+
+    /**
+     * 初始化拼团团队数据
+     * @param commodityOrder    用户订单数据
+     * @param nowDate   操作时间
+     * @return  拼团团队数据
+     */
+    private ComBatteryCommodityOrderCollageTeam getOrderCollageTeam(ComBatteryCommodityOrder commodityOrder,Date nowDate){
+        ComBatteryCommodityOrderCollageTeam orderCollageTeam = new ComBatteryCommodityOrderCollageTeam();
+        orderCollageTeam.setActivityId(commodityOrder.getActivityId());
+        orderCollageTeam.setOrderId(commodityOrder.getId());
+        orderCollageTeam.setOrderNo(commodityOrder.getOrderNo());
+        orderCollageTeam.setUserId(commodityOrder.getUserId());
+        orderCollageTeam.setStatus(ComBatteryCommodityOrderCollageTeam.Status.DDPT);
+        orderCollageTeam.setCreateAt(nowDate);
+        return orderCollageTeam;
+    }
+
+    /**
+     * 初始化拼团团队人员数据
+     * @param userId    用户id
+     * @param nowDate   操作时间
+     * @param orderCollageTeam  拼团团队数据
+     * @param type  拼团类型(1.开团 2.参团)
+     * @return  拼团团队人员数据
+     */
+    private ComBatteryCommodityOrderCollageTeamPeople getOrderCollageTeamPeople(Long userId
+            ,Date nowDate,ComBatteryCommodityOrderCollageTeam orderCollageTeam,String type){
+        ComBatteryCommodityOrderCollageTeamPeople orderCollageTeamPeople = new ComBatteryCommodityOrderCollageTeamPeople();
+        orderCollageTeamPeople.setUserId(userId);
+        orderCollageTeamPeople.setTeamId(orderCollageTeam.getId());
+        orderCollageTeamPeople.setHeadUserId(orderCollageTeam.getUserId());
+        orderCollageTeamPeople.setType(Integer.parseInt(type));
+        orderCollageTeamPeople.setCreateAt(nowDate);
+        orderCollageTeamPeople.setCreateBy(userId);
+        return orderCollageTeamPeople;
+    }
+
+    /**
+     * 同步拼团活动状态
+     * @param activityId    活动id
+     */
+    private void syncAssortedDoughActivityStatus(Long activityId,Date nowDate){
+        ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(activityId);
+        if(commodityActivity != null){
+            //查询该活动已成团数量
+            Integer count = orderCollageTeamMapper.selectCount(new QueryWrapper<ComBatteryCommodityOrderCollageTeam>().lambda()
+                    .eq(ComBatteryCommodityOrderCollageTeam::getActivityId,activityId)
+                    .eq(ComBatteryCommodityOrderCollageTeam::getStatus,ComBatteryCommodityOrderCollageTeam.Status.PTCG));
+            if(count >= commodityActivity.getCollageNum()){
+                //该活动已达到活动拼团数量,修改为已结束状态
+                commodityActivity.setStatus(ComBatteryCommodityActivity.Status.YJS);
+                commodityActivity.setUpdateAt(nowDate);
+                commodityActivityMapper.updateById(commodityActivity);
+            }
+        }
+    }
+
+    /**
+     * 判断当前拼团团队是否已满足拼团条件
+     * @param teamId    拼团团队id
+     * @param nowDate    操作时间
+     */
+    private void syncAssortedDoughStatus(Long teamId,Date nowDate){
+        //查询拼团团队id
+        ComBatteryCommodityOrderCollageTeam orderCollageTeam = orderCollageTeamMapper.selectById(teamId);
+        if(orderCollageTeam != null){
+            ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(orderCollageTeam.getActivityId());
+            if(commodityActivity != null){
+                Integer count = orderCollageTeamPeopleMapper.selectCount(new QueryWrapper<ComBatteryCommodityOrderCollageTeamPeople>()
+                        .lambda().eq(ComBatteryCommodityOrderCollageTeamPeople::getTeamId,teamId));
+                if(count >= commodityActivity.getCollageNum()){
+                    //拼团条件满足,将所有已拼单的用户的订单更新为待发货状态
+                    //更新拼团团队记录
+                    orderCollageTeam.setStatus(ComBatteryCommodityOrderCollageTeam.Status.PTCG);
+                    orderCollageTeamMapper.updateById(orderCollageTeam);
+                    //查询拼团订单并进行更新
+                    List<ComBatteryCommodityOrder> commodityOrderList = this.baseMapper.selectList(new QueryWrapper<ComBatteryCommodityOrder>().lambda()
+                            .eq(ComBatteryCommodityOrder::getTeamId,teamId).eq(ComBatteryCommodityOrder::getStatus,ComBatteryCommodityOrder.Status.DPT)
+                            .eq(ComBatteryCommodityOrder::getCollageStatus,ComBatteryCommodityOrder.CollageStatus.PTZ)
+                            .eq(ComBatteryCommodityOrder::getActivityType,ComBatteryCommodityOrder.ActivityType.PT));
+                    commodityOrderList.forEach(commodityOrder -> {
+                        commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DFH);
+                        commodityOrder.setCollageStatus(ComBatteryCommodityOrder.CollageStatus.PTCG);
+                        commodityOrder.setUpdateAt(nowDate);
+                        this.baseMapper.updateById(commodityOrder);
+                    });
+                }
+            }
+        }
+    }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
index fc2b009..8151e13 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComShopOrderServiceImpl.java
@@ -317,7 +317,7 @@
             }
             // 调用wx支付
             String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderCreateDTO.getOpenId(),
-                orderNo, money);
+                orderNo, money,null);
             log.info("微信支付返回参数:" + xml);
             shopOrderVO.setPayResult(xml);
         } catch (Exception e) {
@@ -906,7 +906,7 @@
             }
             // 调用wx支付
             String xml = WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "商品购买", orderPayDTO.getOpenId(),
-                orderDO.getOrderNo(), money);
+                orderDO.getOrderNo(), money,null);
             log.info("微信支付返回参数:" + xml);
             shopOrderVO.setPayResult(xml);
         } catch (Exception e) {
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseOrderServiceImpl.java
index 2b7eaa2..ab1a5e4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseOrderServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseOrderServiceImpl.java
@@ -148,7 +148,7 @@
                 }
                 // 调用wx支付
                 WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "签订租房合同", wxPayOrderVO.getOpenId(),
-                        wxPayOrderVO.getOrderSn(), money);
+                        wxPayOrderVO.getOrderSn(), money,null);
                 return R.ok();
             } catch (Exception e) {
                 log.error("调用微信支付异常,异常原因:" + e.getMessage());
@@ -162,7 +162,7 @@
                 }
                 // 调用wx支付
                 WxPayUtils.getUnifiedorder(appid, mchId, payKey, notifyUrl, "定金支付", wxPayOrderVO.getOpenId(),
-                        wxPayOrderVO.getOrderSn(), money);
+                        wxPayOrderVO.getOrderSn(), money,null);
                 return R.ok();
             } catch (Exception e) {
                 log.error("调用微信支付异常,异常原因:" + e.getMessage());
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityActivityMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityActivityMapper.xml
index 331b161..7a5b68a 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityActivityMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityActivityMapper.xml
@@ -8,6 +8,7 @@
         <result property="name" column="name" jdbcType="VARCHAR"/>
         <result property="type" column="type" jdbcType="INTEGER"/>
         <result property="commodityId" column="commodity_id" jdbcType="INTEGER"/>
+        <result property="specsId" column="specs_id" jdbcType="INTEGER"/>
         <result property="storeId" column="store_id" jdbcType="INTEGER"/>
         <result property="status" column="status" jdbcType="INTEGER"/>
         <result property="isDel" column="is_del" jdbcType="INTEGER"/>
@@ -44,6 +45,8 @@
         cbca.create_by,
         cbca.update_at,
         cbca.update_by,
+        cbca.specs_id,
+        cbcs.`name` as specsName,
         cbc.`name` as commodityName,
         cbc.`code` as commodityCode,
         cbs.`name` as storeName
@@ -51,6 +54,7 @@
         com_battery_commodity_activity AS cbca
         left join com_battery_commodity as cbc on cbc.id = cbca.commodity_id
         left join com_battery_store as cbs on cbs.id = cbca.store_id
+        left join com_battery_commodity_specs as cbcs on cbcs.id = cbca.specs_id
         where cbca.id = #{id}
     </select>
 
@@ -74,6 +78,8 @@
         cbca.create_by,
         cbca.update_at,
         cbca.update_by,
+        cbca.specs_id,
+        cbcs.`name` as specsName,
         cbc.`name` as commodityName,
         cbc.`code` as commodityCode,
         cbs.`name` as storeName
@@ -81,6 +87,7 @@
         com_battery_commodity_activity AS cbca
         left join com_battery_commodity as cbc on cbc.id = cbca.commodity_id
         left join com_battery_store as cbs on cbs.id = cbca.store_id
+        left join com_battery_commodity_specs as cbcs on cbcs.id = cbca.specs_id
         <where>
             and cbca.is_del = 2
             <if test="dto.id != null">
@@ -100,9 +107,9 @@
             </if>
             <if test="dto.keyWord != null and dto.keyWord != ''">
                 and (
-                    cbca.`name` like concat ('%',#{statisticsAdminDTO.nickName},'%') or
-                    cbc.`name` like concat ('%',#{statisticsAdminDTO.nickName},'%') or
-                    cbc.`code` like concat ('%',#{statisticsAdminDTO.nickName},'%')
+                    cbca.`name` like concat ('%',#{statisticsAdminDTO.keyWord},'%') or
+                    cbc.`name` like concat ('%',#{statisticsAdminDTO.keyWord},'%') or
+                    cbc.`code` like concat ('%',#{statisticsAdminDTO.keyWord},'%')
                 )
             </if>
         </where>
@@ -129,6 +136,8 @@
         cbca.create_by,
         cbca.update_at,
         cbca.update_by,
+        cbca.specs_id,
+        cbcs.`name` as specsName,
         cbc.`name` as commodityName,
         cbc.`code` as commodityCode,
         cbs.`name` as storeName
@@ -136,6 +145,7 @@
         com_battery_commodity_activity AS cbca
         left join com_battery_commodity as cbc on cbc.id = cbca.commodity_id
         left join com_battery_store as cbs on cbs.id = cbca.store_id
+        left join com_battery_commodity_specs as cbcs on cbcs.id = cbca.specs_id
         <where>
             and cbca.is_del = 2
             <if test="dto.id != null">
@@ -155,9 +165,9 @@
             </if>
             <if test="dto.keyWord != null and dto.keyWord != ''">
                 and (
-                    cbca.`name` like concat ('%',#{statisticsAdminDTO.nickName},'%') or
-                    cbc.`name` like concat ('%',#{statisticsAdminDTO.nickName},'%') or
-                    cbc.`code` like concat ('%',#{statisticsAdminDTO.nickName},'%')
+                    cbca.`name` like concat ('%',#{statisticsAdminDTO.keyWord},'%') or
+                    cbc.`name` like concat ('%',#{statisticsAdminDTO.keyWord},'%') or
+                    cbc.`code` like concat ('%',#{statisticsAdminDTO.keyWord},'%')
                 )
             </if>
         </where>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamMapper.xml
index f72d98f..983b8d1 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamMapper.xml
@@ -5,7 +5,7 @@
     <resultMap type="com.panzhihua.service_community.entity.ComBatteryCommodityOrderCollageTeam"
                id="ComBatteryCommodityOrderCollageTeamMap">
         <result property="id" column="id" jdbcType="INTEGER"/>
-        <result property="acctivityId" column="acctivity_id" jdbcType="INTEGER"/>
+        <result property="activityId" column="activity_id" jdbcType="INTEGER"/>
         <result property="orderId" column="order_id" jdbcType="INTEGER"/>
         <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
         <result property="userId" column="user_id" jdbcType="INTEGER"/>
@@ -14,73 +14,106 @@
     </resultMap>
 
     <!--查询单个-->
-    <select id="queryById" resultMap="ComBatteryCommodityOrderCollageTeamMap">
-        select
-          id, acctivity_id, order_id, order_no, user_id, status, create_at
-        from com_battery_commodity_order_collage_team
-        where id = #{id}
+    <select id="queryById" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamVo">
+        SELECT
+            cbcoot.id,
+            cbcoot.activity_id,
+            cbcoot.order_id,
+            cbcoot.order_no,
+            cbcoot.user_id,
+            cbcoot.`status`,
+            cbcoot.create_at,
+            (select count(id) from com_battery_commodity_order_collage_team_people where team_id = cbcoot.id) as spelledNum,
+            cbca.collage_people_num,
+            su.image_url as images,
+            su.`nick_name`
+        FROM
+            com_battery_commodity_order_collage_team as cbcoot
+            left join sys_user as su on su.user_id = cbcoot.user_id
+            left join com_battery_commodity_activity as cbca on cbca.id = cbcoot.activity_id
+        where cbcoot.id = #{id}
     </select>
 
     <!--查询指定行数据-->
-    <select id="queryAllByLimit" resultMap="ComBatteryCommodityOrderCollageTeamMap">
-        select
-        id, acctivity_id, order_id, order_no, user_id, status, create_at
-        from com_battery_commodity_order_collage_team
+    <select id="queryAllByLimit" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamVo">
+        SELECT
+        cbcoot.id,
+        cbcoot.activity_id,
+        cbcoot.order_id,
+        cbcoot.order_no,
+        cbcoot.user_id,
+        cbcoot.`status`,
+        cbcoot.create_at,
+        (select count(id) from com_battery_commodity_order_collage_team_people where team_id = cbcoot.id) as spelledNum,
+        cbca.collage_people_num,
+        su.image_url as images,
+        su.`nick_name`
+        FROM
+        com_battery_commodity_order_collage_team as cbcoot
+        left join sys_user as su on su.user_id = cbcoot.user_id
+        left join com_battery_commodity_activity as cbca on cbca.id = cbcoot.activity_id
         <where>
             <if test="dto.id != null">
-                and id = #{dto.id}
+                and cbcoot.id = #{dto.id}
             </if>
-            <if test="dto.acctivityId != null">
-                and acctivity_id = #{dto.acctivityId}
+            <if test="dto.activityId != null">
+                and cbcoot.activity_id = #{dto.activityId}
             </if>
             <if test="dto.orderId != null">
-                and order_id = #{dto.orderId}
+                and cbcoot.order_id = #{dto.orderId}
             </if>
             <if test="dto.orderNo != null and dto.orderNo != ''">
-                and order_no = #{dto.orderNo}
+                and cbcoot.order_no = #{dto.orderNo}
             </if>
             <if test="dto.userId != null">
-                and user_id = #{dto.userId}
+                and cbcoot.user_id = #{dto.userId}
             </if>
             <if test="dto.status != null">
-                and status = #{dto.status}
-            </if>
-            <if test="dto.createAt != null">
-                and create_at = #{dto.createAt}
+                and cbcoot.status = #{dto.status}
             </if>
         </where>
-        order by create_at desc
+        order by cbcoot.create_at desc
     </select>
 
     <!--查询所有数据-->
-    <select id="queryAllByList" resultMap="ComBatteryCommodityOrderCollageTeamMap">
-        select
-        id, acctivity_id, order_id, order_no, user_id, status, create_at
-        from com_battery_commodity_order_collage_team
+    <select id="queryAllByList" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamVo">
+        SELECT
+        cbcoot.id,
+        cbcoot.activity_id,
+        cbcoot.order_id,
+        cbcoot.order_no,
+        cbcoot.user_id,
+        cbcoot.`status`,
+        cbcoot.create_at,
+        (select count(id) from com_battery_commodity_order_collage_team_people where team_id = cbcoot.id) as spelledNum,
+        cbca.collage_people_num,
+        su.image_url as images,
+        su.`nick_name`
+        FROM
+        com_battery_commodity_order_collage_team as cbcoot
+        left join sys_user as su on su.user_id = cbcoot.user_id
+        left join com_battery_commodity_activity as cbca on cbca.id = cbcoot.activity_id
         <where>
             <if test="dto.id != null">
-                and id = #{dto.id}
+                and cbcoot.id = #{dto.id}
             </if>
-            <if test="dto.acctivityId != null">
-                and acctivity_id = #{dto.acctivityId}
+            <if test="dto.activityId != null">
+                and cbcoot.activity_id = #{dto.activityId}
             </if>
             <if test="dto.orderId != null">
-                and order_id = #{dto.orderId}
+                and cbcoot.order_id = #{dto.orderId}
             </if>
             <if test="dto.orderNo != null and dto.orderNo != ''">
-                and order_no = #{dto.orderNo}
+                and cbcoot.order_no = #{dto.orderNo}
             </if>
             <if test="dto.userId != null">
-                and user_id = #{dto.userId}
+                and cbcoot.user_id = #{dto.userId}
             </if>
             <if test="dto.status != null">
-                and status = #{dto.status}
-            </if>
-            <if test="dto.createAt != null">
-                and create_at = #{dto.createAt}
+                and cbcoot.status = #{dto.status}
             </if>
         </where>
-        order by create_at desc
+        order by cbcoot.create_at desc
     </select>
 
 </mapper>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamPeopleMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamPeopleMapper.xml
index 9903a96..d077c17 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamPeopleMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComBatteryCommodityOrderCollageTeamPeopleMapper.xml
@@ -14,7 +14,7 @@
     </resultMap>
 
     <!--查询单个-->
-    <select id="queryById" resultMap="ComBatteryCommodityOrderCollageTeamPeopleMap">
+    <select id="queryById" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamPeopleVo">
         select
           id, team_id, head_user_id, user_id, type, create_at, create_by
         from com_battery_commodity_order_collage_team_people
@@ -22,7 +22,7 @@
     </select>
 
     <!--查询指定行数据-->
-    <select id="queryAllByLimit" resultMap="ComBatteryCommodityOrderCollageTeamPeopleMap">
+    <select id="queryAllByLimit" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamPeopleVo">
         select
         id, team_id, head_user_id, user_id, type, create_at, create_by
         from com_battery_commodity_order_collage_team_people
@@ -53,7 +53,7 @@
     </select>
 
     <!--查询所有数据-->
-    <select id="queryAllByList" resultMap="ComBatteryCommodityOrderCollageTeamPeopleMap">
+    <select id="queryAllByList" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamPeopleVo">
         select
         id, team_id, head_user_id, user_id, type, create_at, create_by
         from com_battery_commodity_order_collage_team_people
@@ -83,5 +83,23 @@
         order by create_at desc
     </select>
 
+    <select id="queryAllByTeamId" resultType="com.panzhihua.common.model.vos.common.ComBatteryCommodityOrderCollageTeamPeopleVo">
+        SELECT
+            cbcootp.id,
+            cbcootp.team_id,
+            cbcootp.head_user_id,
+            cbcootp.user_id,
+            cbcootp.type,
+            cbcootp.create_at,
+            cbcootp.create_by,
+            su.nick_name,
+            su.image_url as images
+        FROM
+            com_battery_commodity_order_collage_team_people as cbcootp
+            left join sys_user as su on su.user_id = cbcootp.user_id
+        where cbcootp.team_id = #{teamId}
+        order by cbcootp.create_at
+    </select>
+
 </mapper>
 

--
Gitblit v1.7.1