| | |
| | | .body(body) |
| | | .build(); |
| | | |
| | | NotificationConfig config = /*new RSAAutoCertificateConfig.Builder() |
| | | .merchantId(WxMiniConfig.wxProperties.getMchId()) |
| | | .privateKeyFromPath(WxMiniConfig.wxProperties.getPrivateKeyPath()) |
| | | .merchantSerialNumber(WxMiniConfig.wxProperties.getSerialNumer()) |
| | | .apiV3Key(WxMiniConfig.wxProperties.getApiV3Key()) |
| | | .build(); */ |
| | | new RSAPublicKeyConfig.Builder() |
| | | NotificationConfig config = new RSAPublicKeyConfig.Builder() |
| | | .merchantId(WxMiniConfig.wxProperties.getMchId()) |
| | | .privateKeyFromPath(WxMiniConfig.wxProperties.getPrivateKeyPath()) |
| | | .publicKeyFromPath(WxMiniConfig.wxProperties.getPubKeyPath()) |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: test |
| | | active: pro |
| | | # JSON返回配置 |
| | | jackson: |
| | | # 默认时区 |
| | |
| | | @Slf4j |
| | | public class SendWxMessage { |
| | | |
| | | private static String goodsOrderUrl = "pages/settlementDetails/settlementDetails?goodsOrderId="; |
| | | |
| | | private static String identityInfoUrl = "pages/mine/mine"; |
| | | private static String mineUrl = "/pages/mine/mine"; |
| | | |
| | | private static String orderDetail = "pages/order-details/order-details?id={id}";// 用工 |
| | | |
| | | private static String orderDetailFreight = "pages/freight-order/freight-order?id={id}";// 货运 |
| | | |
| | | private static String orderDetailFood = "pages/order-food/order-food?id={id}";// 订餐 |
| | | |
| | | private static String balanceUrl = "pages/balance-details/balance-details";// 余额明细 |
| | | |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | |
| | | * @param identityInfo |
| | | * @throws WxErrorException |
| | | */ |
| | | public void identityInfoMessage(String openid, IdentityInfo identityInfo) throws WxErrorException { |
| | | public void identityInfoMessage(String openid, IdentityInfo identityInfo){ |
| | | try{ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 认证信息 -> accessToken:{}",accessToken); |
| | |
| | | //订阅消息模板id |
| | | wxMsgVO.setTemplate_id("VJho7-lf-4_WZFfOzenDndgwNDIA0EvCiE6vqBnExpQ"); |
| | | Map<String, TemplateData> m = new HashMap<>(4); |
| | | m.put("thing2", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"用工认证":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"运货认证":"供餐认证")); |
| | | m.put("phrase6", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"认证通过":"认证未通过")); |
| | | m.put("thing2", new TemplateData(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO)?"实名认证":Constants.equalsInteger(identityInfo.getType(),Constants.ONE)?"运货认证":"供餐认证")); |
| | | m.put("phrase6", new TemplateData(Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"通过":"未通过")); |
| | | m.put("time12", new TemplateData(DateUtil.getFomartDate(identityInfo.getAuditTime(),"yyyy-MM-dd HH:mm"))); |
| | | m.put("thing14", new TemplateData(identityInfo.getAuditRemark())); |
| | | wxMsgVO.setPage(identityInfoUrl); |
| | | // wxMsgVO.setPage(mineUrl); |
| | | wxMsgVO.setData(m); |
| | | log.info("微信小程序->微信消息通知 认证信息:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 认证信息:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * |
| | | * 订单取消业务通知 |
| | | * @param openidList |
| | | * @param orders |
| | | * @param cancelType 取消类型:0=平台取消;1=发单方取消;1=接单方取消 |
| | | * @throws WxErrorException |
| | | */ |
| | | public void cancelMessage(List<String> openidList, Orders orders,Integer cancelType ) throws WxErrorException { |
| | | public void cancelMessage(List<String> openidList, Orders orders,Integer cancelType ){ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | try{ |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 订单取消业务 -> accessToken:{}",accessToken); |
| | | //这里简单起见我们每次都获取最新的access_token(时间开发中,应该在access_token快过期时再重新获取) |
| | |
| | | m.put("thing1", new TemplateData(orders.getLocation() + (StringUtils.isNotBlank(orders.getLocationRemark())?orders.getLocationRemark():""))); |
| | | m.put("date8", new TemplateData(DateUtil.getFomartDate(orders.getCancelTime(),"yyyy-MM-dd HH:mm:ss"))); |
| | | m.put("thing6", new TemplateData(Constants.equalsInteger(cancelType,Constants.ZERO)?"平台取消":Constants.equalsInteger(cancelType,Constants.ONE)?"发单方取消":"接单方取消")); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: |
| | | Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; |
| | | pageUrl.replace("{id}",orders.getId().toString()); |
| | | wxMsgVO.setPage(pageUrl); |
| | | wxMsgVO.setData(m); |
| | | if(CollectionUtils.isNotEmpty(openidList)){ |
| | | for (String openid:openidList) { |
| | | //用户的openid(要发送给那个用户) |
| | | wxMsgVO.setTouser(openid); |
| | | log.info("微信小程序->微信消息通知 订单取消业务:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 订单取消业务:{}", JSONObject.toJSONString(responseEntity)); |
| | |
| | | }else{ |
| | | log.info("微信小程序->微信消息通知 订单取消业务:{}", "无人员信息"); |
| | | } |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public void acceptMessage(String openid, Orders orders,String memberName,String memberPhone) throws WxErrorException { |
| | | /** |
| | | * 接单通知 |
| | | * @param openid |
| | | * @param orders |
| | | * @param memberName |
| | | * @param memberPhone |
| | | * @throws WxErrorException |
| | | */ |
| | | public void acceptMessage(String openid, Orders orders,String memberName,String memberPhone){ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | try{ |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 接单业务 -> accessToken:{}",accessToken); |
| | | //这里简单起见我们每次都获取最新的access_token(时间开发中,应该在access_token快过期时再重新获取) |
| | |
| | | m.put("thing1", new TemplateData(Constants.orderType.getName(orders.getType()))); |
| | | m.put("thing15", new TemplateData(memberName)); |
| | | m.put("phone_number8", new TemplateData(memberPhone)); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: |
| | | Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; |
| | | pageUrl.replace("{id}",orders.getId().toString()); |
| | | wxMsgVO.setPage(pageUrl); |
| | | wxMsgVO.setData(m); |
| | | //用户的openid(要发送给那个用户) |
| | | log.info("微信小程序->微信消息通知 接单通知:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 订单取消业务:{}", JSONObject.toJSONString(responseEntity)); |
| | | log.info("微信小程序->微信消息通知 接单通知:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public void orderUpdMessage(String openid, Orders orders) throws WxErrorException { |
| | | public void orderUpdMessage(String openid, Orders orders){ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | try{ |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 订单变更通知 -> accessToken:{}",accessToken); |
| | | //这里简单起见我们每次都获取最新的access_token(时间开发中,应该在access_token快过期时再重新获取) |
| | |
| | | m.put("thing3", new TemplateData("变更订单日期")); |
| | | //变更后日期:07-23至07-25 |
| | | m.put("thing5", new TemplateData("变更后日期:" +DateUtil.getFomartDate(orders.getStartDate(),"MM-dd") + "至" +DateUtil.getFomartDate(orders.getEndDate(),"MM-dd"))); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: |
| | | Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; |
| | | pageUrl.replace("{id}",orders.getId().toString()); |
| | | wxMsgVO.setPage(pageUrl); |
| | | wxMsgVO.setData(m); |
| | | //用户的openid(要发送给那个用户) |
| | | log.info("微信小程序->微信消息通知 订单变更通知:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 订单变更通知:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public void withdrawalMessage(String openid, WithdrawalOrders withdrawalOrders) throws WxErrorException { |
| | | public void withdrawalMessage(String openid, WithdrawalOrders withdrawalOrders){ |
| | | try{ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 提现成功通知 -> accessToken:{}",accessToken); |
| | |
| | | m.put("amount1", new TemplateData((new BigDecimal(withdrawalOrders.getAmount().toString()).divide(new BigDecimal("100"))).toString())); |
| | | m.put("time3", new TemplateData(DateUtil.getFomartDate(withdrawalOrders.getUpdateTime(),"yyyy.MM.dd HH.mm.ss"))); |
| | | m.put("thing4", new TemplateData("打款成功,请注意查收")); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | wxMsgVO.setPage(balanceUrl); |
| | | wxMsgVO.setData(m); |
| | | //用户的openid(要发送给那个用户) |
| | | log.info("微信小程序->微信消息通知 提现成功通知:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 提现成功通知:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | public void revenueMessage(String openid, Orders orders) throws WxErrorException { |
| | | public void revenueMessage(String openid, Orders orders){ |
| | | try{ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 订单收益通知 -> accessToken:{}",accessToken); |
| | |
| | | m.put("phrase4", new TemplateData("微信支付")); |
| | | m.put("amount6", new TemplateData((new BigDecimal(orders.getReceiveAccount().toString()).divide(new BigDecimal("100")))+"元")); |
| | | m.put("date7", new TemplateData(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd HH:mm:ss"))); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | wxMsgVO.setPage(balanceUrl); |
| | | wxMsgVO.setData(m); |
| | | log.info("微信小程序->微信消息通知 订单收益通知:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | //用户的openid(要发送给那个用户) |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 订单收益通知:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | public void autoDispatchMessage(String openid, Orders orders,BigDecimal distance) throws WxErrorException { |
| | | public void autoDispatchMessage(String openid, Orders orders,double distance){ |
| | | try{ |
| | | RestTemplate restTemplate = new RestTemplate(); |
| | | String accessToken = WxMiniConfig.wxMaService.getAccessToken(); |
| | | log.info("微信小程序->微信消息通知 - 服务派单 -> accessToken:{}",accessToken); |
| | |
| | | m.put("phrase4", new TemplateData("此地距离您"+distance+"公里")); |
| | | m.put("amount28", new TemplateData(orders.getEstimatedAccount().toString())); |
| | | m.put("thing12", new TemplateData("工单将于"+DateUtil.getFomartDate(orders.getStartDate(),"MM-dd")+"开始")); |
| | | //TODO 跳转地址 |
| | | wxMsgVO.setPage(""); |
| | | String pageUrl = Constants.equalsInteger(orders.getType(),Constants.orderType.hyd.getKey())?orderDetailFreight: |
| | | Constants.equalsInteger(orders.getType(),Constants.orderType.scd.getKey())?orderDetailFood:orderDetail; |
| | | pageUrl.replace("{id}",orders.getId().toString()); |
| | | wxMsgVO.setPage(pageUrl); |
| | | wxMsgVO.setData(m); |
| | | log.info("微信小程序->微信消息通知 服务派单:{}", JSONObject.toJSONString(wxMsgVO)); |
| | | //用户的openid(要发送给那个用户) |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.postForEntity(url, wxMsgVO, String.class); |
| | | log.info("微信小程序->微信消息通知 服务派单:{}", JSONObject.toJSONString(responseEntity)); |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | public enum smsContent { |
| | | accept(0, "SMS_491325122","您的{order}订单已被接单!时间:{time1}-{time2},接单方:{name}。"), |
| | | accept(0, "SMS_491325122","您的{order}订单已被接单!时间:{time1}-{time2},可进入小程序联系接单方。"), |
| | | receiveCancel(1, "SMS_491055243","您的{order}订单,时间:{time1}-{time2},已被接单方取消,订单已重新进入接单大厅。"), |
| | | platformCancel(2, "SMS_491375152","您的{order}订单,时间:{time1}-{time2},已由平台取消。如有疑问请联系客服。"), |
| | | agreeUpd(3, "SMS_491190259","接单方已同意您将{order}的订单时间修改为{time1}至{time2}。"), |
| | |
| | | */ |
| | | public static String getCurrDateTime() { |
| | | Timestamp date = new Timestamp(System.currentTimeMillis()); |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | return formatter.format(date); |
| | | } |
| | | public static String getCurrDateTimeShort() { |
| | |
| | | private final static String SING_NAME = "橙桔天下科技"; |
| | | |
| | | |
| | | public void sendSms(int type, String phone, Orders orders, String receiveName, String businessPhone, BigDecimal distance, IdentityInfo identityInfo,CategoryMapper categoryMapper){ |
| | | public void businessSendSms(int type, String phone, Orders orders, BigDecimal distance, |
| | | IdentityInfo identityInfo,CategoryMapper categoryMapper){ |
| | | try{ |
| | | Constants.smsContent smsContent = Constants.smsContent.getSmsContent(type); |
| | | Map<String,Object> tempParam = new HashMap<>(); |
| | | if(smsContent.getName().indexOf("time1")>=Constants.ZERO){ |
| | |
| | | } |
| | | if(smsContent.getName().indexOf("time2")>=Constants.ZERO){ |
| | | tempParam.put("time2", DateUtil.formatDate(orders.getEndDate(),"MM-dd")); |
| | | } |
| | | if(smsContent.getName().indexOf("name")>=Constants.ZERO){ |
| | | tempParam.put("name", receiveName); |
| | | } |
| | | if(smsContent.getName().indexOf("money")>=Constants.ZERO){ |
| | | tempParam.put("money", new BigDecimal(orders.getReceiveAccount().toString()).divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP)+"元"); |
| | |
| | | tempParam.put("authentication", Constants.equalsInteger(identityInfo.getAuthType(),Constants.ZERO)?"个人":identityInfo.getCompanyName()); |
| | | } |
| | | if(smsContent.getName().indexOf("order")>=Constants.ZERO){ |
| | | tempParam.put("order", Constants.orderType.getName(identityInfo.getType()).replace("单","")); |
| | | tempParam.put("oeder", Constants.orderType.getName(identityInfo.getType()).replace("单","")); |
| | | } |
| | | if(smsContent.getName().indexOf("status")>=Constants.ZERO){ |
| | | tempParam.put("status", Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.TWO)?"已通过":"未通过"); |
| | |
| | | tempParam.put("order",order); |
| | | } |
| | | } |
| | | |
| | | if(smsContent.getName().indexOf("authentication")>=Constants.ZERO){ |
| | | if(smsContent.getName().indexOf("distance")>=Constants.ZERO){ |
| | | tempParam.put("distance", distance +"km"); |
| | | } |
| | | AliSmsService.sendSms(phone,smsContent.getCode(), JSONObject.toJSONString(tempParam)); |
| | | }catch (Exception e){ |
| | | log.error("短信发送失败~"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | //请求失败这里会抛ClientException异常 |
| | | SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); |
| | | if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { |
| | | // logger.info(phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse)); |
| | | log.info("短信发送内容:"+phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse)); |
| | | return true; |
| | | } else { |
| | | // logger.error(phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse)); |
| | | log.error("短信发送内容:"+phone + "-" + templateCode + "-" + templateParam + " >>> " + JSON.toJSONString(sendSmsResponse)); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.CategoryMapper; |
| | | import com.doumee.dao.business.IdentityInfoMapper; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.IdentityInfo; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.dto.AuditDTO; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.AliSmsService; |
| | | import com.doumee.service.business.IdentityInfoService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private AliSmsService aliSmsService; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | |
| | | .eq(Member::getId,identityInfo.getMemberId()) |
| | | ); |
| | | |
| | | try{ |
| | | //发送微信通知 |
| | | if(StringUtils.isNotBlank(member.getOpenid())){ |
| | | sendWxMessage.identityInfoMessage(member.getOpenid(),identityInfo); |
| | | } |
| | | }catch (WxErrorException wxErrorException){ |
| | | |
| | | } |
| | | |
| | | |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(Constants.smsContent.authentication.getKey(), |
| | | member.getTelephone(),null,null, |
| | | identityInfo,categoryMapper); |
| | | |
| | | } |
| | | } |
| | |
| | | userCenterVO.setTaskingTotal(Constants.ZERO); |
| | | userCenterVO.setDoneTotal(Constants.ZERO); |
| | | userCenterVO.setReceiveTotal(Constants.ZERO); |
| | | List<Orders> releaseOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getReleaseMemberId,member.getId())); |
| | | List<Orders> releaseOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO) |
| | | .eq(Orders::getReleaseMemberId,member.getId())); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(releaseOrders)){ |
| | | userCenterVO.setReleaseTaskTotal(releaseOrders.size()); |
| | | userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.waitPay.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.accept.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size()); |
| | | userCenterVO.setWaitCommentTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.done.getKey())&&Constants.equalsInteger(i.getCommentStatus(),Constants.ZERO)).collect(Collectors.toList()).size()); |
| | | userCenterVO.setDoingTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setWaitReceiveTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.wait.getKey())).collect(Collectors.toList()).size()); |
| | | } |
| | | List<Orders> acceptOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda().eq(Orders::getDeleted,Constants.ZERO).eq(Orders::getAcceptMemberId,member.getId())); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(acceptOrders)){ |
| | | userCenterVO.setReceiveTotal(acceptOrders.size()); |
| | | userCenterVO.setTaskingTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.accept.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setDoneTotal(releaseOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setTaskingTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.doing.getKey())).collect(Collectors.toList()).size()); |
| | | userCenterVO.setDoneTotal(acceptOrders.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ordersStatus.done.getKey())).collect(Collectors.toList()).size()); |
| | | } |
| | | member.setUserCenterVO(userCenterVO); |
| | | return member; |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.wx.SendWxMessage; |
| | | import com.doumee.config.wx.WxMiniConfig; |
| | | import com.doumee.config.wx.WxMiniUtilService; |
| | | import com.doumee.core.constants.Constants; |
| | |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.dto.*; |
| | | import com.doumee.dao.vo.OrderReleaseVO; |
| | | import com.doumee.service.business.AliSmsService; |
| | | import com.doumee.service.business.OrdersService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 订单信息记录Service实现 |
| | |
| | | @Autowired |
| | | private WxMiniUtilService wxMiniUtilService; |
| | | |
| | | @Autowired |
| | | private SendWxMessage sendWxMessage; |
| | | |
| | | @Autowired |
| | | private AliSmsService aliSmsService; |
| | | |
| | | @Resource |
| | | private RedisTemplate<String,Object> redisTemplate; |
| | | |
| | |
| | | OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); |
| | | Object objects = null; |
| | | this.initVerification(orders); |
| | | Member member = memberMapper.selectById(orders.getMember().getId()); |
| | | if(Objects.isNull(member)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户信息异常"); |
| | | } |
| | | |
| | | orders.setCreateTime(new Date()); |
| | | orders.setUpdateTime(orders.getUpdateTime()); |
| | | orders.setPayStatus(Constants.ZERO); |
| | |
| | | } |
| | | //用餐订单 |
| | | if(Constants.equalsInteger(orders.getType(),Constants.TWO)){ |
| | | orders.setPayAccount(orders.getEstimatedAccount()); |
| | | Long tcje = Long.valueOf(new BigDecimal(orders.getPayAccount().toString()).multiply(orders.getPlatformRata()).intValue()); |
| | | orders.setReceiveAccount(orders.getPayAccount() - tcje); |
| | | orders.setStatus(Constants.ordersStatus.waitPay.getKey()); |
| | | orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); |
| | | orders.setPayAccount(orders.getEstimatedAccount()); |
| | | //唤起支付业务 |
| | | objects = this.getWxPayResponse(orders,orders.getMember().getOpenid()); |
| | | objects = this.getWxPayResponse(orders,member.getOpenid()); |
| | | orderReleaseVO.setObject(objects); |
| | | }else{ |
| | | orders.setStatus(Constants.ordersStatus.wait.getKey()); |
| | | } |
| | | ordersMapper.insert(orders); |
| | | |
| | | orderReleaseVO.setId(orders.getId()); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(orders.getMultifileList())){ |
| | | List<Multifile> multifileList = orders.getMultifileList(); |
| | |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | //更新用户发单量 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" receive_num = ( receive_num + 1 )").eq(Member::getId,orders.getMember().getId())); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" PUBLISH_NUM = ( ifnull(PUBLISH_NUM,0) + 1 )").eq(Member::getId,orders.getMember().getId())); |
| | | |
| | | //创建操作日志 |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.UPLOAD; |
| | |
| | | .set(Orders::getStatus,Constants.ordersStatus.accept.getKey()) |
| | | ); |
| | | |
| | | |
| | | |
| | | //更新接单量 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" RECEIVE_NUM = (ifnull(RECEIVE_NUM,0) + 1 )").eq(Member::getId,member.getId())); |
| | | |
| | | //创建操作日志 |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.RECEIVE; |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),member.getId(),null); |
| | | |
| | | //TODO 微信公众号提醒 已接单提醒 |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,member.getId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | |
| | | if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){ |
| | | //发送微信通知 |
| | | sendWxMessage.acceptMessage(member.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone()); |
| | | } |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(Constants.smsContent.accept.getKey(),member.getTelephone(),orders,null, |
| | | wokerIdentityInfo,categoryMapper); |
| | | |
| | | |
| | | } |
| | |
| | | this.saveOrderLog(model,ordersLog, |
| | | ordersLog.getInfo(),orders.getMember().getId(),null); |
| | | |
| | | //TODO 通知接单人 订单发生变更 |
| | | //通知接单人 订单发生变更 |
| | | Member member = memberMapper.selectById(orders.getAcceptMemberId()); |
| | | //发送微信通知 |
| | | sendWxMessage.orderUpdMessage(member.getOpenid(),orders); |
| | | |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,member.getId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.nonNull(wokerIdentityInfo)){ |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(Constants.smsContent.orderUpd.getKey(),wokerIdentityInfo.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.UPD_DISAGREE; |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),confirmUpdOrderDTO.getMember().getId(),null); |
| | | //TODO 发送不同意变更通知 |
| | | } |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(!Constants.equalsInteger(confirmUpdOrderDTO.getStatus(),Constants.ONE)? |
| | | Constants.smsContent.agreeUpd.getKey():Constants.smsContent.disAgreeUpd.getKey() |
| | | ,orders.getLinkPhone(),null,null, |
| | | null,categoryMapper); |
| | | } |
| | | |
| | | |
| | |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非您的订单无法进行该操作"); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | .set(Orders::getCancelType,Constants.ONE) |
| | | .eq(Orders::getId,orders.getId()) |
| | | ); |
| | | //TODO 发单方取消订单通知接单方 |
| | | |
| | | //减少接单量 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql("receive_num = (receive_num - 1) ").eq(Member::getId,orders.getAcceptMemberId())); |
| | | } |
| | |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),member.getId(),null); |
| | | |
| | | List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ |
| | | List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); |
| | | //发送微信通知 |
| | | sendWxMessage.cancelMessage(openIdList,orders,Constants.ONE); |
| | | } |
| | | |
| | | |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.nonNull(wokerIdentityInfo)){ |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(Constants.smsContent.releaseCancel.getKey(),wokerIdentityInfo.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),member.getId(),null); |
| | | |
| | | //TODO 接单方取消订单通知 |
| | | |
| | | List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ |
| | | List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); |
| | | //发送微信通知 |
| | | sendWxMessage.cancelMessage(openIdList,orders,Constants.TWO); |
| | | } |
| | | //短信通知 |
| | | aliSmsService.businessSendSms(Constants.smsContent.receiveCancel.getKey(),member.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | |
| | | |
| | |
| | | if(!Constants.equalsInteger(orders.getReleaseMemberId(),doneOrderDTO.getMember().getId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非您的订单无法进行该操作"); |
| | | } |
| | | Member payMember = memberMapper.selectById(doneOrderDTO.getMember().getId()); |
| | | if(Objects.isNull(payMember)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户信息异常"); |
| | | } |
| | | |
| | | OrderReleaseVO orderReleaseVO = new OrderReleaseVO(); |
| | | orderReleaseVO.setId(orders.getId()); |
| | | Object object = null; |
| | |
| | | orders.setOutTradeNo(UUID.randomUUID().toString().replace("-","")); |
| | | ordersMapper.updateById(orders); |
| | | //唤起支付业务 |
| | | object = this.getWxPayResponse(orders,doneOrderDTO.getMember().getOpenid()); |
| | | object = this.getWxPayResponse(orders,payMember.getOpenid()); |
| | | orderReleaseVO.setObject(object); |
| | | }else{ |
| | | orders.setStatus(Constants.ordersStatus.done.getKey()); |
| | |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.DONE; |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),doneOrderDTO.getMember().getId(),null); |
| | | |
| | | sendWxMessage.revenueMessage(member.getOpenid(),orders); |
| | | |
| | | //短信通知接单方 |
| | | if(Objects.nonNull(orders.getAcceptMemberId())){ |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.nonNull(wokerIdentityInfo)){ |
| | | aliSmsService.businessSendSms(Constants.smsContent.pay.getKey(),wokerIdentityInfo.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | } |
| | | } |
| | | return orderReleaseVO; |
| | | } |
| | |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.SYSTEM_CANCEL; |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),null,loginUserInfo.getId()); |
| | | |
| | | List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() |
| | | .and(i->i.eq(Member::getId,orders.getReleaseMemberId()).or().eq(Member::getId,orders.getAcceptMemberId())) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(members)){ |
| | | List<String> openIdList = members.stream().map(i->i.getOpenid()).collect(Collectors.toList()); |
| | | //发送微信通知 |
| | | sendWxMessage.cancelMessage(openIdList,orders,Constants.ZERO); |
| | | } |
| | | //短信通知发单方 |
| | | aliSmsService.businessSendSms(Constants.smsContent.platformCancel.getKey(),orders.getLinkPhone(),orders,null, |
| | | null,categoryMapper); |
| | | //短信通知接单方 |
| | | if(Objects.nonNull(orders.getAcceptMemberId())){ |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.nonNull(wokerIdentityInfo)){ |
| | | aliSmsService.businessSendSms(Constants.smsContent.platformCancel2.getKey(),wokerIdentityInfo.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | .eq(Orders::getId,orders.getId()) |
| | | ); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda() |
| | | .setSql(" score = ( total_score +" + commentDTO.getLevel() + " ) / (score_order_num + 1 )") |
| | | .setSql(" total_score = total_score +" + commentDTO.getLevel()) |
| | | .setSql(" score_order_num = score_order_num + 1 " ).eq(Member::getId,orders.getAcceptMemberId()) |
| | | .setSql(" score = ( ifnull(total_score,0) +" + commentDTO.getLevel() + " ) / (ifnull(score_order_num,0) + 1 )") |
| | | .setSql(" total_score = ifnull(total_score,0) +" + commentDTO.getLevel()) |
| | | .setSql(" score_order_num = ifnull(score_order_num,0) + 1 " ) |
| | | .eq(Member::getId,orders.getAcceptMemberId()) |
| | | ); |
| | | //日志存储 |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.COMMENT; |
| | |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),orders.getReleaseMemberId(),null); |
| | | |
| | | //TODO 通知接单方 款项已到账 |
| | | // 通知接单方 款项已到账 |
| | | sendWxMessage.revenueMessage(member.getOpenid(),orders); |
| | | |
| | | //短信通知接单方 |
| | | if(Objects.nonNull(orders.getAcceptMemberId())){ |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,orders.getAcceptMemberId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | if(Objects.nonNull(wokerIdentityInfo)){ |
| | | aliSmsService.businessSendSms(Constants.smsContent.pay.getKey(),wokerIdentityInfo.getTelephone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | if(CollectionUtils.isEmpty(memberList)){ |
| | | continue; |
| | | } |
| | | |
| | | Member member = memberList.get(Constants.ZERO); |
| | | Member releaseMember = memberMapper.selectById(orders.getReleaseMemberId()); |
| | | //自动派单 |
| | | Orders model = ordersMapper.selectById(orders.getStatus()); |
| | | if(!Constants.equalsInteger(model.getStatus(),Constants.ONE)){ |
| | |
| | | ); |
| | | |
| | | //更新接单量 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (publish_num + 1 )").eq(Member::getId,member.getId())); |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" publish_num = (ifnull(publish_num,0) + 1 )").eq(Member::getId,member.getId())); |
| | | |
| | | //创建操作日志 |
| | | Constants.OrdersLog ordersLog = Constants.OrdersLog.AUTO; |
| | | this.saveOrderLog(orders,ordersLog, |
| | | ordersLog.getInfo(),member.getId(),null); |
| | | |
| | | IdentityInfo wokerIdentityInfo = identityInfoMapper.selectOne(new QueryWrapper<IdentityInfo>().lambda() |
| | | .eq(IdentityInfo::getMemberId,member.getId()) |
| | | .eq(IdentityInfo::getType,orders.getType()) |
| | | .eq(IdentityInfo::getAuditStatus,Constants.TWO) |
| | | .last("limit 1") |
| | | ); |
| | | //通知发单方 |
| | | if(org.apache.commons.lang3.StringUtils.isNotBlank(releaseMember.getOpenid())&&Objects.nonNull(wokerIdentityInfo)){ |
| | | //发送微信通知 |
| | | sendWxMessage.acceptMessage(releaseMember.getOpenid(),orders,wokerIdentityInfo.getLinkName(),wokerIdentityInfo.getTelephone()); |
| | | } |
| | | |
| | | //通知接单方 |
| | | sendWxMessage.autoDispatchMessage(member.getOpenid(),orders,GeoUtils.haversineDistance( |
| | | orders.getLgt().doubleValue(), orders.getLat().doubleValue(), |
| | | member.getDriverIdentityModel().getLgt().doubleValue(), |
| | | member.getDriverIdentityModel().getLat().doubleValue() |
| | | )); |
| | | |
| | | aliSmsService.businessSendSms(Constants.smsContent.dispatch.getKey(),orders.getLinkPhone(),orders,null, |
| | | null,categoryMapper); |
| | | } |
| | | } |
| | | |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.config.wx.SendWxMessage; |
| | | import com.doumee.config.wx.TransferToUser; |
| | | import com.doumee.config.wx.WXPayUtility; |
| | | import com.doumee.config.wx.WxMiniConfig; |
| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.MemberRevenueMapper; |
| | |
| | | |
| | | @Autowired |
| | | private MemberRevenueMapper memberRevenueMapper; |
| | | |
| | | @Autowired |
| | | private SendWxMessage sendWxMessage; |
| | | |
| | | @Override |
| | | public Integer create(WithdrawalOrders withdrawalOrders) { |
| | |
| | | |
| | | @Override |
| | | public void transferSuccess(String outBillNo,Boolean isSuccess){ |
| | | //转账成功 |
| | | if(isSuccess){ |
| | | withdrawalOrdersMapper.update(new UpdateWrapper<WithdrawalOrders>().lambda() |
| | | .set(WithdrawalOrders::getStatus,Constants.ONE) |
| | | .eq(WithdrawalOrders::getOutBillNo,outBillNo) |
| | | ); |
| | | }else { |
| | | WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectOne(new QueryWrapper<WithdrawalOrders>().lambda() |
| | | .eq(WithdrawalOrders::getOutBillNo,outBillNo).last("limit 1")); |
| | | if(Objects.isNull(withdrawalOrders)){ |
| | | return; |
| | | } |
| | | Member member = memberMapper.selectById(withdrawalOrders.getMemberId()); |
| | | if(Objects.isNull(member)){ |
| | | return; |
| | | } |
| | | if(Objects.nonNull(withdrawalOrders)){ |
| | | //转账成功 |
| | | if(isSuccess){ |
| | | withdrawalOrdersMapper.update(new UpdateWrapper<WithdrawalOrders>().lambda() |
| | | .set(WithdrawalOrders::getStatus,Constants.ONE) |
| | | .set(WithdrawalOrders::getUpdateTime, DateUtil.getCurrDateTime()) |
| | | .eq(WithdrawalOrders::getOutBillNo,outBillNo) |
| | | ); |
| | | withdrawalOrders.setUpdateTime(new Date()); |
| | | sendWxMessage.withdrawalMessage(member.getOpenid(),withdrawalOrders); |
| | | }else { |
| | | //更新用户余额 |
| | | memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT + " + withdrawalOrders.getAmount() ).eq(Member::getId,withdrawalOrders.getMemberId())); |
| | | |
| | | //存储流水记录 |
| | | MemberRevenue memberRevenue = new MemberRevenue(); |
| | | memberRevenue.setCreateTime(new Date()); |
| | |
| | | memberRevenue.setDeleted(Constants.ZERO); |
| | | memberRevenue.setStatus(Constants.ZERO); |
| | | memberRevenueMapper.insert(memberRevenue); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void cancelTransfer(TransferToUser.CancelTransferRequest request){ |
| | | if(Objects.isNull(request) |
| | |
| | | subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #小程序秘钥 |
| | | #子商户------------end---- |
| | | # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM |
| | | typeId: gybike |
| | | typeId: jinkuai |
| | | |
| | | |
| | | #wx: |
| | |
| | | spring: |
| | | # 数据源配置 |
| | | datasource: |
| | | url: jdbc:mysql://aec60a91d1ff4f79844bdaa84c7bfe33in01.internal.cn-east-3.mysql.rds.myhuaweicloud.com:3306/jinkuai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai |
| | | url: jdbc:mysql://b66cc1a382964a6a9d46a522f2dfe672in01.internal.cn-south-1.mysql.rds.myhuaweicloud.com:3306/jinkuai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai |
| | | username: root |
| | | password: Jinkuai!@#$%^ |
| | | driver-class-name: com.mysql.cj.jdbc.Driver |
| | |
| | | basic: |
| | | enable: true |
| | | username: admin |
| | | password: |
| | | password: doumee@168 |
| | | ########################微信支付相关配置######################## |
| | | wx: |
| | | pay: |
| | | #服务商---------start------- |
| | | appId: wx48fd8faa35cc8277 |
| | | mchId: 1661770902 |
| | | apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT |
| | | serialNumer: 368B835A194384FD583B83B77977B84127D2F655 |
| | | mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S |
| | | # notifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxPayNotify |
| | | # refundNotifyUrl: http://xiaopiqiu3.natapp1.cc/api/wxRefundNotify |
| | | notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify |
| | | refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify |
| | | keyPath: /usr/local/aliConfig/bike/apiclient_cert.p12 |
| | | privateCertPath: /usr/local/aliConfig/bike/apiclient_cert.pem |
| | | privateKeyPath: /usr/local/aliConfig/bike/apiclient_key.pem |
| | | # keyPath: d://apiclient_cert.p12 |
| | | # privateCertPath: d://apiclient_cert.pem |
| | | # privateKeyPath: d://apiclient_key.pem |
| | | #服务商---------start------- 参数详解地址 https://pay.weixin.qq.com/doc/v3/partner/4013080340 |
| | | mchId: 1700071922 #服务商在微信支付侧的唯一身份标识 |
| | | appId: wx6cc1087ca79db7f6 #服务商在微信开放平台(移动应用)或公众平台(公众号/小程序)上申请的一个唯一标识 |
| | | apiV3Key: 0a056faa107c2b2944b9d6a9aa6d4142 #7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB |
| | | serialNumer: 6696086F6EFB8D6A4F821BD47DDBAF75C3BC1209 #38495CE0137D90E4DC4F64F7ECDE035A35470BE3 #服务商证书序列号 |
| | | payPublicKeyId: PUB_KEY_ID_0117000719222024112700219100000508 #商户/平台支付公钥id |
| | | #mchKey: W97N53Q71326D6JZ2E9HY5M4VT4BAC8S |
| | | notifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wxPayNotify |
| | | refundNotifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wxRefundNotify |
| | | keyPath: /usr/local/jars/payFile/apiclient_cert.p12 |
| | | privateCertPath: /usr/local/jars/payFile/apiclient_cert.pem |
| | | privateKeyPath: /usr/local/jars/payFile/apiclient_key.pem |
| | | pubKeyPath: /usr/local/jars/payFile/pub_key.pem #商户支付公钥 |
| | | |
| | | #服务商-------------end--- |
| | | |
| | | #商户信息 |
| | | wechatSerialNumer: 12C0F0DD0F3D2B565B45586D3FEA225EBF723BEC |
| | | wechatPayPublicKeyId: PUB_KEY_ID_0117233260692025072500181939000603 #商户/平台支付公钥id |
| | | wechatPubKeyPath: /usr/local/jars/payFile/shanghu/pub_key.pem #商户支付公钥 |
| | | wechatPrivateKeyPath: /usr/local/jars/payFile/shanghu/apiclient_key.pem #商户私钥 |
| | | wechatNotifyUrl: https://jinkuai.832smartfarm.com/jinkuai_admin/web/wechat/transferNotify #商户转账回调地址 |
| | | wechatApiV3Key: 7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB |
| | | |
| | | |
| | | existsSub: 1 |
| | | appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 |
| | | appSecret: |
| | | #子商户------------start---- |
| | | subAppId: wxcd2b89fd2ff065f8 #wxcd2b89fd2ff065f8 |
| | | subAppSecret: 3462fa186da7cb06c544df8d8664b63a #3336812504c830b1c3c5243f9ece407a |
| | | subMchId: 1661772003 |
| | | subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS |
| | | subMchId: 1723326069 #子商户号 |
| | | subAppId: wx332441ae5b12be7d #小程序id |
| | | subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #小程序秘钥 |
| | | #子商户------------end---- |
| | | # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM |
| | | typeId: gybike |
| | | typeId: jinkuai |
| | | |
| | | upload: |
| | | type: blob |
| | |
| | | subAppSecret: add86d6406f5c14501ac5bbb1a60e004 #小程序秘钥 |
| | | #子商户------------end---- |
| | | # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM |
| | | typeId: gybike |
| | | typeId: jinkuai |
| | | |
| | | upload: |
| | | type: blob |
| | |
| | | |
| | | spring: |
| | | profiles: |
| | | active: test |
| | | active: pro |
| | | # JSON返回配置 |
| | | jackson: |
| | | # 默认时区 |