This commit is contained in:
Lemon
2024-06-17 08:47:06 +08:00
14 changed files with 88 additions and 34 deletions

View File

@@ -2,6 +2,7 @@ package com.jsowell.api.uniapp;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.jsowell.common.UserAgentUtils;
import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.response.RestApiResponse;
@@ -15,6 +16,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
/** /**
@@ -305,10 +307,12 @@ public class AgentDevController extends BaseController {
* @return * @return
*/ */
@PostMapping("/wechatLogin") @PostMapping("/wechatLogin")
public RestApiResponse<?> wechatLogin(@RequestBody AgentWechatLoginDTO dto) { public RestApiResponse<?> wechatLogin(HttpServletRequest request, @RequestBody AgentWechatLoginDTO dto) {
logger.info("第三方平台微信一键登录 params:{}", JSON.toJSONString(dto)); logger.info("第三方平台微信一键登录 params:{}", JSON.toJSONString(dto));
RestApiResponse<?> response = null; RestApiResponse<?> response = null;
try { try {
// 设置请求来源
dto.setRequestSource(UserAgentUtils.determineRequestSource(request));
String memberToken = agentDevService.wechatLogin(dto); String memberToken = agentDevService.wechatLogin(dto);
response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken));
} catch (Exception e) { } catch (Exception e) {

View File

@@ -3,6 +3,7 @@ package com.jsowell.api.uniapp;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.jsowell.common.UserAgentUtils;
import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.page.PageResponse;
@@ -87,12 +88,15 @@ public class MemberController extends BaseController {
if (StringUtils.isNotBlank(appId)) { if (StringUtils.isNotBlank(appId)) {
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId);
if (StringUtils.isNotBlank(firstLevelMerchantId)) { 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<String, String> map = Maps.newHashMap(); Map<String, String> map = Maps.newHashMap();
@@ -118,8 +122,11 @@ public class MemberController extends BaseController {
RestApiResponse<?> response = null; RestApiResponse<?> response = null;
try { try {
// 获取小程序appid // 获取小程序appid
String appId = request.getHeader("appId"); dto.setAppId(request.getHeader("appId"));
dto.setAppId(appId);
// 设置请求来源
dto.setRequestSource(UserAgentUtils.determineRequestSource(request));
String memberToken = memberService.wechatLogin(dto); String memberToken = memberService.wechatLogin(dto);
response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken));
} catch (Exception e) { } catch (Exception e) {
@@ -139,8 +146,11 @@ public class MemberController extends BaseController {
RestApiResponse<?> response = null; RestApiResponse<?> response = null;
try { try {
// 获取小程序appid // 获取小程序appid
String appId = request.getHeader("appId"); dto.setAppId(request.getHeader("appId"));
dto.setAppId(appId);
// 设置请求来源
dto.setRequestSource(UserAgentUtils.determineRequestSource(request));
String memberToken = memberService.alipayLogin(dto); String memberToken = memberService.alipayLogin(dto);
response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken)); response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken));
} catch (Exception e) { } catch (Exception e) {

View File

@@ -70,10 +70,10 @@ public class OrderController extends BaseController {
String orderCode = orderService.generateOrderV2(dto); String orderCode = orderService.generateOrderV2(dto);
response = new RestApiResponse<>(ImmutableMap.of("orderCode", orderCode)); response = new RestApiResponse<>(ImmutableMap.of("orderCode", orderCode));
} catch (BusinessException e) { } catch (BusinessException e) {
logger.error("生成订单 warn", e); logger.error("生成订单 warn, param:{}", JSON.toJSONString(dto), e);
response = new RestApiResponse<>(e.getCode(), e.getMessage()); response = new RestApiResponse<>(e.getCode(), e.getMessage());
} catch (Exception e) { } catch (Exception e) {
logger.error("生成订单 error", e); logger.error("生成订单 error, param:{}", JSON.toJSONString(dto), e);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_GENERATE_ORDER_ERROR); response = new RestApiResponse<>(ReturnCodeEnum.CODE_GENERATE_ORDER_ERROR);
} }
logger.info("生成订单 result:{}", JSON.toJSONString(response)); logger.info("生成订单 result:{}", JSON.toJSONString(response));

View File

@@ -16,6 +16,7 @@ import com.jsowell.common.util.wxplatform.WXXmlToMapUtil;
import com.jsowell.pile.domain.agentDev.AuditItem; import com.jsowell.pile.domain.agentDev.AuditItem;
import com.jsowell.pile.domain.agentDev.CategoryInfo; import com.jsowell.pile.domain.agentDev.CategoryInfo;
import com.jsowell.pile.domain.agentDev.UserInfoSetting; import com.jsowell.pile.domain.agentDev.UserInfoSetting;
import com.jsowell.pile.dto.MemberRegisterAndLoginDTO;
import com.jsowell.pile.dto.agentDev.*; import com.jsowell.pile.dto.agentDev.*;
import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.service.PileMerchantInfoService;
import com.jsowell.pile.vo.agentDev.AuthInfoVO; import com.jsowell.pile.vo.agentDev.AuthInfoVO;
@@ -639,7 +640,13 @@ public class AgentDevService {
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId);
logger.info("微信一键登录 获取merchantId:{}", firstLevelMerchantId); logger.info("微信一键登录 获取merchantId:{}", firstLevelMerchantId);
// 下面方法有判断 merchantId 是否为空,因此可直接传值 // 下面方法有判断 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); // 其他一级运营商,微信一键登录
} }
/** /**

View File

@@ -21,6 +21,7 @@ import com.jsowell.common.constant.UserConstants;
import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.TitleTypeEnum; 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.adapay.MerchantDelayModeEnum;
import com.jsowell.common.enums.uniapp.BalanceChangesEnum; import com.jsowell.common.enums.uniapp.BalanceChangesEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum;
@@ -132,19 +133,21 @@ public class MemberService {
* @param dto * @param dto
* @return * @return
*/ */
public String memberRegisterAndLogin(MemberRegisterAndLoginDTO dto) { public String memberRegisterAndLoginBySMS(MemberRegisterAndLoginDTO dto) {
// 校验短信验证码 两种情况不能通过校验1-验证码错误2-超时 验证码10分钟有效 // 校验短信验证码 两种情况不能通过校验1-验证码错误2-超时 验证码10分钟有效
checkVerificationCode(dto); checkVerificationCode(dto);
return memberRegisterAndLogin(dto.getMobileNumber(), dto.getMerchantId(), dto.getOpenId()); return memberRegisterAndLogin(dto); // 短信验证码登录
} }
/** /**
* 公共登录注册方法 * 公共登录注册方法
* @param phoneNumber 手机号
* @param firstLevelMerchantId 商户id
* @return token返给前端 * @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); log.info("公共登录注册方法, phoneNumber:{}, firstLevelMerchantId:{}, openId:{}", phoneNumber, firstLevelMerchantId, openId);
if (StringUtils.isBlank(phoneNumber)) { if (StringUtils.isBlank(phoneNumber)) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_MOBILE_NUMBER_BY_CODE_ERROR); 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 // 2024年6月11日15点37分 支付宝没有openid改为不校验openid
// if (StringUtils.isBlank(openId)) { // 2024年6月14日17点03分请求来源为微信校验openId
// throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR); 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); MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId);
@@ -169,7 +173,7 @@ public class MemberService {
memberBasicInfo.setNickName("会员" + memberId); memberBasicInfo.setNickName("会员" + memberId);
memberBasicInfo.setMobileNumber(phoneNumber); memberBasicInfo.setMobileNumber(phoneNumber);
memberBasicInfo.setMerchantId(Long.valueOf(firstLevelMerchantId)); memberBasicInfo.setMerchantId(Long.valueOf(firstLevelMerchantId));
if (StringUtils.isBlank(openId)) { if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && StringUtils.isNotBlank(openId)) {
memberBasicInfo.setOpenId(openId); memberBasicInfo.setOpenId(openId);
} }
@@ -186,7 +190,7 @@ public class MemberService {
} }
transactionService.createMember(memberTransactionDTO); transactionService.createMember(memberTransactionDTO);
} else { } else {
if (!StringUtils.equals(memberBasicInfo.getOpenId(), openId)) { if (AdapayPayChannelEnum.WX_LITE.getValue().equals(dto.getRequestSource()) && !StringUtils.equals(memberBasicInfo.getOpenId(), openId)) {
// openId变化就更新 // openId变化就更新
memberBasicInfo.setOpenId(openId); memberBasicInfo.setOpenId(openId);
memberBasicInfoService.updateMemberBasicInfo(memberBasicInfo); memberBasicInfoService.updateMemberBasicInfo(memberBasicInfo);
@@ -229,7 +233,13 @@ public class MemberService {
// 根据appid查询merchantId // 根据appid查询merchantId
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(dto.getAppId()); 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 { public String alipayLogin(AlipayLoginDTO dto) throws Exception {
@@ -242,7 +252,12 @@ public class MemberService {
firstLevelMerchantId = "1"; firstLevelMerchantId = "1";
// 查询手机号码是否注册过 // 查询手机号码是否注册过
return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, ""); MemberRegisterAndLoginDTO loginDTO = MemberRegisterAndLoginDTO.builder()
.requestSource(dto.getRequestSource())
.firstLevelMerchantId(firstLevelMerchantId)
.mobileNumber(mobileNumber)
.build();
return memberRegisterAndLogin(loginDTO); // 支付宝小程序一键登录
} }
/** /**

View File

@@ -39,7 +39,7 @@ public class indexController extends BaseController {
IndexGeneralSituationVO generalSituation = pileBasicInfoService.getGeneralSituation(dto); IndexGeneralSituationVO generalSituation = pileBasicInfoService.getGeneralSituation(dto);
response = new RestApiResponse<>(generalSituation); response = new RestApiResponse<>(generalSituation);
}catch (Exception e) { }catch (Exception e) {
logger.error("首页数据查询错误:{}", e.getMessage()); logger.error("首页数据查询错误", e);
response = new RestApiResponse<>("00200001", "首页基础数据查询错误"); response = new RestApiResponse<>("00200001", "首页基础数据查询错误");
} }
logger.info("首页数据查询 result:{}", JSON.toJSONString(response)); logger.info("首页数据查询 result:{}", JSON.toJSONString(response));

View File

@@ -264,11 +264,11 @@ public class SpringBootTestController {
@Test @Test
public void createBalancePaymentRequestTest() { public void createBalancePaymentRequestTest() {
String outMemberId = "ACM29104861"; String outMemberId = "ACM40782726";
String inMemberId = "0"; String inMemberId = "0";
String transAmt = "126.55"; String transAmt = "124.72";
String title = "提取余额到自己账户"; String title = "提取余额到自己账户";
String desc = "2024年6月12日14点14分,售后需求:客户需要重新添加结算账户,原账户余额放弃提取"; String desc = "2024年6月14日14点15分,售后需求:客户需要重新添加结算账户,原账户余额放弃提取";
String wechatAppId = wechatAppId1; String wechatAppId = wechatAppId1;
adapayService.createBalancePaymentRequest(outMemberId, inMemberId, transAmt, title, desc, wechatAppId); adapayService.createBalancePaymentRequest(outMemberId, inMemberId, transAmt, title, desc, wechatAppId);
} }

View File

@@ -13,4 +13,9 @@ public class AlipayLoginDTO {
* 小程序appId * 小程序appId
*/ */
private String appId; private String appId;
/**
* 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum}
*/
private String requestSource;
} }

