瀏覽代碼

Merge remote-tracking branch 'origin/master'

小么熊🐻 3 年之前
父節點
當前提交
be6f907bf6

+ 63 - 1
twzd-admin/src/main/java/com/miaxis/app/controller/wx/WxNotifyController.java

@@ -1,6 +1,7 @@
 package com.miaxis.app.controller.wx;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.miaxis.common.config.WxpayConfig;
@@ -9,6 +10,9 @@ import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.AesUtil;
 import com.miaxis.extension.service.IWxExtensionIncomeService;
+import com.miaxis.feign.dto.WxGzhMini;
+import com.miaxis.feign.dto.WxMessageTemplate;
+import com.miaxis.feign.service.IWxSendService;
 import com.miaxis.framework.web.service.TokenService;
 import com.miaxis.user.service.IUserInfoService;
 import com.miaxis.wx.domain.RefundRecord;
@@ -16,6 +20,7 @@ import com.miaxis.wx.domain.WxOrder;
 import com.miaxis.wx.dto.WxNotifyReturnDTO;
 import com.miaxis.wx.dto.WxpayNotifyDTO;
 import com.miaxis.wx.service.IRefundRecordService;
+import com.miaxis.wx.service.IWxGzhService;
 import com.miaxis.wx.service.IWxOrderService;
 import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
 import io.swagger.annotations.Api;
