Merge branch 'master' into cc_20250905_franchiseAgreement
# Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-model/src/main/java/com/cool/store/response/AddSignFranchiseResponse.java # coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java # coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java
This commit is contained in:
@@ -40,4 +40,16 @@ public class PartnerWebApplication {
|
||||
return defaultDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("platform.datasource")
|
||||
public DataSourceProperties platformDataSourceProperties() {
|
||||
return new DataSourceProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("spring.datasource.hikari")
|
||||
public DataSource platformDataSource() {
|
||||
return platformDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.cool.store.aspect;
|
||||
|
||||
import com.cool.store.annotation.PlatformDB;
|
||||
import com.cool.store.datasource.DataSourceContextHolder;
|
||||
import org.aspectj.lang.annotation.After;
|
||||
import org.aspectj.lang.annotation.AfterThrowing;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Before;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据源切换 切面
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/9/4
|
||||
*/
|
||||
@Aspect
|
||||
@Component
|
||||
public class DataSourceAspect {
|
||||
|
||||
@Before("@annotation(platformDB)")
|
||||
public void before(PlatformDB platformDB) {
|
||||
DataSourceContextHolder.setDataSourceType("platform");
|
||||
}
|
||||
|
||||
@After("@annotation(platformDB)")
|
||||
public void after(PlatformDB platformDB) {
|
||||
DataSourceContextHolder.clearDataSourceType();
|
||||
}
|
||||
|
||||
@AfterThrowing("@annotation(platformDB)")
|
||||
public void afterThrowing(PlatformDB platformDB) {
|
||||
DataSourceContextHolder.clearDataSourceType();
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,9 @@ import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.bigdata.ApiResponse;
|
||||
import com.cool.store.utils.OpenSignatureUtil;
|
||||
import com.cool.store.utils.RsaSignUtil;
|
||||
import com.cool.store.utils.UUIDUtils;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
@@ -42,11 +44,22 @@ public class OpenApiValidateFilter implements Filter {
|
||||
private String coolAppKey;
|
||||
@Value("${cool.api.secret}")
|
||||
private String coolAppSecret;
|
||||
@Value("${cool.api.rsa.private.key}")
|
||||
private String coolPrivateKey;
|
||||
@Value("${wallet.api.rsa.public.key}")
|
||||
private String walletPublicKey;
|
||||
private static final Set<String> WHITELIST_URIS = new HashSet<>(Arrays.asList(
|
||||
"/zxjp/open/v1/statusRefresh",
|
||||
"/zxjp/open/v1/getStoreUser",
|
||||
"/zxjp/open/v1/callback"
|
||||
));
|
||||
private static final List<String> oldUrlMapping = new ArrayList<>(Arrays.asList(
|
||||
"/zxjp/open/v1/statusRefresh","/zxjp/open/v1/changePaymentStatus",
|
||||
"/zxjp/open/v1/getYlsToken", "/zxjp/open/v1/getStoreList",
|
||||
"/zxjp/open/v1/changeReceiptStatus", "/zxjp/open/v1/getStoreUser"));
|
||||
|
||||
// 添加钱包接口路径前缀常量
|
||||
private static final String WALLET_API_PATTERN = "^/zxjp/open/v\\d+/wallet/.*$";
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
@@ -61,10 +74,16 @@ public class OpenApiValidateFilter implements Filter {
|
||||
}
|
||||
MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID());
|
||||
//statusRefresh 放开不需要验签
|
||||
if (uri.startsWith("/zxjp/open/v1/statusRefresh") || uri.startsWith("/zxjp/open/v1/getStoreUser")) {
|
||||
if (isWhitelistUri(uri)) {
|
||||
filterChain.doFilter(servletRequest, response);
|
||||
return;
|
||||
}
|
||||
// 针对钱包接口的专用验签处理 所有符合 /zxjp/open/v{版本号}/wallet/ 格式的接口都会走钱包专用的验签流程。
|
||||
if (uri.matches(WALLET_API_PATTERN)) {
|
||||
handleWalletApiValidation(request, response, filterChain);
|
||||
return;
|
||||
}
|
||||
|
||||
HttpServletResponse res = (HttpServletResponse) response;
|
||||
// 1. 验证时间戳
|
||||
try {
|
||||
@@ -174,7 +193,96 @@ public class OpenApiValidateFilter implements Filter {
|
||||
return OpenSignatureUtil.generateOldSign(params, coolAppSecret);
|
||||
}
|
||||
|
||||
private boolean isWhitelistUri(String uri) {
|
||||
return WHITELIST_URIS.stream().anyMatch(uri::startsWith);
|
||||
}
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
|
||||
|
||||
private void handleWalletApiValidation(HttpServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
|
||||
HttpServletResponse res = (HttpServletResponse) response;
|
||||
|
||||
try {
|
||||
// 读取请求体
|
||||
StringBuilder requestBody = new StringBuilder();
|
||||
try (BufferedReader reader = request.getReader()) {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
requestBody.append(line);
|
||||
}
|
||||
}
|
||||
|
||||
String jsonBody = requestBody.toString();
|
||||
|
||||
// 1. 验证时间戳
|
||||
String timestampStr = extractTimestampFromJson(jsonBody);
|
||||
if (timestampStr == null) {
|
||||
writeErrorResponse(res, ErrorCodeEnum.SIGN_FAIL, "缺少timestamp参数");
|
||||
return;
|
||||
}
|
||||
|
||||
long timestamp = Long.parseLong(timestampStr);
|
||||
long currentTime = System.currentTimeMillis() / 1000;
|
||||
long timeDiff = Math.abs(currentTime - timestamp);
|
||||
|
||||
if (timeDiff > 600) {
|
||||
writeErrorResponse(res, ErrorCodeEnum.SIGN_FAIL, "请求已过期,请保证timestamp时间在10分钟之内");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 钱包接口专用验签逻辑
|
||||
if (!verifyWalletSignatureFromBody(jsonBody)) {
|
||||
writeErrorResponse(res, ErrorCodeEnum.SIGN_FAIL, "签名校验失败");
|
||||
return;
|
||||
}
|
||||
|
||||
filterChain.doFilter(request, response);
|
||||
} catch (Exception e) {
|
||||
log.error("钱包接口验签异常: ", e);
|
||||
writeErrorResponse(res, ErrorCodeEnum.SIGN_FAIL, "验签异常");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从JSON中提取timestamp字段
|
||||
*/
|
||||
private String extractTimestampFromJson(String jsonBody) {
|
||||
try {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Map<String, Object> params = objectMapper.readValue(jsonBody, new TypeReference<Map<String, Object>>() {});
|
||||
Object timestamp = params.get("timestamp");
|
||||
return timestamp != null ? timestamp.toString() : null;
|
||||
} catch (Exception e) {
|
||||
log.error("提取timestamp失败: ", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 钱包接口签名验证方法 - 签名在请求体中
|
||||
*/
|
||||
private boolean verifyWalletSignatureFromBody(String jsonBody) {
|
||||
try {
|
||||
// 解析请求参数
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Map<String, Object> params = objectMapper.readValue(jsonBody, new TypeReference<Map<String, Object>>() {});
|
||||
|
||||
// 使用RsaSignUtil.verifyWalletSign进行验签
|
||||
return RsaSignUtil.verifySign(params, walletPublicKey);
|
||||
} catch (Exception e) {
|
||||
log.error("钱包接口签名验证失败: ", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入错误响应
|
||||
*/
|
||||
private void writeErrorResponse(HttpServletResponse response, ErrorCodeEnum errorCode, String message) throws IOException {
|
||||
response.setStatus(HttpStatus.OK.value());
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.getWriter().write(JSON.toJSONString(ApiResponse.fail(errorCode, message)));
|
||||
}
|
||||
}
|
||||
@@ -59,7 +59,9 @@ public class SignValidateFilter implements Filter {
|
||||
"/zxjp/mini/program/v1/partnerManage/openArea/areaApplyQuery",
|
||||
"/zxjp/**/api/audit/result",
|
||||
"/zxjp/**/api/license",
|
||||
"/zxjp/mini/line/getRegionPayPic"
|
||||
"/zxjp/mini/line/getRegionPayPic",
|
||||
"/zxjp/mini/miniProgram/getUserInfoByToken",
|
||||
"/zxjp/ws/**"
|
||||
|
||||
);
|
||||
|
||||
|
||||
@@ -52,7 +52,10 @@ public class TokenValidateFilter implements Filter {
|
||||
"/zxjp/pc/sysRole/**",
|
||||
"/zxjp/**/api/audit/result",
|
||||
"/zxjp/pc/video/**",
|
||||
"/zxjp/**/api/license"
|
||||
"/zxjp/**/api/license",
|
||||
"/zxjp/pc/v3/login/accountLogin",
|
||||
"/zxjp/pc/v3/login/refreshLogin",
|
||||
"/zxjp/ws/**"
|
||||
|
||||
|
||||
);
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.cool.store.config.websocket;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
|
||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
|
||||
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* WebSocket配置类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/9/2
|
||||
*/
|
||||
@Configuration
|
||||
@EnableWebSocketMessageBroker
|
||||
@Slf4j
|
||||
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
|
||||
|
||||
@Override
|
||||
public void registerStompEndpoints(StompEndpointRegistry registry) {
|
||||
registry.addEndpoint("/ws/zxzs")
|
||||
.setAllowedOrigins("*")
|
||||
.withSockJS(); // 启用SockJS支持
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureMessageBroker(MessageBrokerRegistry registry) {
|
||||
// 配置消息代理
|
||||
registry.enableSimpleBroker("/topic", "/queue") // 启用简单代理,用于广播和点对点消息
|
||||
.setHeartbeatValue(new long[]{0, 10000})
|
||||
.setTaskScheduler(webSocketTaskScheduler());
|
||||
registry.setApplicationDestinationPrefixes("/app"); // 设置应用程序端点前缀
|
||||
// registry.setUserDestinationPrefix("/user");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TaskScheduler webSocketTaskScheduler() {
|
||||
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
|
||||
taskScheduler.setPoolSize(1);
|
||||
taskScheduler.setThreadNamePrefix("websocket-heartbeat-");
|
||||
taskScheduler.initialize();
|
||||
return taskScheduler;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void configureClientInboundChannel(ChannelRegistration registration) {
|
||||
// registration.interceptors(new ChannelInterceptor() {
|
||||
// @Override
|
||||
// public Message<?> preSend(Message<?> message, MessageChannel channel) {
|
||||
// StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);
|
||||
//
|
||||
// if (StompCommand.CONNECT.equals(accessor.getCommand())) {
|
||||
// // 从STOMP头部获取login字段作为用户标识
|
||||
// String login = accessor.getLogin();
|
||||
// log.info("用户login:{}", login);
|
||||
// if (login != null && !login.isEmpty()) {
|
||||
// // 设置用户身份
|
||||
// accessor.setUser(() -> login);
|
||||
// }
|
||||
// }
|
||||
// return message;
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.dto.FoodTokenDTO;
|
||||
import com.cool.store.dto.GetAccessTokenDTO;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.PushService;
|
||||
import com.cool.store.service.ThirdFoodService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/11/24 16:50
|
||||
* @Version 1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/pc/token")
|
||||
@Api(tags = "第三方平台token")
|
||||
@Slf4j
|
||||
public class AccountTokenController {
|
||||
|
||||
|
||||
@Resource
|
||||
PushService pushService;
|
||||
|
||||
@Resource
|
||||
ThirdFoodService thirdFoodService;
|
||||
|
||||
@ApiOperation("获取云流水免登token")
|
||||
@PostMapping("/getYlsToken")
|
||||
public ResponseResult<String> getYlsToken(@RequestBody @Validated GetAccessTokenDTO dto) {
|
||||
return ResponseResult.success(pushService.getYlsToken(dto));
|
||||
}
|
||||
|
||||
@ApiOperation("获取POS免登token")
|
||||
@PostMapping("/getPosToken")
|
||||
public ResponseResult<String> getPosToken(@RequestBody @Validated GetAccessTokenDTO dto) {
|
||||
return ResponseResult.success(pushService.getPosToken(dto));
|
||||
}
|
||||
|
||||
@ApiOperation("获取新掌柜免登token")
|
||||
@PostMapping("/getXzgToken")
|
||||
public ResponseResult<String> getXzgToken(@RequestBody @Validated GetAccessTokenDTO dto) {
|
||||
return ResponseResult.success(pushService.getXzgToken(dto));
|
||||
}
|
||||
|
||||
@ApiOperation("获取菜品市场token")
|
||||
@PostMapping("/getFoodToken")
|
||||
public ResponseResult<String> getFoodToken(@RequestBody @Validated FoodTokenDTO dto) {
|
||||
return ResponseResult.success(thirdFoodService.getFoodToken(dto));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,8 +28,9 @@ public class BigRegionController {
|
||||
|
||||
@PostMapping("/queryAllBigRegion")
|
||||
@ApiOperation("获取所有可选择的大区")
|
||||
public ResponseResult<List<BigRegionDTO>> queryContentInfo(@RequestParam(required = false) String keyword) {
|
||||
return ResponseResult.success(bigRegionService.queryAllBigRegion(keyword));
|
||||
public ResponseResult<List<BigRegionDTO>> queryContentInfo(@RequestParam(required = false) String keyword,
|
||||
@RequestParam(required = false) Integer joinBrand) {
|
||||
return ResponseResult.success(bigRegionService.queryAllBigRegion(keyword, joinBrand));
|
||||
}
|
||||
|
||||
@PostMapping("/queryBigRegion")
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.request.recipe.RevenueDataRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.ThirdFoodService;
|
||||
import com.cool.store.vo.recipe.RevenueDataVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据看板 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/30
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/pc/databoard")
|
||||
@Api(tags = "数据看板")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class DataBoardController {
|
||||
private final ThirdFoodService thirdFoodService;
|
||||
|
||||
@ApiOperation("门店营收")
|
||||
@PostMapping("/revenueData")
|
||||
public ResponseResult<List<RevenueDataVO>> getStoreRevenueData(@RequestBody @Valid RevenueDataRequest request) {
|
||||
return ResponseResult.success(thirdFoodService.getRevenueData(request));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.common.PageBasicInfo;
|
||||
import com.cool.store.dto.ShopSignerInfoDTO;
|
||||
import com.cool.store.dto.decoration.DecorationListDTO;
|
||||
import com.cool.store.dto.decoration.DecorationTeamDTO;
|
||||
import com.cool.store.request.decoration.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.DecorationHandleService;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/10/30 18:00
|
||||
* @Version 1.0
|
||||
*/
|
||||
@RequestMapping("/pc/decoration")
|
||||
@RestController
|
||||
@Api(tags = "装修分配团队")
|
||||
@Slf4j
|
||||
public class DecorationAllocationController {
|
||||
|
||||
@Resource
|
||||
private DecorationHandleService decorationHandleService;
|
||||
|
||||
|
||||
@PostMapping("/addTeam")
|
||||
@ApiOperation("添加团队")
|
||||
public ResponseResult<Boolean> addTeam(@RequestBody AddTeamRequest request){
|
||||
return ResponseResult.success(decorationHandleService.addTeam(request));
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@ApiOperation("修改团队")
|
||||
public ResponseResult<Boolean> update(@RequestBody UpdateTeamRequest request){
|
||||
return ResponseResult.success(decorationHandleService.update(request));
|
||||
}
|
||||
|
||||
@PostMapping("/deleteByTeamId")
|
||||
@ApiOperation("删除团队")
|
||||
public ResponseResult<Boolean> deleteByTeamId(@RequestBody DeletedRequest request){
|
||||
return ResponseResult.success(decorationHandleService.deleteByTeamId(request.getTeamId()));
|
||||
}
|
||||
|
||||
@PostMapping("/listByCondition")
|
||||
@ApiOperation("查询团队")
|
||||
public ResponseResult<PageInfo<DecorationTeamDTO>> listByCondition(@RequestBody PageBasicInfo pageBasicInfo){
|
||||
return ResponseResult.success(decorationHandleService.listByCondition(pageBasicInfo));
|
||||
}
|
||||
|
||||
@PostMapping("/getDecorationAssignList")
|
||||
@ApiOperation("装修分配列表/待办列表 查询待办时 分配状态传-0")
|
||||
public ResponseResult<PageInfo<DecorationListDTO>> getDecorationAssignList(@RequestBody DecorationListRequest pageBasicInfo){
|
||||
return ResponseResult.success(decorationHandleService.getDecorationAssignList(pageBasicInfo));
|
||||
}
|
||||
|
||||
@GetMapping("/getShopSignerInfo")
|
||||
@ApiOperation("详情中获取签约人信息")
|
||||
public ResponseResult<ShopSignerInfoDTO> getShopSignerInfo(@RequestParam("shopId") Long shopId){
|
||||
return ResponseResult.success(decorationHandleService.getShopSignerInfo(shopId));
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@ApiOperation("确认")
|
||||
public ResponseResult<Boolean> updateConstructionTeam(@RequestBody UpdateConstructionTeamRequest request){
|
||||
return ResponseResult.success(decorationHandleService.updateConstructionTeam(request));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.dto.login.UserLoginDTO;
|
||||
import com.cool.store.dto.login.UserRefreshLoginDTO;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.login.LoginBaseService;
|
||||
import com.cool.store.service.login.LoginStrategy;
|
||||
import com.cool.store.utils.SpringContextUtil;
|
||||
import com.cool.store.vo.login.UserLoginVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 登录 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/9/4
|
||||
*/
|
||||
@Api(tags = "登录")
|
||||
@RestController
|
||||
@RequestMapping("/pc/v3/login")
|
||||
@RequiredArgsConstructor
|
||||
public class LoginController {
|
||||
private final LoginBaseService loginBaseService;
|
||||
|
||||
@ApiOperation("账号密码登录")
|
||||
@PostMapping("/accountLogin")
|
||||
public ResponseResult<UserLoginVO> accountLogin(@RequestBody UserLoginDTO param) {
|
||||
return SpringContextUtil.getBean(param.getLoginType().getClazzName(), LoginStrategy.class).login(param);
|
||||
}
|
||||
|
||||
@ApiOperation("refresh登录")
|
||||
@PostMapping("/refreshLogin")
|
||||
public ResponseResult<UserLoginVO> refreshLogin(@RequestBody UserRefreshLoginDTO param) {
|
||||
return loginBaseService.refreshLogin(param);
|
||||
}
|
||||
|
||||
@ApiOperation("登出")
|
||||
@PostMapping("/logout")
|
||||
public ResponseResult logout() {
|
||||
return loginBaseService.logout();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dto.notice.NoticeDTO;
|
||||
import com.cool.store.request.notice.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.MessageTemplateService;
|
||||
import com.cool.store.vo.notice.MessageTemplateDetailVO;
|
||||
import com.cool.store.vo.notice.StoreMessageDetailVO;
|
||||
import com.cool.store.vo.notice.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -59,7 +59,8 @@ public class MessageTemplateController {
|
||||
@PostMapping("/batchPublish")
|
||||
@ApiOperation("批量发布")
|
||||
public ResponseResult<Boolean> batchPublishMessageTemplate(@RequestBody BatchPublishRequest request) {
|
||||
return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser()));
|
||||
messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser().getUserId());
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
@PostMapping("/getMessageTemplateList")
|
||||
@@ -86,5 +87,34 @@ public class MessageTemplateController {
|
||||
return ResponseResult.success(messageTemplateService.revokeById(id,CurrentUserHolder.getUser()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取每个门店需要展示的模块")
|
||||
@GetMapping("/getModuleListByStoreId")
|
||||
public ResponseResult<List<ModuleAndMatterVO>> getModuleListByStoreId(@RequestParam("id")String storeId) {
|
||||
return ResponseResult.success(messageTemplateService.getModuleList(storeId, CurrentUserHolder.getUser().getMobile()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取消息详情")
|
||||
@GetMapping("/getMessageDetail")
|
||||
public ResponseResult<MessageDetailVO> getMessageDetail(@RequestParam("id")Long id) {
|
||||
return ResponseResult.success(messageTemplateService.getMessageDetail(id));
|
||||
}
|
||||
|
||||
@ApiOperation("待办列表/模块列表")
|
||||
@PostMapping("/getStorePendingList")
|
||||
public ResponseResult<PageInfo<StoreMessageVO>> getStorePendingList(@RequestBody StoreMessagePendingRequest request) {
|
||||
return ResponseResult.success(messageTemplateService.getStorePendingList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("确认已读")
|
||||
@GetMapping("/readMessage")
|
||||
public ResponseResult<Boolean> readMessage(@RequestParam("id")Long id) {
|
||||
return ResponseResult.success(messageTemplateService.readMessage(id, CurrentUserHolder.getUser().getMobile()));
|
||||
}
|
||||
|
||||
@ApiOperation("确认已处理")
|
||||
@GetMapping("/handleMessage")
|
||||
public ResponseResult<Boolean> handleMessage(@RequestParam("id")Long id) {
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
return ResponseResult.success(messageTemplateService.handleMessage(id, user.getName(), user.getMobile()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,32 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.context.PartnerUserHolder;
|
||||
import com.cool.store.dto.*;
|
||||
import com.cool.store.dto.store.StoreUserPositionDTO;
|
||||
import com.cool.store.dto.wallet.PaymentDTO;
|
||||
import com.cool.store.dto.wx.MiniProgramFreeLoginDTO;
|
||||
import com.cool.store.handler.WeChatHandler;
|
||||
import com.cool.store.request.OpenApiStoreRequest;
|
||||
import com.cool.store.request.StoreCodeDTO;
|
||||
import com.cool.store.request.*;
|
||||
import com.cool.store.request.notice.ThirdHandleMessageRequest;
|
||||
import com.cool.store.request.notice.ThirdMatterRequest;
|
||||
import com.cool.store.request.wallet.AccountTradeCallbackRequest;
|
||||
import com.cool.store.request.wallet.AddTagCallbackNoticeRequest;
|
||||
import com.cool.store.request.wallet.OnlineCommercialBankCallbackRequest;
|
||||
import com.cool.store.request.xgj.FranchiseFeeCallBackRequest;
|
||||
import com.cool.store.request.xgj.ReceiptCallBackRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.bigdata.ApiResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -44,6 +56,14 @@ public class OpenApiController {
|
||||
ShopAccountService shopAccountService;
|
||||
@Resource
|
||||
StoreService storeService;
|
||||
@Resource
|
||||
MessageTemplateService messageTemplateService;
|
||||
@Resource
|
||||
WechatMiniAppService wechatMiniAppService;
|
||||
@Autowired
|
||||
WeChatHandler weChatHandler;
|
||||
@Resource
|
||||
WalletService walletService;
|
||||
|
||||
@PostMapping("/statusRefresh")
|
||||
public ApiResponse<Boolean> statusRefresh(@RequestBody StatusRefreshDTO statusRefreshDTO){
|
||||
@@ -63,6 +83,13 @@ public class OpenApiController {
|
||||
public ApiResponse<PageInfo<StoreDTO>> getStoreList(@RequestBody @Validated OpenApiStoreRequest dto) {
|
||||
return ApiResponse.success(storeService.getStoreExtendFieldInfo(dto.getPageSize(),dto.getPageNum()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取接入物联网门店信息")
|
||||
@PostMapping("/getIoTStoreList")
|
||||
public ApiResponse<PageInfo<StoreNameDTO>> getIotStoreList(@RequestBody @Validated OpenApiStoreRequest dto) {
|
||||
return ApiResponse.success(storeService.getIotStoreList(dto.getPageNum(), dto.getPageSize()));
|
||||
}
|
||||
|
||||
@ApiOperation("新管家回调 刷新收款单状态")
|
||||
@PostMapping("/changeReceiptStatus")
|
||||
public ApiResponse<Boolean> changeReceiptStatus(@RequestBody @Validated ReceiptCallBackRequest request){
|
||||
@@ -151,4 +178,72 @@ public class OpenApiController {
|
||||
return ApiResponse.success(decorationDesignInfoService.decorationAcceptance(request));
|
||||
}
|
||||
|
||||
@ApiOperation("事项处理")
|
||||
@PostMapping("/matterHandle")
|
||||
public ApiResponse<Boolean> thirdMatterHandle(@RequestBody @Validated ThirdMatterRequest request) {
|
||||
log.info("thirdMatterHandle request:{}", JSONObject.toJSONString(request));
|
||||
return messageTemplateService.thirdMatterHandle(request);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("确认已处理")
|
||||
@PostMapping("/handleMessage")
|
||||
public ApiResponse<Boolean> handleMessage(@RequestBody @Validated ThirdHandleMessageRequest request) {
|
||||
return messageTemplateService.thirdHandleMessage(request);
|
||||
}
|
||||
|
||||
@ApiOperation("根据手机号获取短期token")
|
||||
@PostMapping("/getShortTermToken")
|
||||
public ApiResponse<String> getTokenByMobile(@RequestBody @Validated MiniProgramFreeLoginDTO param) {
|
||||
return ApiResponse.success(wechatMiniAppService.getShortTermTokenByMobile(param));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/callback", produces = "application/xml;charset=UTF-8")
|
||||
@ApiOperation("callback")
|
||||
public String handleWechatMessage(
|
||||
@RequestParam("signature") String signature,
|
||||
@RequestParam("timestamp") String timestamp,
|
||||
@RequestParam("nonce") String nonce,
|
||||
@RequestParam(value = "echostr", required = false) String echostr,
|
||||
@RequestBody(required = false) String requestBody) {
|
||||
|
||||
log.info("url:{}","/open/v1/");
|
||||
log.info("callback_signature:{},timestamp:{},nonce:{}",signature,timestamp,nonce);
|
||||
log.info("requestBody:{}",requestBody);
|
||||
|
||||
if (StringUtils.isNotEmpty(requestBody)) {
|
||||
try {
|
||||
return weChatHandler.processMessage(weChatHandler.parseXmlToMap(requestBody));
|
||||
} catch (Exception e) {
|
||||
log.info("回调处理失败 e:{}",e);
|
||||
return "success";
|
||||
}
|
||||
}
|
||||
return echostr;
|
||||
}
|
||||
|
||||
@ApiOperation("打标回调通知接口")
|
||||
@PostMapping("/wallet/addTagCallback")
|
||||
public ApiResponse<Boolean> addTagCallback(@RequestBody @Validated AddTagCallbackNoticeRequest request) {
|
||||
return ApiResponse.successByWallet(walletService.addTagCallback(request));
|
||||
}
|
||||
|
||||
@ApiOperation("大额充值通知接口")
|
||||
@PostMapping("/wallet/largePaymentCallback")
|
||||
public ApiResponse<Boolean> largePaymentCallback(@RequestBody @Validated PaymentDTO request) {
|
||||
return ApiResponse.successByWallet(walletService.largePaymentCallback(request));
|
||||
}
|
||||
|
||||
@ApiOperation("账户交易回调")
|
||||
@PostMapping("/wallet/accountTradeCallback")
|
||||
public ApiResponse<Boolean> accountTradeCallback(@RequestBody @Validated AccountTradeCallbackRequest request) {
|
||||
return ApiResponse.successByWallet(walletService.accountTradeCallback(request));
|
||||
}
|
||||
|
||||
@ApiOperation("网商银行通知接口")
|
||||
@PostMapping("/wallet/onlineCommercialBankCallback")
|
||||
public ApiResponse<Boolean> accountTradeCallback(@RequestBody @Validated OnlineCommercialBankCallbackRequest request) {
|
||||
return ApiResponse.successByWallet(walletService.onlineCommercialBankCallback(request));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.common.PageBasicInfo;
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.response.MiniShopsResponse;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.StoreService;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* PC门店 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/9/9
|
||||
*/
|
||||
@Api(tags = "PC门店")
|
||||
@RestController
|
||||
@RequestMapping("/pc/stores")
|
||||
@RequiredArgsConstructor
|
||||
public class PCStoreController {
|
||||
private final StoreService storeService;
|
||||
|
||||
@ApiOperation("当前用户门店列表")
|
||||
@PostMapping("/userStoreList")
|
||||
public ResponseResult<PageInfo<MiniShopsResponse>> getCurrentUserStoreList(@RequestBody PageBasicInfo request) {
|
||||
return ResponseResult.success(storeService.getStoreListByMobile(CurrentUserHolder.getUser().getMobile(), request.getPageNum(), request.getPageSize(), null, null));
|
||||
}
|
||||
}
|
||||
@@ -2,19 +2,22 @@ package com.cool.store.controller.webb;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.constants.RedisConstant;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.*;
|
||||
import com.cool.store.dto.contract.ContractCallbackDTO;
|
||||
import com.cool.store.dto.*;
|
||||
import com.cool.store.dto.huoma.*;
|
||||
import com.cool.store.dto.wallet.*;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.DownSystemTypeEnum;
|
||||
import com.cool.store.enums.FranchiseBrandEnum;
|
||||
import com.cool.store.enums.MessageEnum;
|
||||
import com.cool.store.enums.SMSMsgEnum;
|
||||
import com.cool.store.enums.point.ShopSubStageStatusEnum;
|
||||
import com.cool.store.enums.wechat.WechatTemplateEnum;
|
||||
import com.cool.store.handler.WeChatHandler;
|
||||
import com.cool.store.job.XxlJobHandler;
|
||||
import com.cool.store.mapper.FranchiseFeeMapper;
|
||||
import com.cool.store.mapper.LineInfoMapper;
|
||||
import com.cool.store.mapper.ShopInfoMapper;
|
||||
import com.cool.store.mapper.SignFranchiseMapper;
|
||||
import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
@@ -22,6 +25,7 @@ import com.cool.store.request.*;
|
||||
import com.cool.store.request.bigdata.ProfitDataRequest;
|
||||
import com.cool.store.request.huoma.ShopBasicInfoRequest;
|
||||
import com.cool.store.request.oppty.*;
|
||||
import com.cool.store.request.wallet.*;
|
||||
import com.cool.store.request.xgj.PushFranchiseFeeRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.bigdata.ActDataResponse;
|
||||
@@ -34,22 +38,25 @@ import com.cool.store.response.oppty.OpportunityDetailResponse;
|
||||
import com.cool.store.response.oppty.OpportunityInfoPageResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.impl.CommonService;
|
||||
import com.cool.store.service.impl.OrderSysInfoServiceImpl;
|
||||
import com.cool.store.service.impl.UserAuthMappingServiceImpl;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.utils.RedisConstantUtil;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.service.wallet.WalletApiService;
|
||||
import com.cool.store.service.wechat.WechatTemplateService;
|
||||
import com.cool.store.service.xinfa.XinFaBusinessService;
|
||||
import com.cool.store.utils.RsaSignUtil;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@@ -92,7 +99,8 @@ public class PCTestController {
|
||||
private HttpRestTemplateService httpRestTemplateService;
|
||||
@Resource
|
||||
FranchiseFeeMapper franchiseFeeMapper;
|
||||
|
||||
@Resource
|
||||
WechatTemplateService wechatTemplateService;
|
||||
@Resource
|
||||
ShopInfoMapper shopInfoMapper;
|
||||
@Resource
|
||||
@@ -102,6 +110,8 @@ public class PCTestController {
|
||||
@Resource
|
||||
SignFranchiseMapper signFranchiseMapper;
|
||||
|
||||
@Autowired
|
||||
WeChatHandler weChatHandler;
|
||||
@GetMapping("/syncStore")
|
||||
public ResponseResult<Boolean> syncStore(@RequestParam("shopId")Long shopId){
|
||||
syncMainSysServer.syncStore(shopId);
|
||||
@@ -596,4 +606,246 @@ public class PCTestController {
|
||||
return request;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "/testWxNotice", produces = "application/xml;charset=UTF-8")
|
||||
@ApiOperation("testWxNotice")
|
||||
public String handleWechatMessage(
|
||||
@RequestParam("signature") String signature,
|
||||
@RequestParam("timestamp") String timestamp,
|
||||
@RequestParam("nonce") String nonce,
|
||||
@RequestParam(value = "echostr", required = false) String echostr,
|
||||
@RequestBody(required = false) String requestBody) {
|
||||
|
||||
System.out.println("收到微信消息:");
|
||||
System.out.println("signature: " + signature);
|
||||
System.out.println("timestamp: " + timestamp);
|
||||
System.out.println("nonce: " + nonce);
|
||||
System.out.println("echostr: " + echostr);
|
||||
System.out.println("requestBody: " + requestBody);
|
||||
|
||||
if (StringUtils.isNotEmpty(requestBody)) {
|
||||
try {
|
||||
return weChatHandler.processMessage(weChatHandler.parseXmlToMap(requestBody));
|
||||
} catch (Exception e) {
|
||||
log.info("回调处理失败 e:{}",e.getMessage());
|
||||
return "success";
|
||||
}
|
||||
}
|
||||
return nonce;
|
||||
}
|
||||
|
||||
@ApiOperation("测试小程序模板消息")
|
||||
@PostMapping("/testMiniAppTemplate")
|
||||
public ApiResponse<Boolean> testMiniAppTemplate() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("character_string2", "ceshi002");
|
||||
data.put("thing10", "测试通知功能");
|
||||
data.put("time14", "2025-10-01 12:00:00");
|
||||
data.put("thing25", "正新管理有限公司");
|
||||
data.put("thing60", "上海市-松江区");
|
||||
wechatTemplateService.sendNormalTemplate("o9_unvpJy1SGdnkeun7igRBSLuB0", WechatTemplateEnum.QUESTION_NOTICE, data);
|
||||
return ApiResponse.success(true);
|
||||
}
|
||||
|
||||
@Resource
|
||||
XinFaBusinessService xinFaBusinessService;
|
||||
@ApiOperation("测试门店设备信息")
|
||||
@GetMapping("/getStoreXinFaDeviceDetail")
|
||||
public ResponseResult<List<StoreXinFaDeviceDetail>> getStoreXinFaDeviceDetail(@RequestParam("storeNum")String storeNum) {
|
||||
return ResponseResult.success(xinFaBusinessService.getStoreXinFaDeviceDetail(storeNum));
|
||||
}
|
||||
|
||||
@ApiOperation("测试标签信息")
|
||||
@GetMapping("/getAccountAllTags")
|
||||
public ResponseResult<List<TagDetailDTO>> getAccountAllTags(@RequestParam("storeNum")String storeNum,
|
||||
@RequestParam("deviceName")String deviceName) {
|
||||
List<TagDetailDTO> accountAllTags = xinFaBusinessService.getAccountAllTags(storeNum,deviceName);
|
||||
return ResponseResult.success(accountAllTags);
|
||||
}
|
||||
|
||||
@ApiOperation("获取节目列表")
|
||||
@PostMapping("/getProgramList")
|
||||
public ResponseResult<List<ProgramResponseDTO>> getProgramList(@RequestBody ProgramReqDTO programReqDTO) {
|
||||
List<ProgramResponseDTO> accountAllTags = xinFaBusinessService.getProgramList(programReqDTO);
|
||||
return ResponseResult.success(accountAllTags);
|
||||
}
|
||||
|
||||
@ApiOperation("发布/上架")
|
||||
@PostMapping("/publishProgram")
|
||||
public ResponseResult<Boolean> publishProgram(@RequestBody PublishDTO publishDTO) {
|
||||
Boolean publishStatus = xinFaBusinessService.publishProgram(publishDTO);
|
||||
return ResponseResult.success(publishStatus);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 测试数据
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("key", "370728957227141");
|
||||
params.put("status", 1);
|
||||
params.put("addTagType", 1);
|
||||
params.put("timestamp", "1763694267");
|
||||
params.put("outStoreId", "359c107b31c148b59fbe1c2562fdd096");
|
||||
|
||||
|
||||
String privateKey = "MIIEpQIBAAKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQABAoIBACbBGi8I+CE77M+13wAu4RkD8xL7CQc3ic2ojGqIRPi7r5CuphD6mpzvXqtyfhd7DKr9h8bAxwBlnQ28ObjVgsI96/aM7dxvMs/uVPpqwIJyWuTDG5A05EPVC9REQnC6Mp09mnPL7rZz3Mfy6dIGY2YQWfwmWiPl1B45k+wZ+WPZPI0JVnvRzM881kf4aAhEAt08i9VoihylwVAjWIPmLuhf6ZcqI5q8iUsjfO22wZJsudVTCA/dsJdNxv+1RDKeYnSLJL79cZQcodqEhFqTy6vnn2dMsaHH7dpphU27barxUjeL482SR7kFfMqEXn5sltRn/3ep+3sf4Ph2vMtoZeECgYEA6gXzEtT9ZOeAMp4BRGmfNZ0TQLprPPVSwudz/uUBE4j/vyhfXkh9p7hqwyoxN+Z8b65yINvx8yP6hge6ek/MyAwBCZyfIRxZAPZu1eEGoYKl391ubFt2EIVqrN2DtAvzHMr5B/E2VHBq6AJm/rERFX5oKsg6zHS9tPLhgGnWVd0CgYEA5aFWOrtiqZJlp1MHQ4OeWBJatBSynkORdxCW7ic0CKbkYus0NSz1SsvskpbnfEXNB53x98qJxRhSopg/DC4m7XqxjSf9lY3HH4Y/9907olj33yGAnLWC88GivVndt577u/XhYRCk33vOQ3GoibEdjnpMOkWmOfwYG/FsRWWQvaECgYEA1N2siEisZIgel+wZAv2AD+hchtgKi1wqd5bIb+Yl4HsRBfPXK4+MnG6mzfcm5c4FCiEHNtRZc+waCKgm+vJzNtOUbgXEyP1cCAAgOPOCcI7CCqsDshRPhB+XNL4Y+kCUVnBZrNu/q3bGB1uIC8tL2t0sKx4OPcNCe8EhVQjwKRECgYEA4uothdhKRPtwDIsVsHfN74Yjr7SMVay7gIcaPrjqyGnzYnS+oJWOx50AaFNK6Rko5JAF3jF9NxE0B4yfMPAic6Y88hpEkpcJ4HMPn2Y1WdbFCu/WYgVUJICCys6VNLCcXj85umtyIY38Y9VbEMW/SV49GZBeFQqy4FoP/fvBrkECgYEAnfjTDYwgdmJdsUqyNzAocwcJXG2rVtYc7Txrl0TltcwuJmgoSywdzyOP2R9+NZsfoxWDzG0/yr15ApMvUcnnTwHN/8bGQ9SLatFLKqS4EtdwDKKS1JvNbs7V1myQGpt7jbShZOI0e6Fs4xP8ujxsLeGgiq9mZrS9UdRj5XKDoVM=";
|
||||
|
||||
String publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQAB";
|
||||
|
||||
try {
|
||||
// 1. 加签
|
||||
String sign = RsaSignUtil.generateSign(new HashMap<>(params), privateKey);
|
||||
System.out.println("生成的签名: " + sign);
|
||||
|
||||
// 2. 将签名放入参数中
|
||||
params.put("sign", sign);
|
||||
|
||||
// 3. 验签
|
||||
boolean isValid = RsaSignUtil.verifySign(new HashMap<>(params), publicKey);
|
||||
System.out.println("验签结果: " + isValid);
|
||||
|
||||
// 4. 测试排序字符串生成
|
||||
String sortedString = RsaSignUtil.objectToSortedString(params);
|
||||
System.out.println("排序后的字符串: " + sortedString);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Resource
|
||||
WalletApiService walletApiService;
|
||||
|
||||
@ApiOperation("获取银行信息")
|
||||
@PostMapping("/getBankList")
|
||||
public ResponseResult<BankListDTO> getBankList(@RequestBody GetBankRequest request) {
|
||||
BankListDTO bankList = walletApiService.getBankList(request);
|
||||
return ResponseResult.success(bankList);
|
||||
}
|
||||
|
||||
@ApiOperation("签约人开通信息")
|
||||
@PostMapping("/createStoreAndAccount")
|
||||
public ResponseResult<StoreAccountDTO> createStoreAndAccount(@RequestBody CreateStoreAndAccountRequest request) {
|
||||
StoreAccountDTO dto = walletApiService.createStoreAndAccount(request);
|
||||
return ResponseResult.success(dto);
|
||||
}
|
||||
|
||||
@ApiOperation("创建门店接口")
|
||||
@PostMapping("/createStore")
|
||||
public ResponseResult<AccountNoDTO> createStore(@RequestBody CreateStoreRequest request) {
|
||||
AccountNoDTO accountNoDTO = walletApiService.createStore(request);
|
||||
return ResponseResult.success(accountNoDTO);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("打标接口")
|
||||
@PostMapping("/addTag")
|
||||
public ResponseResult<AddTagDTO> addTag(@RequestBody AccountAddTagRequest request) {
|
||||
AddTagDTO addTag = walletApiService.addTag(request);
|
||||
return ResponseResult.success(addTag);
|
||||
}
|
||||
|
||||
@ApiOperation("门店签约人账户鉴权申请接口")
|
||||
@PostMapping("/authentication")
|
||||
public ResponseResult<AccountAuthenticationDTO> authentication(@RequestBody OutStoreIdRequest request) {
|
||||
AccountAuthenticationDTO accountAuthenticationDTO = walletApiService.authentication(request);
|
||||
return ResponseResult.success(accountAuthenticationDTO);
|
||||
}
|
||||
|
||||
@ApiOperation("门店签约人账户开通接口")
|
||||
@PostMapping("/openAccount")
|
||||
public ResponseResult<AccountVerifyDTO> openAccount(@RequestBody AccountVerifyRequest request) {
|
||||
AccountVerifyDTO accountVerifyDTO = walletApiService.openAccount(request);
|
||||
return ResponseResult.success(accountVerifyDTO);
|
||||
}
|
||||
|
||||
@ApiOperation("获取账户信息")
|
||||
@PostMapping("/getAccountInfo")
|
||||
public ResponseResult<List<AccountInfoDTO>> getAccountInfo(@RequestBody OutStoreIdRequest request) {
|
||||
List<AccountInfoDTO> accountInfoList = walletApiService.getAccountInfo(request);
|
||||
return ResponseResult.success(accountInfoList);
|
||||
}
|
||||
|
||||
@ApiOperation("大额预支付接口")
|
||||
@PostMapping("/largePayment")
|
||||
public ResponseResult<LargePaymentDTO> largePayment(@RequestBody LargePaymentRequest request) {
|
||||
LargePaymentDTO largePayment = walletApiService.largePayment(request);
|
||||
return ResponseResult.success(largePayment);
|
||||
}
|
||||
|
||||
@ApiOperation("大额预支付查询接口")
|
||||
@PostMapping("/largePaymentQuery")
|
||||
public ResponseResult<PaymentDTO> largePaymentQuery(@RequestBody PaymentDetailRequest request) {
|
||||
PaymentDTO PaymentDTO = walletApiService.largePaymentQuery(request);
|
||||
return ResponseResult.success(PaymentDTO);
|
||||
}
|
||||
|
||||
@ApiOperation("门店账户向公司分账转账接口")
|
||||
@PostMapping("/transfer")
|
||||
public ResponseResult<TransferDTO> transfer(@RequestBody TransferRequest request) {
|
||||
TransferDTO transfer = walletApiService.transfer(request);
|
||||
return ResponseResult.success(transfer);
|
||||
}
|
||||
|
||||
@ApiOperation("门店签约账户,退款提现至提现卡")
|
||||
@PostMapping("/withdraw")
|
||||
public ResponseResult<WithDrawerDTO> withdraw(@RequestBody WithDrawerRequest request) {
|
||||
WithDrawerDTO withdraw = walletApiService.withdraw(request);
|
||||
return ResponseResult.success(withdraw);
|
||||
}
|
||||
|
||||
@ApiOperation(" 获取账单详情")
|
||||
@PostMapping("/getBillDetail")
|
||||
public ResponseResult<TradeRecordDTO> getBillDetail(@RequestBody BillDetailRequest request) {
|
||||
TradeRecordDTO billDetail = walletApiService.getBillDetail(request);
|
||||
return ResponseResult.success(billDetail);
|
||||
}
|
||||
|
||||
@ApiOperation("获取账单列表")
|
||||
@PostMapping("/getBillPage")
|
||||
public ResponseResult<BillPageDTO> getBillPage(@RequestBody BillPageRequest request) {
|
||||
BillPageDTO billPage = walletApiService.getBillPage(request);
|
||||
return ResponseResult.success(billPage);
|
||||
}
|
||||
|
||||
@ApiOperation("获取银行信息")
|
||||
@PostMapping("/getCompanyInfo")
|
||||
public ResponseResult<CompanyListDTO> getCompanyInfo(@RequestBody FindPageCompanyRequest request) {
|
||||
CompanyListDTO companyDTO = walletApiService.getCompanyInfo(request);
|
||||
return ResponseResult.success(companyDTO);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取账户列表信息")
|
||||
@PostMapping("/getAccountList")
|
||||
public ResponseResult<AccountPageDTO> getAccountList(@RequestBody AccountBatchQueryRequest request) {
|
||||
AccountPageDTO accountList = walletApiService.getAccountList(request);
|
||||
return ResponseResult.success(accountList);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Value("${cool.api.rsa.private.key}")
|
||||
private String coolPrivateKey;
|
||||
@Value("${cool.api.rsa.public.key}")
|
||||
private String coolPublicKey;
|
||||
@ApiOperation("验签")
|
||||
@PostMapping("/verify")
|
||||
public ResponseResult<Boolean> test(@RequestBody TestVerifyRequest request) {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
try {
|
||||
Map<String, Object> params = objectMapper.readValue(JSONObject.toJSONString(request), new TypeReference<Map<String, Object>>() {});
|
||||
String s = RsaSignUtil.generateSign(params, coolPrivateKey);
|
||||
params.put("sign",s);
|
||||
boolean b = RsaSignUtil.verifySign(params, coolPublicKey);
|
||||
log.info("验签结果:{}",b);
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return ResponseResult.success(Boolean.TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.dto.wallet.AccountInfoDTO;
|
||||
import com.cool.store.dto.wallet.BillDetailDTO;
|
||||
import com.cool.store.dto.wallet.TradeRecordDTO;
|
||||
import com.cool.store.request.wallet.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.vo.wallet.AccountBillPageVO;
|
||||
import com.cool.store.vo.wallet.AccountInfoVO;
|
||||
import com.cool.store.vo.wallet.AccountPageVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/18
|
||||
*/
|
||||
@Api(tags = "钱包")
|
||||
@RestController
|
||||
@RequestMapping("/pc/wallet")
|
||||
@RequiredArgsConstructor
|
||||
public class WalletController {
|
||||
private final WalletService walletService;
|
||||
|
||||
@ApiOperation("账户列表")
|
||||
@GetMapping("/accountList")
|
||||
public ResponseResult<List<AccountInfoVO>> getAccountList(AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountList(request).getAccountList());
|
||||
}
|
||||
|
||||
@ApiOperation("账户详情")
|
||||
@PostMapping("/accountInfo")
|
||||
public ResponseResult<AccountInfoVO> getAccountInfo(@RequestBody AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountInfo(request));
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询所有门店账户列表 支持条件查询")
|
||||
@PostMapping("/getAllAccountList")
|
||||
public ResponseResult<PageInfo<AccountPageVO>> getAllAccountList(@RequestBody CoolAccountBatchQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAllAccountList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询所有流水列表 支持条件查询")
|
||||
@PostMapping("/getTradeRecordList")
|
||||
public ResponseResult<PageInfo<TradeRecordDTO>> getTradeRecordList(@RequestBody CoolTradeRecodePageRequest request) {
|
||||
return ResponseResult.success(walletService.getTradeRecordList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("账户流水")
|
||||
@PostMapping("/billPage")
|
||||
public ResponseResult<PageInfo<TradeRecordDTO>> getBillPage(@RequestBody @Validated AccountBillQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getBillPage(request).getData());
|
||||
}
|
||||
|
||||
@ApiOperation("交易流水详情")
|
||||
@GetMapping("/billDetail")
|
||||
public ResponseResult<TradeRecordDTO> getBillDetail(BillDetailRequest request) {
|
||||
return ResponseResult.success(walletService.getBillDetail(request));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.cool.store.controller.webc;
|
||||
|
||||
import com.cool.store.dto.recipe.RecipeSpLaunchDTO;
|
||||
import com.cool.store.request.recipe.RevenueDataRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.ThirdFoodService;
|
||||
import com.cool.store.vo.recipe.RevenueDataVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据看板 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/30
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mini/databoard")
|
||||
@Api(tags = "Mini数据看板")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class MiniDataBoardController {
|
||||
private final ThirdFoodService thirdFoodService;
|
||||
|
||||
@ApiOperation("门店营收")
|
||||
@PostMapping("/revenueData")
|
||||
public ResponseResult<List<RevenueDataVO>> getStoreRevenueData(@RequestBody @Valid RevenueDataRequest request) {
|
||||
return ResponseResult.success(thirdFoodService.getRevenueData(request));
|
||||
}
|
||||
|
||||
@ApiOperation("查询菜品服务包上新数据")
|
||||
@PostMapping("/recipeSpLaunch")
|
||||
public ResponseResult<RecipeSpLaunchDTO> getRecipeSpLaunchData(@RequestBody @Valid RevenueDataRequest request) {
|
||||
return ResponseResult.success(thirdFoodService.getRecipeServiceLaunch(request));
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.cool.store.context.PartnerUserHolder;
|
||||
import com.cool.store.request.notice.StoreMessagePendingRequest;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.MessageTemplateService;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import com.cool.store.vo.notice.MessageDetailVO;
|
||||
import com.cool.store.vo.notice.ModuleAndMatterVO;
|
||||
import com.cool.store.vo.notice.StoreMessageVO;
|
||||
@@ -34,7 +35,7 @@ public class MiniMessageTemplateController {
|
||||
@ApiOperation("获取每个门店需要展示的模块")
|
||||
@GetMapping("/getModuleListByStoreId")
|
||||
public ResponseResult<List<ModuleAndMatterVO>> getModuleListByStoreId(@RequestParam("id")String storeId) {
|
||||
return ResponseResult.success(messageTemplateService.getModuleList(storeId, PartnerUserHolder.getUser()));
|
||||
return ResponseResult.success(messageTemplateService.getModuleList(storeId, PartnerUserHolder.getUser().getMobile()));
|
||||
}
|
||||
|
||||
@ApiOperation("获取消息详情")
|
||||
@@ -52,13 +53,14 @@ public class MiniMessageTemplateController {
|
||||
@ApiOperation("确认已读")
|
||||
@GetMapping("/readMessage")
|
||||
public ResponseResult<Boolean> readMessage(@RequestParam("id")Long id) {
|
||||
return ResponseResult.success(messageTemplateService.readMessage(id, PartnerUserHolder.getUser()));
|
||||
return ResponseResult.success(messageTemplateService.readMessage(id, PartnerUserHolder.getUser().getMobile()));
|
||||
}
|
||||
|
||||
@ApiOperation("确认已处理")
|
||||
@GetMapping("/handleMessage")
|
||||
public ResponseResult<Boolean> handleMessage(@RequestParam("id")Long id) {
|
||||
return ResponseResult.success(messageTemplateService.handleMessage(id, PartnerUserHolder.getUser()));
|
||||
PartnerUserInfoVO user = PartnerUserHolder.getUser();
|
||||
return ResponseResult.success(messageTemplateService.handleMessage(id, user.getUsername(), user.getMobile()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.WechatMiniAppService;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -65,4 +66,11 @@ public class MiniProgramAppController {
|
||||
PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
|
||||
return ResponseResult.success(userInfoVO);
|
||||
}
|
||||
|
||||
@ApiOperation("根据短期token获取用户信息")
|
||||
@ApiImplicitParam(name = "token", value = "短期token", required = true, dataType = "String", paramType = "query")
|
||||
@GetMapping("/getUserInfoByToken")
|
||||
public ResponseResult<PartnerUserInfoVO> getUserInfoByToken(String token) {
|
||||
return ResponseResult.success(wechatMiniAppService.getUserInfoByShortTermToken(token));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.cool.store.dto.ShopAccount.ShopAccountDTO;
|
||||
import com.cool.store.request.GetPasswordDTO;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.vo.PartnerUserInfoVO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -95,7 +94,7 @@ public class MiniShopAccountController {
|
||||
@ApiOperation("获取标品登录token")
|
||||
@GetMapping("/getAccessToken")
|
||||
public ResponseResult<String> getAccessToken() {
|
||||
return ResponseResult.success(enterpriseService.getAccessToken(PartnerUserHolder.getUser().getMobile()));
|
||||
return ResponseResult.success(enterpriseService.getLoginInfo(PartnerUserHolder.getUser().getMobile()).getAccessToken());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.cool.store.controller.webc;
|
||||
|
||||
import com.cool.store.dto.wallet.OpenBasicInfoDTO;
|
||||
import com.cool.store.dto.wallet.PasswordDTO;
|
||||
import com.cool.store.dto.wallet.TradeRecordDTO;
|
||||
import com.cool.store.request.wallet.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.vo.wallet.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mini钱包 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/14
|
||||
*/
|
||||
@Api(tags = "Mini钱包")
|
||||
@RestController
|
||||
@RequestMapping("/mini/wallet")
|
||||
@RequiredArgsConstructor
|
||||
@Validated
|
||||
public class MiniWalletController {
|
||||
private final WalletService walletService;
|
||||
|
||||
@ApiOperation("步骤1:平安银行钱包账号创建")
|
||||
@PostMapping("/accountCreate")
|
||||
public ResponseResult<Boolean> accountCreate(@RequestBody @Validated AccountCreateRequest request) {
|
||||
return ResponseResult.success(walletService.accountCreate(request));
|
||||
}
|
||||
|
||||
@ApiOperation("步骤2:鉴权申请")
|
||||
@PostMapping("/authentication")
|
||||
public ResponseResult<AccountAuthenticationVO> authentication(@RequestBody @Validated WalletShopRequest request) {
|
||||
return ResponseResult.success(walletService.authentication(request));
|
||||
}
|
||||
|
||||
@ApiOperation("步骤3:账号开通(步骤2接口返回4时无需调用)")
|
||||
@PostMapping("/openAccount")
|
||||
public ResponseResult<Boolean> openAccount(@RequestBody @Validated AccountOpenRequest request) {
|
||||
return ResponseResult.success(walletService.openAccount(request));
|
||||
}
|
||||
|
||||
@ApiOperation("支行信息查询")
|
||||
@PostMapping("/bankList")
|
||||
public ResponseResult<PageInfo<BankVO>> getBankList(@RequestBody BankListRequest request) {
|
||||
return ResponseResult.success(walletService.getBankList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("账户列表")
|
||||
@GetMapping("/accountList")
|
||||
public ResponseResult<AccountDataVO> getAccountList(AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("账户详情")
|
||||
@PostMapping("/accountInfo")
|
||||
public ResponseResult<AccountInfoVO> getAccountInfo(@RequestBody AccountQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getAccountInfo(request));
|
||||
}
|
||||
|
||||
@ApiOperation("账户流水")
|
||||
@PostMapping("/billPage")
|
||||
public ResponseResult<AccountBillPageVO> getBillPage(@RequestBody @Validated AccountBillQueryRequest request) {
|
||||
return ResponseResult.success(walletService.getBillPage(request));
|
||||
}
|
||||
|
||||
@ApiOperation("交易流水详情")
|
||||
@GetMapping("/billDetail")
|
||||
public ResponseResult<TradeRecordDTO> getBillDetail(BillDetailRequest request) {
|
||||
return ResponseResult.success(walletService.getBillDetail(request));
|
||||
}
|
||||
|
||||
@ApiOperation("密码维护")
|
||||
@PostMapping("/passwordUpdate")
|
||||
public ResponseResult<Boolean> passwordUpdate(@RequestBody @Validated AccountPasswordRequest request) {
|
||||
return ResponseResult.success(walletService.passwordUpdate(request));
|
||||
}
|
||||
|
||||
@ApiOperation("门店是否存在密码")
|
||||
@PostMapping("/existPwd")
|
||||
public ResponseResult<PasswordDTO> passwordUpdate(@RequestBody @Validated OutStoreIdRequest request) {
|
||||
return ResponseResult.success(walletService.existPassword(request));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ApiOperation("账户充值")
|
||||
@PostMapping("/payment")
|
||||
public ResponseResult<AccountPaymentVO> payment(@RequestBody @Validated AccountPaymentRequest request) {
|
||||
return ResponseResult.success(walletService.payment(request));
|
||||
}
|
||||
|
||||
@ApiOperation("未支付充值订单分页查询")
|
||||
@GetMapping("/nonPaymentPage")
|
||||
public ResponseResult<PageInfo<WalletPaymentOrderVO>> nonPaymentPage(LargePaymentQueryRequest request) {
|
||||
return ResponseResult.success(walletService.nonPaymentOrderPage(request));
|
||||
}
|
||||
|
||||
@ApiOperation("根据预支付id查询收款账户详情")
|
||||
@GetMapping("/paymentDetail")
|
||||
public ResponseResult<AccountPaymentVO> paymentDetail(@NotBlank(message = "预支付id不能为空") String paymentId) {
|
||||
return ResponseResult.success(walletService.paymentDetail(paymentId));
|
||||
}
|
||||
|
||||
@ApiOperation("提现")
|
||||
@PostMapping("/withDrawer")
|
||||
public ResponseResult<Boolean> withDrawer(@RequestBody @Validated WalletWithDrawerRequest request) {
|
||||
return ResponseResult.success(walletService.withDrawer(request));
|
||||
}
|
||||
@ApiOperation("根据门店编码查询开通基础信息")
|
||||
@GetMapping("/getOpenBasicInfo")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "storeId", value = "门店id", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "storeCode", value = "门店编号", required = true, dataType = "String"),
|
||||
})
|
||||
public ResponseResult<OpenBasicInfoDTO> getOpenBasicInfo(@NotBlank(message = "门店id不能为空") String storeId,
|
||||
@NotBlank(message = "门店编码不能为空") String storeCode) {
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(storeId, storeCode));
|
||||
}
|
||||
|
||||
@ApiOperation("提交开通")
|
||||
@PostMapping("/openOnlineBankAccount")
|
||||
public ResponseResult<Boolean> openOnlineBankAccount(@RequestBody @Validated CoolOpenBasicInfoRequest request) {
|
||||
return ResponseResult.success(walletService.openOnlineBankAccount(request));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("网商账户激活")
|
||||
@PostMapping("/onlineBankActive")
|
||||
public ResponseResult<Boolean> onlineBankActive(@RequestBody @Validated StoreShopRequest request) {
|
||||
return ResponseResult.success(walletService.onlineBankActive(request));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.cool.store.controller.webc;
|
||||
|
||||
import com.cool.store.dto.huoma.*;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.service.xinfa.XinFaBusinessService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/11/5 17:49
|
||||
* @Version 1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/mini/xinfa")
|
||||
@Api(tags = "小程序-信发")
|
||||
@Slf4j
|
||||
public class MiniXinFaController {
|
||||
|
||||
@Resource
|
||||
XinFaBusinessService xinFaBusinessService;
|
||||
@ApiOperation("测试门店设备信息")
|
||||
@GetMapping("/getStoreXinFaDeviceDetail")
|
||||
public ResponseResult<List<StoreXinFaDeviceDetail>> getStoreXinFaDeviceDetail(@RequestParam("storeNum")String storeNum) {
|
||||
return ResponseResult.success(xinFaBusinessService.getStoreXinFaDeviceDetail(storeNum));
|
||||
}
|
||||
|
||||
@ApiOperation("测试标签信息")
|
||||
@PostMapping("/getAccountAllTags")
|
||||
public ResponseResult<List<TagDetailDTO>> getAccountAllTags(@RequestBody AccountTagDTO tagDTO) {
|
||||
List<TagDetailDTO> accountAllTags = xinFaBusinessService.getAccountAllTags(tagDTO.getStoreNum(), tagDTO.getDeviceName());
|
||||
return ResponseResult.success(accountAllTags);
|
||||
}
|
||||
|
||||
@ApiOperation("获取节目列表")
|
||||
@PostMapping("/getProgramList")
|
||||
public ResponseResult<List<ProgramResponseDTO>> getProgramList(@RequestBody ProgramReqDTO programReqDTO) {
|
||||
List<ProgramResponseDTO> accountAllTags = xinFaBusinessService.getProgramList(programReqDTO);
|
||||
return ResponseResult.success(accountAllTags);
|
||||
}
|
||||
|
||||
@ApiOperation("发布/上架")
|
||||
@PostMapping("/publishProgram")
|
||||
public ResponseResult<Boolean> publishProgram(@RequestBody PublishDTO publishDTO) {
|
||||
Boolean publishStatus = xinFaBusinessService.publishProgram(publishDTO);
|
||||
return ResponseResult.success(publishStatus);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,9 @@ import com.cool.store.constants.CommonConstants;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.OpenCityDTO;
|
||||
import com.cool.store.dto.ocr.InvoiceDTO;
|
||||
import com.cool.store.dto.store.StoreUserPositionDTO;
|
||||
import com.cool.store.dto.store.StoreUserUpdateDTO;
|
||||
import com.cool.store.dto.wallet.OpenBasicInfoDTO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.IDCardSideEnum;
|
||||
@@ -17,11 +20,16 @@ import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.job.XxlJobHandler;
|
||||
import com.cool.store.mapper.HyOpenAreaInfoMapper;
|
||||
import com.cool.store.request.ShopListSuccessOpenRequest;
|
||||
import com.cool.store.request.wallet.CoolOpenBasicInfoRequest;
|
||||
import com.cool.store.request.xfsgFirstOrderListRequest;
|
||||
import com.cool.store.request.xgj.FranchiseFeeCallBackRequest;
|
||||
import com.cool.store.request.xgj.ReceiptCallBackRequest;
|
||||
import com.cool.store.response.MiniShopsResponse;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.caipin.StoreUserResponse;
|
||||
import com.cool.store.response.xfsgFirstOderListResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.utils.poi.ExcelUtil;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
import com.cool.store.vo.RegionPathNameVO;
|
||||
@@ -29,12 +37,15 @@ import com.github.pagehelper.PageInfo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
@@ -77,6 +88,31 @@ public class TestController {
|
||||
|
||||
@Resource
|
||||
ShopStageInfoDAO shopStageInfoDAO;
|
||||
@Resource
|
||||
ThirdFoodService thirdFoodService;
|
||||
@Autowired
|
||||
StoreService storeService;
|
||||
@Resource
|
||||
LinePayDAO linePayDAO;
|
||||
@Resource
|
||||
OpenApiService openApiService;
|
||||
|
||||
@PostMapping("/testXgjCallback")
|
||||
public ResponseResult<Boolean> testXgjCallback(Long linePayId) {
|
||||
LinePayDO linePayDO = linePayDAO.getById(linePayId);
|
||||
ReceiptCallBackRequest receiptRequest = new ReceiptCallBackRequest();
|
||||
receiptRequest.setReceiptId(linePayDO.getPaymentReceiptCode());
|
||||
receiptRequest.setClaimStatus(1);
|
||||
openApiService.changeReceiptStatus(receiptRequest);
|
||||
FranchiseFeeCallBackRequest franchiseRequest = new FranchiseFeeCallBackRequest();
|
||||
franchiseRequest.setShopId(linePayDO.getShopId());
|
||||
franchiseRequest.setPayableFee(linePayDO.getAmount());
|
||||
franchiseRequest.setPaidFees(linePayDO.getAmount());
|
||||
franchiseRequest.setRemainingFee(BigDecimal.ZERO);
|
||||
franchiseRequest.setPaymentStatus(2);
|
||||
openApiService.changePaymentStatus(franchiseRequest);
|
||||
return ResponseResult.success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/getFirstOrders")
|
||||
public ResponseResult<xfsgFirstOderListResponse> getFirstOrders(@RequestBody xfsgFirstOrderListRequest storeCodeList) {
|
||||
@@ -354,4 +390,25 @@ public class TestController {
|
||||
public void initTallyBook() {
|
||||
xxlJobHandler.initTallyBook();
|
||||
}
|
||||
|
||||
@GetMapping("/pushStoreUser")
|
||||
public void pushStoreUser(String storeCode){
|
||||
List<StoreUserPositionDTO> storeUser = storeService.getStoreUser(Arrays.asList(storeCode));
|
||||
List<StoreUserUpdateDTO> storeUserUpdateDTOS = JSONObject.parseArray(JSONObject.toJSONString(storeUser), StoreUserUpdateDTO.class);
|
||||
StoreUserResponse storeUserResponse = thirdFoodService.pushStoreUser(storeUserUpdateDTOS);
|
||||
}
|
||||
|
||||
@Resource
|
||||
WalletService walletService;
|
||||
@ApiOperation("根据门店编码查询开通基础信息")
|
||||
@GetMapping("/getOpenBasicInfo")
|
||||
public ResponseResult<OpenBasicInfoDTO> getOpenBasicInfo(@NotBlank(message = "门店编码不能为空") String storeCode) {
|
||||
return ResponseResult.success(walletService.getOpenBasicInfo(null, storeCode));
|
||||
}
|
||||
|
||||
@ApiOperation("提交开通")
|
||||
@PostMapping("/openOnlineBankAccount")
|
||||
public ResponseResult<Boolean> openOnlineBankAccount(@RequestBody @Validated CoolOpenBasicInfoRequest request) {
|
||||
return ResponseResult.success(walletService.openOnlineBankAccount(request));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.cool.store.job;
|
||||
|
||||
import cn.hutool.core.collection.CollStreamUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.constants.CommonConstants;
|
||||
@@ -7,6 +8,7 @@ import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.*;
|
||||
import com.cool.store.dto.decoration.ConstructionScheduleDTO;
|
||||
import com.cool.store.dto.openPreparation.OpenPlanShopInfoDTO;
|
||||
import com.cool.store.dto.store.StoreOrderTimeDTO;
|
||||
import com.cool.store.entity.*;
|
||||
import com.cool.store.enums.*;
|
||||
import com.cool.store.enums.point.ShopStatusEnum;
|
||||
@@ -19,11 +21,14 @@ import com.cool.store.mapper.TrainingExperienceMapper;
|
||||
import com.cool.store.mq.producer.SimpleMessageService;
|
||||
import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
import com.cool.store.request.ZxjpApiRequest;
|
||||
import com.cool.store.request.bigdata.LatestOrderDateRequest;
|
||||
import com.cool.store.request.xfsgFirstOrderListRequest;
|
||||
import com.cool.store.response.bigdata.LatestOrderDateResponse;
|
||||
import com.cool.store.response.xfsgFirstOderListResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.impl.CommonService;
|
||||
import com.cool.store.utils.CoolDateUtils;
|
||||
import com.cool.store.utils.MDCUtils;
|
||||
import com.cool.store.utils.NumberConverter;
|
||||
import com.cool.store.utils.poi.DateUtils;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
@@ -40,6 +45,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
@@ -111,6 +117,10 @@ public class XxlJobHandler {
|
||||
|
||||
@Resource
|
||||
PushService pushService;
|
||||
@Resource
|
||||
StoreDao storeDao;
|
||||
@Resource
|
||||
ThirdBigDataService thirdBigDataService;
|
||||
|
||||
|
||||
/**
|
||||
@@ -395,4 +405,56 @@ public class XxlJobHandler {
|
||||
}
|
||||
}
|
||||
|
||||
@XxlJob("latestOrderDate")
|
||||
public void latestOrderDate() {
|
||||
log.info("------start latestOrderDate------");
|
||||
MDCUtils.put(CommonConstants.REQUEST_ID, UUID.randomUUID().toString());
|
||||
String param = XxlJobHelper.getJobParam();
|
||||
List<String> storeStatus = null;
|
||||
if (StringUtils.isNotBlank(param)) {
|
||||
storeStatus = Arrays.asList(param.split(","));
|
||||
}
|
||||
boolean hasNext = true;
|
||||
int pageNum = 1;
|
||||
int pageSize = CommonConstants.BATCH_SIZE;
|
||||
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
while (hasNext) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<StoreDO> storeList = storeDao.getAllStoreIdAndNum(storeStatus);
|
||||
if (CollectionUtils.isEmpty(storeList)) {
|
||||
break;
|
||||
}
|
||||
hasNext = storeList.size() >= pageSize;
|
||||
List<String> storeNums = CollStreamUtil.toList(storeList, StoreDO::getStoreNum);
|
||||
Map<String, String> storeIdMap = CollStreamUtil.toMap(storeList, StoreDO::getStoreNum, StoreDO::getStoreId);
|
||||
LatestOrderDateRequest request = new LatestOrderDateRequest(1, pageSize, String.join(",", storeNums));
|
||||
List<LatestOrderDateResponse> resList = thirdBigDataService.getLatestOrderDate(request);
|
||||
log.info("接口请求门店数量:{},返回门店数:{}", storeList.size(), resList.size());
|
||||
if (CollectionUtils.isNotEmpty(resList)) {
|
||||
try {
|
||||
List<StoreOrderTimeDTO> updateList = resList.stream()
|
||||
.map(v -> {
|
||||
Date date = parseDate(v, dateFormat);
|
||||
return Objects.nonNull(date) ? new StoreOrderTimeDTO(storeIdMap.get(v.getStore_code()), date) : null;
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
storeDao.batchInsertOrUpdateOrderTime(updateList);
|
||||
} catch (Exception e) {
|
||||
log.error("获取最新订货时间失败", e);
|
||||
}
|
||||
}
|
||||
pageNum++;
|
||||
}
|
||||
log.info("------end latestOrderDate------");
|
||||
}
|
||||
|
||||
public Date parseDate(LatestOrderDateResponse v, DateFormat format) {
|
||||
try {
|
||||
return format.parse(v.getLatest_buy_date());
|
||||
} catch (ParseException e) {
|
||||
log.error("日期转化失败,storeCode:{},latestBuyDate:{}", v.getStore_code(), v.getLatest_buy_date());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,10 @@ default.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3
|
||||
default.datasource.username=coolstore
|
||||
default.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
platform.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_config?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
|
||||
platform.datasource.username=coolstore
|
||||
platform.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
#redis
|
||||
redis.host.uri=http://userInfo:Cx111111@tstore-coolcollege.redis.rds.aliyuncs.com:6379/0
|
||||
|
||||
@@ -116,7 +120,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6
|
||||
#新掌柜账号
|
||||
xzg.api.auth.url=http://webapi.zhengxinfood.com
|
||||
|
||||
zx.food.url=https://datacenter.zhengxinfood.com
|
||||
zx.food.url=https://datacenter.zhengxinfood.com/interface
|
||||
|
||||
cool.api.appKey=k8J7fG2qR5tY9vX3
|
||||
cool.api.secret=wP4sN6dL8zK2xM9c
|
||||
@@ -133,3 +137,28 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
#xiaochengxu appid
|
||||
wechat.miniapp.appId=wxd77a2761c1911ee1
|
||||
|
||||
huoMa.token.url = https://www.huoMayunping.com/api/SAASLogin/merchant
|
||||
huoMa.id.url = https://www.huomayunping.com/api/reportCenter/executeSql
|
||||
huoMa.store.device.detail.url = https://www.huomayunping.com/api/terminal/search
|
||||
huoMa.get.point.terminal.url = https://www.huoMayunping.com/api/terminal/getPointTerminalInfos
|
||||
huoMa.get.tag.url = https://www.huomayunping.com/api/tag/search
|
||||
huoMa.get.program.url = https://www.huomayunping.com/api/program/search
|
||||
huoMa.get.publish.url = https://www.huomayunping.com/api/channelPublish/target/v2/quick-publish
|
||||
huoMa.direct.stores.account = 18375320931
|
||||
huoMa.direct.stores.password = Huoma@123456.
|
||||
huoMa.franchise.stores.account = 13345565081
|
||||
huoMa.franchise.stores.password = Huoma@123456.
|
||||
huoMa.restaurant.stores.account = 15167817007
|
||||
huoMa.restaurant.stores.password = Huoma@123456.
|
||||
|
||||
wallet.url=https://api.dev.wenmatech.com:443
|
||||
wallet.api.yzt.key=360155690205317
|
||||
cool.api.rsa.private.key=MIIEpQIBAAKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQABAoIBACbBGi8I+CE77M+13wAu4RkD8xL7CQc3ic2ojGqIRPi7r5CuphD6mpzvXqtyfhd7DKr9h8bAxwBlnQ28ObjVgsI96/aM7dxvMs/uVPpqwIJyWuTDG5A05EPVC9REQnC6Mp09mnPL7rZz3Mfy6dIGY2YQWfwmWiPl1B45k+wZ+WPZPI0JVnvRzM881kf4aAhEAt08i9VoihylwVAjWIPmLuhf6ZcqI5q8iUsjfO22wZJsudVTCA/dsJdNxv+1RDKeYnSLJL79cZQcodqEhFqTy6vnn2dMsaHH7dpphU27barxUjeL482SR7kFfMqEXn5sltRn/3ep+3sf4Ph2vMtoZeECgYEA6gXzEtT9ZOeAMp4BRGmfNZ0TQLprPPVSwudz/uUBE4j/vyhfXkh9p7hqwyoxN+Z8b65yINvx8yP6hge6ek/MyAwBCZyfIRxZAPZu1eEGoYKl391ubFt2EIVqrN2DtAvzHMr5B/E2VHBq6AJm/rERFX5oKsg6zHS9tPLhgGnWVd0CgYEA5aFWOrtiqZJlp1MHQ4OeWBJatBSynkORdxCW7ic0CKbkYus0NSz1SsvskpbnfEXNB53x98qJxRhSopg/DC4m7XqxjSf9lY3HH4Y/9907olj33yGAnLWC88GivVndt577u/XhYRCk33vOQ3GoibEdjnpMOkWmOfwYG/FsRWWQvaECgYEA1N2siEisZIgel+wZAv2AD+hchtgKi1wqd5bIb+Yl4HsRBfPXK4+MnG6mzfcm5c4FCiEHNtRZc+waCKgm+vJzNtOUbgXEyP1cCAAgOPOCcI7CCqsDshRPhB+XNL4Y+kCUVnBZrNu/q3bGB1uIC8tL2t0sKx4OPcNCe8EhVQjwKRECgYEA4uothdhKRPtwDIsVsHfN74Yjr7SMVay7gIcaPrjqyGnzYnS+oJWOx50AaFNK6Rko5JAF3jF9NxE0B4yfMPAic6Y88hpEkpcJ4HMPn2Y1WdbFCu/WYgVUJICCys6VNLCcXj85umtyIY38Y9VbEMW/SV49GZBeFQqy4FoP/fvBrkECgYEAnfjTDYwgdmJdsUqyNzAocwcJXG2rVtYc7Txrl0TltcwuJmgoSywdzyOP2R9+NZsfoxWDzG0/yr15ApMvUcnnTwHN/8bGQ9SLatFLKqS4EtdwDKKS1JvNbs7V1myQGpt7jbShZOI0e6Fs4xP8ujxsLeGgiq9mZrS9UdRj5XKDoVM=
|
||||
cool.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQAB
|
||||
wallet.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvU5WUX5MaZhS4MRfZ5OeqmSxTgjNi64SEwTiDYS++DRHRFTEguk1g5AbiW3l9eEdATeVk0WX+T6ZIIa2do3bQOKhlMtRwWMWQIucjGa7ySOCuicvnCD2HAQ2EThfqQdSpAW5UpcyodrhcyUkuevBA4fQQ06k9lB4FjqWtao2+aYFIPFPu8Wu28KI/9QIMLI02Q1YY3duJ67QW4EM4I2oS0t3sWJeZtIJPRHFWW1EaLJz2FdbJJq+z6D2p++9pmkHsvdnktUUO+nPL3PCLtxGYxEwr/AqTYR/1yXfkVWe3nHXc+qvRt967X1hDHC+gEPJItr7kUk3pQTGBv9kNu75DwIDAQAB
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
|
||||
#mysql config
|
||||
default.datasource.url=jdbc:mysql://store10-coolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_10027?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
||||
default.datasource.url=jdbc:mysql://zx-coolstore.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_10027?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
||||
default.datasource.username=coolstore
|
||||
default.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
platform.datasource.url=jdbc:mysql://zx-coolstore.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_config?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
||||
platform.datasource.username=coolstore
|
||||
platform.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
#redis
|
||||
redis.host.uri=http://userInfo:Cx111111@store-coolcollege.redis.rds.aliyuncs.com:6379/0
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ default.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3
|
||||
default.datasource.username=coolstore
|
||||
default.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
platform.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_config?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
|
||||
platform.datasource.username=coolstore
|
||||
platform.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
#redis
|
||||
redis.host.uri=http://userInfo:Cx111111@tstore-coolcollege-open.redis.rds.aliyuncs.com:6379/0
|
||||
|
||||
@@ -123,7 +127,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6
|
||||
#新掌柜账号
|
||||
xzg.api.auth.url=http://webapi.zhengxinfood.com
|
||||
|
||||
zx.food.url=https://datacenter.zhengxinfood.com
|
||||
zx.food.url=https://datacenter.zhengxinfood.com/interface
|
||||
|
||||
cool.api.appKey=k8J7fG2qR5tY9vX3
|
||||
cool.api.secret=wP4sN6dL8zK2xM9c
|
||||
@@ -133,3 +137,14 @@ special.user.id=wpayJeDAAAhGIFgUJpJN-zg39JuNbYhg_woayJeDAAA0TC8mkCJeXouw94hYA-D3
|
||||
|
||||
ask.bot.url=https://test.auth.wx.askbot.cn
|
||||
|
||||
hqt.token.url=https://tc.cloud.hecom.cn
|
||||
hqt.token.username=18161486722
|
||||
hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
wallet.url=https://api.dev.wenmatech.com:443
|
||||
wallet.api.yzt.key=360155690205317
|
||||
cool.api.rsa.private.key=MIIEpQIBAAKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQABAoIBACbBGi8I+CE77M+13wAu4RkD8xL7CQc3ic2ojGqIRPi7r5CuphD6mpzvXqtyfhd7DKr9h8bAxwBlnQ28ObjVgsI96/aM7dxvMs/uVPpqwIJyWuTDG5A05EPVC9REQnC6Mp09mnPL7rZz3Mfy6dIGY2YQWfwmWiPl1B45k+wZ+WPZPI0JVnvRzM881kf4aAhEAt08i9VoihylwVAjWIPmLuhf6ZcqI5q8iUsjfO22wZJsudVTCA/dsJdNxv+1RDKeYnSLJL79cZQcodqEhFqTy6vnn2dMsaHH7dpphU27barxUjeL482SR7kFfMqEXn5sltRn/3ep+3sf4Ph2vMtoZeECgYEA6gXzEtT9ZOeAMp4BRGmfNZ0TQLprPPVSwudz/uUBE4j/vyhfXkh9p7hqwyoxN+Z8b65yINvx8yP6hge6ek/MyAwBCZyfIRxZAPZu1eEGoYKl391ubFt2EIVqrN2DtAvzHMr5B/E2VHBq6AJm/rERFX5oKsg6zHS9tPLhgGnWVd0CgYEA5aFWOrtiqZJlp1MHQ4OeWBJatBSynkORdxCW7ic0CKbkYus0NSz1SsvskpbnfEXNB53x98qJxRhSopg/DC4m7XqxjSf9lY3HH4Y/9907olj33yGAnLWC88GivVndt577u/XhYRCk33vOQ3GoibEdjnpMOkWmOfwYG/FsRWWQvaECgYEA1N2siEisZIgel+wZAv2AD+hchtgKi1wqd5bIb+Yl4HsRBfPXK4+MnG6mzfcm5c4FCiEHNtRZc+waCKgm+vJzNtOUbgXEyP1cCAAgOPOCcI7CCqsDshRPhB+XNL4Y+kCUVnBZrNu/q3bGB1uIC8tL2t0sKx4OPcNCe8EhVQjwKRECgYEA4uothdhKRPtwDIsVsHfN74Yjr7SMVay7gIcaPrjqyGnzYnS+oJWOx50AaFNK6Rko5JAF3jF9NxE0B4yfMPAic6Y88hpEkpcJ4HMPn2Y1WdbFCu/WYgVUJICCys6VNLCcXj85umtyIY38Y9VbEMW/SV49GZBeFQqy4FoP/fvBrkECgYEAnfjTDYwgdmJdsUqyNzAocwcJXG2rVtYc7Txrl0TltcwuJmgoSywdzyOP2R9+NZsfoxWDzG0/yr15ApMvUcnnTwHN/8bGQ9SLatFLKqS4EtdwDKKS1JvNbs7V1myQGpt7jbShZOI0e6Fs4xP8ujxsLeGgiq9mZrS9UdRj5XKDoVM=
|
||||
cool.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQAB
|
||||
wallet.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvU5WUX5MaZhS4MRfZ5OeqmSxTgjNi64SEwTiDYS++DRHRFTEguk1g5AbiW3l9eEdATeVk0WX+T6ZIIa2do3bQOKhlMtRwWMWQIucjGa7ySOCuicvnCD2HAQ2EThfqQdSpAW5UpcyodrhcyUkuevBA4fQQ06k9lB4FjqWtao2+aYFIPFPu8Wu28KI/9QIMLI02Q1YY3duJ67QW4EM4I2oS0t3sWJeZtIJPRHFWW1EaLJz2FdbJJq+z6D2p++9pmkHsvdnktUUO+nPL3PCLtxGYxEwr/AqTYR/1yXfkVWe3nHXc+qvRt967X1hDHC+gEPJItr7kUk3pQTGBv9kNu75DwIDAQAB
|
||||
@@ -3,6 +3,10 @@ default.datasource.url=jdbc:mysql://zx-coolstore.mysql.rds.aliyuncs.com:3306/coo
|
||||
default.datasource.username=coolstore
|
||||
default.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
platform.datasource.url=jdbc:mysql://zx-coolstore.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_config?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
|
||||
platform.datasource.username=coolstore
|
||||
platform.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
#redis
|
||||
redis.host.uri=http://userInfo:Cx111111@store-coolcollege.redis.rds.aliyuncs.com:6379/0
|
||||
|
||||
@@ -121,7 +125,7 @@ zx.big.data.appSecret=35b8b9a400b4430fa022190be0913cd6
|
||||
xzg.api.auth.url=http://webapi.zhengxinfood.com
|
||||
|
||||
|
||||
zx.food.url=https://datacenter.zhengxinshipin.com
|
||||
zx.food.url=https://datacenter.zhengxinshipin.com/interface
|
||||
|
||||
cool.api.appKey=k8J7fG2qR5tY9vX3
|
||||
cool.api.secret=wP4sN6dL8zK2xM9c
|
||||
@@ -134,4 +138,31 @@ hqt.token.url=https://tc.cloud.hecom.cn
|
||||
hqt.token.username=18161486722
|
||||
hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
#xiaochengxu appid
|
||||
wechat.miniapp.appId=wxd77a2761c1911ee1
|
||||
|
||||
huoMa.token.url = https://www.huoMayunping.com/api/SAASLogin/merchant
|
||||
huoMa.id.url = https://www.huomayunping.com/api/reportCenter/executeSql
|
||||
huoMa.store.device.detail.url = https://www.huomayunping.com/api/terminal/search
|
||||
huoMa.get.point.terminal.url = https://www.huoMayunping.com/api/terminal/getPointTerminalInfos
|
||||
huoMa.get.tag.url = https://www.huomayunping.com/api/tag/search
|
||||
huoMa.get.program.url = https://www.huomayunping.com/api/program/search
|
||||
huoMa.get.publish.url = https://www.huomayunping.com/api/channelPublish/target/v2/quick-publish
|
||||
huoMa.direct.stores.account = 18375320931
|
||||
huoMa.direct.stores.password = Huoma@123456.
|
||||
huoMa.franchise.stores.account = 13345565081
|
||||
huoMa.franchise.stores.password = Huoma@123456.
|
||||
huoMa.restaurant.stores.account = 15167817007
|
||||
huoMa.restaurant.stores.password = Huoma@123456.
|
||||
|
||||
|
||||
wallet.url=https://zhengxin.wenmatech.com
|
||||
wallet.api.yzt.key=375393764171845
|
||||
cool.api.rsa.private.key=MIIEoQIBAAKCAQEAleyT39qxm9Vi4d3f/pF4yI3EATtLlP870dFfk5Rwj1MEM4OVTUeoBrld5GwTARQYzuyZETTZPh9taFCVtLFVsQv4waTqDf/7vnfBbvrTZ2mvZv6H/M6BTQnTx5UmOIP1RsA933ce7v/hmG/DlMaHU3JVC840Ae1q7uJZ2yA6+r6aAGdTGMSH4oQ+U9omJOJbgbuti9DsBuGDDKZ1uMhrWW/l4El5y2Qdu/71wIQuI08kPegmuGl4+FLRJ2OnoGsp+BRXKpFbN0fq0YwPQhjzSHsKg64qimmzRRr5Ewd+4w1/27dJ6mopQd4zvf7+VQ4wEZgATTe/hjBw1njOOBD/WQIDAQABAoIBACSFU0ZSEzbXRbWoo0JzdF1Cb28vXwuGGy/S1XnxTHQVcG4ODSYcoPk2WYFltEFsgFiTuPvAiHUCGdgx3S39jtbIiEm/nwZXB5+Ps46RykKkM4ae1UiHk2bNUIoLMprMxkh8VvYjIeVtbqp/+0A4FkoFDWOJURDxIT3c5K+ky8k9mKz59SiOkNoiayPQTEjzZPgKSsT64286PGmE9v4BlpyxQ1bLXeZaQGAkQ7YVtU5XJgbMM86hgmFlTcHVMGeMoQvJTfcsLlRg8ucX/zzBTHR7fZP6i5OJl5CYLbzHbTyHN9KRYDYv066SvbGLNa+4NO2cY+L6NehiwAkkFxSGKkMCgYEAoVgEjOqLyL1CpeaW7ckWQSbcae0a6J61b6meCkRaKrwcWi7ut9OfmvkCae2qsMsHQlitFM8blrnhtJxMt3EhWKYHI1seZto6YR0mzEEz5IVM3OStIZN7RY4Fg6AyB0C5Gure3GgGHaSs5J8AbCpJyLjTWuOdcnThgHHe4Mw2dGsCgYEA7eF0TpAbdYn8xjqNEgeRSSXYpwtRQ1zrpH0b1KQBxx/fvoZPzWG0SYIi6eYV5bxV5EDnCKlXXFD3ztMfThPFUGt8hHAG6CKpsiVNvYDVhAzXN18JQJtRQRO/4S0f42C8os87ToL1nlM83c8hegrsGO+JnoTzKf8KkpYqTNrvrEsCf1HuYGEuuc02TqHwdrRJaQOsuEESJpf6ACiz+Y09KIyK+drR+mdfD62ixZcFGaitcQJABaSLh3cC7ZrJxCtjR4u8w+MwYj/Ykcy/APS4J6HkDyQc+84RFog7lpFAyCbmtxj0LDfAm1pyRVnTZGOJFe7X7Hw7GbkFoX2YVZXSHdUCgYEA6rCuYPxIOxSicKg/mfQhYLuYHmZKDF3WlnhgRtBweJZ31q8IeKbWild8PqukGv5O910ZEzCPYiL3+fPNROi4mPkS5k7oYYohRgMLydUb0qYghx6aMEWMStpDStOMTHaaZT5zUqhdz5Br0qKScqfn+0oIyn58sYhQVAMXRLAUGjUCgYAYiuiTme9S9gSt1pZrDbPxXlbVm6PjlkP/OKrmBj5gq8iYeKzmYKp66UKFo6ZeeRcKiXLWdQS0i0rKBPux8kmfIwbrfbuYAVGE0GmUdEMNsBQvEjxpwo3afyB5F70tdnm4EBo0qeqJxuBK8DLpBFka2yfzEo/3Z6i0X/XqIwq/7A==
|
||||
cool.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAleyT39qxm9Vi4d3f/pF4yI3EATtLlP870dFfk5Rwj1MEM4OVTUeoBrld5GwTARQYzuyZETTZPh9taFCVtLFVsQv4waTqDf/7vnfBbvrTZ2mvZv6H/M6BTQnTx5UmOIP1RsA933ce7v/hmG/DlMaHU3JVC840Ae1q7uJZ2yA6+r6aAGdTGMSH4oQ+U9omJOJbgbuti9DsBuGDDKZ1uMhrWW/l4El5y2Qdu/71wIQuI08kPegmuGl4+FLRJ2OnoGsp+BRXKpFbN0fq0YwPQhjzSHsKg64qimmzRRr5Ewd+4w1/27dJ6mopQd4zvf7+VQ4wEZgATTe/hjBw1njOOBD/WQIDAQAB
|
||||
wallet.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvU5WUX5MaZhS4MRfZ5OeqmSxTgjNi64SEwTiDYS++DRHRFTEguk1g5AbiW3l9eEdATeVk0WX+T6ZIIa2do3bQOKhlMtRwWMWQIucjGa7ySOCuicvnCD2HAQ2EThfqQdSpAW5UpcyodrhcyUkuevBA4fQQ06k9lB4FjqWtao2+aYFIPFPu8Wu28KI/9QIMLI02Q1YY3duJ67QW4EM4I2oS0t3sWJeZtIJPRHFWW1EaLJz2FdbJJq+z6D2p++9pmkHsvdnktUUO+nPL3PCLtxGYxEwr/AqTYR/1yXfkVWe3nHXc+qvRt967X1hDHC+gEPJItr7kUk3pQTGBv9kNu75DwIDAQAB
|
||||
|
||||
@@ -4,6 +4,10 @@ default.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3
|
||||
default.datasource.username=coolstore
|
||||
default.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
platform.datasource.url=jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcollege_intelligent_config?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true
|
||||
platform.datasource.username=coolstore
|
||||
platform.datasource.password=CSCErYcXniNYm7bT
|
||||
|
||||
#redis
|
||||
redis.host.uri=http://userInfo:Cx111111@tstore-coolcollege-open.redis.rds.aliyuncs.com:6379/0
|
||||
|
||||
@@ -124,7 +128,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6
|
||||
#新掌柜账号
|
||||
xzg.api.auth.url=http://webapi.zhengxinfood.com
|
||||
|
||||
zx.food.url=https://datacenter.zhengxinfood.com
|
||||
zx.food.url=https://datacenter.zhengxinfood.com/interface
|
||||
|
||||
cool.api.appKey=k8J7fG2qR5tY9vX3
|
||||
cool.api.secret=wP4sN6dL8zK2xM9c
|
||||
@@ -141,3 +145,33 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
#xiaochengxu appid
|
||||
wechat.miniapp.appId=wxd77a2761c1911ee1
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
|
||||
|
||||
huoMa.token.url = https://www.huoMayunping.com/api/SAASLogin/merchant
|
||||
huoMa.id.url = https://www.huomayunping.com/api/reportCenter/executeSql
|
||||
huoMa.store.device.detail.url = https://www.huomayunping.com/api/terminal/search
|
||||
huoMa.get.point.terminal.url = https://www.huoMayunping.com/api/terminal/getPointTerminalInfos
|
||||
huoMa.get.tag.url = https://www.huomayunping.com/api/tag/search
|
||||
huoMa.get.program.url = https://www.huomayunping.com/api/program/search
|
||||
huoMa.get.publish.url = https://www.huomayunping.com/api/channelPublish/target/v2/quick-publish
|
||||
huoMa.direct.stores.account = 18375320931
|
||||
huoMa.direct.stores.password = Huoma@123456.
|
||||
huoMa.franchise.stores.account = 13345565081
|
||||
huoMa.franchise.stores.password = Huoma@123456.
|
||||
huoMa.restaurant.stores.account = 15167817007
|
||||
huoMa.restaurant.stores.password = Huoma@123456.
|
||||
|
||||
wallet.url=https://api.dev.wenmatech.com:443
|
||||
wallet.api.yzt.key=360155690205317
|
||||
cool.api.rsa.private.key=MIIEpQIBAAKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQABAoIBACbBGi8I+CE77M+13wAu4RkD8xL7CQc3ic2ojGqIRPi7r5CuphD6mpzvXqtyfhd7DKr9h8bAxwBlnQ28ObjVgsI96/aM7dxvMs/uVPpqwIJyWuTDG5A05EPVC9REQnC6Mp09mnPL7rZz3Mfy6dIGY2YQWfwmWiPl1B45k+wZ+WPZPI0JVnvRzM881kf4aAhEAt08i9VoihylwVAjWIPmLuhf6ZcqI5q8iUsjfO22wZJsudVTCA/dsJdNxv+1RDKeYnSLJL79cZQcodqEhFqTy6vnn2dMsaHH7dpphU27barxUjeL482SR7kFfMqEXn5sltRn/3ep+3sf4Ph2vMtoZeECgYEA6gXzEtT9ZOeAMp4BRGmfNZ0TQLprPPVSwudz/uUBE4j/vyhfXkh9p7hqwyoxN+Z8b65yINvx8yP6hge6ek/MyAwBCZyfIRxZAPZu1eEGoYKl391ubFt2EIVqrN2DtAvzHMr5B/E2VHBq6AJm/rERFX5oKsg6zHS9tPLhgGnWVd0CgYEA5aFWOrtiqZJlp1MHQ4OeWBJatBSynkORdxCW7ic0CKbkYus0NSz1SsvskpbnfEXNB53x98qJxRhSopg/DC4m7XqxjSf9lY3HH4Y/9907olj33yGAnLWC88GivVndt577u/XhYRCk33vOQ3GoibEdjnpMOkWmOfwYG/FsRWWQvaECgYEA1N2siEisZIgel+wZAv2AD+hchtgKi1wqd5bIb+Yl4HsRBfPXK4+MnG6mzfcm5c4FCiEHNtRZc+waCKgm+vJzNtOUbgXEyP1cCAAgOPOCcI7CCqsDshRPhB+XNL4Y+kCUVnBZrNu/q3bGB1uIC8tL2t0sKx4OPcNCe8EhVQjwKRECgYEA4uothdhKRPtwDIsVsHfN74Yjr7SMVay7gIcaPrjqyGnzYnS+oJWOx50AaFNK6Rko5JAF3jF9NxE0B4yfMPAic6Y88hpEkpcJ4HMPn2Y1WdbFCu/WYgVUJICCys6VNLCcXj85umtyIY38Y9VbEMW/SV49GZBeFQqy4FoP/fvBrkECgYEAnfjTDYwgdmJdsUqyNzAocwcJXG2rVtYc7Txrl0TltcwuJmgoSywdzyOP2R9+NZsfoxWDzG0/yr15ApMvUcnnTwHN/8bGQ9SLatFLKqS4EtdwDKKS1JvNbs7V1myQGpt7jbShZOI0e6Fs4xP8ujxsLeGgiq9mZrS9UdRj5XKDoVM=
|
||||
cool.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQAB
|
||||
wallet.api.rsa.public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvU5WUX5MaZhS4MRfZ5OeqmSxTgjNi64SEwTiDYS++DRHRFTEguk1g5AbiW3l9eEdATeVk0WX+T6ZIIa2do3bQOKhlMtRwWMWQIucjGa7ySOCuicvnCD2HAQ2EThfqQdSpAW5UpcyodrhcyUkuevBA4fQQ06k9lB4FjqWtao2+aYFIPFPu8Wu28KI/9QIMLI02Q1YY3duJ67QW4EM4I2oS0t3sWJeZtIJPRHFWW1EaLJz2FdbJJq+z6D2p++9pmkHsvdnktUUO+nPL3PCLtxGYxEwr/AqTYR/1yXfkVWe3nHXc+qvRt967X1hDHC+gEPJItr7kUk3pQTGBv9kNu75DwIDAQAB
|
||||
Reference in New Issue
Block a user