diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AgentDevController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AgentDevController.java index 16a555ca2..09a69a051 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AgentDevController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AgentDevController.java @@ -2,6 +2,7 @@ package com.jsowell.api.uniapp; import com.alibaba.fastjson2.JSON; import com.google.common.collect.ImmutableMap; +import com.jsowell.common.UserAgentUtils; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.response.RestApiResponse; @@ -15,6 +16,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import java.util.List; /** @@ -305,10 +307,12 @@ public class AgentDevController extends BaseController { * @return */ @PostMapping("/wechatLogin") - public RestApiResponse wechatLogin(@RequestBody AgentWechatLoginDTO dto) { + public RestApiResponse wechatLogin(HttpServletRequest request, @RequestBody AgentWechatLoginDTO dto) { logger.info("第三方平台微信一键登录 params:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { + // 设置请求来源 + dto.setRequestSource(UserAgentUtils.determineRequestSource(request)); String memberToken = agentDevService.wechatLogin(dto); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); } catch (Exception e) { diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/MemberController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/MemberController.java index 65bba0387..5942111f3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/MemberController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/MemberController.java @@ -3,6 +3,7 @@ package com.jsowell.api.uniapp; import com.alibaba.fastjson2.JSON; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; +import com.jsowell.common.UserAgentUtils; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.page.PageResponse; @@ -87,12 +88,15 @@ public class MemberController extends BaseController { if (StringUtils.isNotBlank(appId)) { String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); if (StringUtils.isNotBlank(firstLevelMerchantId)) { - dto.setMerchantId(firstLevelMerchantId); + dto.setFirstLevelMerchantId(firstLevelMerchantId); } } + // 设置请求来源 + dto.setRequestSource(UserAgentUtils.determineRequestSource(request)); + // 执行登录(查这个手机号在后台有没有数据,如果没有就静默注册) - String memberToken = memberService.memberRegisterAndLogin(dto); + String memberToken = memberService.memberRegisterAndLoginBySMS(dto); // 返回前端成功 Map map = Maps.newHashMap(); @@ -118,8 +122,11 @@ public class MemberController extends BaseController { RestApiResponse response = null; try { // 获取小程序appid - String appId = request.getHeader("appId"); - dto.setAppId(appId); + dto.setAppId(request.getHeader("appId")); + + // 设置请求来源 + dto.setRequestSource(UserAgentUtils.determineRequestSource(request)); + String memberToken = memberService.wechatLogin(dto); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); } catch (Exception e) { @@ -139,8 +146,11 @@ public class MemberController extends BaseController { RestApiResponse response = null; try { // 获取小程序appid - String appId = request.getHeader("appId"); - dto.setAppId(appId); + dto.setAppId(request.getHeader("appId")); + + // 设置请求来源 + dto.setRequestSource(UserAgentUtils.determineRequestSource(request)); + String memberToken = memberService.alipayLogin(dto); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); } catch (Exception e) { diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java index 910f6422a..240c1a079 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java @@ -70,10 +70,10 @@ public class OrderController extends BaseController { String orderCode = orderService.generateOrderV2(dto); response = new RestApiResponse<>(ImmutableMap.of("orderCode", orderCode)); } catch (BusinessException e) { - logger.error("生成订单 warn", e); + logger.error("生成订单 warn, param:{}", JSON.toJSONString(dto), e); response = new RestApiResponse<>(e.getCode(), e.getMessage()); } catch (Exception e) { - logger.error("生成订单 error", e); + logger.error("生成订单 error, param:{}", JSON.toJSONString(dto), e); response = new RestApiResponse<>(ReturnCodeEnum.CODE_GENERATE_ORDER_ERROR); } logger.info("生成订单 result:{}", JSON.toJSONString(response)); diff --git a/jsowell-admin/src/main/java/com/jsowell/service/AgentDevService.java b/jsowell-admin/src/main/java/com/jsowell/service/AgentDevService.java index 8eeb7b5b9..8332b6b65 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/AgentDevService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/AgentDevService.java @@ -16,6 +16,7 @@ import com.jsowell.common.util.wxplatform.WXXmlToMapUtil; import com.jsowell.pile.domain.agentDev.AuditItem; import com.jsowell.pile.domain.agentDev.CategoryInfo; import com.jsowell.pile.domain.agentDev.UserInfoSetting; +import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.agentDev.*; import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.vo.agentDev.AuthInfoVO; @@ -639,7 +640,13 @@ public class AgentDevService { String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); logger.info("微信一键登录 获取merchantId:{}", firstLevelMerchantId); // 下面方法有判断 merchantId 是否为空,因此可直接传值 - return memberService.memberRegisterAndLogin(phoneNumber, firstLevelMerchantId, openId); + MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder() + .openId(openId) + .firstLevelMerchantId(firstLevelMerchantId) + .mobileNumber(phoneNumber) + .requestSource(dto.getRequestSource()) + .build(); + return memberService.memberRegisterAndLogin(loginDTO); // 其他一级运营商,微信一键登录 } /** diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index d352220a6..43c43b28c 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -21,6 +21,7 @@ import com.jsowell.common.constant.UserConstants; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.TitleTypeEnum; +import com.jsowell.common.enums.adapay.AdapayPayChannelEnum; import com.jsowell.common.enums.adapay.MerchantDelayModeEnum; import com.jsowell.common.enums.uniapp.BalanceChangesEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; @@ -132,19 +133,21 @@ public class MemberService { * @param dto * @return */ - public String memberRegisterAndLogin(MemberRegisterAndLoginDTO dto) { + public String memberRegisterAndLoginBySMS(MemberRegisterAndLoginDTO dto) { // 校验短信验证码 两种情况不能通过校验,1-验证码错误;2-超时 验证码10分钟有效 checkVerificationCode(dto); - return memberRegisterAndLogin(dto.getMobileNumber(), dto.getMerchantId(), dto.getOpenId()); + return memberRegisterAndLogin(dto); // 短信验证码登录 } /** * 公共登录注册方法 - * @param phoneNumber 手机号 - * @param firstLevelMerchantId 商户id * @return token返给前端 */ - protected String memberRegisterAndLogin(String phoneNumber, String firstLevelMerchantId, String openId) { + protected String memberRegisterAndLogin(MemberRegisterAndLoginDTO dto) { + String phoneNumber = dto.getMobileNumber(); + String firstLevelMerchantId = dto.getFirstLevelMerchantId(); + String openId = dto.getOpenId(); + log.info("公共登录注册方法, phoneNumber:{}, firstLevelMerchantId:{}, openId:{}", phoneNumber, firstLevelMerchantId, openId); if (StringUtils.isBlank(phoneNumber)) { throw new BusinessException(ReturnCodeEnum.CODE_GET_MOBILE_NUMBER_BY_CODE_ERROR); @@ -154,9 +157,10 @@ public class MemberService { } // 2024年6月11日15点37分 支付宝没有openid,改为不校验openid - // if (StringUtils.isBlank(openId)) { - // throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR); - // } + // 2024年6月14日17点03分,请求来源为微信,校验openId + if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && StringUtils.isBlank(openId)) { + throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR); + } // 查询手机号码是否注册过 MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId); @@ -169,7 +173,7 @@ public class MemberService { memberBasicInfo.setNickName("会员" + memberId); memberBasicInfo.setMobileNumber(phoneNumber); memberBasicInfo.setMerchantId(Long.valueOf(firstLevelMerchantId)); - if (StringUtils.isBlank(openId)) { + if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && StringUtils.isNotBlank(openId)) { memberBasicInfo.setOpenId(openId); } @@ -186,7 +190,7 @@ public class MemberService { } transactionService.createMember(memberTransactionDTO); } else { - if (!StringUtils.equals(memberBasicInfo.getOpenId(), openId)) { + if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && !StringUtils.equals(memberBasicInfo.getOpenId(), openId)) { // openId变化就更新 memberBasicInfo.setOpenId(openId); memberBasicInfoService.updateMemberBasicInfo(memberBasicInfo); @@ -229,7 +233,13 @@ public class MemberService { // 根据appid查询merchantId String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(dto.getAppId()); // 查询手机号码是否注册过 - return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, openId); + MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder() + .openId(openId) + .firstLevelMerchantId(firstLevelMerchantId) + .mobileNumber(mobileNumber) + .requestSource(dto.getRequestSource()) + .build(); + return memberRegisterAndLogin(loginDTO); // 微信小程序一键登录 } public String alipayLogin(AlipayLoginDTO dto) throws Exception { @@ -242,7 +252,12 @@ public class MemberService { firstLevelMerchantId = "1"; // 查询手机号码是否注册过 - return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, ""); + MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder() + .requestSource(dto.getRequestSource()) + .firstLevelMerchantId(firstLevelMerchantId) + .mobileNumber(mobileNumber) + .build(); + return memberRegisterAndLogin(loginDTO); // 支付宝小程序一键登录 } /** diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/index/indexController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/index/indexController.java index 98cb5a951..30f2604f8 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/index/indexController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/index/indexController.java @@ -39,7 +39,7 @@ public class indexController extends BaseController { IndexGeneralSituationVO generalSituation = pileBasicInfoService.getGeneralSituation(dto); response = new RestApiResponse<>(generalSituation); }catch (Exception e) { - logger.error("首页数据查询错误:{}", e.getMessage()); + logger.error("首页数据查询错误", e); response = new RestApiResponse<>("00200001", "首页基础数据查询错误"); } logger.info("首页数据查询 result:{}", JSON.toJSONString(response)); diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index d293f2a25..4d341cffb 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -264,11 +264,11 @@ public class SpringBootTestController { @Test public void createBalancePaymentRequestTest() { - String outMemberId = "ACM29104861"; + String outMemberId = "ACM40782726"; String inMemberId = "0"; - String transAmt = "126.55"; + String transAmt = "124.72"; String title = "提取余额到自己账户"; - String desc = "2024年6月12日14点14分,售后需求:客户需要重新添加结算账户,原账户余额放弃提取"; + String desc = "2024年6月14日14点15分,售后需求:客户需要重新添加结算账户,原账户余额放弃提取"; String wechatAppId = wechatAppId1; adapayService.createBalancePaymentRequest(outMemberId, inMemberId, transAmt, title, desc, wechatAppId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/AlipayLoginDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/AlipayLoginDTO.java index 825a91649..f44a01bc9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/AlipayLoginDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/AlipayLoginDTO.java @@ -13,4 +13,9 @@ public class AlipayLoginDTO { * 小程序appId */ private String appId; + + /** + * 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum} + */ + private String requestSource; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberRegisterAndLoginDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberRegisterAndLoginDTO.java index 4d3753d57..0855c2079 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberRegisterAndLoginDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberRegisterAndLoginDTO.java @@ -26,12 +26,17 @@ public class MemberRegisterAndLoginDTO { private String appId; /** - * 运营商id + * 一级运营商id */ - private String merchantId; + private String firstLevelMerchantId; /** * 微信用户openId */ private String openId; + + /** + * 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum} + */ + private String requestSource; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/WechatLoginDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/WechatLoginDTO.java index fdce940d0..9a49c3241 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/WechatLoginDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/WechatLoginDTO.java @@ -21,4 +21,9 @@ public class WechatLoginDTO { * 用来获取openId的Code */ private String openIdCode; + + /** + * 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum} + */ + private String requestSource; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/agentDev/AgentWechatLoginDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/agentDev/AgentWechatLoginDTO.java index d79763823..cdfa31e53 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/agentDev/AgentWechatLoginDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/agentDev/AgentWechatLoginDTO.java @@ -25,5 +25,8 @@ public class AgentWechatLoginDTO { */ private String openIdCode; - + /** + * 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum} + */ + private String requestSource; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 6c0a36310..c2852b63c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -1990,7 +1990,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { // return orderBasicInfoMapper.getIndexOrderInfo(dto); List voList = orderBasicInfoMapper.getIndexOrderInfoV2(dto); - Map> map = voList.stream().collect(Collectors.groupingBy(IndexOrderInfoVO::getDate)); List resultList = Lists.newArrayList(); diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 0e6f662cd..17add196e 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -2701,7 +2701,8 @@ use_electricity AS totalElectricity, total_amount as totalOrderAmount from settle_order_report - where date(trade_date) >= DATE_SUB(CURDATE(), INTERVAL 30 day) + where del_flag = '0' + and date(trade_date) >= DATE_SUB(CURDATE(), INTERVAL 30 day) and station_id = #{dto.stationId,jdbcType=VARCHAR} diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml index cb89a06dc..bf78deaf9 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml @@ -381,9 +381,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"