@@ -69,6 +74,11 @@ public class WxNotifyController {
     @Autowired
     private IWxExtensionIncomeService wxExtensionIncomeService;
 
+    @Autowired
+    private IWxSendService wxSendService;
+
+    @Autowired
+    private IWxGzhService wxGzhService;
 
 
 
@@ -245,6 +255,8 @@ public class WxNotifyController {
 ////        //刷新缓存中的数据
 ////        tokenService.refreshToken(loginUser);
 
+        //发送模板消息
+        messageTemplateSend(userinfo,wxOrder);
 
         // 分成
         wxExtensionIncomeService.addExtensionIncomeBySourceId(wxOrder.getOutTradeNo(),wxOrder.getOpenid(),wxOrder.getTotal());
@@ -260,8 +272,58 @@ public class WxNotifyController {
     }
 
 
+    /**
+     * 发送模板信息
+     * @param userInfo 用户信息
+     * @param wxOrder 订单信息
+     */
+    private void messageTemplateSend(UserInfo userInfo,WxOrder wxOrder){
+
+        //获取tolen
+        String token = wxGzhService.getGzhToken();
+
+        WxMessageTemplate messageTemplate = new WxMessageTemplate();
+        messageTemplate.setTouser(userInfo.getOpenid());
+        messageTemplate.setTemplate_id("d1P87FFAAos_sHteTCA-slkFJesE8xkoDsRImVa58jc");
+        messageTemplate.setUrl("https://jpcj-h5.zzxcx.net");
+        WxGzhMini wxGzhMini = new WxGzhMini();
+        messageTemplate.setMiniprogram(wxGzhMini);
+
+        JSONObject jsonObject = new JSONObject();
+        JSONObject first = new JSONObject();
+        JSONObject keyword1 = new JSONObject();
+        JSONObject keyword2 = new JSONObject();
+        JSONObject keyword3 = new JSONObject();
+        JSONObject keyword4 = new JSONObject();
+        JSONObject keyword5 = new JSONObject();
+        JSONObject remark = new JSONObject();
+        first.put("value","恭喜您开通金牌车教会员成功!");
+        first.put("color","#173177");
+        keyword1.put("value","VIP会员");
+        keyword1.put("color","#173177");
+        keyword2.put("value", userInfo.getNickName());
+        keyword2.put("color","#173177");
+        keyword3.put("value","支付成功");
+        keyword3.put("color","#173177");
+        keyword4.put("value",wxOrder.getTotal()/100);
+        keyword4.put("color","#173177");
+        keyword5.put("value",DateUtil.format(userInfo.getExpireTime(), "yyyy-MM-dd HH:mm"));
+        keyword5.put("color","#173177");
+        remark.put("value","即日起,即可想享受会员特权");
+        remark.put("color","#173177");
+        jsonObject.put("first",first);
+        jsonObject.put("keyword1",keyword1);
+        jsonObject.put("keyword2",keyword2);
+        jsonObject.put("keyword3",keyword3);
+        jsonObject.put("keyword4",keyword4);
+        jsonObject.put("keyword5",keyword5);
+        jsonObject.put("remark",remark);
+        messageTemplate.setData(jsonObject);
+        String result = wxSendService.messageTemplateSend(token,messageTemplate);
+        JSONObject parseObject = JSONObject.parseObject(result);
+        log.info("模板消息:[{}],响应信息:[{}]",messageTemplate,parseObject);
 
-
+    }
 
 
 

+ 64 - 70
twzd-admin/src/main/java/com/miaxis/pc/controller/wx/WxMenuController.java

@@ -1,20 +1,14 @@
 package com.miaxis.pc.controller.wx;
 
-import com.miaxis.common.annotation.Log;
-import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
-import com.miaxis.common.core.page.ResponsePageInfo;
-import com.miaxis.common.enums.BusinessTypeEnum;
-import com.miaxis.wx.domain.WxMenu;
 import com.miaxis.wx.service.IWxMenuService;
-import com.miaxis.wx.vo.WxMenuVo;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @author wwl
@@ -30,65 +24,65 @@ public class WxMenuController extends BaseController {
     private final IWxMenuService wxMenuService;
 
 
-    /**
-     * 查询微信公众号菜单列表
-     */
-    @PreAuthorize("@ss.hasPermi('menu:info:list')")
-    @GetMapping("/list")
-    @ApiOperation("查询微信公众号菜单列表")
-    public Response<List<WxMenuVo>> list(){
-        return wxMenuService.selectWxMenuTreeList();
-    }
-
-
-    /**
-     * 获取微信公众号菜单详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('menu:info:query')")
-    @GetMapping(value = "/{id}")
-    @ApiOperation("获取微信公众号菜单详细信息")
-    public Response<WxMenu> getInfo(
-            @ApiParam(name = "id", value = "微信公众号菜单参数", required = true)
-            @PathVariable("id") Long id
-    ){
-        return Response.success(wxMenuService.getById(id));
-    }
-
-    /**
-     * 新增微信公众号菜单
-     */
-    @PreAuthorize("@ss.hasPermi('menu:info:add')")
-    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.INSERT)
-    @PostMapping
-    @ApiOperation("新增微信公众号菜单")
-    public Response add(@RequestBody WxMenu wxMenu){
-        return wxMenuService.saveMenu(wxMenu);
-    }
-
-    /**
-     * 修改微信公众号菜单
-     */
-    @PreAuthorize("@ss.hasPermi('menu:info:edit')")
-    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.UPDATE)
-    @PutMapping
-    @ApiOperation("修改微信公众号菜单")
-    public Response edit(@RequestBody WxMenu wxMenu){
-        return wxMenuService.updateMenuById(wxMenu);
-    }
-
-    /**
-     * 删除微信公众号菜单
-     */
-    @PreAuthorize("@ss.hasPermi('menu:info:remove')")
-    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.DELETE)
-    @DeleteMapping("/{ids}")
-    @ApiOperation("删除微信公众号菜单")
-    public  Response remove(
-            @ApiParam(name = "ids", value = "微信公众号菜单ids参数", required = true)
-            @PathVariable Long[] ids
-    ){
-        return wxMenuService.removeMenuByIds(ids);
-    }
+//    /**
+//     * 查询微信公众号菜单列表
+//     */
+//    @PreAuthorize("@ss.hasPermi('menu:info:list')")
+//    @GetMapping("/list")
+//    @ApiOperation("查询微信公众号菜单列表")
+//    public Response<List<WxMenuVo>> list(){
+//        return wxMenuService.selectWxMenuTreeList();
+//    }
+//
+//
+//    /**
+//     * 获取微信公众号菜单详细信息
+//     */
+//    @PreAuthorize("@ss.hasPermi('menu:info:query')")
+//    @GetMapping(value = "/{id}")
+//    @ApiOperation("获取微信公众号菜单详细信息")
+//    public Response<WxMenu> getInfo(
+//            @ApiParam(name = "id", value = "微信公众号菜单参数", required = true)
+//            @PathVariable("id") Long id
+//    ){
+//        return Response.success(wxMenuService.getById(id));
+//    }
+//
+//    /**
+//     * 新增微信公众号菜单
+//     */
+//    @PreAuthorize("@ss.hasPermi('menu:info:add')")
+//    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.INSERT)
+//    @PostMapping
+//    @ApiOperation("新增微信公众号菜单")
+//    public Response add(@RequestBody WxMenu wxMenu){
+//        return wxMenuService.saveMenu(wxMenu);
+//    }
+//
+//    /**
+//     * 修改微信公众号菜单
+//     */
+//    @PreAuthorize("@ss.hasPermi('menu:info:edit')")
+//    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.UPDATE)
+//    @PutMapping
+//    @ApiOperation("修改微信公众号菜单")
+//    public Response edit(@RequestBody WxMenu wxMenu){
+//        return wxMenuService.updateMenuById(wxMenu);
+//    }
+//
+//    /**
+//     * 删除微信公众号菜单
+//     */
+//    @PreAuthorize("@ss.hasPermi('menu:info:remove')")
+//    @Log(title = "微信公众号菜单", businessType = BusinessTypeEnum.DELETE)
+//    @DeleteMapping("/{ids}")
+//    @ApiOperation("删除微信公众号菜单")
+//    public  Response remove(
+//            @ApiParam(name = "ids", value = "微信公众号菜单ids参数", required = true)
+//            @PathVariable Long[] ids
+//    ){
+//        return wxMenuService.removeMenuByIds(ids);
+//    }
 
     /**
      * 一键更新公众号菜单

+ 8 - 2
twzd-admin/src/test/java/com/miaxis/test/NormalTest.java

@@ -1,20 +1,26 @@
 package com.miaxis.test;
 
 import com.miaxis.TwzdApplication;
+import com.miaxis.wx.service.impl.WxGzhServiceImpl;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
-//@ActiveProfiles("prod")
+import javax.annotation.Resource;
+
+@ActiveProfiles("prod")
 @SpringBootTest(classes = TwzdApplication.class)
 @RunWith(SpringRunner.class)
 public class NormalTest {
 
 
+    @Resource
+    WxGzhServiceImpl wxGzhService;
     @Test
     public void test1() throws Exception {
-
+        wxGzhService.handlePublicMsg(null);
     }
 
 

+ 3 - 0
twzd-common/src/main/java/com/miaxis/common/core/domain/entity/UserInfo.java

@@ -90,4 +90,7 @@ public class UserInfo extends BaseBusinessEntity{
 
 
 
+    @ApiModelProperty(value = "销售类型0- 非销售1- 个人销售2- 团队销售")
+    private Integer saleType;
+
 }

+ 1 - 0
twzd-framework/src/main/java/com/miaxis/framework/web/service/UserDetailsServiceImpl.java

@@ -72,6 +72,7 @@ public class UserDetailsServiceImpl implements UserDetailsService
                     userInfo.setNickName((String) ServletUtils.getRequest().getAttribute("nickName"));
                     userInfo.setOpenid(identification);
                     userService.saveUserInfo(userInfo);
+                    userInfo = userService.getStudentByOpenId(identification);
                 }else {
                     userInfo.setHeadImage((String) ServletUtils.getRequest().getAttribute("headImage"));
                     userInfo.setNickName((String) ServletUtils.getRequest().getAttribute("nickName"));

+ 1 - 1
twzd-service/src/main/java/com/miaxis/extension/domain/WxExtensionIncome.java

@@ -38,7 +38,7 @@ public class WxExtensionIncome extends BaseBusinessEntity {
     private String sourceOpenid;
 
     @TableField("hierarchy")
-    @ApiModelProperty(value = "层级,1:一级 ,2:二级(受益人 相对于收益来源人 层级关系)")
+    @ApiModelProperty(value = "层级,1:一级 ,2:二级(受益人 相对于收益来源人 层级关系) 3:销售")
     private String hierarchy;
 
     @TableField("percentage")

+ 28 - 4
twzd-service/src/main/java/com/miaxis/extension/service/impl/WxExtensionIncomeServiceImpl.java

@@ -2,7 +2,6 @@ package com.miaxis.extension.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.SysDictData;
 import com.miaxis.extension.domain.WxExtensionIncome;
 import com.miaxis.extension.mapper.WxExtensionIncomeMapper;
@@ -61,6 +60,9 @@ public class WxExtensionIncomeServiceImpl extends ServiceImpl<WxExtensionIncomeM
     @Override
     public void addExtensionIncomeBySourceId(String outTradeNo, String openid, Integer total) {
 
+
+
+
         //查找一二级绑定关系
         WxSpreadRelation oneRelation = wxSpreadRelationService.getOne(new QueryWrapper<WxSpreadRelation>().eq("openid", openid));
         if (oneRelation == null){
@@ -84,9 +86,8 @@ public class WxExtensionIncomeServiceImpl extends ServiceImpl<WxExtensionIncomeM
                 income.setProfitPrice((total*Integer.parseInt(d.getDictValue()))/100);
                 extensionIncomes.add(income);
             }
-
-            if (twoRelation != null){
-                if ("二级".equals(d.getDictLabel())){
+            if ("二级".equals(d.getDictLabel())){
+                if (twoRelation != null){
                     WxExtensionIncome income = new WxExtensionIncome();
                     income.setOutTradeNo(outTradeNo);
                     income.setBeneficiaryOpenid(twoRelation.getParentOpenid());
@@ -97,12 +98,35 @@ public class WxExtensionIncomeServiceImpl extends ServiceImpl<WxExtensionIncomeM
                     extensionIncomes.add(income);
                 }
             }
+
+            if ("销售".equals(d.getDictLabel())){
+                if (twoRelation != null){
+                    //销售提成
+                    List<WxSpreadRelation> wxSpreadRelationList = wxSpreadRelationService.getWxSpreadRelationList(twoRelation.getParentOpenid());
+                    if (!wxSpreadRelationList.isEmpty()){
+                        wxSpreadRelationList.stream().forEach(o->{
+                            if (o.getSaleType()!=null && o.getSaleType() > 0){
+                                WxExtensionIncome income = new WxExtensionIncome();
+                                income.setOutTradeNo(outTradeNo);
+                                income.setBeneficiaryOpenid(o.getParentOpenid());
+                                income.setSourceOpenid(openid);
+                                income.setHierarchy("3");
+                                income.setPercentage(Integer.parseInt(d.getDictValue()));
+                                income.setProfitPrice((total*Integer.parseInt(d.getDictValue()))/100);
+                                extensionIncomes.add(income);
+                            }
+                        });
+                    }
+                }
+            }
         });
 
         //保存分成收益信息
         this.saveBatch(extensionIncomes);
     }
 
+
+
     /**
      * 查询收益列表
      * @param openid openid

+ 5 - 0
twzd-service/src/main/java/com/miaxis/spread/domain/WxSpreadRelation.java

@@ -36,4 +36,9 @@ public class WxSpreadRelation extends BaseBusinessEntity {
     @TableField("status")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     private String status;
+
+    /** 销售类型 */
+    @TableField(exist = false)
+    @ApiModelProperty(value = "销售类型0- 非销售1- 个人销售2- 团队销售" )
+    private Integer saleType;
 }