View File

@@ -26,12 +26,17 @@ public class MemberRegisterAndLoginDTO {
private String appId; private String appId;
/** /**
* 运营商id * 一级运营商id
*/ */
private String merchantId; private String firstLevelMerchantId;
/** /**
* 微信用户openId * 微信用户openId
*/ */
private String openId; private String openId;
/**
* 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum}
*/
private String requestSource;
} }

View File

@@ -21,4 +21,9 @@ public class WechatLoginDTO {
* 用来获取openId的Code * 用来获取openId的Code
*/ */
private String openIdCode; private String openIdCode;
/**
* 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum}
*/
private String requestSource;
} }

View File

@@ -25,5 +25,8 @@ public class AgentWechatLoginDTO {
*/ */
private String openIdCode; private String openIdCode;
/**
* 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum}
*/
private String requestSource;
} }

View File

@@ -1990,7 +1990,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// return orderBasicInfoMapper.getIndexOrderInfo(dto); // return orderBasicInfoMapper.getIndexOrderInfo(dto);
List<IndexOrderInfoVO> voList = orderBasicInfoMapper.getIndexOrderInfoV2(dto); List<IndexOrderInfoVO> voList = orderBasicInfoMapper.getIndexOrderInfoV2(dto);
Map<String, List<IndexOrderInfoVO>> map = voList.stream().collect(Collectors.groupingBy(IndexOrderInfoVO::getDate)); Map<String, List<IndexOrderInfoVO>> map = voList.stream().collect(Collectors.groupingBy(IndexOrderInfoVO::getDate));
List<IndexOrderInfoVO> resultList = Lists.newArrayList(); List<IndexOrderInfoVO> resultList = Lists.newArrayList();

