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:
苏竹红
2025-12-01 10:50:32 +08:00
348 changed files with 15065 additions and 431 deletions

View File

@@ -35,6 +35,65 @@
</dependency>
</dependencies>
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>
<profile>
<id>dev2</id>
<properties>
<profileActive>dev2</profileActive>
</properties>
</profile>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>local</profileActive>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<profile>
<id>test3</id>
<properties>
<profileActive>test3</profileActive>
</properties>
</profile>
<profile>
<id>ab</id>
<properties>
<profileActive>ab</profileActive>
</properties>
</profile>
<profile>
<id>online</id>
<properties>
<profileActive>online</profileActive>
</properties>
</profile>
<profile>
<id>hd</id>
<properties>
<profileActive>hd</profileActive>
</properties>
</profile>
<profile>
<id>zcb</id>
<properties>
<profileActive>zcb</profileActive>
</properties>
</profile>
</profiles>
<build>
<plugins>

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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)));
}
}

View File

@@ -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/**"
);

View File

@@ -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/**"
);

View File

@@ -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;
// }
// });
// }
}

View File

@@ -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));
}
}

View File

@@ -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")

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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();
}
}

View File

@@ -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()));
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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);
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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()));
}
}

View File

@@ -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));
}
}

View File

@@ -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());
}
}

View File

@@ -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));
}
}

View File

@@ -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);
}
}

View File

@@ -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));
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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