+ 3 - 0
twzd-service/src/main/java/com/miaxis/spread/mapper/WxSpreadRelationMapper.java

@@ -3,6 +3,8 @@ package com.miaxis.spread.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.spread.domain.WxSpreadRelation;
 
+import java.util.List;
+
 /**
  * wx推广关系Mapper接口
  * @author wwl
@@ -10,4 +12,5 @@ import com.miaxis.spread.domain.WxSpreadRelation;
  * @date 2021/10/29 9:41
  */
 public interface WxSpreadRelationMapper extends BaseMapper<WxSpreadRelation> {
+    List<WxSpreadRelation> getWxSpreadRelationList(String openid);
 }

+ 2 - 1
twzd-service/src/main/java/com/miaxis/spread/service/IWxSpreadRelationService.java

@@ -1,11 +1,11 @@
 package com.miaxis.spread.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.miaxis.common.core.domain.Response;
 import com.miaxis.spread.domain.WxSpreadRelation;
 import com.miaxis.spread.vo.WxSpreadRelationVo;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * wx推广关系Service接口
@@ -22,4 +22,5 @@ public interface IWxSpreadRelationService extends IService<WxSpreadRelation> {
      */
     ArrayList<WxSpreadRelationVo> spreadRelationList(String openid);
 
+    List<WxSpreadRelation> getWxSpreadRelationList(String openid);
 }

