| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package com.dderp.business.service.flycat;
- import com.dderp.common.api.NoSqlKeysService;
- import com.dderp.common.api.flycat.OrderService;
- import com.dderp.common.base.BaseService;
- import com.dderp.common.datas.RedisKeys;
- import com.dderp.common.entity.base.InvokeCallParams;
- import com.dderp.common.entity.base.InvokeCallResult;
- import com.dderp.common.entity.site.ERPTokenUser;
- import com.dySweetFishPlugin.redis.RedisService;
- import com.sweetfish.service.Local;
- import com.sweetfish.service.RetResult;
- import com.sweetfish.util.AnyValue;
- import com.sweetfish.util.AutoLoad;
- import com.sweetfish.util.ResourceType;
- import org.apache.commons.lang3.StringUtils;
- import javax.annotation.Resource;
- import java.time.Duration;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- @AutoLoad(false)
- @Local
- @ResourceType(OrderService.class)
- public class OrderServiceImpl extends BaseService implements OrderService {
- @Resource
- RedisService redisService;
- @Resource
- NoSqlKeysService keysService;
- @Override
- public void init(AnyValue config) {
- super.init(config);
- }
- @Override
- public void destroy(AnyValue config) {
- super.destroy(config);
- }
- @Override
- public void start(AnyValue config) {
- super.start(config);
- }
- /**
- * 获取订单流水号
- * 每个门店每个订单平台每天的流水号,从1开始,零点归1
- *
- * @param idShop 门店id
- * @param idPlatform 订单平台id
- * @param supplierCode 分表
- */
- public long getOrderSequence(long idShop, long idPlatform, long supplierCode) {
- String key = keysService.getRedisKey(RedisKeys.KEY_ORDER_SHOP_SEQUENCE, supplierCode, true) +
- idShop + ":" + idPlatform;
- long orderSequence = redisService.incr(key);
- if (orderSequence == 1) {
- //让redis自动过期,不要自己写线程清零
- //如果是新的一天,设置键的过期时间为到自然日零点的剩余时间
- LocalDateTime now = LocalDateTime.now();
- LocalDateTime tomorrowMidnight = LocalDateTime.of(now.toLocalDate().plusDays(1), LocalTime.MIDNIGHT);
- Duration duration = Duration.between(now, tomorrowMidnight);
- redisService.expire(key, (int) duration.getSeconds());
- }
- return orderSequence;
- }
- public RetResult<InvokeCallResult> callOrder(InvokeCallParams source, ERPTokenUser currentUser, String dataSourceId, long supplierCode) {
- if (source == null) {
- return RetResult.<InvokeCallResult>errorT().retinfo("无效的参数信息");
- }
- if (StringUtils.isEmpty(source.getBusinessMethod())) {
- return RetResult.<InvokeCallResult>errorT().retinfo("无效的参数方法[businessMethod]信息");
- }
- source.setCurrentUser(currentUser);
- source.setDataSourceId(dataSourceId);
- source.setSupplierCode(supplierCode);
- return callScript(source.getBusinessMethod(), source, currentUser, dataSourceId, supplierCode);
- }
- }
|