zhuyifan

优化

Showing 57 changed files with 941 additions and 1564 deletions
......@@ -42,6 +42,7 @@ dependencies {
implementation "org.apache.poi:poi:4.1.2" //poi
implementation "org.apache.poi:poi-ooxml:4.1.2" //poi
implementation 'cn.hutool:hutool-all:5.8.27' //huTool-util
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.2' // Jackson XML 模块
implementation 'com.aliyun:aliyun-java-sdk-core:4.6.4' //阿里云SDK核心库
implementation 'com.aliyun:aliyun-java-sdk-dysmsapi:2.2.1'//阿里云短信服务SDK
......
......@@ -2,6 +2,7 @@ package com.infoloop.tianting.config;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.infoloop.tianting.store.LoginCodeStore;
import com.infoloop.tianting.utils.SmsUtil;
import io.lettuce.core.api.StatefulRedisConnection;
......@@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
import static com.infoloop.tianting.constant.ConfigConstants.REDIS_CONNECTION;
......@@ -32,4 +34,9 @@ public class AppConfig {
return new SmsUtil(smsConfig, new DefaultAcsClient(profile));
}
@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter() {
return new MappingJackson2XmlHttpMessageConverter(new XmlMapper());
}
}
......
package com.infoloop.tianting.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "business-config")
@Data
@PropertySource(encoding = "UTF-8", value = "classpath:application.properties", ignoreResourceNotFound = true)
public class BusinessConfig {
private String hisCustomerQueryUrl;
private String clientCustomerQueryUrl;
private String payUrl;
}
......@@ -12,14 +12,9 @@ import com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcG
import com.infoloop.tianting.enterpriseresourcetagservice.EnterpriseResourceTagServiceRpcGrpc;
import com.infoloop.tianting.menuservice.MenuServiceRpcGrpc;
import com.infoloop.tianting.setmealscheduleservice.SetMealScheduleServiceRpcGrpc;
import com.tianting.infoloop.grpc.exampleservice.ExampleServiceRpcGrpc;
//import com.tianting.infoloop.grpc.menuservice.MenuServiceRpcGrpc;
//import com.tianting.infoloop.grpc.orderservice.OrderServiceRpcGrpc;
import io.grpc.ClientInterceptor;
import io.grpc.ManagedChannel;
import io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder;
import io.swagger.models.auth.In;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
......@@ -43,9 +38,6 @@ import static com.infoloop.tianting.constant.ConfigConstants.DELIVERY_SERVICE_RP
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.ENTERPRISE_RESOURCE_SERVICE_RPC_URL;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.EXAMPLE_SERVICE_RPC_URL;
import static com.infoloop.tianting.constant.ConfigConstants.MEAL_SERVICE_CHANNEL;
import static com.infoloop.tianting.constant.ConfigConstants.MEAL_SERVICE_RPC_PORT;
import static com.infoloop.tianting.constant.ConfigConstants.MEAL_SERVICE_RPC_URL;
......@@ -73,23 +65,6 @@ public class GrpcConfig {
private static final int DEFAULT_TIMEOUT_DAYS = 7;
@Bean(EXAMPLE_SERVICE_CHANNEL)
public ManagedChannel exampleServiceChannel(@Value(EXAMPLE_SERVICE_RPC_URL) final String url,
@Value(EXAMPLE_SERVICE_RPC_PORT) final int port,
@Autowired final ClientInterceptor clientInterceptor) {
return NettyChannelBuilder.forAddress(url, port)
.idleTimeout(DEFAULT_TIMEOUT_DAYS, TimeUnit.DAYS)
.intercept(clientInterceptor)
.usePlaintext()
.maxInboundMessageSize(Integer.MAX_VALUE)
.build();
}
@Bean
public ExampleServiceRpcGrpc.ExampleServiceRpcBlockingStub exampleServiceRpcBlockingStub(@Autowired @Qualifier(EXAMPLE_SERVICE_CHANNEL) final ManagedChannel channel) {
return ExampleServiceRpcGrpc.newBlockingStub(channel);
}
@Bean(ORDER_SERVICE_CHANNEL)
public ManagedChannel orderServiceChannel(@Value(ORDER_SERVICE_RPC_URL) final String url,
@Value(ORDER_SERVICE_RPC_PORT) final int port,
......
package com.infoloop.tianting.config;
import com.infoloop.tianting.intercepter.ResourceInjector;
import com.infoloop.tianting.service.client.ExampleServiceRpcClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
......@@ -10,9 +9,8 @@ public class ResourceInjectorConfig {
@Bean
public ResourceInjector resourceInjector(
final ExampleServiceRpcClient exampleServiceRpcClient
) {
return new ResourceInjector(exampleServiceRpcClient);
return new ResourceInjector();
}
}
......
package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.SaTokenInfo;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.ClientCustomerDbDTO.ClientCustomerDto;
import com.infoloop.tianting.model.dto.ClientCustomerDbDTO.HospitalRecordDto;
import com.infoloop.tianting.model.dto.ClientCustomerDbDTO.TodayOrderDto;
import com.infoloop.tianting.model.dto.PermissionDTO.LoginDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.service.ClientCustomerService;
import com.infoloop.tianting.service.LoginService;
import com.infoloop.tianting.service.WxMiniProgramService;
import com.infoloop.tianting.service.client.ClientCustomerServiceHttpClient;
import io.lettuce.core.dynamic.annotation.Param;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -29,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "ClientCustomer")
@ApiSupport(order = -1)
@Slf4j
......@@ -36,9 +27,8 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ClientCustomerController {
private final ClientCustomerService clientCustomerService;
private final WxMiniProgramService wxMiniProgramService;
private final ClientCustomerServiceHttpClient clientCustomerServiceHttpClient;
@ApiOperation(value = "根据hisCustomerId获取ClientCustomer")
@GetMapping("/customers/his/{hisCustomerId}")
......
package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.common.OrderPageResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.OrderDbDTO;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
import com.infoloop.tianting.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@Api(tags = "院区端订单")
@ApiSupport(order = 0)
@Slf4j
......
......@@ -5,12 +5,9 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.InventoryDbDTO.ClientDto;
import com.infoloop.tianting.model.dto.InventoryDbDTO.ClientTableCodeDto;
import com.infoloop.tianting.model.dto.InventoryDbDTO.TableCodeQueryConditionDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.MenuDto;
import com.infoloop.tianting.service.InventoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -23,6 +20,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "院区")
@ApiSupport(order = -1)
@Slf4j
......@@ -30,31 +30,29 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class InventoryController {
private final InventoryService inventoryService;
private final InventoryService inventoryService;
@SaIgnore
@ApiOperation(value = "根据Id获取Client")
@GetMapping("/enterprises/{enterpriseId}/clients/{clientId}")
@ResponseStatus(HttpStatus.OK)
public ClientDto getClientById(
@PathVariable Integer enterpriseId, @PathVariable Integer clientId) {
return inventoryService.getClientById(enterpriseId, clientId);
}
@SaIgnore
@ApiOperation(value = "根据Id获取Client")
@GetMapping("/enterprises/{enterpriseId}/clients/{clientId}")
@ResponseStatus(HttpStatus.OK)
public ClientDto getClientById(@PathVariable Integer enterpriseId, @PathVariable Integer clientId) {
return inventoryService.getClientById(enterpriseId, clientId);
}
@ApiOperation(value = "根据ClientId获取Stalls")
@GetMapping("/enterprises/{enterpriseId}/clients/{clientId}/stalls")
@ResponseStatus(HttpStatus.OK)
public List<ClientDto> getStallsByClientId(
@PathVariable Integer enterpriseId, @PathVariable Integer clientId) {
return inventoryService.getStallsByClientId(enterpriseId, clientId);
}
@ApiOperation(value = "根据ClientId获取Stalls")
@GetMapping("/enterprises/{enterpriseId}/clients/{clientId}/stalls")
@ResponseStatus(HttpStatus.OK)
public List<ClientDto> getStallsByClientId(
@PathVariable Integer enterpriseId, @PathVariable Integer clientId) {
return inventoryService.getStallsByClientId(enterpriseId, clientId);
}
// @SaIgnore
@ApiOperation(value = "获取桌号")
@PostMapping("/tableCodes")
@ResponseStatus(HttpStatus.OK)
public List<ClientTableCodeDto> getTableCodes(@Valid @RequestBody
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
return inventoryService.queryClientTableCodesByCondition(tableCodeQueryConditionDto);
}
@ApiOperation(value = "获取桌号")
@PostMapping("/tableCodes")
@ResponseStatus(HttpStatus.OK)
public List<ClientTableCodeDto> getTableCodes(@Valid @RequestBody
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
return inventoryService.queryClientTableCodesByCondition(tableCodeQueryConditionDto);
}
}
......
......@@ -2,20 +2,11 @@ package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.SaTokenInfo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.PermissionDTO;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto1;
import com.infoloop.tianting.service.LoginService;
import com.infoloop.tianting.utils.JsonUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.LinkedHashMap;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@Api(tags = "登陆")
@ApiSupport(order = -1)
@Slf4j
......
package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.BatchCreateMenuRefsResponseDto;
......@@ -10,10 +9,7 @@ import com.infoloop.tianting.model.dto.MenuDbDTO.MenuRefDto;
import com.infoloop.tianting.service.MenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.Value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......@@ -25,6 +21,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "餐单")
@ApiSupport(order = -1)
@Slf4j
......@@ -32,58 +31,58 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MenuController {
private final MenuService menuService;
private final MenuService menuService;
@ApiOperation(value = "根据stallId获取小程序已发布餐单")
@GetMapping("/enterprises/{enterpriseId}/stalls/{stallId}/menus")
@ResponseStatus(HttpStatus.OK)
public List<MenuDto> queryMiniProgramPublishedMenusByStallIds(
@PathVariable Integer enterpriseId, @PathVariable Integer stallId) {
return menuService.queryMiniProgramPublishedMenusByStallId(enterpriseId, stallId);
}
@ApiOperation(value = "根据stallId获取小程序已发布餐单")
@GetMapping("/enterprises/{enterpriseId}/stalls/{stallId}/menus")
@ResponseStatus(HttpStatus.OK)
public List<MenuDto> queryMiniProgramPublishedMenusByStallIds(
@PathVariable Integer enterpriseId, @PathVariable Integer stallId) {
return menuService.queryMiniProgramPublishedMenusByStallId(enterpriseId, stallId);
}
@ApiOperation(value = "根据stallId获取所有已发布餐单")
@GetMapping("/enterprises/{enterpriseId}/stalls/{stallId}/all/menus")
@ResponseStatus(HttpStatus.OK)
public List<MenuDto> queryPublishedMenusByStallIds(
@PathVariable Integer enterpriseId, @PathVariable Integer stallId) {
return menuService.queryPublishedMenusByStallId(enterpriseId, stallId);
}
@ApiOperation(value = "根据stallId获取所有已发布餐单")
@GetMapping("/enterprises/{enterpriseId}/stalls/{stallId}/all/menus")
@ResponseStatus(HttpStatus.OK)
public List<MenuDto> queryPublishedMenusByStallIds(
@PathVariable Integer enterpriseId, @PathVariable Integer stallId) {
return menuService.queryPublishedMenusByStallId(enterpriseId, stallId);
}
@ApiOperation(value = "根据MenuId获取餐单")
@GetMapping("/enterprises/{enterpriseId}/menus/{menuId}")
@ResponseStatus(HttpStatus.OK)
public MenuDto getMenuById(
@PathVariable Integer enterpriseId, @PathVariable Integer menuId
) {
return menuService.getMenuById(enterpriseId, menuId);
}
@ApiOperation(value = "根据MenuId获取餐单")
@GetMapping("/enterprises/{enterpriseId}/menus/{menuId}")
@ResponseStatus(HttpStatus.OK)
public MenuDto getMenuById(
@PathVariable Integer enterpriseId, @PathVariable Integer menuId
) {
return menuService.getMenuById(enterpriseId, menuId);
}
@ApiOperation(value = "根据MenuId获取餐单详情")
@GetMapping("/enterprises/{enterpriseId}/menusDetails/{menuId}")
@ResponseStatus(HttpStatus.OK)
public List<MenuDetailDto> queryMenuDetailsByMenuIds(
@PathVariable Integer enterpriseId, @PathVariable Integer menuId
) {
return menuService.queryMenuDetailsByMenuId(enterpriseId, menuId);
}
@ApiOperation(value = "根据MenuId获取餐单详情")
@GetMapping("/enterprises/{enterpriseId}/menusDetails/{menuId}")
@ResponseStatus(HttpStatus.OK)
public List<MenuDetailDto> queryMenuDetailsByMenuIds(
@PathVariable Integer enterpriseId, @PathVariable Integer menuId
) {
return menuService.queryMenuDetailsByMenuId(enterpriseId, menuId);
}
@ApiOperation(value = "获取餐单绑定")
@GetMapping("/enterprises/{enterpriseId}/menuRefs/{customerId}")
@ResponseStatus(HttpStatus.OK)
public List<MenuRefDto> queryMenuRefsByCustomerId(
@PathVariable Integer enterpriseId, @PathVariable Integer customerId
){
return menuService.getClientCustomerMenuRefsByCustomerId(enterpriseId, customerId);
}
@ApiOperation(value = "获取餐单绑定")
@GetMapping("/enterprises/{enterpriseId}/menuRefs/{customerId}")
@ResponseStatus(HttpStatus.OK)
public List<MenuRefDto> queryMenuRefsByCustomerId(
@PathVariable Integer enterpriseId, @PathVariable Integer customerId
) {
return menuService.getClientCustomerMenuRefsByCustomerId(enterpriseId, customerId);
}
@ApiOperation(value = "批量创建餐单绑定")
@PostMapping("/menuRefs/creation")
@ResponseStatus(HttpStatus.OK)
public BatchCreateMenuRefsResponseDto batchCreateMenuRefsByCustomerId(
@Valid@RequestBody BatchCreateMenuRefsDto batchCreateMenuRefsDto
){
return menuService.batchCreateMenuRefs(batchCreateMenuRefsDto);
}
@ApiOperation(value = "批量创建餐单绑定")
@PostMapping("/menuRefs/creation")
@ResponseStatus(HttpStatus.OK)
public BatchCreateMenuRefsResponseDto batchCreateMenuRefsByCustomerId(
@Valid @RequestBody BatchCreateMenuRefsDto batchCreateMenuRefsDto
) {
return menuService.batchCreateMenuRefs(batchCreateMenuRefsDto);
}
}
......
package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.OrderDbDTO;
import com.infoloop.tianting.model.dto.OrderDbDTO.BatchUpdateOrderDetailResponse;
......@@ -8,19 +7,14 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.CreateOrderResponse;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderAndDetailsDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDetailDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderResponse;
import com.infoloop.tianting.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.SuppressAjWarnings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
......@@ -32,6 +26,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "订单")
@ApiSupport(order = 0)
@Slf4j
......@@ -39,72 +36,72 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderController {
private final OrderService orderService;
private final OrderService orderService;
@ApiOperation(value = "根据customerId获取用户订单")
@GetMapping("/orders/{customerId}")
@ResponseStatus(HttpStatus.OK)
public OrderAndDetailsDto getOrderByCustomerId(@PathVariable Integer customerId) {
return orderService.getOrdersByCustomerId(customerId);
}
@ApiOperation(value = "根据customerId获取用户订单")
@GetMapping("/orders/{customerId}")
@ResponseStatus(HttpStatus.OK)
public OrderAndDetailsDto getOrderByCustomerId(@PathVariable Integer customerId) {
return orderService.getOrdersByCustomerId(customerId);
}
@ApiOperation(value = "根据openId获取用户订单")
@GetMapping("/enterprises/{enterpriseId}/orders/open/{openId}")
@ResponseStatus(HttpStatus.OK)
public OrderAndDetailsDto getOrderByOpenId(@PathVariable Integer enterpriseId,
@PathVariable String openId) {
return orderService.getOrdersByCondition(QueryOrderByConditionDto.builder()
.shouldFilterOpenId(true)
.enterpriseId(enterpriseId)
.openId(openId)
.build());
}
@ApiOperation(value = "根据openId获取用户订单")
@GetMapping("/enterprises/{enterpriseId}/orders/open/{openId}")
@ResponseStatus(HttpStatus.OK)
public OrderAndDetailsDto getOrderByOpenId(@PathVariable Integer enterpriseId,
@PathVariable String openId) {
return orderService.getOrdersByCondition(QueryOrderByConditionDto.builder()
.shouldFilterOpenId(true)
.enterpriseId(enterpriseId)
.openId(openId)
.build());
}
@ApiOperation(value = "根据orderId获取订单详情")
@GetMapping("/orderDetails/{orderId}")
@ResponseStatus(HttpStatus.OK)
public List<OrderDetailDto> getOrderDetailsByOrderId(@PathVariable Integer orderId) {
return orderService.getOrderDetailsByOrderId(orderId);
}
@ApiOperation(value = "根据orderId获取订单详情")
@GetMapping("/orderDetails/{orderId}")
@ResponseStatus(HttpStatus.OK)
public List<OrderDetailDto> getOrderDetailsByOrderId(@PathVariable Integer orderId) {
return orderService.getOrderDetailsByOrderId(orderId);
}
@ApiOperation(value = "创建订单")
@PostMapping("/orders")
@ResponseStatus(HttpStatus.OK)
public CreateOrderResponse createOrder(@Valid @RequestBody CreateOrderDto createOrderDto) {
return orderService.createOrder(createOrderDto);
}
@ApiOperation(value = "创建订单")
@PostMapping("/orders")
@ResponseStatus(HttpStatus.OK)
public CreateOrderResponse createOrder(@Valid @RequestBody CreateOrderDto createOrderDto) {
return orderService.createOrder(createOrderDto);
}
@ApiOperation(value = "院区端创建订单")
@PostMapping("/operator/orders")
@ResponseStatus(HttpStatus.OK)
public CreateOrderResponse createOrderByOperator(
@Valid @RequestBody OrderDbDTO.OperatorCreateOrderDto createOrderDto) {
return orderService.orderCreation(createOrderDto);
}
@ApiOperation(value = "院区端创建订单")
@PostMapping("/operator/orders")
@ResponseStatus(HttpStatus.OK)
public CreateOrderResponse createOrderByOperator(
@Valid @RequestBody OrderDbDTO.OperatorCreateOrderDto createOrderDto) {
return orderService.orderCreation(createOrderDto);
}
// @SaIgnore
@ApiOperation(value = "修改订单")
@PatchMapping("/orders/modification")
@ResponseStatus(HttpStatus.OK)
public UpdateOrderResponse updateOrder(@Valid @RequestBody UpdateOrderDto updateOrderDto) {
return orderService.updateOrder(updateOrderDto);
}
// @SaIgnore
@ApiOperation(value = "修改订单")
@PatchMapping("/orders/modification")
@ResponseStatus(HttpStatus.OK)
public UpdateOrderResponse updateOrder(@Valid @RequestBody UpdateOrderDto updateOrderDto) {
return orderService.updateOrder(updateOrderDto);
}
// @SaIgnore
@ApiOperation(value = "批量修改订单详情")
@PatchMapping("/order_details/modification")
@ResponseStatus(HttpStatus.OK)
public BatchUpdateOrderDetailResponse batchUpdateOrderDetails(
@Valid @RequestBody OrderDbDTO.OrderDetailBatchUpdateDto updateDto) {
return orderService.batchUpdateOrderDetails(updateDto);
}
// @SaIgnore
@ApiOperation(value = "批量修改订单详情")
@PatchMapping("/order_details/modification")
@ResponseStatus(HttpStatus.OK)
public BatchUpdateOrderDetailResponse batchUpdateOrderDetails(
@Valid @RequestBody OrderDbDTO.OrderDetailBatchUpdateDto updateDto) {
return orderService.batchUpdateOrderDetails(updateDto);
}
@ApiOperation(value = "获取已预定该餐单的次数")
@PostMapping("/order/check")
@ResponseStatus(HttpStatus.OK)
public Integer checkOrder(
@Valid @RequestBody OrderDbDTO.getMenuOrderCountDto checkIfOrderedDto) {
return orderService.getMenuOrderCount(checkIfOrderedDto);
}
@ApiOperation(value = "获取已预定该餐单的次数")
@PostMapping("/order/check")
@ResponseStatus(HttpStatus.OK)
public Integer checkOrder(
@Valid @RequestBody OrderDbDTO.getMenuOrderCountDto checkIfOrderedDto) {
return orderService.getMenuOrderCount(checkIfOrderedDto);
}
}
......
......@@ -4,37 +4,47 @@ import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.PayDTO;
import com.infoloop.tianting.model.dto.PayDTO.PayResponseDto;
import com.infoloop.tianting.model.dto.PaymentCallbackDTO;
import com.infoloop.tianting.service.client.PayServiceClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
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.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@Api(tags = "支付")
@ApiSupport(order = 0)
@ApiSupport(order = 1)
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class PayController {
private final PayServiceClient payServiceClient;
@SaIgnore
@ApiOperation(value = "支付通知")
@PostMapping("/pay/inform")
@ResponseStatus(HttpStatus.OK)
public PayResponseDto pay(
@Valid @RequestBody PayDTO.PayInformRequestDto payInformRequestDto
){
return payServiceClient.payInform(payInformRequestDto);
}
private final PayServiceClient payServiceClient;
@SaIgnore
@ApiOperation(value = "支付")
@PostMapping("/pay/inform")
@ResponseStatus(HttpStatus.OK)
public PayResponseDto pay(@Valid @RequestBody PayDTO.PayInformRequestDto payInformRequestDto) {
return payServiceClient.payInform(payInformRequestDto);
}
@SaIgnore
@ApiOperation(value = "支付通知")
@PostMapping(value = "/pay/callback", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public void callback(@RequestBody PaymentCallbackDTO payInformRequestDto) {
payServiceClient.callback(payInformRequestDto);
}
}
}
\ No newline at end of file
......
package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
import com.infoloop.tianting.model.dto.SkuDbDTO.SkuDto;
import com.infoloop.tianting.model.dto.SkuDbDTO.SkuIdsDto;
import com.infoloop.tianting.service.SkuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "sku")
@ApiSupport(order = 0)
@ApiSupport(order = 2)
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SkuController {
private final SkuService skuService;
private final SkuService skuService;
@ApiOperation(value = "根据sku ids获取")
@PostMapping("/skus")
@ResponseStatus(HttpStatus.OK)
public List<SkuDto> getOrderByCustomerId(@Valid@RequestBody SkuIdsDto skuIdsDto) {
return skuService.getSkusByIds(skuIdsDto.getIds());
}
@ApiOperation(value = "根据sku ids获取")
@PostMapping("/skus")
@ResponseStatus(HttpStatus.OK)
public List<SkuDto> getOrderByCustomerId(@Valid @RequestBody SkuIdsDto skuIdsDto) {
return skuService.getSkusByIds(skuIdsDto.getIds());
}
}
......
package com.infoloop.tianting.controller;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.constant.PathVariableResourceConstants;
import com.infoloop.tianting.model.common.CreatedResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.TestExampleDbDTO;
import com.infoloop.tianting.model.vo.TestExampleDbVO;
import com.infoloop.tianting.service.TestService;
import com.tianting.infoloop.grpc.exampleservice.SingleTestExampleDbRpcResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.util.List;
@Api(tags = "示例")
@ApiSupport(order = -1)
@Slf4j
@Validated
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestController {
private final TestService testService;
@ApiOperation(value = "分页查询")
@PostMapping("/testexampledbs/page")
@ResponseStatus(HttpStatus.OK)
public PageResult<TestExampleDbVO> queryPage(@Valid @RequestBody TestExampleDbDTO.QueryPage queryPage) {
return testService.queryPage(queryPage);
}
@ApiOperation(value = "查询所有")
@PostMapping("/testexampledbs/queryall")
@ResponseStatus(HttpStatus.OK)
public List<TestExampleDbVO> queryAll() {
return testService.queryAll();
}
@ApiOperation(value = "新增")
@PutMapping("/testexampledb")
@ResponseStatus(HttpStatus.CREATED)
public CreatedResult<TestExampleDbVO> createTestExampleDb(@Valid @RequestBody TestExampleDbDTO.CreateTestExampleDb createTestExampleDb) {
return testService.createTestExampleDb(createTestExampleDb);
}
@ApiOperation(value = "修改")
@PatchMapping("/testexampledb/{testExampleDbId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void updateTestExampleDb(@ApiIgnore @RequestAttribute(PathVariableResourceConstants.INJECTED_TEST_EXAMPLE_DB) final SingleTestExampleDbRpcResponse testExampleDbRpcResponse,
@Valid @RequestBody TestExampleDbDTO.UpdateTestExampleDb updateTestExampleDb) {
testService.updateTestExampleDb(testExampleDbRpcResponse, updateTestExampleDb);
}
@ApiOperation(value = "删除")
@DeleteMapping("/testexampledb/{testExampleDbId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteTestExampleDb(@ApiIgnore @RequestAttribute(PathVariableResourceConstants.INJECTED_TEST_EXAMPLE_DB)final SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
testService.deleteTestExampleDb(testExampleDbRpcResponse);
}
@ApiOperation(value = "详情")
@GetMapping("/testexampledb/{testExampleDbId}")
@ResponseStatus(HttpStatus.OK)
public TestExampleDbVO getTestExampleDb(@ApiIgnore @RequestAttribute(PathVariableResourceConstants.INJECTED_TEST_EXAMPLE_DB)final SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
return testService.getTestExampleDb(testExampleDbRpcResponse);
}
}
......@@ -27,6 +27,8 @@ public enum ErrorCodeEnum implements BaseEnum {
GENERATE_EXCEL_ERROR(406000004, "生成excel失败"),
ORDER_COUNT_LIMIT(406000005, "已超过该餐单预定次数"),
QUERY_CLIENT_CUSTOMER_ERROR(406000006, "获取当日在住客户失败"),
;
private final int code;
......
......@@ -2,10 +2,6 @@ package com.infoloop.tianting.intercepter;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.strategy.SaStrategy;
import cn.hutool.core.convert.Convert;
import com.infoloop.tianting.constant.PathVariableResourceConstants;
import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.service.client.ExampleServiceRpcClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -22,8 +18,6 @@ import java.util.Map;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ResourceInjector implements HandlerInterceptor {
private final ExampleServiceRpcClient exampleServiceRpcClient;
@Override
@SuppressWarnings("unchecked")
public boolean preHandle(@NonNull final HttpServletRequest httpServletRequest, @NonNull final HttpServletResponse httpServletResponse, @NonNull final Object handler) {
......@@ -39,24 +33,6 @@ public class ResourceInjector implements HandlerInterceptor {
if (pathVariables == null) {
return true;
}
/*
注入TestExampleDb
*/
if (pathVariables.containsKey(PathVariableResourceConstants.TEST_EXAMPLE_DB_ID_PATH_VARIABLE)) {
final var idStr = pathVariables.get(PathVariableResourceConstants.TEST_EXAMPLE_DB_ID_PATH_VARIABLE);
final var id = Convert.toInt(idStr, 0);
if (id <= 0) {
throw ClientEndExceptions.ResourceNotFound.build("示例不存在");
}
final var response = exampleServiceRpcClient.getTestExampleDbById(id);
if (response == null) {
throw ClientEndExceptions.ResourceNotFound.build("示例不存在");
}
httpServletRequest.setAttribute(PathVariableResourceConstants.INJECTED_TEST_EXAMPLE_DB, response);
}
return true;
}
}
......
package com.infoloop.tianting.model.create;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestExampleDbCreate {
private String name;
private TestExampleDbStatusEnum status;
}
package com.infoloop.tianting.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import io.swagger.annotations.ApiModel;
import javax.print.DocFlavor.STRING;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.context.annotation.Primary;
@Data
@ApiModel(description = "支付DTO")
public class PayDTO {
@Data
@Builder
@ApiModel(description = "支付通知请求dto")
@ApiModel(description = "支付请求dto")
@NoArgsConstructor
@AllArgsConstructor
public static class PayInformRequestDto {
......@@ -28,50 +27,52 @@ public class PayDTO {
}
@Data
@Builder
@ApiModel(description = "支付通知结果dto")
@ApiModel(description = "支付MiniPay结果")
@NoArgsConstructor
@AllArgsConstructor
@JacksonXmlRootElement(localName = "miniPayRequest")
public static class MiniPayRequest {
@JacksonXmlProperty(localName = "timeStamp")
private String timeStamp;
@JsonProperty("package")
@JacksonXmlProperty(localName = "package")
private String packageInfo;
@JacksonXmlProperty(localName = "paySign")
private String paySign;
@JacksonXmlProperty(localName = "appId")
private String appId;
@JacksonXmlProperty(localName = "signType")
private String signType;
@JacksonXmlProperty(localName = "nonceStr")
private String nonceStr;
}
@Data
@Builder
@ApiModel(description = "支付通知结果dto")
@ApiModel(description = "支付结果")
@NoArgsConstructor
@AllArgsConstructor
public static class PayResult{
private Boolean TransSN;
@JacksonXmlProperty(localName = "TransSN")
private String TransSN;
@JacksonXmlProperty(localName = "MsgId")
private String MsgId;
@JacksonXmlProperty(localName = "tradeId")
private String tradeId;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JacksonXmlProperty(localName = "miniPayRequest")
private MiniPayRequest miniPayRequest;
}
@Data
@Builder
@ApiModel(description = "支付通知响应dto")
@ApiModel(description = "支付响应")
@NoArgsConstructor
@AllArgsConstructor
@JacksonXmlRootElement(localName = "JSONObject")
public static class PayResponseDto {
@JacksonXmlProperty(localName = "success")
private Boolean success;
@JacksonXmlProperty(localName = "error")
private String error;
private PayResult result;
}
@Data
@Builder
@ApiModel(description = "支付状态修改dto")
@NoArgsConstructor
@AllArgsConstructor
public static class PayStatusUpdateRequestDto {
private Boolean success;
private String error;
@JacksonXmlProperty(localName = "result")
private PayResult result;
}
......
package com.infoloop.tianting.model.dto;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;
@Data
public class PaymentCallbackDTO {
@JacksonXmlProperty(localName = "TradeId")
private String tradeId;
@JacksonXmlProperty(localName = "TransSN")
private String transSN;
@JacksonXmlProperty(localName = "TransType")
private String transType;
@JacksonXmlProperty(localName = "TransAmount")
private String transAmount;
@JacksonXmlProperty(localName = "RealAmount")
private String realAmount;
@JacksonXmlProperty(localName = "PayMode")
private String payMode;
@JacksonXmlProperty(localName = "PayModeRemark")
private String payModeRemark;
@JacksonXmlProperty(localName = "TransDate")
private String transDate;
@JacksonXmlProperty(localName = "OrginalTransSN")
private String orginalTransSN;
@JacksonXmlProperty(localName = "Remark")
private String remark;
@JacksonXmlProperty(localName = "PayModeNote")
private String payModeNote;
@JacksonXmlProperty(localName = "PayIdentify")
private String payIdentify;
@JacksonXmlProperty(localName = "PayIdentifyNote")
private String payIdentifyNote;
}
package com.infoloop.tianting.model.dto;
import com.infoloop.tianting.SkuAttribute;
import io.swagger.annotations.ApiModel;
import io.swagger.models.auth.In;
import java.util.List;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(description = "SkuDTO")
public class SkuDbDTO {
......@@ -65,5 +64,6 @@ public class SkuDbDTO {
List<SkuSpecialDetailSingleResponseDto> doctorList; // 医嘱
List<SkuDetailSingleResponseDto> avoidList; // 忌口
List<SkuDetailSingleResponseDto> skuList; // 配料
List<SkuDetailSingleResponseDto> cecommendList;
}
}
......
package com.infoloop.tianting.model.dto;
import com.infoloop.tianting.model.common.PageInfo;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(description = "示例参数信息")
public class TestExampleDbDTO {
@Data
@ApiModel(description = "查询分页参数")
public static class QueryPage {
@ApiModelProperty("分页信息")
@Valid
private PageInfo pageInfo;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态")
private TestExampleDbStatusEnum status;
}
@Data
@ApiModel(description = "条件查询参数")
public static class QueryByCondition {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态")
private TestExampleDbStatusEnum status;
}
@Data
@ApiModel(description = "创建信息参数")
public static class CreateTestExampleDb {
@ApiModelProperty("名称")
@NotEmpty(message = "名称不能为空")
private String name;
@ApiModelProperty("状态")
@NotNull(message = "状态不能为空")
private TestExampleDbStatusEnum status;
}
@Data
@ApiModel(description = "修改信息参数")
public static class UpdateTestExampleDb {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态")
private TestExampleDbStatusEnum status;
}
}
package com.infoloop.tianting.model.query;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestExampleDbQuery {
private String name;
private TestExampleDbStatusEnum status;
}
package com.infoloop.tianting.model.update;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestExampleDbUpdate {
private int id;
private String name;
private TestExampleDbStatusEnum status;
}
package com.infoloop.tianting.model.vo;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
@Data
@Builder
@ToString
@ApiModel(description = "示例试图")
public class TestExampleDbVO {
@ApiModelProperty("ID")
private int id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("状态")
private TestExampleDbStatusEnum status;
@ApiModelProperty("创建时间")
private String createdAt;
@ApiModelProperty("修改时间")
private String updatedAt;
}
package com.infoloop.tianting.service;
import com.infoloop.tianting.model.common.CreatedResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.dto.TestExampleDbDTO;
import com.infoloop.tianting.model.vo.TestExampleDbVO;
import com.tianting.infoloop.grpc.exampleservice.SingleTestExampleDbRpcResponse;
import javax.validation.Valid;
import java.util.List;
public interface TestService {
PageResult<TestExampleDbVO> queryPage(TestExampleDbDTO.@Valid QueryPage queryPage);
List<TestExampleDbVO> queryAll();
CreatedResult<TestExampleDbVO> createTestExampleDb(TestExampleDbDTO.CreateTestExampleDb createTestExampleDb);
void updateTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse, TestExampleDbDTO.UpdateTestExampleDb updateTestExampleDb);
void deleteTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse);
TestExampleDbVO getTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse);
}
......@@ -11,14 +11,13 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CategoriesServiceRpcClient {
private final CategoriesServiceProtoRpcGrpc.CategoriesServiceProtoRpcBlockingStub
categoriesServiceProtoRpcBlockingStub;
private final CategoriesServiceProtoRpcGrpc.CategoriesServiceProtoRpcBlockingStub categoriesServiceProtoRpcBlockingStub;
public QueryCategoriesServiceAllRpcResponse queryCategoriesAll(Integer enterpriseId) {
final var request = QueryCategoriesServiceAllRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.build();
return categoriesServiceProtoRpcBlockingStub.queryCategoriesAll(request);
}
public QueryCategoriesServiceAllRpcResponse queryCategoriesAll(Integer enterpriseId) {
final var request = QueryCategoriesServiceAllRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.build();
return categoriesServiceProtoRpcBlockingStub.queryCategoriesAll(request);
}
}
......
package com.infoloop.tianting.service.client;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.infoloop.tianting.config.BusinessConfig;
import com.infoloop.tianting.constant.CommonConstants;
import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.model.dto.ClientCustomerDbDTO.CurrentClientCustomerDto;
import com.infoloop.tianting.model.dto.ClientCustomerDbDTO.CurrentClientCustomerListDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RequiredArgsConstructor
public class ClientCustomerServiceHttpClient {
private final OkHttpClient client = new OkHttpClient();
public List<CurrentClientCustomerDto> getCurrentClientCustomer(String token, boolean isHis) {
ObjectMapper objectMapper = new ObjectMapper();
try {
String url = "";
if (isHis) {
url = "https://nutri2.infoscm.cn/v3/hiscustomers/current/query";
} else {
url = "https://nutri2.infoscm.cn/v3/clientcustomers/current/query";
}
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, "{}");
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Authorization", token)
.build();
Response response = client.newCall(request).execute();
private final BusinessConfig businessConfig;
private final RestTemplate restTemplate;
String jsonData = response.body().string();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper.readValue(jsonData, CurrentClientCustomerListDto.class).getRows();
} catch (Exception e) {
System.out.println("error"+e.getMessage());
throw new IllegalArgumentException("获取当日在住客户失败");
public List<CurrentClientCustomerDto> getCurrentClientCustomer(String token, boolean isHis) {
String url = isHis ? businessConfig.getHisCustomerQueryUrl() : businessConfig.getClientCustomerQueryUrl();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set(CommonConstants.AUTHORIZATION, token);
HttpEntity<String> requestEntity = new HttpEntity<>("{}", headers);
try {
ResponseEntity<CurrentClientCustomerListDto> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, CurrentClientCustomerListDto.class);
if (!responseEntity.getStatusCode().is2xxSuccessful() || responseEntity.getBody() == null) {
log.error("Failed to fetch client customer data. Response: {}", responseEntity);
throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.QUERY_CLIENT_CUSTOMER_ERROR);
}
return responseEntity.getBody().getRows();
} catch (Exception e) {
log.error("Error fetching client customer data", e);
throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.QUERY_CLIENT_CUSTOMER_ERROR);
}
}
}
}
\ No newline at end of file
......
package com.infoloop.tianting.service.client;
import com.infoloop.tianting.deliveryruleservice.ClientLabelTypeEnum;
import com.infoloop.tianting.deliveryruleservice.GetClientLabelsByIdsRpcRequest;
import com.infoloop.tianting.deliveryruleservice.GetClientLabelsByIdsRpcResponse;
import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcRequest;
import com.infoloop.tianting.deliveryruleservice.QueryClientLabelsByConditionRpcResponse;
import com.infoloop.tianting.deliveryruleservice.TiantingDeliveryRuleServiceRpcGrpc;
import com.infoloop.tianting.model.dto.ClientLabelDTO.QueryLabelsDto;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class DeliveryRuleServiceRpcClient {
private final TiantingDeliveryRuleServiceRpcGrpc.TiantingDeliveryRuleServiceRpcBlockingStub
deliveryRuleServiceRpcBlockingStub;
public QueryClientLabelsByConditionRpcResponse getLabelsByTypes(QueryLabelsDto queryLabelsDto) {
final var request = QueryClientLabelsByConditionRpcRequest.newBuilder()
.setEnterpriseId(queryLabelsDto.getEnterpriseId())
.setShouldFilterTypes(true)
.addAllTypes(queryLabelsDto.getTypes())
.setIncludeDeleted(false)
.build();
return deliveryRuleServiceRpcBlockingStub.queryClientLabelsByCondition(request);
}
public GetClientLabelsByIdsRpcResponse GetClientLabelsByIds(Integer enterpriseId, List<Integer> ids) {
final var request = GetClientLabelsByIdsRpcRequest
.newBuilder()
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.addAllIds(ids)
.build();
return deliveryRuleServiceRpcBlockingStub.getClientLabelsByIds(request);
}
private final TiantingDeliveryRuleServiceRpcGrpc.TiantingDeliveryRuleServiceRpcBlockingStub
deliveryRuleServiceRpcBlockingStub;
public QueryClientLabelsByConditionRpcResponse getLabelsByTypes(QueryLabelsDto queryLabelsDto) {
final var request = QueryClientLabelsByConditionRpcRequest.newBuilder()
.setEnterpriseId(queryLabelsDto.getEnterpriseId())
.setShouldFilterTypes(true)
.addAllTypes(queryLabelsDto.getTypes())
.setIncludeDeleted(false)
.build();
return deliveryRuleServiceRpcBlockingStub.queryClientLabelsByCondition(request);
}
public GetClientLabelsByIdsRpcResponse GetClientLabelsByIds(Integer enterpriseId, List<Integer> ids) {
final var request = GetClientLabelsByIdsRpcRequest
.newBuilder()
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.addAllIds(ids)
.build();
return deliveryRuleServiceRpcBlockingStub.getClientLabelsByIds(request);
}
}
......
......@@ -11,14 +11,14 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class EnterpriseResourceServiceRpcClient {
private final EnterpriseResourceTagServiceRpcGrpc.EnterpriseResourceTagServiceRpcBlockingStub
enterpriseResourceTagServiceRpcBlockingStub;
private final EnterpriseResourceTagServiceRpcGrpc.EnterpriseResourceTagServiceRpcBlockingStub
enterpriseResourceTagServiceRpcBlockingStub;
public UserTagsAndResourcesGetResponse getUserResources(Integer enterpriseId, Integer userId) {
final var request = UserTagsAndResourcesGetRequest.newBuilder()
.setSubjectId(enterpriseId)
.setUserId(userId)
.build();
return enterpriseResourceTagServiceRpcBlockingStub.getUserResources(request);
}
public UserTagsAndResourcesGetResponse getUserResources(Integer enterpriseId, Integer userId) {
final var request = UserTagsAndResourcesGetRequest.newBuilder()
.setSubjectId(enterpriseId)
.setUserId(userId)
.build();
return enterpriseResourceTagServiceRpcBlockingStub.getUserResources(request);
}
}
......
package com.infoloop.tianting.service.client;
import com.infoloop.tianting.model.common.PageInfo;
import com.infoloop.tianting.model.create.TestExampleDbCreate;
import com.infoloop.tianting.model.query.TestExampleDbQuery;
import com.infoloop.tianting.model.update.TestExampleDbUpdate;
import com.tianting.infoloop.grpc.exampleservice.BatchCreateTestExampleDbRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.BatchCreateTestExampleDbRpcResponse;
import com.tianting.infoloop.grpc.exampleservice.BatchUpdateTestExampleDbRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.CreateTestExampleDbRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.CreateTestExampleDbRpcResponse;
import com.tianting.infoloop.grpc.exampleservice.DeleteTestExampleDbByIdsRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.ExampleServiceRpcGrpc;
import com.tianting.infoloop.grpc.exampleservice.GetAllTestExampleDbRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.GetTestExampleDbByIdRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.GetTestExampleDbByIdsRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.QueryTestExampleDbByConditionRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.QueryTestExampleDbByPaginationRpcRequest;
import com.tianting.infoloop.grpc.exampleservice.QueryTestExampleDbByPaginationRpcResponse;
import com.tianting.infoloop.grpc.exampleservice.SingleTestExampleDbRpcResponse;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbCreation;
import com.tianting.infoloop.grpc.exampleservice.TestExampleDbModification;
import com.tianting.infoloop.grpc.exampleservice.UpdateTestExampleDbRpcRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ExampleServiceRpcClient {
private final ExampleServiceRpcGrpc.ExampleServiceRpcBlockingStub exampleServiceRpcBlockingStub;
/**
* RPC Client示例
*/
@Nullable
public SingleTestExampleDbRpcResponse getTestExampleDbById(int id) {
final var response = exampleServiceRpcBlockingStub.getTestExampleDbById(GetTestExampleDbByIdRpcRequest.newBuilder()
.setId(id)
.build());
if (!response.hasResponse()) {
return null;
}
return response.getResponse();
}
public List<SingleTestExampleDbRpcResponse> getTestExampleDbByIds(List<Integer> ids) {
return exampleServiceRpcBlockingStub.getTestExampleDbByIds(GetTestExampleDbByIdsRpcRequest.newBuilder()
.addAllIds(ids)
.build()).getResponsesList();
}
public List<SingleTestExampleDbRpcResponse> getAllTestExampleDb() {
return exampleServiceRpcBlockingStub.getAllTestExampleDb(GetAllTestExampleDbRpcRequest.newBuilder().build()).getResponsesList();
}
public List<SingleTestExampleDbRpcResponse> queryTestExampleDbByCondition(TestExampleDbQuery query) {
final var builder = QueryTestExampleDbByConditionRpcRequest.newBuilder();
if (query.getName() != null) {
builder.setName(query.getName());
}
if (query.getStatus() != null) {
builder.setStatus(query.getStatus());
}
return exampleServiceRpcBlockingStub.queryTestExampleDbByCondition(builder.build()).getResponsesList();
}
public QueryTestExampleDbByPaginationRpcResponse queryTestExampleDbByPagination(PageInfo pageInfo, TestExampleDbQuery query) {
final var builder = QueryTestExampleDbByPaginationRpcRequest.newBuilder();
builder.setPageNo(pageInfo.getPageNo());
builder.setPageSize(pageInfo.getPageSize());
if (query.getName() != null) {
builder.setName(query.getName());
}
if (query.getStatus() != null) {
builder.setStatus(query.getStatus());
}
return exampleServiceRpcBlockingStub.queryTestExampleDbByPagination(builder.build());
}
public CreateTestExampleDbRpcResponse createTestExampleDb(TestExampleDbCreate create) {
final var creation = TestExampleDbCreation.newBuilder()
.setName(create.getName())
.setStatus(create.getStatus())
.build();
return exampleServiceRpcBlockingStub.createTestExampleDb(CreateTestExampleDbRpcRequest.newBuilder().setCreation(creation).build());
}
public BatchCreateTestExampleDbRpcResponse batchCreateTestExampleDb(List<TestExampleDbCreate> createList) {
final var creationList = createList.stream().map(e -> TestExampleDbCreation.newBuilder()
.setName(e.getName())
.setStatus(e.getStatus())
.build()).collect(Collectors.toList());
return exampleServiceRpcBlockingStub.batchCreateTestExampleDb(BatchCreateTestExampleDbRpcRequest.newBuilder().addAllCreations(creationList).build());
}
public boolean updateTestExampleDb(TestExampleDbUpdate update) {
final var builder = TestExampleDbModification.newBuilder()
.setId(update.getId());
if (update.getName() != null) {
builder.setName(update.getName());
}
if (update.getStatus() != null) {
builder.setStatus(update.getStatus());
}
return exampleServiceRpcBlockingStub.updateTestExampleDb(UpdateTestExampleDbRpcRequest.newBuilder().setModification(builder.build()).build()).getIsUpdated();
}
public boolean batchUpdateTestExampleDb(List<TestExampleDbUpdate> updateList) {
final var modificationList = updateList.stream().map(update -> {
final var builder = TestExampleDbModification.newBuilder()
.setId(update.getId());
if (update.getName() != null) {
builder.setName(update.getName());
}
if (update.getStatus() != null) {
builder.setStatus(update.getStatus());
}
return builder.build();
}).collect(Collectors.toList());
return exampleServiceRpcBlockingStub.batchUpdateTestExampleDb(BatchUpdateTestExampleDbRpcRequest.newBuilder().addAllModifications(modificationList).build()).getIsUpdated();
}
public boolean deleteTestExampleDbByIds(List<Integer> ids) {
return exampleServiceRpcBlockingStub.deleteTestExampleDbByIds(DeleteTestExampleDbByIdsRpcRequest.newBuilder().addAllIds(ids).build()).getIsDeleted();
}
}
......@@ -12,66 +12,67 @@ import com.infoloop.tianting.clientinventoryservice.QueryClientTableCodesByCondi
import com.infoloop.tianting.clientinventoryservice.QueryClientTableCodesByConditionRpcResponse;
import com.infoloop.tianting.clientinventoryservice.TiantingClientInventoryServiceRpcGrpc;
import com.infoloop.tianting.model.dto.InventoryDbDTO.TableCodeQueryConditionDto;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class InventoryServiceRpcClient {
private final TiantingClientInventoryServiceRpcGrpc.TiantingClientInventoryServiceRpcBlockingStub
inventoryServiceRpcBlockingStub;
private final TiantingClientInventoryServiceRpcGrpc.TiantingClientInventoryServiceRpcBlockingStub
inventoryServiceRpcBlockingStub;
public GetClientByIdRpcResponse getClientById(Integer enterprise, Integer clientId) {
final var request = GetClientByIdRpcRequest.newBuilder()
.setEnterpriseId(enterprise)
.setId(clientId)
.build();
return inventoryServiceRpcBlockingStub.getClientById(request);
public GetClientByIdRpcResponse getClientById(Integer enterprise, Integer clientId) {
final var request = GetClientByIdRpcRequest.newBuilder()
.setEnterpriseId(enterprise)
.setId(clientId)
.build();
return inventoryServiceRpcBlockingStub.getClientById(request);
}
}
public GetClientsByIdsRpcResponse getClientsByIds(Integer enterpriseId, List<Integer> clientIds) {
final var request = GetClientsByIdsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.addAllIds(clientIds)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getClientsByIds(request);
}
public GetClientsByIdsRpcResponse getClientsByIds(Integer enterpriseId, List<Integer> clientIds) {
final var request = GetClientsByIdsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.addAllIds(clientIds)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getClientsByIds(request);
}
public GetStallsByIdsRpcResponse getStallsByIds(Integer enterpriseId, List<Integer> stallIds) {
final var request = GetStallsByIdsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.addAllIds(stallIds)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getStallsByIds(request);
}
public GetStallsByIdsRpcResponse getStallsByIds(Integer enterpriseId, List<Integer> stallIds) {
final var request = GetStallsByIdsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.addAllIds(stallIds)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getStallsByIds(request);
}
public GetStallsByClientIdRpcResponse getStallsByClientId(Integer enterpriseId, Integer clientId) {
final var request = GetStallsByClientIdRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.setClientId(clientId)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getStallsByClientId(request);
}
public GetStallsByClientIdRpcResponse getStallsByClientId(Integer enterpriseId, Integer clientId) {
final var request = GetStallsByClientIdRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.setClientId(clientId)
.setIncludeDeleted(false)
.build();
return inventoryServiceRpcBlockingStub.getStallsByClientId(request);
}
public QueryClientTableCodesByConditionRpcResponse queryClientTableCodesByCondition(
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
final var request = QueryClientTableCodesByConditionRpcRequest
.newBuilder()
.setEnterpriseId(tableCodeQueryConditionDto.getEnterpriseId())
.setShouldFilterClientIds(tableCodeQueryConditionDto.getShouldFilterClientIds())
.addAllClientIds(tableCodeQueryConditionDto.getClientIds())
.setShouldFilterStallIds(tableCodeQueryConditionDto.getShouldFilterStallIds())
.addAllStallIds(tableCodeQueryConditionDto.getStallIds())
.build();
return inventoryServiceRpcBlockingStub.queryClientTableCodesByCondition(request);
}
public QueryClientTableCodesByConditionRpcResponse queryClientTableCodesByCondition(
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
final var request = QueryClientTableCodesByConditionRpcRequest
.newBuilder()
.setEnterpriseId(tableCodeQueryConditionDto.getEnterpriseId())
.setShouldFilterClientIds(tableCodeQueryConditionDto.getShouldFilterClientIds())
.addAllClientIds(tableCodeQueryConditionDto.getClientIds())
.setShouldFilterStallIds(tableCodeQueryConditionDto.getShouldFilterStallIds())
.addAllStallIds(tableCodeQueryConditionDto.getStallIds())
.build();
return inventoryServiceRpcBlockingStub.queryClientTableCodesByCondition(request);
}
}
......
......@@ -5,35 +5,35 @@ import com.infoloop.tianting.setmealscheduleservice.GetAllMealsRpcResponse;
import com.infoloop.tianting.setmealscheduleservice.GetMealsByIdsRpcRequest;
import com.infoloop.tianting.setmealscheduleservice.GetMealsByIdsRpcResponse;
import com.infoloop.tianting.setmealscheduleservice.SetMealScheduleServiceRpcGrpc;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MealServiceRpcClient {
private final SetMealScheduleServiceRpcGrpc.SetMealScheduleServiceRpcBlockingStub
setMealScheduleServiceRpcBlockingStub;
public GetMealsByIdsRpcResponse getMealsByIds(Integer enterpriseId, List<Integer> ids) {
final var request = GetMealsByIdsRpcRequest.newBuilder()
.addAllIds(ids)
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.build();
return setMealScheduleServiceRpcBlockingStub.getMealsByIds(request);
}
public GetAllMealsRpcResponse getAllMeals(Integer enterpriseId) {
final var request = GetAllMealsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.build();
return setMealScheduleServiceRpcBlockingStub.getAllMeals(request);
}
private final SetMealScheduleServiceRpcGrpc.SetMealScheduleServiceRpcBlockingStub
setMealScheduleServiceRpcBlockingStub;
public GetMealsByIdsRpcResponse getMealsByIds(Integer enterpriseId, List<Integer> ids) {
final var request = GetMealsByIdsRpcRequest.newBuilder()
.addAllIds(ids)
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.build();
return setMealScheduleServiceRpcBlockingStub.getMealsByIds(request);
}
public GetAllMealsRpcResponse getAllMeals(Integer enterpriseId) {
final var request = GetAllMealsRpcRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.setIncludeDeleted(false)
.build();
return setMealScheduleServiceRpcBlockingStub.getAllMeals(request);
}
}
......
......@@ -5,31 +5,30 @@ import com.infoloop.rpc.meizhongyiheservice.GetCustomerAllergiesByCustomerIdsRpc
import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest;
import com.infoloop.rpc.meizhongyiheservice.GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse;
import com.infoloop.rpc.meizhongyiheservice.MeiZhongYiHeServiceRpcGrpc;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MeiZhongYiHeServiceClient {
private final MeiZhongYiHeServiceRpcGrpc.MeiZhongYiHeServiceRpcBlockingStub
meiZhongYiHeServiceRpcBlockingStub;
private final MeiZhongYiHeServiceRpcGrpc.MeiZhongYiHeServiceRpcBlockingStub meiZhongYiHeServiceRpcBlockingStub;
public GetCustomerAllergiesByCustomerIdsRpcResponse getHisCustomerAllergiesByCustomerId(
String hisCustomerId ) {
final var request = GetCustomerAllergiesByCustomerIdsRpcRequest.newBuilder()
.addAllCustomerIds(List.of(hisCustomerId))
.build();
return meiZhongYiHeServiceRpcBlockingStub.getCustomerAllergiesByCustomerIds(request);
}
public GetCustomerAllergiesByCustomerIdsRpcResponse getHisCustomerAllergiesByCustomerId(
String hisCustomerId) {
final var request = GetCustomerAllergiesByCustomerIdsRpcRequest.newBuilder()
.addAllCustomerIds(List.of(hisCustomerId))
.build();
return meiZhongYiHeServiceRpcBlockingStub.getCustomerAllergiesByCustomerIds(request);
}
public GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse
getHisCustomerMedicalAdvicesByContractNo (String contractNo) {
final var request = GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest.newBuilder()
.addAllHospitalRecordIds(List.of(contractNo))
.build();
return meiZhongYiHeServiceRpcBlockingStub.getCustomerMedicalAdvicesByHospitalRecordIds(request);
}
public GetCustomerMedicalAdvicesByHospitalRecordIdsRpcResponse getHisCustomerMedicalAdvicesByContractNo(String contractNo) {
final var request = GetCustomerMedicalAdvicesByHospitalRecordIdsRpcRequest.newBuilder()
.addAllHospitalRecordIds(List.of(contractNo))
.build();
return meiZhongYiHeServiceRpcBlockingStub.getCustomerMedicalAdvicesByHospitalRecordIds(request);
}
}
......
......@@ -3,7 +3,6 @@ package com.infoloop.tianting.service.client;
import com.infoloop.tianting.COperatorServiceProtoRpcGrpc;
import com.infoloop.tianting.GetCOperatorByIdRpcRequest;
import com.infoloop.tianting.GetCOperatorByMobileOrEmailRpcRequest;
import com.infoloop.tianting.GetCOperatorByMobileOrEmailRpcResponse;
import com.infoloop.tianting.SingleCOperatorRpcResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -13,21 +12,19 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OperatorServiceRpcClient {
private final COperatorServiceProtoRpcGrpc.COperatorServiceProtoRpcBlockingStub
cOperatorServiceProtoRpcBlockingStub;
private final COperatorServiceProtoRpcGrpc.COperatorServiceProtoRpcBlockingStub cOperatorServiceProtoRpcBlockingStub;
public SingleCOperatorRpcResponse getCOperatorByMobileOrEmail(String keyword) {
final var request = GetCOperatorByMobileOrEmailRpcRequest.newBuilder()
.setKeyword(keyword)
.build();
return cOperatorServiceProtoRpcBlockingStub.getCOperatorByMobileOrEmail(request).getResponse();
}
public SingleCOperatorRpcResponse getCOperatorById(Integer id) {
final var request = GetCOperatorByIdRpcRequest.newBuilder().setId(id).build();
return cOperatorServiceProtoRpcBlockingStub.getCOperatorById(request).getResponse();
}
public SingleCOperatorRpcResponse getCOperatorByMobileOrEmail(String keyword) {
final var request = GetCOperatorByMobileOrEmailRpcRequest.newBuilder()
.setKeyword(keyword)
.build();
return cOperatorServiceProtoRpcBlockingStub.getCOperatorByMobileOrEmail(request).getResponse();
}
public SingleCOperatorRpcResponse getCOperatorById(Integer id) {
final var request = GetCOperatorByIdRpcRequest.newBuilder().setId(id).build();
return cOperatorServiceProtoRpcBlockingStub.getCOperatorById(request).getResponse();
}
}
......
package com.infoloop.tianting.service.client;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.infoloop.tianting.config.BusinessConfig;
import com.infoloop.tianting.model.dto.PayDTO.PayInformRequestDto;
import com.infoloop.tianting.model.dto.PayDTO.PayResponseDto;
import com.infoloop.tianting.model.dto.PayDTO.ThirdPartyPayInformRequestDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.model.dto.PaymentCallbackDTO;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.EncryptionUtil;
import java.io.IOException;
import java.time.LocalDateTime;
import lombok.RequiredArgsConstructor;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mapping.model.PropertyNameFieldNamingStrategy;
import org.springframework.jmx.export.naming.IdentityNamingStrategy;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.time.LocalDateTime;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class PayServiceClient {
private final OkHttpClient client = new OkHttpClient();
private final RestTemplate restTemplate;
private final BusinessConfig businessConfig;
private final ObjectMapper objectMapper;
@Value("${payment.client-id:Order0001}")
private String clientId;
public PayResponseDto payInform(PayInformRequestDto payRequestDto) {
try {
String url = "http://10.2.5.162:21051/API/Microapp/CreateOrder?appid=Order0001";
String clientId = "Order0001";
ObjectMapper objectMapper = new ObjectMapper();
// objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
private final XmlMapper xmlMapper = new XmlMapper();
ThirdPartyPayInformRequestDto jsonData = new ThirdPartyPayInformRequestDto();
jsonData.setClientId(clientId);
jsonData.setTradeId(payRequestDto.getOrderId()); //payRequestDto.getOrderId()
String requestDate = DateUtil.formatDate(LocalDateTime.now(), DateUtil.YMDHMS);
jsonData.setRequestDate(requestDate);
jsonData.setRequestSource("OFWXApplet");
jsonData.setPayerOpenId(payRequestDto.getOpenId());
jsonData.setHospitalCode("AMCAREBJLD"); //payRequestDto.getHospitalCode()
jsonData.setPID(payRequestDto.getPhone());
jsonData.setRemark("");
jsonData.setTransAmount(payRequestDto.getPrice());
jsonData.setTradeDesc("");
String signStr = EncryptionUtil.sha1Encryption(
clientId+payRequestDto.getOrderId()+requestDate+"Order0001");
jsonData.setSign(signStr);
String jsonDataString = objectMapper.writeValueAsString(jsonData);
public PayResponseDto payInform(PayInformRequestDto payRequestDto) {
String url = businessConfig.getPayUrl();
String requestDate = DateUtil.formatDate(LocalDateTime.now(), DateUtil.YMDHMS);
ThirdPartyPayInformRequestDto jsonData = buildRequestData(payRequestDto, requestDate);
String jsonDataString;
try {
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
jsonDataString = objectMapper.writeValueAsString(jsonData);
} catch (JsonProcessingException e) {
log.error("Failed to serialize request data", e);
throw new IllegalArgumentException("支付通知失败: JSON 解析错误");
}
HttpEntity<String> requestEntity = new HttpEntity<>(jsonDataString, createHeaders());
log.info("payInform request: {}", jsonDataString);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
return processResponse(responseEntity);
}
private ThirdPartyPayInformRequestDto buildRequestData(PayInformRequestDto payRequestDto, String requestDate) {
ThirdPartyPayInformRequestDto jsonData = new ThirdPartyPayInformRequestDto();
jsonData.setClientId(clientId);
jsonData.setTradeId(payRequestDto.getOrderId());
jsonData.setRequestDate(requestDate);
jsonData.setRequestSource("OFWXApplet");
jsonData.setPayerOpenId(payRequestDto.getOpenId());
jsonData.setHospitalCode(payRequestDto.getHospitalCode());
jsonData.setPID(payRequestDto.getPhone());
jsonData.setRemark("");
jsonData.setTransAmount(payRequestDto.getPrice());
jsonData.setTradeDesc("");
jsonData.setSign(EncryptionUtil.sha1Encryption(clientId + payRequestDto.getOrderId() + requestDate + clientId));
return jsonData;
}
private HttpHeaders createHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}
private PayResponseDto processResponse(ResponseEntity<String> responseEntity) {
if (!responseEntity.getStatusCode().is2xxSuccessful() || responseEntity.getBody() == null) {
log.error("payInform failed with response: {}", responseEntity.getBody());
throw new IllegalArgumentException("支付通知失败");
}
try {
log.info("processResponse response: {}", responseEntity.getBody());
return xmlMapper.readValue(responseEntity.getBody(), PayResponseDto.class);
} catch (Exception e) {
log.error("Failed to parse XML response", e);
throw new RuntimeException("支付通知结果解析失败", e);
}
}
// 设置请求体的媒体类型为JSON
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, jsonDataString);
Request getPhoneRequest = new Request.Builder()
.url(url)
.post(body)
.build();
Response payResponse = client.newCall(getPhoneRequest).execute();
if(payResponse.code() != 200) {
System.out.println(payResponse.message());
throw new IllegalArgumentException("支付通知失败");
}
String payJsonData = payResponse.body().string();
System.out.println("pay json:"+payJsonData);
ObjectMapper objectMapper2 = new ObjectMapper();
objectMapper2.configure(Feature.ALLOW_MISSING_VALUES, true);
objectMapper2.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper2.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_VALUES, false);
public void callback(PaymentCallbackDTO payInformRequestDto) {
log.info("callback: {}", payInformRequestDto);
PayResponseDto payResponseDto = objectMapper2.readValue(payJsonData, PayResponseDto.class);
return payResponseDto;
} catch (Exception e) {
System.out.println(e.getStackTrace().toString());
throw new IllegalArgumentException("支付通知失败");
}
}
}
......
......@@ -2,23 +2,23 @@ package com.infoloop.tianting.service.client;
import com.infoloop.tianting.GeDishSkuByIdsRpcResponse;
import com.infoloop.tianting.GetSkusByIdsRpcRequest;
import com.infoloop.tianting.GetSkusByIdsRpcResponse;
import com.infoloop.tianting.SkuServiceProtoRpcGrpc;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SkuServiceRpcClient {
private final SkuServiceProtoRpcGrpc.SkuServiceProtoRpcBlockingStub skuServiceProtoRpcBlockingStub;
public GeDishSkuByIdsRpcResponse getDishSkusByIds(List<Integer> ids) {
final var request = GetSkusByIdsRpcRequest.newBuilder()
.addAllIds(ids)
.setIncludeDeleted(false)
.build();
final var res = skuServiceProtoRpcBlockingStub.getDishSkusByIds(request);
return res;
}
private final SkuServiceProtoRpcGrpc.SkuServiceProtoRpcBlockingStub skuServiceProtoRpcBlockingStub;
public GeDishSkuByIdsRpcResponse getDishSkusByIds(List<Integer> ids) {
final var request = GetSkusByIdsRpcRequest.newBuilder()
.addAllIds(ids)
.setIncludeDeleted(false)
.build();
return skuServiceProtoRpcBlockingStub.getDishSkusByIds(request);
}
}
......
package com.infoloop.tianting.service.client;
import com.infoloop.tianting.COperatorServiceProtoRpcGrpc;
import com.infoloop.tianting.GetWOperatorByEmailRpcRequest;
import com.infoloop.tianting.GetWOperatorByEmailRpcResponse;
import com.infoloop.tianting.GetWOperatorByIdRpcRequest;
......@@ -14,21 +13,20 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WOperatorServiceRpcClient {
private final WOperatorServiceProtoRpcGrpc.WOperatorServiceProtoRpcBlockingStub
wOperatorServiceProtoRpcBlockingStub;
private final WOperatorServiceProtoRpcGrpc.WOperatorServiceProtoRpcBlockingStub wOperatorServiceProtoRpcBlockingStub;
public GetWOperatorByEmailRpcResponse getWOperatorByEmail(String email) {
final var request = GetWOperatorByEmailRpcRequest.newBuilder()
.setEmail(email)
.build();
return wOperatorServiceProtoRpcBlockingStub.getWOperatorByEmail(request);
}
public GetWOperatorByEmailRpcResponse getWOperatorByEmail(String email) {
final var request = GetWOperatorByEmailRpcRequest.newBuilder()
.setEmail(email)
.build();
return wOperatorServiceProtoRpcBlockingStub.getWOperatorByEmail(request);
}
public GetWOperatorByIdRpcResponse getWOperatorById(Integer id) {
final var request = GetWOperatorByIdRpcRequest.newBuilder()
.setId(id)
.build();
return wOperatorServiceProtoRpcBlockingStub.getWOperatorById(request);
}
public GetWOperatorByIdRpcResponse getWOperatorById(Integer id) {
final var request = GetWOperatorByIdRpcRequest.newBuilder()
.setId(id)
.build();
return wOperatorServiceProtoRpcBlockingStub.getWOperatorById(request);
}
}
......
package com.infoloop.tianting.service.client;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.infoloop.tianting.constant.ConfigConstants;
import com.infoloop.tianting.model.dto.WxUserDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserCodeDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto1;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserTokenDto;
import com.infoloop.tianting.utils.JsonUtil;
import lombok.RequiredArgsConstructor;
import lombok.Value;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.source.ConfigurationPropertyName.Form;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WxMiniProgramClient {
private final OkHttpClient client = new OkHttpClient();
public WxUserPhoneResponseDto getUserPhoneInfoByCode(String code) {
try {
String getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx40ec496d73b58ec6"
+"&secret=5b309517bf918abf760b2195e91b99f3";
Request getTokenRequest = new Request.Builder()
.url(getTokenUrl)
.build();
Response getTokenResponse = client.newCall(getTokenRequest).execute();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
String tokenJsonData = getTokenResponse.body().string();
WxUserTokenDto wxUserTokenDto = objectMapper.readValue(tokenJsonData, WxUserTokenDto.class);
System.out.println("token:" + wxUserTokenDto.getAccess_token());
String getPhoneUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="
+ wxUserTokenDto.getAccess_token();
WxUserCodeDto jsonData = new WxUserCodeDto();
jsonData.setCode(code);
String jsonDataString = objectMapper.writeValueAsString(jsonData);
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(mediaType, jsonDataString);
Request getPhoneRequest = new Request.Builder()
.url(getPhoneUrl)
.post(body)
.build();
Response getPhoneResponse = client.newCall(getPhoneRequest).execute();
String phoneJsonData = getPhoneResponse.body().string();
WxUserPhoneResponseDto wxUserPhoneResponseDto = objectMapper.readValue(phoneJsonData, WxUserPhoneResponseDto.class);
return wxUserPhoneResponseDto;
} catch (Exception e) {
System.out.println(e.getMessage());
throw new IllegalArgumentException("获取用户手机号失败");
}
}
public WxUserOpenIdDto getUserOpenIdByCode(String code) {
try {
String url = "https://api.weixin.qq.com/sns/jscode2session" +
"?appid=wx40ec496d73b58ec6" + "&secret=5b309517bf918abf760b2195e91b99f3" + "&js_code=" + code + "&grant_type=authorization_code";
System.out.println("url:" +url);
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
String jsonData = response.body().string();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper.readValue(jsonData, WxUserOpenIdDto.class);
} catch (Exception e) {
System.out.println("error"+e.getMessage());
throw new IllegalArgumentException("获取用户openid失败");
}
}
}
package com.infoloop.tianting.service.client;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserTokenDto;
import com.infoloop.tianting.utils.JsonUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
import static com.infoloop.tianting.constant.ConfigConstants.MINI_PROGRAM_APP_ID;
import static com.infoloop.tianting.constant.ConfigConstants.MINI_PROGRAM_APP_SECRET;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WxMiniProgramHttpClient {
private static final String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={appSecret}";
private static final String PHONE_URL = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={accessToken}";
private final RestTemplate restTemplate;
@Value(MINI_PROGRAM_APP_ID)
private String appId;
@Value(MINI_PROGRAM_APP_SECRET)
private String appSecret;
public WxUserPhoneResponseDto getUserPhoneInfoByCode(String code) {
try {
String accessToken = fetchAccessToken();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Map<String, Object> jsonDataMap = new HashMap<>();
jsonDataMap.put("code", code);
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(jsonDataMap, headers);
return fetchPhoneNumber(accessToken, requestEntity);
} catch (Exception e) {
log.error("Error fetching user phone info", e);
throw new IllegalArgumentException("获取用户手机号失败");
}
}
private String fetchAccessToken() {
log.info("Fetching WeChat access token...");
ResponseEntity<String> tokenResponse = restTemplate.getForEntity(TOKEN_URL, String.class, appId, appSecret);
if (!tokenResponse.getStatusCode().is2xxSuccessful() || tokenResponse.getBody() == null) {
log.error("Failed to fetch access token: {}", tokenResponse);
throw new IllegalArgumentException("获取 access_token 失败");
}
final var wxUserTokenDto = JsonUtil.readJsonAs(tokenResponse.getBody(), WxUserTokenDto.class);
log.info("WeChat access token received: {}", wxUserTokenDto);
return wxUserTokenDto.getAccess_token();
}
private WxUserPhoneResponseDto fetchPhoneNumber(String accessToken, HttpEntity<Map<String, Object>> requestEntity) {
log.info("Fetching phone number...");
ResponseEntity<WxUserPhoneResponseDto> phoneResponse = restTemplate.exchange(PHONE_URL, HttpMethod.POST, requestEntity, WxUserPhoneResponseDto.class, accessToken);
if (!phoneResponse.getStatusCode().is2xxSuccessful() || phoneResponse.getBody() == null) {
log.error("Failed to fetch phone number: {}", phoneResponse);
throw new IllegalArgumentException("获取手机号失败");
}
log.info("WeChat phone number response: {}", phoneResponse.getBody());
return phoneResponse.getBody();
}
public WxUserOpenIdDto getUserOpenIdByCode(String code) {
try {
final var url = "https://api.weixin.qq.com/sns/jscode2session" +
"?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code";
final var response = restTemplate.getForEntity(url, String.class);
return JsonUtil.readJsonAs(response.getBody(), WxUserOpenIdDto.class);
} catch (Exception e) {
log.error("Error fetching user openid", e);
throw new IllegalArgumentException("获取用户openid失败");
}
}
}
......@@ -3,90 +3,90 @@ package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.model.dto.InventoryDbDTO.ClientDto;
import com.infoloop.tianting.model.dto.InventoryDbDTO.ClientTableCodeDto;
import com.infoloop.tianting.model.dto.InventoryDbDTO.TableCodeQueryConditionDto;
import com.infoloop.tianting.model.dto.MenuDbDTO.MenuDetailDto;
import com.infoloop.tianting.service.InventoryService;
import com.infoloop.tianting.service.client.InventoryServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class InventoryServiceImpl implements InventoryService {
private final InventoryServiceRpcClient inventoryServiceRpcClient;
private final InventoryServiceRpcClient inventoryServiceRpcClient;
@Override
public ClientDto getClientById(Integer enterpriseId, Integer clientId) {
final var response = inventoryServiceRpcClient.getClientById(enterpriseId, clientId);
return ClientDto.builder()
.id(response.getClient().getId())
.address(response.getClient().getAddress())
.area(response.getClient().getArea())
.province(response.getClient().getProvince())
.city(response.getClient().getCity())
.code(response.getClient().getCode())
.customerSource(response.getClient().getCustomerSource())
.enterpriseId(response.getClient().getEnterpriseId())
.operatorName(response.getClient().getOperatorName())
.parentId(response.getClient().getParentId())
.status(response.getClient().getStatus())
.regionId(response.getClient().getRegionId())
.type(response.getClient().getType())
.name(response.getClient().getName())
.isDelivery(response.getClient().getIsDelivery())
.build();
@Override
public ClientDto getClientById(Integer enterpriseId, Integer clientId) {
final var response = inventoryServiceRpcClient.getClientById(enterpriseId, clientId);
return ClientDto.builder()
.id(response.getClient().getId())
.address(response.getClient().getAddress())
.area(response.getClient().getArea())
.province(response.getClient().getProvince())
.city(response.getClient().getCity())
.code(response.getClient().getCode())
.customerSource(response.getClient().getCustomerSource())
.enterpriseId(response.getClient().getEnterpriseId())
.operatorName(response.getClient().getOperatorName())
.parentId(response.getClient().getParentId())
.status(response.getClient().getStatus())
.regionId(response.getClient().getRegionId())
.type(response.getClient().getType())
.name(response.getClient().getName())
.isDelivery(response.getClient().getIsDelivery())
.build();
}
}
@Override
public List<ClientDto> getStallsByClientId(Integer enterpriseId, Integer clientId) {
final var response = inventoryServiceRpcClient.getStallsByClientId(enterpriseId, clientId);
return response.getStallsList().stream().map(stall ->
ClientDto.builder()
.id(stall.getId())
.address(stall.getAddress())
.area(stall.getArea())
.province(stall.getProvince())
.city(stall.getCity())
.code(stall.getCode())
.customerSource(stall.getCustomerSource())
.enterpriseId(stall.getEnterpriseId())
.operatorName(stall.getOperatorName())
.parentId(stall.getParentId())
.status(stall.getStatus())
.regionId(stall.getRegionId())
.type(stall.getType())
.name(stall.getName())
.isDelivery(stall.getIsDelivery())
.build()).collect(Collectors.toList());
}
@Override
public List<ClientDto> getStallsByClientId(Integer enterpriseId, Integer clientId) {
final var response = inventoryServiceRpcClient.getStallsByClientId(enterpriseId, clientId);
return response.getStallsList().stream().map(stall ->
ClientDto.builder()
.id(stall.getId())
.address(stall.getAddress())
.area(stall.getArea())
.province(stall.getProvince())
.city(stall.getCity())
.code(stall.getCode())
.customerSource(stall.getCustomerSource())
.enterpriseId(stall.getEnterpriseId())
.operatorName(stall.getOperatorName())
.parentId(stall.getParentId())
.status(stall.getStatus())
.regionId(stall.getRegionId())
.type(stall.getType())
.name(stall.getName())
.isDelivery(stall.getIsDelivery())
.build()).collect(Collectors.toList());
}
@Override
public List<ClientTableCodeDto> queryClientTableCodesByCondition(
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
final var response = inventoryServiceRpcClient.queryClientTableCodesByCondition(
tableCodeQueryConditionDto);
return response.getResponsesList().stream().map(tableCode ->
ClientTableCodeDto.builder()
.id(tableCode.getId())
.clientId(tableCode.getClientId())
.enterpriseId(tableCode.getEnterpriseId())
.stallId(tableCode.getStallId())
.code(tableCode.getCode())
.name(tableCode.getName())
.url(tableCode.getUrl())
.createdAt(DateUtil.formatDate(tableCode.getCreatedAt()))
.createdBy(tableCode.getCreatedBy())
.creationSource(tableCode.getCreationSource())
.updatedAt(DateUtil.formatDate(tableCode.getUpdatedAt()))
.updatedBy(tableCode.getUpdatedBy())
.updateSource(tableCode.getUpdateSource())
.build()).collect(Collectors.toList());
}
@Override
public List<ClientTableCodeDto> queryClientTableCodesByCondition(
TableCodeQueryConditionDto tableCodeQueryConditionDto) {
final var response = inventoryServiceRpcClient.queryClientTableCodesByCondition(
tableCodeQueryConditionDto);
return response.getResponsesList().stream().map(tableCode ->
ClientTableCodeDto.builder()
.id(tableCode.getId())
.clientId(tableCode.getClientId())
.enterpriseId(tableCode.getEnterpriseId())
.stallId(tableCode.getStallId())
.code(tableCode.getCode())
.name(tableCode.getName())
.url(tableCode.getUrl())
.createdAt(DateUtil.formatDate(tableCode.getCreatedAt()))
.createdBy(tableCode.getCreatedBy())
.creationSource(tableCode.getCreationSource())
.updatedAt(DateUtil.formatDate(tableCode.getUpdatedAt()))
.updatedBy(tableCode.getUpdatedBy())
.updateSource(tableCode.getUpdateSource())
.build()).collect(Collectors.toList());
}
}
......
......@@ -3,21 +3,16 @@ package com.infoloop.tianting.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import com.infoloop.tianting.COperatorServiceProtoRpcGrpc;
import com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordHospitalStatusEnum;
import com.infoloop.tianting.clientcustomerservice.GetClientCustomerByIdRpcRequest;
import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerRpcResponse;
import com.infoloop.tianting.constant.CommonConstants;
import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.model.dto.PermissionDTO.LoginDto;
import com.infoloop.tianting.service.ClientCustomerService;
import com.infoloop.tianting.service.LoginService;
import com.infoloop.tianting.service.WxMiniProgramService;
import com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient;
import com.infoloop.tianting.service.client.OperatorServiceRpcClient;
import com.infoloop.tianting.service.client.WOperatorServiceRpcClient;
import com.infoloop.tianting.service.client.WxMiniProgramClient;
import com.infoloop.tianting.service.client.WxMiniProgramHttpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -28,86 +23,84 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class LoginServiceImpl implements LoginService {
private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient;
private final OperatorServiceRpcClient operatorServiceRpcClient;
private final WxMiniProgramClient wxMiniProgramClient;
private final WOperatorServiceRpcClient wOperatorServiceRpcClient;
private final ClientCustomerServiceRpcClient clientCustomerServiceRpcClient;
private final OperatorServiceRpcClient operatorServiceRpcClient;
private final WxMiniProgramHttpClient wxMiniProgramHttpClient;
private final WOperatorServiceRpcClient wOperatorServiceRpcClient;
@Override
public SaTokenInfo login(LoginDto loginDto) {
if (loginDto.isShouldLoginWithOpenCode()) {
final var wxUserOpenIdDto = wxMiniProgramClient.getUserOpenIdByCode(loginDto.getOpenCode());
StpUtil.login(
wxUserOpenIdDto.getOpenid(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, loginDto.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else if (loginDto.isShouldLoginWithHisCustomerId()) {
var customer =
clientCustomerServiceRpcClient
.getClientCustomerByHISCustomerId(loginDto.getHisCustomerId())
.getResponse();
if (customer.getId() == 0) {
// 根据hisCustomerId拿不到用户的话再去根据合同号去his查一次,即认为是月子中心客户
customer =
clientCustomerServiceRpcClient
.getClientCustomerByContactNo(loginDto.getHisCustomerId())
.getResponse();
if (customer.getId() == 0) {
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.VALIDATE_FAILED.name());
@Override
public SaTokenInfo login(LoginDto loginDto) {
if (loginDto.isShouldLoginWithOpenCode()) {
final var wxUserOpenIdDto = wxMiniProgramHttpClient.getUserOpenIdByCode(loginDto.getOpenCode());
StpUtil.login(
wxUserOpenIdDto.getOpenid(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, loginDto.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else if (loginDto.isShouldLoginWithHisCustomerId()) {
var customer =
clientCustomerServiceRpcClient
.getClientCustomerByHISCustomerId(loginDto.getHisCustomerId())
.getResponse();
if (customer.getId() == 0) {
// 根据hisCustomerId拿不到用户的话再去根据合同号去his查一次,即认为是月子中心客户
customer =
clientCustomerServiceRpcClient
.getClientCustomerByContactNo(loginDto.getHisCustomerId())
.getResponse();
if (customer.getId() == 0) {
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.VALIDATE_FAILED.name());
} else {
var record =
clientCustomerServiceRpcClient.getClientCustomerHospitalRecordsByCustomerId(
customer.getEnterpriseId(), customer.getId());
if (!record.hasResponse()
|| record.getResponse().getHospitalStatus()
!= ClientCustomerHospitalRecordHospitalStatusEnum.CURRENT) {
throw ClientEndExceptions.IncorrectRequestValue.build(
ErrorCodeEnum.VALIDATE_FAILED.name());
}
}
}
StpUtil.login(
customer.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, customer.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else if (loginDto.isShouldLoginWithOperatorPhone()) {
final var operator =
operatorServiceRpcClient.getCOperatorByMobileOrEmail(loginDto.getOperatorPhone());
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
StpUtil.login(
operator.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, operator.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else {
var record =
clientCustomerServiceRpcClient.getClientCustomerHospitalRecordsByCustomerId(
customer.getEnterpriseId(), customer.getId());
if (!record.hasResponse()
|| record.getResponse().getHospitalStatus()
!= ClientCustomerHospitalRecordHospitalStatusEnum.CURRENT) {
throw ClientEndExceptions.IncorrectRequestValue.build(
ErrorCodeEnum.VALIDATE_FAILED.name());
}
}
} else {
}
StpUtil.login(
customer.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, customer.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else if (loginDto.isShouldLoginWithOperatorPhone()) {
final var operator =
operatorServiceRpcClient.getCOperatorByMobileOrEmail(loginDto.getOperatorPhone());
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
StpUtil.login(
operator.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, operator.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
} else {
final var operator =
wOperatorServiceRpcClient.getWOperatorByEmail(loginDto.getEmail()).getResponse();
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
final var operator =
wOperatorServiceRpcClient.getWOperatorByEmail(loginDto.getEmail()).getResponse();
if (operator.getId() == 0) {
throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.UNAUTHORIZED.name());
}
// if (!operator.getPassword().equals(loginDto.getPassword())) {
// throw ClientEndExceptions.AuthenticationFailure.build(ErrorCodeEnum.VALIDATE_FAILED.name());
// }
StpUtil.login(
operator.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, operator.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
StpUtil.login(
operator.getId(),
SaLoginModel.create()
.setExtra(CommonConstants.ENTERPRISE_ID, operator.getEnterpriseId())
.setExtra(CommonConstants.LOGIN_SOURCE, loginDto.getLoginSourceEnum().getValue())
.build());
return StpUtil.getTokenInfo();
}
}
}
}
......
......@@ -5,61 +5,61 @@ import com.infoloop.tianting.model.dto.MealDbDTO.MealDto;
import com.infoloop.tianting.service.MealService;
import com.infoloop.tianting.service.client.MealServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import java.sql.DataTruncation;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MealServiceImpl implements MealService {
private final MealServiceRpcClient mealServiceRpcClient;
private final MealServiceRpcClient mealServiceRpcClient;
@Override
public List<MealDto> getMealsByIds(Integer enterpriseId, List<Integer> ids) {
final var response = mealServiceRpcClient.getMealsByIds(enterpriseId, ids);
return response.getResponsesList().stream().map(
meal -> MealDto.builder()
.id(meal.getId())
.allowCreateOrder(meal.getAllowCreateOrder())
.enterpriseId(meal.getEnterpriseId())
.name(meal.getName())
.status(meal.getStatus())
.isDeleted(meal.getIsDeleted())
.createdAt(DateUtil.formatDate(meal.getCreatedAt()))
.createdBy(meal.getCreatedBy())
.createdBy(meal.getCreationSource())
.updatedAt(DateUtil.formatDate(meal.getUpdatedAt()))
.updatedBy(meal.getUpdatedBy())
.updateSource(meal.getUpdateSource())
.build()
).collect(Collectors.toList());
}
@Override
public List<MealDto> getMealsByIds(Integer enterpriseId, List<Integer> ids) {
final var response = mealServiceRpcClient.getMealsByIds(enterpriseId, ids);
return response.getResponsesList().stream().map(
meal -> MealDto.builder()
.id(meal.getId())
.allowCreateOrder(meal.getAllowCreateOrder())
.enterpriseId(meal.getEnterpriseId())
.name(meal.getName())
.status(meal.getStatus())
.isDeleted(meal.getIsDeleted())
.createdAt(DateUtil.formatDate(meal.getCreatedAt()))
.createdBy(meal.getCreatedBy())
.createdBy(meal.getCreationSource())
.updatedAt(DateUtil.formatDate(meal.getUpdatedAt()))
.updatedBy(meal.getUpdatedBy())
.updateSource(meal.getUpdateSource())
.build()
).collect(Collectors.toList());
}
@Override
public List<MealDto> getAllMeals() {
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var response = mealServiceRpcClient.getAllMeals(operatorLoginInfo.getEnterpriseId());
return response.getResponsesList().stream().map(
meal -> MealDto.builder()
.id(meal.getId())
.allowCreateOrder(meal.getAllowCreateOrder())
.enterpriseId(meal.getEnterpriseId())
.name(meal.getName())
.status(meal.getStatus())
.isDeleted(meal.getIsDeleted())
.createdAt(DateUtil.formatDate(meal.getCreatedAt()))
.createdBy(meal.getCreatedBy())
.createdBy(meal.getCreationSource())
.updatedAt(DateUtil.formatDate(meal.getUpdatedAt()))
.updatedBy(meal.getUpdatedBy())
.updateSource(meal.getUpdateSource())
.build()
).collect(Collectors.toList());
}
@Override
public List<MealDto> getAllMeals() {
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var response = mealServiceRpcClient.getAllMeals(operatorLoginInfo.getEnterpriseId());
return response.getResponsesList().stream().map(
meal -> MealDto.builder()
.id(meal.getId())
.allowCreateOrder(meal.getAllowCreateOrder())
.enterpriseId(meal.getEnterpriseId())
.name(meal.getName())
.status(meal.getStatus())
.isDeleted(meal.getIsDeleted())
.createdAt(DateUtil.formatDate(meal.getCreatedAt()))
.createdBy(meal.getCreatedBy())
.createdBy(meal.getCreationSource())
.updatedAt(DateUtil.formatDate(meal.getUpdatedAt()))
.updatedBy(meal.getUpdatedBy())
.updateSource(meal.getUpdateSource())
.build()
).collect(Collectors.toList());
}
}
......
......@@ -5,55 +5,56 @@ import com.infoloop.tianting.model.dto.ClientLabelDTO.HisMedicalAdviceDto;
import com.infoloop.tianting.service.MeiZhongYiHeService;
import com.infoloop.tianting.service.client.MeiZhongYiHeServiceClient;
import com.infoloop.tianting.utils.DateUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MeiZhongYiHeServiceImpl implements MeiZhongYiHeService {
private final MeiZhongYiHeServiceClient meiZhongYiHeServiceClient;
private final MeiZhongYiHeServiceClient meiZhongYiHeServiceClient;
@Override
public List<HisAllergy> getHisCustomerAllergiesByCustomerId(String hisCustomerId) {
final var response = meiZhongYiHeServiceClient.getHisCustomerAllergiesByCustomerId(hisCustomerId);
if (response.getCustomerAllergiesCount() == 0) {
return new ArrayList<>();
@Override
public List<HisAllergy> getHisCustomerAllergiesByCustomerId(String hisCustomerId) {
final var response = meiZhongYiHeServiceClient.getHisCustomerAllergiesByCustomerId(hisCustomerId);
if (response.getCustomerAllergiesCount() == 0) {
return new ArrayList<>();
}
return response.getCustomerAllergies(0).getAllergiesList().stream().map(allergy ->
HisAllergy.builder()
.allergyCode(allergy.getAllergyCode())
.allergyDescription(allergy.getAllergyDescription())
.allergyId(allergy.getAllergyId())
.createdAt(DateUtil.formatDate(allergy.getCreatedAt()))
.build()).collect(Collectors.toList());
}
return response.getCustomerAllergies(0).getAllergiesList().stream().map(allergy ->
HisAllergy.builder()
.allergyCode(allergy.getAllergyCode())
.allergyDescription(allergy.getAllergyDescription())
.allergyId(allergy.getAllergyId())
.createdAt(DateUtil.formatDate(allergy.getCreatedAt()))
.build()).collect(Collectors.toList());
}
@Override
public List<HisMedicalAdviceDto> getHisCustomerMedicalAdvicesByContractNo(String contractNo){
final var response = meiZhongYiHeServiceClient.getHisCustomerMedicalAdvicesByContractNo(
contractNo);
if (response.getCustomerMedicalAdvicesCount() == 0){
return new ArrayList<>();
@Override
public List<HisMedicalAdviceDto> getHisCustomerMedicalAdvicesByContractNo(String contractNo) {
final var response = meiZhongYiHeServiceClient.getHisCustomerMedicalAdvicesByContractNo(
contractNo);
if (response.getCustomerMedicalAdvicesCount() == 0) {
return new ArrayList<>();
}
return response.getCustomerMedicalAdvices(0).getMedicalAdvicesList().stream().map(
advice ->
HisMedicalAdviceDto.builder()
.connotation(advice.getConnotation())
.effectDate(DateUtil.formatDate(advice.getEffectDate()))
.medicalAdvice(advice.getMedicalAdvice())
.medicalAdviceCode(advice.getMedicalAdviceCode())
.medicalAdviceId(advice.getMedicalAdviceId())
.medicalAdviceType(advice.getMedicalAdviceType())
.medicalTime(DateUtil.formatDate(advice.getMedicalTime()))
.build()
).collect(Collectors.toList());
}
return response.getCustomerMedicalAdvices(0).getMedicalAdvicesList().stream().map(
advice ->
HisMedicalAdviceDto.builder()
.connotation(advice.getConnotation())
.effectDate(DateUtil.formatDate(advice.getEffectDate()))
.medicalAdvice(advice.getMedicalAdvice())
.medicalAdviceCode(advice.getMedicalAdviceCode())
.medicalAdviceId(advice.getMedicalAdviceId())
.medicalAdviceType(advice.getMedicalAdviceType())
.medicalTime(DateUtil.formatDate(advice.getMedicalTime()))
.build()
).collect(Collectors.toList());
}
}
......
......@@ -6,53 +6,54 @@ import com.infoloop.tianting.model.dto.SkuDbDTO.SkuSpecialDetailSingleResponseDt
import com.infoloop.tianting.service.SkuService;
import com.infoloop.tianting.service.client.SkuServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import java.util.List;
import java.util.stream.Collectors;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class SkuServiceImpl implements SkuService {
private final SkuServiceRpcClient skuServiceRpcClient;
private final SkuServiceRpcClient skuServiceRpcClient;
@Override
public List<SkuDto> getSkusByIds(List<Integer> ids) {
final var response = skuServiceRpcClient.getDishSkusByIds(ids);
return response.getResponseList().stream().map(sku ->
SkuDto.builder()
.id(sku.getId())
.categoryId(sku.getCategoryId())
.name(sku.getName())
.enterpriseId(sku.getEnterpriseId())
.description(sku.getDescription())
.code(sku.getCode())
.alias(sku.getAlias())
.imageUrl(sku.getImageUrl())
.basicMaterials(sku.getBasicMaterials())
.carbohydrate(sku.getCarbohydrate())
.createdAt(DateUtil.formatDate(sku.getCreatedAt()))
.energy(sku.getEnergy())
.fat(sku.getFat())
.protein(sku.getProtein())
.skuList(sku.getSkusList().stream().map(subSku -> SkuDetailSingleResponseDto.builder().id(subSku.getId()).name(subSku.getName()).build()).collect(
Collectors.toList()))
.tasteList(sku.getTastesList().stream().map(taste -> SkuDetailSingleResponseDto.builder().id(taste.getId()).name(taste.getName()).build()).collect(
Collectors.toList()))
.efficacyList(sku.getEfficaciesList().stream().map(efficacy -> SkuDetailSingleResponseDto.builder().id(efficacy.getId()).name(efficacy.getName()).build()).collect(
Collectors.toList()))
.doctorList(sku.getDoctorsList().stream().map(doctor -> SkuSpecialDetailSingleResponseDto
.builder().id(doctor.getId()).name(doctor.getName()).build()).collect(
Collectors.toList()))
.avoidList(sku.getAvoidsList().stream().map(avoid -> SkuDetailSingleResponseDto.builder().id(avoid.getId()).name(avoid.getName()).build()).collect(
Collectors.toList()))
.allergyList(sku.getAllergiesList().stream().map(allergy -> SkuSpecialDetailSingleResponseDto.builder().id(allergy.getId()).name(allergy.getName()).build()).collect(
Collectors.toList()))
.build()
@Override
public List<SkuDto> getSkusByIds(List<Integer> ids) {
final var response = skuServiceRpcClient.getDishSkusByIds(ids);
return response.getResponseList().stream().map(sku ->
SkuDto.builder()
.id(sku.getId())
.categoryId(sku.getCategoryId())
.name(sku.getName())
.enterpriseId(sku.getEnterpriseId())
.description(sku.getDescription())
.code(sku.getCode())
.alias(sku.getAlias())
.imageUrl(sku.getImageUrl())
.basicMaterials(sku.getBasicMaterials())
.carbohydrate(sku.getCarbohydrate())
.createdAt(DateUtil.formatDate(sku.getCreatedAt()))
.energy(sku.getEnergy())
.fat(sku.getFat())
.protein(sku.getProtein())
.skuList(sku.getSkusList().stream().map(subSku -> SkuDetailSingleResponseDto.builder().id(subSku.getId()).name(subSku.getName()).build()).collect(
Collectors.toList()))
.tasteList(sku.getTastesList().stream().map(taste -> SkuDetailSingleResponseDto.builder().id(taste.getId()).name(taste.getName()).build()).collect(
Collectors.toList()))
.efficacyList(sku.getEfficaciesList().stream().map(efficacy -> SkuDetailSingleResponseDto.builder().id(efficacy.getId()).name(efficacy.getName()).build()).collect(
Collectors.toList()))
.doctorList(sku.getDoctorsList().stream().map(doctor -> SkuSpecialDetailSingleResponseDto
.builder().id(doctor.getId()).name(doctor.getName()).build()).collect(
Collectors.toList()))
.avoidList(sku.getAvoidsList().stream().map(avoid -> SkuDetailSingleResponseDto.builder().id(avoid.getId()).name(avoid.getName()).build()).collect(
Collectors.toList()))
.allergyList(sku.getAllergiesList().stream().map(allergy -> SkuSpecialDetailSingleResponseDto.builder().id(allergy.getId()).name(allergy.getName()).build()).collect(
Collectors.toList()))
.cecommendList(sku.getCecommendsList().stream().map(cecommend -> SkuDetailSingleResponseDto.builder().id(cecommend.getId()).name(cecommend.getName()).build()).collect(Collectors.toList()))
.build()
).collect(Collectors.toList());
}
}
}
......
package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.exception.ClientEndExceptions;
import com.infoloop.tianting.exception.ErrorCodeEnum;
import com.infoloop.tianting.model.common.CreatedResult;
import com.infoloop.tianting.model.common.PageResult;
import com.infoloop.tianting.model.create.TestExampleDbCreate;
import com.infoloop.tianting.model.dto.TestExampleDbDTO;
import com.infoloop.tianting.model.query.TestExampleDbQuery;
import com.infoloop.tianting.model.update.TestExampleDbUpdate;
import com.infoloop.tianting.model.vo.TestExampleDbVO;
import com.infoloop.tianting.service.TestService;
import com.infoloop.tianting.service.client.ExampleServiceRpcClient;
import com.infoloop.tianting.utils.DateUtil;
import com.infoloop.tianting.utils.PageUtil;
import com.tianting.infoloop.grpc.exampleservice.SingleTestExampleDbRpcResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.validation.Valid;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestServiceImpl implements TestService {
private final ExampleServiceRpcClient exampleServiceRpcClient;
@Override
public PageResult<TestExampleDbVO> queryPage(TestExampleDbDTO.@Valid QueryPage queryPage) {
TestExampleDbQuery query = TestExampleDbQuery.builder()
.name(queryPage.getName())
.status(queryPage.getStatus())
.build();
final var response = exampleServiceRpcClient.queryTestExampleDbByPagination(queryPage.getPageInfo(), query);
final var results = response.getResponsesList().stream().map(e -> TestExampleDbVO.builder()
.id(e.getId())
.name(e.getName())
.status(e.getStatus())
.createdAt(DateUtil.formatDate(e.getCreatedAt()))
.updatedAt(DateUtil.formatDate(e.getUpdatedAt()))
.build()).collect(Collectors.toList());
return PageUtil.from(results, response.getTotal(), response.getPages(), queryPage.getPageInfo().getPageNo(), queryPage.getPageInfo().getPageSize());
}
@Override
public List<TestExampleDbVO> queryAll() {
final var responseList = exampleServiceRpcClient.getAllTestExampleDb();
return responseList.stream().map(e -> TestExampleDbVO.builder()
.id(e.getId())
.name(e.getName())
.status(e.getStatus())
.createdAt(DateUtil.formatDate(e.getCreatedAt()))
.updatedAt(DateUtil.formatDate(e.getUpdatedAt()))
.build()).collect(Collectors.toList());
}
@Override
public CreatedResult<TestExampleDbVO> createTestExampleDb(TestExampleDbDTO.CreateTestExampleDb createTestExampleDb) {
final var create = TestExampleDbCreate.builder()
.name(createTestExampleDb.getName())
.status(createTestExampleDb.getStatus())
.build();
final var response = exampleServiceRpcClient.createTestExampleDb(create);
final var testExampleDbVO = TestExampleDbVO.builder()
.id(response.getId())
.name(create.getName())
.status(create.getStatus())
//TODO: 其他新增信息
.build();
return CreatedResult.<TestExampleDbVO>builder().isCreated(response.getIsCreated()).id(response.getId()).data(testExampleDbVO).build();
}
@Override
public void updateTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse, TestExampleDbDTO.UpdateTestExampleDb updateTestExampleDb) {
final var update = TestExampleDbUpdate.builder()
.id(testExampleDbRpcResponse.getId())
.name(updateTestExampleDb.getName())
.status(updateTestExampleDb.getStatus())
.build();
final var isUpdated = exampleServiceRpcClient.updateTestExampleDb(update);
if (!isUpdated) {
throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.UPDATE_DATA_ERROR);
}
}
@Override
public void deleteTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
final var isDeleted = exampleServiceRpcClient.deleteTestExampleDbByIds(List.of(testExampleDbRpcResponse.getId()));
if (!isDeleted) {
throw ClientEndExceptions.BusinessException.build(ErrorCodeEnum.DELETE_DATA_ERROR);
}
}
@Override
public TestExampleDbVO getTestExampleDb(SingleTestExampleDbRpcResponse testExampleDbRpcResponse) {
// final var testExampleDb = exampleServiceRpcClient.getTestExampleDbById(testExampleDbRpcResponse.getId());
return TestExampleDbVO.builder()
.id(testExampleDbRpcResponse.getId())
.name(testExampleDbRpcResponse.getName())
.status(testExampleDbRpcResponse.getStatus())
.createdAt(DateUtil.formatDate(testExampleDbRpcResponse.getCreatedAt()))
.updatedAt(DateUtil.formatDate(testExampleDbRpcResponse.getUpdatedAt()))
.build();
}
}
......@@ -3,7 +3,7 @@ package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserOpenIdDto;
import com.infoloop.tianting.model.dto.WxUserDto.WxUserPhoneResponseDto;
import com.infoloop.tianting.service.WxMiniProgramService;
import com.infoloop.tianting.service.client.WxMiniProgramClient;
import com.infoloop.tianting.service.client.WxMiniProgramHttpClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -14,16 +14,16 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WxMiniProgramServiceImpl implements WxMiniProgramService {
private final WxMiniProgramClient wxMiniProgramClient;
private final WxMiniProgramHttpClient wxMiniProgramHttpClient;
@Override
public WxUserOpenIdDto getWxUserOpenIdByCode(String code) {
return wxMiniProgramClient.getUserOpenIdByCode(code);
}
@Override
public WxUserOpenIdDto getWxUserOpenIdByCode(String code) {
return wxMiniProgramHttpClient.getUserOpenIdByCode(code);
}
@Override
public WxUserPhoneResponseDto getUserPhoneInfoByCode(String code){
return wxMiniProgramClient.getUserPhoneInfoByCode(code);
}
@Override
public WxUserPhoneResponseDto getUserPhoneInfoByCode(String code) {
return wxMiniProgramHttpClient.getUserPhoneInfoByCode(code);
}
}
......
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.tianting.infoloop.grpc.exampleservice";
option java_outer_classname = "ExampleServiceProto";
option objc_class_prefix = "OP";
package com.tianting.infoloop.grpc.exampleservice;
service ExampleServiceRpc {
rpc GetTestExampleDbById (GetTestExampleDbByIdRpcRequest) returns (GetTestExampleDbByIdRpcResponse) {}
rpc GetTestExampleDbByIds (GetTestExampleDbByIdsRpcRequest) returns (GetTestExampleDbByIdsRpcResponse) {}
rpc GetAllTestExampleDb (GetAllTestExampleDbRpcRequest) returns (GetAllTestExampleDbRpcResponse) {}
rpc QueryTestExampleDbByCondition (QueryTestExampleDbByConditionRpcRequest) returns (QueryTestExampleDbByConditionRpcResponse) {}
rpc QueryTestExampleDbByPagination (QueryTestExampleDbByPaginationRpcRequest) returns (QueryTestExampleDbByPaginationRpcResponse) {}
rpc CreateTestExampleDb (CreateTestExampleDbRpcRequest) returns (CreateTestExampleDbRpcResponse) {}
rpc BatchCreateTestExampleDb (BatchCreateTestExampleDbRpcRequest) returns (BatchCreateTestExampleDbRpcResponse) {}
rpc UpdateTestExampleDb (UpdateTestExampleDbRpcRequest) returns (UpdateTestExampleDbRpcResponse) {}
rpc BatchUpdateTestExampleDb (BatchUpdateTestExampleDbRpcRequest) returns (BatchUpdateTestExampleDbRpcResponse) {}
rpc DeleteTestExampleDbByIds (DeleteTestExampleDbByIdsRpcRequest) returns (DeleteTestExampleDbRpcResponse) {}
}
enum TestExampleDbStatusEnum {
STATUS_UNKNOWN = 0;
STATUS_ENABLED = 1;
STATUS_DISABLED = 2;
}
message SingleTestExampleDbRpcResponse {
int32 id = 1;
int32 enterpriseId = 2;
string name = 3;
TestExampleDbStatusEnum status = 4;
int32 createdBy = 5;
int64 createdAt = 6;
int32 creationSource = 7;
int32 updatedBy = 8;
int64 updatedAt = 9;
int32 updateSource = 10;
bool isDeleted = 11;
}
message GetTestExampleDbByIdRpcRequest {
int32 id = 1;
}
message GetTestExampleDbByIdRpcResponse {
SingleTestExampleDbRpcResponse response = 1;
}
message GetTestExampleDbByIdsRpcRequest {
repeated int32 ids = 1;
}
message GetTestExampleDbByIdsRpcResponse {
repeated SingleTestExampleDbRpcResponse responses = 1;
}
message GetAllTestExampleDbRpcRequest {
}
message GetAllTestExampleDbRpcResponse {
repeated SingleTestExampleDbRpcResponse responses = 1;
}
message QueryTestExampleDbByConditionRpcRequest {
optional string name = 1;
optional TestExampleDbStatusEnum status = 2;
}
message QueryTestExampleDbByConditionRpcResponse {
repeated SingleTestExampleDbRpcResponse responses = 1;
}
message QueryTestExampleDbByPaginationRpcRequest {
optional string name = 1;
optional TestExampleDbStatusEnum status = 2;
int32 pageNo = 3;
int32 pageSize = 4;
}
message QueryTestExampleDbByPaginationRpcResponse {
int64 total = 1;
int64 pages = 2;
repeated SingleTestExampleDbRpcResponse responses = 3;
}
message TestExampleDbCreation{
string name = 1;
TestExampleDbStatusEnum status = 2;
}
message CreateTestExampleDbRpcRequest {
TestExampleDbCreation creation = 1;
}
message CreateTestExampleDbRpcResponse {
int32 id = 1;
bool isCreated = 2;
}
message BatchCreateTestExampleDbRpcRequest {
repeated TestExampleDbCreation creations = 1;
}
message BatchCreateTestExampleDbRpcResponse {
repeated int32 ids = 1;
bool isCreated = 2;
}
message TestExampleDbModification {
int32 id = 1;
optional string name = 2;
optional TestExampleDbStatusEnum status = 3;
}
message UpdateTestExampleDbRpcRequest {
TestExampleDbModification modification = 1;
}
message UpdateTestExampleDbRpcResponse {
bool isUpdated = 1;
}
message BatchUpdateTestExampleDbRpcRequest {
repeated TestExampleDbModification modifications = 1;
}
message BatchUpdateTestExampleDbRpcResponse {
bool isUpdated = 1;
}
message DeleteTestExampleDbByIdsRpcRequest {
repeated int32 ids = 1;
}
message DeleteTestExampleDbRpcResponse {
bool isDeleted = 1;
}
......@@ -108,6 +108,7 @@ message SingleDishSkuByIdsRpcResponse {
repeated SingleSpecialResponse doctors = 18; // 医嘱
repeated SingleResponse avoids = 19; // 忌口
repeated SingleResponse skus = 20; // 配料
repeated SingleResponse cecommends = 21;//推荐
}
......@@ -323,10 +324,11 @@ message GetPSkuByIdsRpcResponse {
// 1: 标品2: 非标品3: 料箱isInspectionAndQuarantineTINYINT(1) 是否需要检验检疫证 0(false) YES 检验、检疫证
enum SkuType{
UNKNOWN_SKU_TYPE = 0; //未知
NOT_SENT_SUPPLIER_QUOTATION_SHEET_SEND_STATUS = 1; //未发送
BEEN_SENT_SUPPLIER_QUOTATION_SHEET_SEND_STATUS = 2; //已发送
} //报价单发送状态
STANDARD_SKU_TYPE = 1; //标品,常温
UN_STANDARD_SKU_TYPE = 2; //非标品
WAREHOUSE_USE_SKU_TYPE = 3; //仓库用品
ICE_SKU_TYPE = 4; //冻品
}
message SinglePSkuByIdsRpcResponse {
string assistantUnit = 1;
......@@ -357,6 +359,8 @@ message SinglePSkuByIdsRpcResponse {
int32 carbohydrate = 26;
int32 energy = 27;
int32 allergys = 28;
bool isBOM = 29;
string overentryRatio = 30;
}
//计算规则 0.四舍五入 1.进位到最小售卖量的倍数 2.舍位到最小售卖量倍数
......@@ -443,6 +447,8 @@ message SingleSkuResponse {
string assistantUnit = 24;
int32 conversionBase = 25;
int32 conversionQuantity = 26;
int32 isInWarehouseValid =27;
string overentryRatio = 28;
}
message SingleSkuAllFieldRpcResponse {
......@@ -461,6 +467,8 @@ message SingleSkuAllFieldRpcResponse {
bool isCurrentPrice = 13;
SkuAttribute attribute = 14;
SkuDecimalRulesMethod decimalRulesMethod = 15;
int32 isInWarehouseValid = 16;
string overentryRatio = 17;
}
......@@ -530,6 +538,8 @@ message SingleSkuRpcResponse {
string originSpecification = 63;
string basicMaterials = 64;
string geometricProperties = 65;
int32 isInWarehouseValid = 66;
string overentryRatio = 67;
}
message GetSkusByIdsRpcResponse {
......@@ -829,7 +839,8 @@ message SingleUpdateSkus {
bool shouldUpdateCode = 59;
int32 isDeleted = 60;
bool shouldUpdateIsDeleted = 61;
bool shouldUpdateOverentryRatio = 62;
string overentryRatio = 63;
}
message BatchUpdateSkusRequest {
......
......@@ -34,9 +34,6 @@ okhttp.max-idle-connections=10
okhttp.keep-alive-duration=300
##GRPC\u914D\u7F6E
grpc.example-service.url=localhost
grpc.example-service.port=4096
grpc.order-service.url=localhost
grpc.order-service.port=4096
......@@ -76,6 +73,10 @@ grpc.meizhongyihe-service.port=3040
miniprogram.appId=wx40ec496d73b58ec6
miniprogram.appSecret=5b309517bf918abf760b2195e91b99f3
business-config.hisCustomerQueryUrl = https://nutri.amcare.com.cn/v3/hiscustomers/current/query
business-config.clientCustomerQueryUrl = https://nutri.amcare.com.cn/v3/clientcustomers/current/query
business-config.payUrl = http://10.2.5.162:21051/API/Microapp/CreateOrder?appid=Order0001
##Actuator\u914D\u7F6E
management.server.port=8088
management.endpoints.web.exposure.include=*
......