View File

@@ -2701,7 +2701,8 @@
use_electricity AS totalElectricity, use_electricity AS totalElectricity,
total_amount as totalOrderAmount total_amount as totalOrderAmount
from settle_order_report from settle_order_report
where date(trade_date) &gt;= DATE_SUB(CURDATE(), INTERVAL 30 day) where del_flag = '0'
and date(trade_date) &gt;= DATE_SUB(CURDATE(), INTERVAL 30 day)
<if test="dto.stationId != null and dto.stationId != ''"> <if test="dto.stationId != null and dto.stationId != ''">
and station_id = #{dto.stationId,jdbcType=VARCHAR} and station_id = #{dto.stationId,jdbcType=VARCHAR}
</if> </if>

View File

@@ -381,9 +381,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getGeneralSituationInfo" resultType="com.jsowell.pile.vo.web.IndexGeneralSituationVO"> <select id="getGeneralSituationInfo" resultType="com.jsowell.pile.vo.web.IndexGeneralSituationVO">
select select
sum(t1.total_amount) as totalChargingAmount, ifnull(sum(t1.total_amount), 0) as totalChargingAmount,
sum(t1.use_electricity) as totalChargingDegree, ifnull(sum(t1.use_electricity), 0) as totalChargingDegree,
sum(t1.charge_num) as totalChargingQuantity ifnull(sum(t1.charge_num), 0) as totalChargingQuantity
from from
settle_order_report t1 settle_order_report t1
where where