From d9d08e0ac3c9bfbd23edd2aaae4c570fd9ee643b Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 8 Mar 2019 14:36:00 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=90=8E=E8=8E=B7=E5=8F=96unionId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/domain/vo/WxPayOrderVo.java | 39 ++++++++++ .../com/iformall/mapper/WxPayOrderMapper.java | 3 + .../resources/mapper/WxPayOrderMapper.xml | 51 +++++++++++- mallinkWechatOpen/pom.xml | 4 +- .../controller/WechatCalllbackController.java | 52 +++++++++++++ .../iformall/schedule/SchedulingConfig.java | 18 +++++ .../schedule/UserUnionIdSchedule.java | 77 +++++++++++++++++++ pom.xml | 8 +- 8 files changed, 245 insertions(+), 7 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxPayOrderVo.java create mode 100644 mallinkWechatOpen/src/main/java/com/iformall/schedule/SchedulingConfig.java create mode 100644 mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxPayOrderVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxPayOrderVo.java new file mode 100644 index 000000000..8ed58c582 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxPayOrderVo.java @@ -0,0 +1,39 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.WxPayOrder; + +public class WxPayOrderVo extends WxPayOrder { + + @io.swagger.annotations.ApiModelProperty(value="用户绑定的openId",name="openId") + private String openId; + + @io.swagger.annotations.ApiModelProperty(value="用户支付appId",name="appId") + private String appId; + + @io.swagger.annotations.ApiModelProperty(value="支付ID,参看wx_pay_account",name="payId") + private Long payId; + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public Long getPayId() { + return payId; + } + + public void setPayId(Long payId) { + this.payId = payId; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java index f5fdcaaef..298dab3b3 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java @@ -3,8 +3,11 @@ package com.iformall.mapper; import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxPayOrder; +import com.iformall.domain.vo.WxPayOrderVo; public interface WxPayOrderMapper extends CommonMapper { List findList(WxPayOrder wxPayOrder); + + List findListOfPaidOrderByDate(Map dateMap); } diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 99e0530d1..fc9266436 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -83,7 +83,7 @@ - and `prepay_d` like concat('%', #{prepayId},'%') + and `prepay_id` like concat('%', #{prepayId},'%') @@ -126,4 +126,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + p.`id`,p.`tenant_id`,p.`create_time`,p.`update_time`,p.`order_id`,p.`c_user_id`,p.`b_user_id`, + p.`auth_code`,p.`ip`,p.`pay_amount`,p.`pay_time_start`,p.`pay_time_end`, + p.`prepay_id`,p.`transaction_id`,p.`pay_vendor`,p.`pay_order_no`, + p.`pay_order_status`,p.`share`,p.`share_amount`,p.`fail_reason`, + u.`open_id`, + a.`app_id`, a.`pay_id` + + + + + diff --git a/mallinkWechatOpen/pom.xml b/mallinkWechatOpen/pom.xml index 8e255ac15..3b35a2a5c 100644 --- a/mallinkWechatOpen/pom.xml +++ b/mallinkWechatOpen/pom.xml @@ -13,8 +13,8 @@ mallinkWechatOpen - 3.3.0 - 3.3.0 + 3.3.0.A + 3.3.0.A diff --git a/mallinkWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java b/mallinkWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java index d327c938c..2802e179c 100644 --- a/mallinkWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java +++ b/mallinkWechatOpen/src/main/java/com/iformall/controller/WechatCalllbackController.java @@ -309,4 +309,56 @@ public class WechatCalllbackController extends BaseController { mailService.sendSimpleMail(receivers, titleSB.toString(), sb.toString()); } } + + @GetMapping(value = "/createOpenPlatform") + @ApiOperation("创建微信开放平台") + public String createOpenPlatform(@RequestParam(value="appId") String appId) { + try { + String llstr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).createOpenPlatform(appId); + logger.info(llstr); + return llstr; + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + return null; + } + + @GetMapping(value = "/bindOpenPlatform") + @ApiOperation("绑定微信开放平台") + public String bindOpenPlatform(@RequestParam(value = "appId") String appId, @RequestParam(value = "openAppId") String openAppId) { + try { + String llstr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).bindOpenPlatform(appId, openAppId); + logger.info(llstr); + return llstr; + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + return null; + } + + @GetMapping(value = "/unbindOpenPlatform") + @ApiOperation("解绑微信开放平台") + public String unbindOpenPlatform(@RequestParam(value = "appId") String appId, @RequestParam(value = "openAppId") String openAppId) { + try { + String llstr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).unbindOpenPlatform(appId, openAppId); + logger.info(llstr); + return llstr; + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + return null; + } + + @GetMapping(value = "/getOpenPlatform") + @ApiOperation("获取微信开放平台") + public String getOpenPlatform(@RequestParam(value = "appId") String appId) { + try { + String llstr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).getBindOpenPlatform(appId); + logger.info(llstr); + return llstr; + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + return null; + } } diff --git a/mallinkWechatOpen/src/main/java/com/iformall/schedule/SchedulingConfig.java b/mallinkWechatOpen/src/main/java/com/iformall/schedule/SchedulingConfig.java new file mode 100644 index 000000000..c347b05aa --- /dev/null +++ b/mallinkWechatOpen/src/main/java/com/iformall/schedule/SchedulingConfig.java @@ -0,0 +1,18 @@ +package com.iformall.schedule; + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; + +@Configuration +@EnableScheduling +public class SchedulingConfig implements SchedulingConfigurer { + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + + + } + +} \ No newline at end of file diff --git a/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java b/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java new file mode 100644 index 000000000..a018fd5c0 --- /dev/null +++ b/mallinkWechatOpen/src/main/java/com/iformall/schedule/UserUnionIdSchedule.java @@ -0,0 +1,77 @@ +package com.iformall.schedule; + +import com.iformall.domain.po.WxPayAccount; +import com.iformall.domain.vo.WxPayOrderVo; +import com.iformall.mapper.WxPayAccountMapper; +import com.iformall.mapper.WxPayOrderMapper; +import com.iformall.service.wechat.WxOpenService; +import me.chanjar.weixin.open.api.WxOpenMaService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class UserUnionIdSchedule { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final int TIME_OUT_VALUE = 4 * 60 * 1000; //4分钟 + + @Autowired + WxPayOrderMapper payOrderMapper; + + @Autowired + private WxOpenService openService; + + @Autowired + private WxPayAccountMapper payAccountMapper; + + @Scheduled(cron = "0 */4 * * * *?") // 每4分钟检查一次 + //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 + public void payOrderGetUnionIdSchedule() { + Map dateMap = new HashMap(); + Date curDate = new Date(); + Date expireDate = new Date(curDate.getTime() - TIME_OUT_VALUE ); + + // 券相关订单 + dateMap.put("startDate", expireDate); + List paidList = payOrderMapper.findListOfPaidOrderByDate(dateMap); + paidList.parallelStream().forEach( payOrderVo -> { + getUnionId(payOrderVo); + }); + } + + /** + * 根据payOrder信息获取UnionId + * @param payOrderVo + */ + public void getUnionId(WxPayOrderVo payOrderVo) { + if(StringUtils.isBlank(payOrderVo.getOpenId())) { + return; + } + try { + // code提交 + WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(payOrderVo.getAppId()); + if(StringUtils.isNotBlank(payOrderVo.getTransactionId())) { + String openRet = openMaService.getApiGetPaidUnionid(payOrderVo.getOpenId(), payOrderVo.getTransactionId()); + logger.info(openRet); + } else { + WxPayAccount payAccount = payAccountMapper.selectByPrimaryKey(payOrderVo.getPayId()); + if(payAccount != null) { + String openRet = openMaService.getApiGetPaidUnionid(payOrderVo.getOpenId(), payAccount.getMchId(), payOrderVo.getPayOrderNo()); + logger.info(openRet); + } + } + }catch (Exception e) { + logger.error(e.getMessage()); + } + + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 13a975775..b1d35bbee 100644 --- a/pom.xml +++ b/pom.xml @@ -28,10 +28,10 @@ - 3.3.0 - 3.3.0 - 3.3.0 - 3.3.0 + 3.3.0.A + 3.3.0.A + 3.3.0.A + 3.3.0.A 2.3.0