+ 5 - 1
twzd-service/src/main/java/com/miaxis/spread/service/impl/WxSpreadRelationServiceImpl.java

@@ -1,7 +1,6 @@
 package com.miaxis.spread.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.spread.domain.WxSpreadRelation;
 import com.miaxis.spread.mapper.WxSpreadRelationMapper;
@@ -57,4 +56,9 @@ public class WxSpreadRelationServiceImpl extends ServiceImpl<WxSpreadRelationMap
         return relationVos;
     }
 
+    @Override
+    public List<WxSpreadRelation> getWxSpreadRelationList(String openid) {
+        return wxSpreadRelationMapper.getWxSpreadRelationList(openid);
+    }
+
 }

+ 8 - 6
twzd-service/src/main/java/com/miaxis/wx/service/impl/WxGzhServiceImpl.java

@@ -1,11 +1,9 @@
 package com.miaxis.wx.service.impl;
 
-import cn.hutool.json.XML;
 import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.utils.StringUtils;
-import com.miaxis.common.utils.http.HttpUtils;
 import com.miaxis.common.utils.wx.MessageUtil;
 import com.miaxis.feign.service.IWxSendService;
 import com.miaxis.system.service.ISysUserService;
@@ -15,7 +13,6 @@ import com.miaxis.wx.service.IWxMessageEvenService;
 import com.qcloud.cos.COSClient;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -90,10 +87,15 @@ public class WxGzhServiceImpl implements IWxGzhService {
     public String handlePublicMsg(HttpServletRequest request) {
         try {
             log.info("1....");
-            cn.hutool.json.JSONObject decryptMap = XML.toJSONObject(IOUtils.toString(request.getInputStream()));
-            cn.hutool.json.JSONObject jsonObjectData = decryptMap.getJSONObject("xml");
+//            cn.hutool.json.JSONObject decryptMap = XML.toJSONObject(IOUtils.toString(request.getInputStream()));
+//            cn.hutool.json.JSONObject jsonObjectData = decryptMap.getJSONObject("xml");
+
+
+            cn.hutool.json.JSONObject jsonObjectData = new cn.hutool.json.JSONObject("{\"CreateTime\":1639474955,\"EventKey\":\"https://jpcj-h5.zzxcx.net\",\"ToUserName\":\"gh_628da25a95e5\",\"MsgType\":\"event\",\"MenuId\":442656773,\"Event\":\"VIEW\",\"FromUserName\":\"ovKTX50v7OAEPI_ERofpUvrNQCJU\"}");
             log.info("2-----jsonObjectData------"+jsonObjectData);
 
+
+
             //开发者微信号
             String toUserName = jsonObjectData.getStr("ToUserName");
             //发送方帐号(一个OpenID)
@@ -153,7 +155,7 @@ public class WxGzhServiceImpl implements IWxGzhService {
                 } else if (MessageUtil.MESSAGE_SCAN.equals(event)) { // 已关注扫描二维码事件
                     log.info("3.2...");
                     return MessageUtil.initText(fromUserName, toUserName, "已关注扫描二维码事件");
-                    
+
                 } else if (MessageUtil.MESSAGE_LOCATION.equals(event)) { // 上报地理位置事件
                     // todo 处理上报地理位置事件
 

+ 1 - 3
twzd-service/src/main/java/com/miaxis/wx/service/impl/WxMessageEvenServiceImpl.java

@@ -1,13 +1,11 @@
 package com.miaxis.wx.service.impl;
 
-import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.extra.qrcode.QrCodeUtil;
 import cn.hutool.extra.qrcode.QrConfig;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.miaxis.common.constant.Constants;
@@ -259,7 +257,7 @@ public class WxMessageEvenServiceImpl implements IWxMessageEvenService {
         WxMessageTemplate messageTemplate = new WxMessageTemplate();
         messageTemplate.setTouser(openid);
         messageTemplate.setTemplate_id("P4nKRB6L3dmhBjEj1VeE0gr9yC11Z0uBTAuu-XKmIjs");
-        messageTemplate.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx67ca1b8c9816ef28&redirect_uri=http://jpcj-h5.zzxcx.net/myBranch&response_type=code&scope=snsapi_userinfo&state=LOGIN#wechat_redirect");
+        messageTemplate.setUrl("https://jpcj-h5.zzxcx.net/myBranch");
         WxGzhMini wxGzhMini = new WxGzhMini();
         messageTemplate.setMiniprogram(wxGzhMini);
 

+ 13 - 0
twzd-service/src/main/resources/mapper/spread/WxSpreadRelationMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.miaxis.spread.mapper.WxSpreadRelationMapper">
+<select id="getWxSpreadRelationList" resultType="com.miaxis.spread.domain.WxSpreadRelation">
+select t1.*,t2.sale_type
+ FROM wx_spread_relation  t1 left join user_info  t2 on (t1.parent_openid = t2.openid) where
+FIND_IN_SET(t1.openid,getParents(#{openid}))
+</select>
+
+
+</mapper>