瀏覽代碼

场景中心代码迁移

by su 3 年之前
父節點
當前提交
c9d02a4d29

+ 472 - 472
4dkankan-center-platform/src/main/java/com/fdkankan/order/service/impl/OrderServiceImpl.java

@@ -1,472 +1,472 @@
-package com.fdkankan.order.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.constant.*;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.DateUtil;
-import com.fdkankan.common.util.FileSizeUtil;
-import com.fdkankan.common.util.FileUtils;
-import com.fdkankan.common.util.NumberUtils;
-import com.fdkankan.goods.common.SkuCache;
-import com.fdkankan.goods.entity.*;
-import com.fdkankan.goods.service.*;
-import com.fdkankan.goods.vo.ResponseGoods;
-import com.fdkankan.goods.vo.ResponseGoodsSku;
-import com.fdkankan.order.constant.OrderEnum;
-import com.fdkankan.order.entity.Invoice;
-import com.fdkankan.order.entity.Order;
-import com.fdkankan.order.entity.OrderItem;
-import com.fdkankan.order.mapper.IOrderMapper;
-import com.fdkankan.order.service.*;
-import com.fdkankan.order.vo.ResponseCommerceOrder;
-import com.fdkankan.order.vo.ResponseExpansionOrder;
-import com.fdkankan.pay.alipay.sdk.AlipayService;
-import com.fdkankan.pay.wx.WXPayDefaultConfig;
-import com.fdkankan.pay.wx.sdk.WXPay;
-import com.fdkankan.pay.wx.sdk.WXPayConstants;
-import com.fdkankan.user.entity.SSOUser;
-import com.fdkankan.user.entity.UserIncrement;
-import com.fdkankan.user.request.*;
-import com.fdkankan.user.service.IUserIncrementService;
-import com.fdkankan.user.service.IUserService;
-import com.fdkankan.user.vo.*;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 订单表 服务实现类
- * </p>
- *
- * @author 
- * @since 2021-12-24
- */
-@Service
-public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implements IOrderService {
-
-    @Resource
-    private RedisTemplate<String,String> redisTemplate;
-    @Autowired
-    private IOrderItemService orderItemService;
-    @Autowired
-    private IInvoiceService invoiceService;
-    @Autowired
-    private IUserService userService;
-    @Autowired
-    private ICartService cartService;
-    @Autowired
-    private IGoodsService goodsService;
-    @Autowired
-    private IGoodsSkuService goodsSkuService;
-    @Autowired
-    private ICameraService cameraService;
-    @Autowired
-    private ICameraDetailService cameraDetailService;
-    @Autowired
-    private ICameraSpaceService cameraSpaceService;
-    @Autowired
-    private IVirtualOrderService virtualOrderService;
-    @Autowired
-    private IExpansionOrderService expansionOrderService;
-    @Autowired
-    private ICommerceOrderService commerceOrderService;
-    @Autowired
-    private IIncrementOrderService incrementOrderService;
-    @Autowired
-    private IDownloadOrderService downloadOrderService;
-    @Resource
-    private AlipayService alipayService;
-    @Autowired
-    private IUserIncrementService userIncrementService;
-
-    @Override
-    public ResponseOrder getOrderDetail(Long orderId) {
-        Order order = this.getById(orderId);
-        ResponseOrder responseOrder = new ResponseOrder();
-        if(order == null){
-            return responseOrder;
-        }
-        BeanUtils.copyProperties(order,responseOrder);
-
-        List<ResponseOrderItem> responseOrderItems =orderItemService.getByOrderId(orderId);
-        responseOrder.setOrderItems(responseOrderItems);
-
-        Invoice invoice = invoiceService.getByOrderId(orderId);
-        if(invoice != null){
-            ResponseInvoice responseInvoice = new ResponseInvoice();
-            BeanUtils.copyProperties(invoice, responseInvoice);
-            responseOrder.setInvoice(responseInvoice);
-        }
-        return responseOrder;
-    }
-
-    @Override
-    public Page<ResponseOrder> getOrders(RequestOrder param, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(Order::getUserId,ssoUser.getId());
-        queryWrapper.lambda().eq(Order::getPaymentStatus, OrderEnum.PaymentStatus.paid);
-        queryWrapper.lambda().orderByDesc(Order::getOrderTime);
-        Page<Order> orderPage = this.page(new Page<>(param.getPageNum(),param.getPageSize()), queryWrapper);
-
-        List<ResponseOrder> voList = orderPage.getRecords().parallelStream().map(order -> {
-            ResponseOrder vo = new ResponseOrder();
-            BeanUtils.copyProperties(order, vo);
-            return vo;
-        }).collect(Collectors.toList());
-        Page<ResponseOrder> voPage = new Page<ResponseOrder>(param.getPageNum(), param.getPageSize());
-        voPage.setTotal(orderPage.getTotal());
-        voPage.setRecords(voList);
-        return voPage;
-    }
-
-    @Override
-    public String cancelOrder(RequestOrder param, String token) {
-        Order order = this.getById(param.getOrderId());
-        order.setOrderStatus(OrderEnum.OrderStatus.invalid.name());
-        order.setRecStatus("I");
-        if(!this.updateById(order)){
-            throw  new BusinessException(ErrorCode.ERROR_MSG);
-        }
-        return ServerCode.SUCCESS.message();
-    }
-
-    @Override
-    public String receiptOrder(RequestOrder param, String token) {
-        Order orderEntity = this.getById(param.getOrderId());
-        orderEntity.setShippingStatus(OrderEnum.ShippingStatus.received.name());
-        orderEntity.setOrderStatus(OrderEnum.OrderStatus.completed.name());
-        if(!this.updateById(orderEntity)){
-            throw  new BusinessException(ErrorCode.ERROR_MSG);
-        }
-        return ServerCode.SUCCESS.message();
-    }
-
-    @Override
-    public ResponseInvoice getInvoiceDetail(RequestOrder param, String token) {
-        List<ResponseOrderItem> responseOrderItems = orderItemService.getByOrderId(param.getOrderId());
-        StringBuilder sb = new StringBuilder();
-        if (responseOrderItems != null && responseOrderItems.size() > 0){
-            for (ResponseOrderItem vo : responseOrderItems){
-                sb.append(vo.getGoodsCount()).append("*").append(vo.getGoodsName()).append("  ");
-            }
-        }
-        Invoice invoice = invoiceService.getByOrderId(param.getOrderId());
-        ResponseInvoice responseInvoice= new ResponseInvoice();
-        if (invoice != null){
-            responseInvoice = new ResponseInvoice();
-            responseInvoice.setType(invoice.getType());
-            responseInvoice.setTitle(invoice.getTitle());
-            responseInvoice.setDescription(sb.toString());
-        }
-        return responseInvoice;
-    }
-
-    @Override
-    public ResponseOrder placeOrder(RequestPlaceOrder order, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        // 删除购物车
-        String cartIdsStr = "";
-        RequestCart[] carts = order.getGoods();
-        for (int i = 0; i < carts.length; i++){
-            cartIdsStr += carts[i].getId();
-            if (i != carts.length - 1) cartIdsStr += ",";
-        }
-        RequestCart param = new RequestCart();
-        param.setIds(cartIdsStr);
-        cartService.removeCarts(param,token);
-        // 下单
-        List<OrderItem> orderItemEntities = new ArrayList<>();
-        OrderItem orderItemEntity = null;
-        int goodsTotalCount = 0;
-        BigDecimal goodsAmount = new BigDecimal(0);
-
-        for(RequestCart requestCart : order.getGoods()){
-            goodsTotalCount += requestCart.getGoodsCount();
-            ResponseGoods responseGoods = goodsService.getByGoodsId(requestCart.getGoodsId());
-            ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(requestCart.getSkuSn());
-            if(responseGoods == null || sku == null){
-                continue;
-            }
-            orderItemEntity = new OrderItem();
-            orderItemEntity.setExpressNum(null);
-            orderItemEntity.setGoodsPrice(order.getAbroad() == 0 ? sku.getPrice() : sku.getDollarPrice());
-            orderItemEntity.setGoodsId(requestCart.getGoodsId());
-            orderItemEntity.setShippingStatus(OrderEnum.ShippingStatus.unshipped.name());
-            orderItemEntity.setExpressName("顺丰速运");
-            orderItemEntity.setGoodsCount(requestCart.getGoodsCount());
-            orderItemEntity.setGoodsName(responseGoods.getName());
-            orderItemEntity.setGoodsSn(responseGoods.getGoodsSn());
-            if (StringUtils.isNotEmpty(requestCart.getSkuSn())){
-                orderItemEntity.setSkuSn(requestCart.getSkuSn());
-            }
-            orderItemEntities.add(orderItemEntity);
-            goodsAmount = goodsAmount.add(orderItemEntity.getGoodsPrice().multiply(new BigDecimal(orderItemEntity.getGoodsCount())));
-        }
-        Order orderEntity = new Order();
-        orderEntity.setOrderSn(NumberUtils.getOrderSn());
-        orderEntity.setOrderTime(new Date());
-        orderEntity.setOrderStatus(OrderEnum.OrderStatus.unprocessed.name());
-        orderEntity.setPaymentStatus(OrderEnum.PaymentStatus.unpaid.name());
-        orderEntity.setShippingStatus(OrderEnum.ShippingStatus.unshipped.name());
-        orderEntity.setPaymentTypeName(order.getPayType());
-        orderEntity.setUserId(ssoUser.getId());
-        orderEntity.setGoodsTotalCount(goodsTotalCount);
-        orderEntity.setGoodsAmount(goodsAmount);
-        orderEntity.setTotalAmount(goodsAmount);
-        orderEntity.setPaidAmount(BigDecimal.ZERO);
-        orderEntity.setExpressAmount(BigDecimal.ZERO);
-        orderEntity.setDeliveryTypeName("快递运输");
-        if (order.getReceiver() != null){
-            orderEntity.setShipAddress(order.getReceiver().getShipAddress());
-            orderEntity.setShipAreaPath(order.getReceiver().getShipAreaPath());
-            orderEntity.setShipMobile(order.getReceiver().getShipMobile());
-            orderEntity.setShipName(order.getReceiver().getShipName());
-        }
-        orderEntity.setAbroad(order.getAbroad());
-        if(!this.save(orderEntity)){
-            throw new BusinessException(ErrorCode.ERROR_MSG);
-        }
-        for (OrderItem itemEntity : orderItemEntities) {
-            itemEntity.setOrderId(orderEntity.getId());
-            if(!orderItemService.save(itemEntity)){
-                throw new BusinessException(ErrorCode.ERROR_MSG);
-            }
-        }
-        ResponseOrder responseOrder = new ResponseOrder();
-        BeanUtils.copyProperties(orderEntity, responseOrder);
-
-        // 添加发票信息
-        if (order.getInvoice() != null && StringUtils.isNotEmpty(order.getInvoice().getInvoiceType())){
-            order.setOrderId(orderEntity.getId());
-            order.getInvoice().setAmount(responseOrder.getTotalAmount().toString());
-            invoiceService.saveInvoiceByOrder(ssoUser.getId(),order);
-        }
-        return responseOrder;
-    }
-
-    @Override
-    public ResponseVirtualOrder rechargeOrder(RequestCamera param, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        Camera camera = cameraService.getById(param.getCameraId());
-        if(camera == null){
-            throw new BusinessException(CameraConstant.FAILURE_6003);
-        }
-        CameraDetail cameraDetail = cameraDetailService.getByCameraId(param.getCameraId());
-        int sub = Integer.valueOf(cameraDetail.getBalance()) + param.getPoints();
-        if (sub > Constant.MAXPOINTS) {
-            throw new BusinessException(CameraConstant.FAILURE_6004);
-        }
-        return virtualOrderService.saveByCamera(ssoUser.getId(),param);
-    }
-
-    @Override
-    public ResponseExpansionOrder expansionOrder(RequestExpansionOrder order, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        //支付美金,只能paypal支付
-        if(order.getAbroad() == 1 && order.getPayType() != 2){
-            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
-        }
-        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
-        if(sku == null ){
-            throw new BusinessException(ErrorCode.ERROR_MSG);
-        }
-        int delay = 0;
-        int dateNum = 0;
-        double spaceSize = 0;
-        //基础容量10G
-        long baseSpace = 10;
-        List<CameraSpace> cameraSpaceEntityList = cameraSpaceService.getListByCameraId(order.getCameraId());
-        for(CameraSpace cameraSpaceEntity : cameraSpaceEntityList){
-            dateNum = DateUtil.daysBetween(new Date(), cameraSpaceEntity.getSpaceEndTime());
-            if(dateNum > 0){
-                spaceSize = FileSizeUtil.formetFileSize(cameraSpaceEntity.getSpace(), FileSizeUtil.SIZETYPE_GB);
-                //时间换算,(剩余天数*旧容量)/新容量 = 延期天数
-                if((dateNum * (spaceSize - baseSpace)) % (sku.getUnitSize() - baseSpace) > 0){
-                    //无法整除天数+1
-                    delay += ((dateNum * (spaceSize - baseSpace)) / (sku.getUnitSize() - baseSpace)) + 1;
-                }else {
-                    delay += (dateNum * (spaceSize - baseSpace)) / (sku.getUnitSize() - baseSpace);
-                }
-            }
-        }
-        return expansionOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice(),
-                sku.getUnit(), sku.getUnitSize(), sku.getMonth(), delay);
-    }
-
-    @Override
-    public ResponseCommerceOrder commerceOrder(RequestCommerceOrder param, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(param.getSkuSn());
-        return commerceOrderService.saveByOrderParam(ssoUser.getId(), param, param.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
-    }
-
-    @Override
-    public ResponseIncrementOrder incrementOrder(RequestIncrementOrder order, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        //支付美金,只能paypal支付
-        if(order.getAbroad() == 1 && order.getPayType() != 2){
-            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
-        }
-        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
-        return incrementOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
-    }
-
-    @Override
-    public ResponseDownloadOrder downloadOrder(RequestIncrementOrder order, String token) {
-        SSOUser ssoUser = userService.getSSOUserByToken(token);
-        //支付美金,只能paypal支付
-        if(order.getAbroad() == 1 && order.getPayType() != 2){
-            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
-        }
-        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
-        return downloadOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
-    }
-
-    @Override
-    public Boolean queryOrderStatus(RequestVirtualOrder order, String token) throws Exception{
-        Boolean success = false;
-        String orderSn = order.getOrderSn();
-        switch (order.getOrderType()){
-            case 0:
-                orderSn += "_entity";break;
-            case 1:
-                orderSn += "_recharge";break;
-            case 2:
-                orderSn += "_expansion";break;
-            case 3:
-                orderSn += "_commerce";break;
-            case 4:
-                orderSn += "_increment";break;
-            case 5:
-                orderSn += "_download";break;
-        }
-        switch (order.getPayType()){
-            // 微信
-            case 0:
-                String orderSnE = redisTemplate.opsForValue().get(orderSn);
-                log.warn("out_trade_no:" + orderSnE);
-                if (StringUtils.isNotEmpty(orderSnE)){
-                    Map<String, String> data = new HashMap<String, String>();
-                    data.put("out_trade_no", orderSnE);
-                    WXPayDefaultConfig config = new WXPayDefaultConfig();
-                    WXPay wxPay = new WXPay(config);
-                    Map<String, String> resp = wxPay.orderQuery(data);
-                    if (resp.get("trade_state") != null && resp.get("trade_state").equals(WXPayConstants.SUCCESS)) {
-                        redisTemplate.delete(orderSnE);
-                        String pngPath = ConstantFilePath.BASE_PATH + ConstantFilePath.WEIXIN_QRCODE_FOLDER + orderSn + ".png";
-                        FileUtils.deleteFile(pngPath);
-                        success = true;
-                    }
-                }
-                break;
-            // 支付宝
-            case 1:
-                log.warn("alipay out_trade_no:" + orderSn);
-                String type = alipayService.tradeQuery(orderSn);
-                log.warn("alipay type:" + type);
-                if ("SUCCESS".equals(type)){
-                    success = true;
-                }
-                break;
-            // paypal
-            case 2:
-                orderSn = orderSn.split("_")[0];
-                log.warn("paypal out_trade_no:" + orderSn);
-                Order byOrderSn = this.getByOrderSn(orderSn);
-                if (byOrderSn!=null && OrderEnum.PaymentStatus.paid.name().equals(byOrderSn.getPaymentStatus())){
-                    success = true;
-                }
-                break;
-        }
-        return success;
-    }
-
-    private Order getByOrderSn(String orderSn) {
-        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(Order::getOrderSn,orderSn);
-        List<Order> list = this.list(queryWrapper);
-        if(list == null || list.size()<=0){
-            return null;
-        }
-        return list.get(0);
-    }
-
-    @Override
-    public ResponseGoods getExpansionPrice(RequestCamera camera, String token) {
-        String skuStr = SkuCache.skusMap.get(String.valueOf(camera.getDateType()));
-        if (StringUtils.isEmpty(skuStr)){
-            skuStr = SkuCache.skusMap.get("1");
-        }
-        String[] skus = skuStr.split(",");
-        List<ResponseGoodsSku> skusList = new ArrayList<>();
-        Long goodsId = null;
-        for (String sku : skus){
-            GoodsSku goodsSkuEntity = goodsSkuService.getBySkuSn(sku);
-            if (goodsSkuEntity != null){
-                ResponseGoodsSku responseGoodsSku = new ResponseGoodsSku();
-                BeanUtils.copyProperties(goodsSkuEntity, responseGoodsSku);
-                if (StringUtils.isNotEmpty(responseGoodsSku.getDescription())){
-                    try {
-                        JSONObject o = JSONObject.parseObject(responseGoodsSku.getDescription());
-                        responseGoodsSku.setUnit(o.getString("容量"));
-                    }catch (Exception e){}
-                }
-                skusList.add(responseGoodsSku);
-                goodsId = goodsSkuEntity.getGoodsId();
-            }
-        }
-        Goods goodsEntity = goodsService.getById(goodsId);
-        ResponseGoods responseGoods = new ResponseGoods();
-        BeanUtils.copyProperties(goodsEntity, responseGoods);
-        responseGoods.setSkuList(skusList);
-        DateTime dateTime = new DateTime();
-        //camera.getDateType() = 2 为年,其余为月
-        if (camera.getDateType() != 2){
-            dateTime = dateTime.plusDays(31 * skusList.get(0).getMonth());
-        }else{
-            dateTime = dateTime.plusYears(1);
-        }
-        responseGoods.setDeadLine(dateTime.toDate().getTime());
-        return responseGoods;
-    }
-
-    @Override
-    public ResponseGoodsSku getIncrementOrDownloadPrice(RequestCamera camera, String token) {
-        if(camera.getDateType() == null){
-            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
-        }
-
-        if(camera.getDateType() != 5 && camera.getDateType() != 6){
-            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
-        }
-
-        DateTime dateTime = new DateTime();
-
-        if(camera.getUserIncrementId() != null){
-            UserIncrement userIncrementEntity = userIncrementService.getById(camera.getUserIncrementId());
-            if(userIncrementEntity != null && userIncrementEntity.getIncrementEndTime().getTime() > new Date().getTime()){
-                dateTime = new DateTime(userIncrementEntity.getIncrementEndTime());
-            }
-        }
-
-        ResponseGoodsSku responseGoodsSku = goodsSkuService.getIncrementOrDownloadPrice(camera);
-
-        //1年期限
-        dateTime = dateTime.plusYears(1);
-        responseGoodsSku.setDeadLine(dateTime.toDate().getTime());
-        return responseGoodsSku;
-    }
-}
+//package com.fdkankan.order.service.impl;
+//
+//import com.alibaba.fastjson.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+//import com.fdkankan.common.constant.*;
+//import com.fdkankan.common.exception.BusinessException;
+//import com.fdkankan.common.util.DateUtil;
+//import com.fdkankan.common.util.FileSizeUtil;
+//import com.fdkankan.common.util.FileUtils;
+//import com.fdkankan.common.util.NumberUtils;
+//import com.fdkankan.goods.common.SkuCache;
+//import com.fdkankan.goods.entity.*;
+//import com.fdkankan.goods.service.*;
+//import com.fdkankan.goods.vo.ResponseGoods;
+//import com.fdkankan.goods.vo.ResponseGoodsSku;
+//import com.fdkankan.order.constant.OrderEnum;
+//import com.fdkankan.order.entity.Invoice;
+//import com.fdkankan.order.entity.Order;
+//import com.fdkankan.order.entity.OrderItem;
+//import com.fdkankan.order.mapper.IOrderMapper;
+//import com.fdkankan.order.service.*;
+//import com.fdkankan.order.vo.ResponseCommerceOrder;
+//import com.fdkankan.order.vo.ResponseExpansionOrder;
+//import com.fdkankan.pay.alipay.sdk.AlipayService;
+//import com.fdkankan.pay.wx.WXPayDefaultConfig;
+//import com.fdkankan.pay.wx.sdk.WXPay;
+//import com.fdkankan.pay.wx.sdk.WXPayConstants;
+//import com.fdkankan.user.entity.SSOUser;
+//import com.fdkankan.user.entity.UserIncrement;
+//import com.fdkankan.user.request.*;
+//import com.fdkankan.user.service.IUserIncrementService;
+//import com.fdkankan.user.service.IUserService;
+//import com.fdkankan.user.vo.*;
+//import org.apache.commons.lang3.StringUtils;
+//import org.joda.time.DateTime;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.data.redis.core.RedisTemplate;
+//import org.springframework.stereotype.Service;
+//
+//import javax.annotation.Resource;
+//import java.math.BigDecimal;
+//import java.util.*;
+//import java.util.stream.Collectors;
+//
+///**
+// * <p>
+// * 订单表 服务实现类
+// * </p>
+// *
+// * @author
+// * @since 2021-12-24
+// */
+//@Service
+//public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implements IOrderService {
+//
+//    @Resource
+//    private RedisTemplate<String,String> redisTemplate;
+//    @Autowired
+//    private IOrderItemService orderItemService;
+//    @Autowired
+//    private IInvoiceService invoiceService;
+//    @Autowired
+//    private IUserService userService;
+//    @Autowired
+//    private ICartService cartService;
+//    @Autowired
+//    private IGoodsService goodsService;
+//    @Autowired
+//    private IGoodsSkuService goodsSkuService;
+//    @Autowired
+//    private ICameraService cameraService;
+//    @Autowired
+//    private ICameraDetailService cameraDetailService;
+//    @Autowired
+//    private ICameraSpaceService cameraSpaceService;
+//    @Autowired
+//    private IVirtualOrderService virtualOrderService;
+//    @Autowired
+//    private IExpansionOrderService expansionOrderService;
+//    @Autowired
+//    private ICommerceOrderService commerceOrderService;
+//    @Autowired
+//    private IIncrementOrderService incrementOrderService;
+//    @Autowired
+//    private IDownloadOrderService downloadOrderService;
+//    @Resource
+//    private AlipayService alipayService;
+//    @Autowired
+//    private IUserIncrementService userIncrementService;
+//
+//    @Override
+//    public ResponseOrder getOrderDetail(Long orderId) {
+//        Order order = this.getById(orderId);
+//        ResponseOrder responseOrder = new ResponseOrder();
+//        if(order == null){
+//            return responseOrder;
+//        }
+//        BeanUtils.copyProperties(order,responseOrder);
+//
+//        List<ResponseOrderItem> responseOrderItems =orderItemService.getByOrderId(orderId);
+//        responseOrder.setOrderItems(responseOrderItems);
+//
+//        Invoice invoice = invoiceService.getByOrderId(orderId);
+//        if(invoice != null){
+//            ResponseInvoice responseInvoice = new ResponseInvoice();
+//            BeanUtils.copyProperties(invoice, responseInvoice);
+//            responseOrder.setInvoice(responseInvoice);
+//        }
+//        return responseOrder;
+//    }
+//
+//    @Override
+//    public Page<ResponseOrder> getOrders(RequestOrder param, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.lambda().eq(Order::getUserId,ssoUser.getId());
+//        queryWrapper.lambda().eq(Order::getPaymentStatus, OrderEnum.PaymentStatus.paid);
+//        queryWrapper.lambda().orderByDesc(Order::getOrderTime);
+//        Page<Order> orderPage = this.page(new Page<>(param.getPageNum(),param.getPageSize()), queryWrapper);
+//
+//        List<ResponseOrder> voList = orderPage.getRecords().parallelStream().map(order -> {
+//            ResponseOrder vo = new ResponseOrder();
+//            BeanUtils.copyProperties(order, vo);
+//            return vo;
+//        }).collect(Collectors.toList());
+//        Page<ResponseOrder> voPage = new Page<ResponseOrder>(param.getPageNum(), param.getPageSize());
+//        voPage.setTotal(orderPage.getTotal());
+//        voPage.setRecords(voList);
+//        return voPage;
+//    }
+//
+//    @Override
+//    public String cancelOrder(RequestOrder param, String token) {
+//        Order order = this.getById(param.getOrderId());
+//        order.setOrderStatus(OrderEnum.OrderStatus.invalid.name());
+//        order.setRecStatus("I");
+//        if(!this.updateById(order)){
+//            throw  new BusinessException(ErrorCode.ERROR_MSG);
+//        }
+//        return ServerCode.SUCCESS.message();
+//    }
+//
+//    @Override
+//    public String receiptOrder(RequestOrder param, String token) {
+//        Order orderEntity = this.getById(param.getOrderId());
+//        orderEntity.setShippingStatus(OrderEnum.ShippingStatus.received.name());
+//        orderEntity.setOrderStatus(OrderEnum.OrderStatus.completed.name());
+//        if(!this.updateById(orderEntity)){
+//            throw  new BusinessException(ErrorCode.ERROR_MSG);
+//        }
+//        return ServerCode.SUCCESS.message();
+//    }
+//
+//    @Override
+//    public ResponseInvoice getInvoiceDetail(RequestOrder param, String token) {
+//        List<ResponseOrderItem> responseOrderItems = orderItemService.getByOrderId(param.getOrderId());
+//        StringBuilder sb = new StringBuilder();
+//        if (responseOrderItems != null && responseOrderItems.size() > 0){
+//            for (ResponseOrderItem vo : responseOrderItems){
+//                sb.append(vo.getGoodsCount()).append("*").append(vo.getGoodsName()).append("  ");
+//            }
+//        }
+//        Invoice invoice = invoiceService.getByOrderId(param.getOrderId());
+//        ResponseInvoice responseInvoice= new ResponseInvoice();
+//        if (invoice != null){
+//            responseInvoice = new ResponseInvoice();
+//            responseInvoice.setType(invoice.getType());
+//            responseInvoice.setTitle(invoice.getTitle());
+//            responseInvoice.setDescription(sb.toString());
+//        }
+//        return responseInvoice;
+//    }
+//
+//    @Override
+//    public ResponseOrder placeOrder(RequestPlaceOrder order, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        // 删除购物车
+//        String cartIdsStr = "";
+//        RequestCart[] carts = order.getGoods();
+//        for (int i = 0; i < carts.length; i++){
+//            cartIdsStr += carts[i].getId();
+//            if (i != carts.length - 1) cartIdsStr += ",";
+//        }
+//        RequestCart param = new RequestCart();
+//        param.setIds(cartIdsStr);
+//        cartService.removeCarts(param,token);
+//        // 下单
+//        List<OrderItem> orderItemEntities = new ArrayList<>();
+//        OrderItem orderItemEntity = null;
+//        int goodsTotalCount = 0;
+//        BigDecimal goodsAmount = new BigDecimal(0);
+//
+//        for(RequestCart requestCart : order.getGoods()){
+//            goodsTotalCount += requestCart.getGoodsCount();
+//            ResponseGoods responseGoods = goodsService.getByGoodsId(requestCart.getGoodsId());
+//            ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(requestCart.getSkuSn());
+//            if(responseGoods == null || sku == null){
+//                continue;
+//            }
+//            orderItemEntity = new OrderItem();
+//            orderItemEntity.setExpressNum(null);
+//            orderItemEntity.setGoodsPrice(order.getAbroad() == 0 ? sku.getPrice() : sku.getDollarPrice());
+//            orderItemEntity.setGoodsId(requestCart.getGoodsId());
+//            orderItemEntity.setShippingStatus(OrderEnum.ShippingStatus.unshipped.name());
+//            orderItemEntity.setExpressName("顺丰速运");
+//            orderItemEntity.setGoodsCount(requestCart.getGoodsCount());
+//            orderItemEntity.setGoodsName(responseGoods.getName());
+//            orderItemEntity.setGoodsSn(responseGoods.getGoodsSn());
+//            if (StringUtils.isNotEmpty(requestCart.getSkuSn())){
+//                orderItemEntity.setSkuSn(requestCart.getSkuSn());
+//            }
+//            orderItemEntities.add(orderItemEntity);
+//            goodsAmount = goodsAmount.add(orderItemEntity.getGoodsPrice().multiply(new BigDecimal(orderItemEntity.getGoodsCount())));
+//        }
+//        Order orderEntity = new Order();
+//        orderEntity.setOrderSn(NumberUtils.getOrderSn());
+//        orderEntity.setOrderTime(new Date());
+//        orderEntity.setOrderStatus(OrderEnum.OrderStatus.unprocessed.name());
+//        orderEntity.setPaymentStatus(OrderEnum.PaymentStatus.unpaid.name());
+//        orderEntity.setShippingStatus(OrderEnum.ShippingStatus.unshipped.name());
+//        orderEntity.setPaymentTypeName(order.getPayType());
+//        orderEntity.setUserId(ssoUser.getId());
+//        orderEntity.setGoodsTotalCount(goodsTotalCount);
+//        orderEntity.setGoodsAmount(goodsAmount);
+//        orderEntity.setTotalAmount(goodsAmount);
+//        orderEntity.setPaidAmount(BigDecimal.ZERO);
+//        orderEntity.setExpressAmount(BigDecimal.ZERO);
+//        orderEntity.setDeliveryTypeName("快递运输");
+//        if (order.getReceiver() != null){
+//            orderEntity.setShipAddress(order.getReceiver().getShipAddress());
+//            orderEntity.setShipAreaPath(order.getReceiver().getShipAreaPath());
+//            orderEntity.setShipMobile(order.getReceiver().getShipMobile());
+//            orderEntity.setShipName(order.getReceiver().getShipName());
+//        }
+//        orderEntity.setAbroad(order.getAbroad());
+//        if(!this.save(orderEntity)){
+//            throw new BusinessException(ErrorCode.ERROR_MSG);
+//        }
+//        for (OrderItem itemEntity : orderItemEntities) {
+//            itemEntity.setOrderId(orderEntity.getId());
+//            if(!orderItemService.save(itemEntity)){
+//                throw new BusinessException(ErrorCode.ERROR_MSG);
+//            }
+//        }
+//        ResponseOrder responseOrder = new ResponseOrder();
+//        BeanUtils.copyProperties(orderEntity, responseOrder);
+//
+//        // 添加发票信息
+//        if (order.getInvoice() != null && StringUtils.isNotEmpty(order.getInvoice().getInvoiceType())){
+//            order.setOrderId(orderEntity.getId());
+//            order.getInvoice().setAmount(responseOrder.getTotalAmount().toString());
+//            invoiceService.saveInvoiceByOrder(ssoUser.getId(),order);
+//        }
+//        return responseOrder;
+//    }
+//
+//    @Override
+//    public ResponseVirtualOrder rechargeOrder(RequestCamera param, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        Camera camera = cameraService.getById(param.getCameraId());
+//        if(camera == null){
+//            throw new BusinessException(CameraConstant.FAILURE_6003);
+//        }
+//        CameraDetail cameraDetail = cameraDetailService.getByCameraId(param.getCameraId());
+//        int sub = Integer.valueOf(cameraDetail.getBalance()) + param.getPoints();
+//        if (sub > Constant.MAXPOINTS) {
+//            throw new BusinessException(CameraConstant.FAILURE_6004);
+//        }
+//        return virtualOrderService.saveByCamera(ssoUser.getId(),param);
+//    }
+//
+//    @Override
+//    public ResponseExpansionOrder expansionOrder(RequestExpansionOrder order, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        //支付美金,只能paypal支付
+//        if(order.getAbroad() == 1 && order.getPayType() != 2){
+//            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
+//        }
+//        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
+//        if(sku == null ){
+//            throw new BusinessException(ErrorCode.ERROR_MSG);
+//        }
+//        int delay = 0;
+//        int dateNum = 0;
+//        double spaceSize = 0;
+//        //基础容量10G
+//        long baseSpace = 10;
+//        List<CameraSpace> cameraSpaceEntityList = cameraSpaceService.getListByCameraId(order.getCameraId());
+//        for(CameraSpace cameraSpaceEntity : cameraSpaceEntityList){
+//            dateNum = DateUtil.daysBetween(new Date(), cameraSpaceEntity.getSpaceEndTime());
+//            if(dateNum > 0){
+//                spaceSize = FileSizeUtil.formetFileSize(cameraSpaceEntity.getSpace(), FileSizeUtil.SIZETYPE_GB);
+//                //时间换算,(剩余天数*旧容量)/新容量 = 延期天数
+//                if((dateNum * (spaceSize - baseSpace)) % (sku.getUnitSize() - baseSpace) > 0){
+//                    //无法整除天数+1
+//                    delay += ((dateNum * (spaceSize - baseSpace)) / (sku.getUnitSize() - baseSpace)) + 1;
+//                }else {
+//                    delay += (dateNum * (spaceSize - baseSpace)) / (sku.getUnitSize() - baseSpace);
+//                }
+//            }
+//        }
+//        return expansionOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice(),
+//                sku.getUnit(), sku.getUnitSize(), sku.getMonth(), delay);
+//    }
+//
+//    @Override
+//    public ResponseCommerceOrder commerceOrder(RequestCommerceOrder param, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(param.getSkuSn());
+//        return commerceOrderService.saveByOrderParam(ssoUser.getId(), param, param.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
+//    }
+//
+//    @Override
+//    public ResponseIncrementOrder incrementOrder(RequestIncrementOrder order, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        //支付美金,只能paypal支付
+//        if(order.getAbroad() == 1 && order.getPayType() != 2){
+//            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
+//        }
+//        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
+//        return incrementOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
+//    }
+//
+//    @Override
+//    public ResponseDownloadOrder downloadOrder(RequestIncrementOrder order, String token) {
+//        SSOUser ssoUser = userService.getSSOUserByToken(token);
+//        //支付美金,只能paypal支付
+//        if(order.getAbroad() == 1 && order.getPayType() != 2){
+//            throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
+//        }
+//        ResponseGoodsSku sku = goodsSkuService.getVoBySkuSn(order.getSkuSn());
+//        return downloadOrderService.saveByOrderParam(ssoUser.getId(), order, order.getAbroad() == 0 ?  sku.getPrice() : sku.getDollarPrice());
+//    }
+//
+//    @Override
+//    public Boolean queryOrderStatus(RequestVirtualOrder order, String token) throws Exception{
+//        Boolean success = false;
+//        String orderSn = order.getOrderSn();
+//        switch (order.getOrderType()){
+//            case 0:
+//                orderSn += "_entity";break;
+//            case 1:
+//                orderSn += "_recharge";break;
+//            case 2:
+//                orderSn += "_expansion";break;
+//            case 3:
+//                orderSn += "_commerce";break;
+//            case 4:
+//                orderSn += "_increment";break;
+//            case 5:
+//                orderSn += "_download";break;
+//        }
+//        switch (order.getPayType()){
+//            // 微信
+//            case 0:
+//                String orderSnE = redisTemplate.opsForValue().get(orderSn);
+//                log.warn("out_trade_no:" + orderSnE);
+//                if (StringUtils.isNotEmpty(orderSnE)){
+//                    Map<String, String> data = new HashMap<String, String>();
+//                    data.put("out_trade_no", orderSnE);
+//                    WXPayDefaultConfig config = new WXPayDefaultConfig();
+//                    WXPay wxPay = new WXPay(config);
+//                    Map<String, String> resp = wxPay.orderQuery(data);
+//                    if (resp.get("trade_state") != null && resp.get("trade_state").equals(WXPayConstants.SUCCESS)) {
+//                        redisTemplate.delete(orderSnE);
+//                        String pngPath = ConstantFilePath.BASE_PATH + ConstantFilePath.WEIXIN_QRCODE_FOLDER + orderSn + ".png";
+//                        FileUtils.deleteFile(pngPath);
+//                        success = true;
+//                    }
+//                }
+//                break;
+//            // 支付宝
+//            case 1:
+//                log.warn("alipay out_trade_no:" + orderSn);
+//                String type = alipayService.tradeQuery(orderSn);
+//                log.warn("alipay type:" + type);
+//                if ("SUCCESS".equals(type)){
+//                    success = true;
+//                }
+//                break;
+//            // paypal
+//            case 2:
+//                orderSn = orderSn.split("_")[0];
+//                log.warn("paypal out_trade_no:" + orderSn);
+//                Order byOrderSn = this.getByOrderSn(orderSn);
+//                if (byOrderSn!=null && OrderEnum.PaymentStatus.paid.name().equals(byOrderSn.getPaymentStatus())){
+//                    success = true;
+//                }
+//                break;
+//        }
+//        return success;
+//    }
+//
+//    private Order getByOrderSn(String orderSn) {
+//        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.lambda().eq(Order::getOrderSn,orderSn);
+//        List<Order> list = this.list(queryWrapper);
+//        if(list == null || list.size()<=0){
+//            return null;
+//        }
+//        return list.get(0);
+//    }
+//
+//    @Override
+//    public ResponseGoods getExpansionPrice(RequestCamera camera, String token) {
+//        String skuStr = SkuCache.skusMap.get(String.valueOf(camera.getDateType()));
+//        if (StringUtils.isEmpty(skuStr)){
+//            skuStr = SkuCache.skusMap.get("1");
+//        }
+//        String[] skus = skuStr.split(",");
+//        List<ResponseGoodsSku> skusList = new ArrayList<>();
+//        Long goodsId = null;
+//        for (String sku : skus){
+//            GoodsSku goodsSkuEntity = goodsSkuService.getBySkuSn(sku);
+//            if (goodsSkuEntity != null){
+//                ResponseGoodsSku responseGoodsSku = new ResponseGoodsSku();
+//                BeanUtils.copyProperties(goodsSkuEntity, responseGoodsSku);
+//                if (StringUtils.isNotEmpty(responseGoodsSku.getDescription())){
+//                    try {
+//                        JSONObject o = JSONObject.parseObject(responseGoodsSku.getDescription());
+//                        responseGoodsSku.setUnit(o.getString("容量"));
+//                    }catch (Exception e){}
+//                }
+//                skusList.add(responseGoodsSku);
+//                goodsId = goodsSkuEntity.getGoodsId();
+//            }
+//        }
+//        Goods goodsEntity = goodsService.getById(goodsId);
+//        ResponseGoods responseGoods = new ResponseGoods();
+//        BeanUtils.copyProperties(goodsEntity, responseGoods);
+//        responseGoods.setSkuList(skusList);
+//        DateTime dateTime = new DateTime();
+//        //camera.getDateType() = 2 为年,其余为月
+//        if (camera.getDateType() != 2){
+//            dateTime = dateTime.plusDays(31 * skusList.get(0).getMonth());
+//        }else{
+//            dateTime = dateTime.plusYears(1);
+//        }
+//        responseGoods.setDeadLine(dateTime.toDate().getTime());
+//        return responseGoods;
+//    }
+//
+//    @Override
+//    public ResponseGoodsSku getIncrementOrDownloadPrice(RequestCamera camera, String token) {
+//        if(camera.getDateType() == null){
+//            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+//        }
+//
+//        if(camera.getDateType() != 5 && camera.getDateType() != 6){
+//            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+//        }
+//
+//        DateTime dateTime = new DateTime();
+//
+//        if(camera.getUserIncrementId() != null){
+//            UserIncrement userIncrementEntity = userIncrementService.getById(camera.getUserIncrementId());
+//            if(userIncrementEntity != null && userIncrementEntity.getIncrementEndTime().getTime() > new Date().getTime()){
+//                dateTime = new DateTime(userIncrementEntity.getIncrementEndTime());
+//            }
+//        }
+//
+//        ResponseGoodsSku responseGoodsSku = goodsSkuService.getIncrementOrDownloadPrice(camera);
+//
+//        //1年期限
+//        dateTime = dateTime.plusYears(1);
+//        responseGoodsSku.setDeadLine(dateTime.toDate().getTime());
+//        return responseGoodsSku;
+//    }
+//}

+ 14 - 8
4dkankan-center-scene/pom.xml

@@ -29,6 +29,12 @@
         </dependency>
 
         <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-center-platform-api</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
@@ -36,13 +42,13 @@
 
     </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<!--    <build>-->
+<!--        <plugins>-->
+<!--            <plugin>-->
+<!--                <groupId>org.springframework.boot</groupId>-->
+<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
+<!--            </plugin>-->
+<!--        </plugins>-->
+<!--    </build>-->
 
 </project>

+ 0 - 49
4dkankan-center-scene/src/main/java/com/fdkankan/scene/SceneApplication.java

@@ -1,49 +0,0 @@
-package com.fdkankan.scene;
-
-import com.fdkankan.common.config.FileRouteConfig;
-import com.fdkankan.common.constant.RedisUtil;
-import com.fdkankan.common.exception.GlobalExceptionHandler;
-import com.fdkankan.common.util.UploadToOssUtil;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.Bean;
-import org.springframework.scheduling.annotation.EnableScheduling;
-
-@SpringBootApplication
-@EnableFeignClients
-@EnableDiscoveryClient
-@EnableScheduling
-@MapperScan("com.fdkankan.**.mapper")
-public class SceneApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(SceneApplication.class, args);
-    }
-
-    /**
-     * 注入全局异常处理器
-     */
-    @Bean
-    public GlobalExceptionHandler globalExceptionHandler(){
-        return new GlobalExceptionHandler();
-    }
-
-    @Bean
-    public RedisUtil redisUtil(){
-        return new RedisUtil();
-    }
-
-    @Bean
-    public FileRouteConfig fileRouteConfig(){
-        return new FileRouteConfig();
-    }
-
-    @Bean
-    public UploadToOssUtil uploadToOssUtil(){
-        return new UploadToOssUtil();
-    }
-
-}

+ 8 - 232
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneFileController.java

@@ -220,242 +220,18 @@ public class SceneFileController extends BaseController {
 
     }
 
-//    /**
-//     *
-//     * @return
-//     */
-//    @PostMapping("buildScene")
+    /**
+     * 获取亚马逊S3文件上传url
+     * @return
+     */
+    @PostMapping("buildScene")
 //    @ApiOperation("获取亚马逊S3文件上传url")
 //    @ApiImplicitParams({
 //        @ApiImplicitParam(name = "unicode", value = "unicode文件夹", dataType = "String"),
 //            @ApiImplicitParam(name = "zip", value = "zip包的名称", dataType = "String"),
 //            @ApiImplicitParam(name = "dataFdage", value = "dataFdage名称", dataType = "String")})
-//    public Result buildScene(String prefix, String unicode, String zip, String dataFdage) throws Exception{
-//
-////        FileUtils.downLoadFromUrl(prefix);
-//
-//        String data = FileUtils.readFile(ConstantFilePath.BUILD_MODEL_PATH + unicode + "/data.fdage");
-//        JSONObject jsonObject = JSONObject.parseObject(data);
-//
-//
-//        String sceneNum = sceneNumService.generateSceneNum();
-//
-////        SceneProEntity scene = ComputerUtil.createScenePro(sceneNum, cameraEntity.getId(), cameraEntity.getChildName(), jsonObject.getString("creator"),
-////                jsonObject.getString("pwd"), unicode,
-////                cameraType, String.valueOf(fileId), prefix, "", icon, "0", detailEntity.getUserId(), userName,
-////                jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
-////                jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
-////                jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), sceneProService, sceneProEditService, rebuild,
-////                producer, jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type);
-//
-//        return Result.success(mainUrl + sceneProNewUrl + sceneNum);
-//    }
-//
-
-//    public void turntableBuildScene(String filePath, String fileId, boolean fromOss, String prefix) throws Exception{
-//        String data = FileUtils.readFile(filePath + "data.fdage");
-//        JSONObject jsonObject = JSONObject.parseObject(data);
-//
-//        //调用createScene方法生成scene数据和加入算法队列
-//        if(jsonObject == null) {
-//            log.info("data.fdage文件不存在");
-//            throw new BaseRuntimeException(CameraConstant.FAILURE_CODE_6009, CameraConstant.FAILURE_MSG_6009);
-//        }
-//
-//        String sceneNum = "";
-//
-//        String snCode = jsonObject.getJSONObject("cam").getString("uuid");
-//        String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime"); //从data.fage 取出
-////            sceneProService.updateRecStatus(unicode);
-//        //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
-//        SceneProEntity proEntity = sceneProService.findByFileId("/" + fileId + "/");
-//        int rebuild = 1;
-//        if(proEntity != null){
-//            sceneNum = proEntity.getNum();
-//            if(proEntity.getStatus() == 0){
-//                log.info(sceneNum + ":场景处于计算中,不能再计算");
-//                return;
-//            }
-//        }else {
-//            sceneNum = sceneNumService.generateSceneNum();
-//            rebuild = 0;
-//        }
-//
-//        if(sceneNum == null){
-//            log.error("大场景序号为空:" + sceneNum);
-//            throw new BaseRuntimeException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-//
-//        log.info("查询相机:" + snCode);
-//        CameraEntity cameraEntity = goodsService.findByChildName(snCode);
-//
-//        if(cameraEntity ==  null){
-//            log.error("该相机不存在:" + snCode);
-//            cameraEntity = goodsService.findBySnCode(snCode);
-//            if(cameraEntity == null){
-//                throw new BaseRuntimeException(CameraConstant.FAILURE_CODE_6003, CameraConstant.FAILURE_MSG_6003);
-//            }
-//        }
-//
-//        CameraDetailEntity detailEntity = goodsService.findCameraDetailByCameraId(cameraEntity.getId());
-//        if(detailEntity ==  null){
-//            log.error("该相机详情不存在:" + snCode);
-//            throw new BaseRuntimeException(CameraConstant.FAILURE_CODE_6003, CameraConstant.FAILURE_MSG_6003);
-//        }
-//
-//        String userName = null;
-//        if(detailEntity.getUserId() != null){
-//            Result result = userService.findById(detailEntity.getUserId());
-//            SSOUser user = mapper.convertValue(result.getData(), SSOUser.class);
-//            if(user != null){
-//                userName = user.getUserName();
-//            }
-//        }
-//
-//        String icon = null;
-//        if(jsonObject.containsKey("icon") && StringUtil.isNotEmpty(jsonObject.getString("icon"))){
-//            CreateObjUtil.ossUtilCp(ConstantFilePath.OSS_PREFIX + prefix + jsonObject.getString("icon"), filePath);
-//            icon = prefixAli + "images/images" + sceneNum + "/" + jsonObject.getString("icon");
-//            if("s3".equals(type)){
-//                CreateObjUtil.ossFileCp(ConstantFilePath.OSS_PREFIX + prefix + jsonObject.getString("icon"), filePath + jsonObject.getString("icon"));
-//                icon = ConstantUrl.PREFIX_AWS + "images/images" + sceneNum + "/" + jsonObject.getString("icon");
-//            }
-//            uploadToOssUtil.upload(filePath + jsonObject.getString("icon"), "images/images" + sceneNum + "/" + jsonObject.getString("icon"));
-//        }
-//
-//        JSONObject firmwareVersion = new JSONObject();
-//        if(jsonObject.containsKey("camSoftwareVersion") && StringUtil.isNotEmpty(jsonObject.getString("camSoftwareVersion"))){
-//            firmwareVersion.put("camSoftwareVersion", jsonObject.getString("camSoftwareVersion"));
-//        }
-//
-//        if(jsonObject.containsKey("version") && StringUtil.isNotEmpty(jsonObject.getString("version"))){
-//            firmwareVersion.put("version", jsonObject.getString("version"));
-//        }
-//
-//        String sceneUrl = mainUrl + sceneProNewUrl;
-//        String buildType = "V3";
-//        //13表示转台
-//        Long cameraType = 13L;
-//        //国际版本使用切割好的瓦片图
-////                if("s3".equals(type)){
-////                    cameraType = 12L;
-////                }
-//
-//        //激光转台 八目相机占用 10 和 11
-//        if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
-//            //激光转台
-//            cameraType = 14L;
-//        }
-//
-//
-//        //重算的场景,先移除该场景对应的容量
-//        if(rebuild == 1){
-//            userService.rebuildReduceSpaceBySceneNum(sceneNum);
-//        }else {
-//            //上传log-main.png
-//            uploadToOssUtil.upload(ConstantFilePath.LOGO_PATH + "logo-main.png", "images/images" + sceneNum + "/logo-main.png");
-//            uploadToOssUtil.upload(ConstantFilePath.LOGO_PATH + "logo-main-en.png", "images/images" + sceneNum + "/logo-main-en.png");
-//        }
-//        SceneProEntity scene = null;
-//        scene = ComputerUtil.createScenePro(sceneNum, cameraEntity.getId(), cameraEntity.getChildName(), jsonObject.getString("creator"),
-//                jsonObject.getString("pwd"), unicode,
-//                cameraType, String.valueOf(fileId), prefix, "", icon, "0", detailEntity.getUserId(), userName,
-//                jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
-//                jsonObject.getJSONArray("points").size(), jsonObject.getString("name"), jsonObject.getString("info"),
-//                jsonObject.getInteger("scenetype"), jsonObject.getString("gps"), sceneProService, sceneProEditService, rebuild,
-//                producer, jsonObject.getInteger("resolution"), firmwareVersion.toString(), sceneUrl, buildType, type, ecsType,
-//                sceneCooperationService, sceneResourceCooperationService, sceneResourceCameraService, detailEntity.getCooperationUser(), rubberSheetingUtil);
-//
-//        if(scene != null){
-//            JSONObject statusJson = new JSONObject();
-//            //临时将-2改成1,app还没完全更新
-//            statusJson.put("status", scene.getStatus() == -2? 1 : scene.getStatus());
-//            statusJson.put("webSite", scene.getWebSite());
-//            statusJson.put("sceneNum", scene.getNum());
-//            statusJson.put("thumb", scene.getThumb());
-//            statusJson.put("payStatus", scene.getPayStatus());
-//            statusJson.put("recStatus", scene.getRecStatus());
-//            FileUtils.writeFile(ConstantFilePath.SCENE_PATH+"data/data"+sceneNum+File.separator+"status.json", statusJson.toString());
-//            uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH+"data/data"+sceneNum+File.separator+"status.json",
-//                    "data/data"+sceneNum+File.separator+"status.json");
-//        }
-//
-//        if(detailEntity.getCompanyId() != null){
-//            CompanyEntity companyEntity = companyService.findById(detailEntity.getCompanyId());
-//            if(companyEntity != null){
-//
-//                Map<String, Object> jsonMap = new HashMap<>();
-//
-//                log.info("复制企业logo");
-//                SceneProEditEntity sceneProEditEntity = sceneProEditService.findByProId(scene.getId());
-//
-//                if(StringUtil.isNotEmpty(companyEntity.getTopLogo())){
-//
-//                    FileUtils.copyFile(ConstantFilePath.BASE_PATH + File.separator + companyEntity.getTopLogo(),
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/logo-main.png", true);
-//                    uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/logo-main.png",
-//                            "images/images" + sceneNum + "/logo-main.png");
-//                }
-//
-//                if(StringUtil.isNotEmpty(companyEntity.getFloorLogo())){
-//
-//                    FileUtils.copyFile(ConstantFilePath.BASE_PATH + File.separator + companyEntity.getFloorLogo(),
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/floorLogoImg.png", true);
-//                    uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/floorLogoImg.png",
-//                            "images/images" + sceneNum + "/floorLogoImg.png");
-//
-//                    sceneProEditEntity.setFloorLogo("user");
-//                    jsonMap.put("floorLogoSize", sceneProEditEntity.getFloorLogoSize());
-//                    jsonMap.put("floorLogo", "user");
-//                }
-//
-//                if(StringUtil.isNotEmpty(companyEntity.getQrLogo())){
-//
-//                    FileUtils.copyFile(ConstantFilePath.BASE_PATH + File.separator + companyEntity.getQrLogo(),
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/QRShareLogo.png", true);
-//                    uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/QRShareLogo.png",
-//                            "images/images" + sceneNum + "/QRShareLogo.png");
-//                    sceneProEditEntity.setShareLogo("images/images" + sceneNum + "/QRShareLogo.png");
-//
-//                    //生成新的分享的二维码
-//                    MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneNum, ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneNum+".png",
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/QRShareLogo.png");
-//                    MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneNum + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneNum+"_en.png",
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/QRShareLogo.png");
-//                }
-//
-//                if(StringUtil.isNotEmpty(companyEntity.getMarkerLogo())){
-//
-//                    FileUtils.copyFile(ConstantFilePath.BASE_PATH + File.separator + companyEntity.getMarkerLogo(),
-//                            ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/marker.png", true);
-//                    uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH + "images/images" + sceneNum + "/marker.png",
-//                            "images/images" + sceneNum + "/marker.png");
-//
-//                    sceneProEditEntity.setMarkerLogo("user");
-//                    jsonMap.put("markerLogo", "user");
-//                }
-//
-//                sceneProEditEntity.setShowLogoBottom(companyEntity.getShowLogo());
-//                sceneProEditService.update(sceneProEditEntity);
-//
-//                jsonMap.put("showLogoBottom", companyEntity.getShowLogo());
-//                FileUtils.writeJsonFile(ConstantFilePath.SCENE_PATH + "data/data" + sceneNum + "/scene.json", jsonMap);
-//            }
-//
-//            //删除oss的houst_floor.json
-//            uploadToOssUtil.delete("data/data"+sceneNum+File.separator+"houst_floor.json");
-//
-//        }
-//
-//        //激光转台 八目相机占用 10 和 11
-//        if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
-//
-//            producer.sendMsgLaser(scene.getMqMsg());
-//        }else  if(scene != null){
-//            producer.sendMsg(scene.getMqMsg());
-//        }
-//    }
-//
-
+    public ResultData buildScene(String prefix, String unicode, String zip, String dataFdage) throws Exception{
+        return sceneFileBuildService.buildScene(prefix, unicode, zip, dataFdage);
+    }
 
 }

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScene3dNumService.java

@@ -21,4 +21,6 @@ public interface IScene3dNumService extends IService<Scene3dNum> {
 //
     void updateUsedStatus(List<String> nums);
 
+    String generateSceneNum();
+
 }

+ 4 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneFileBuildService.java

@@ -38,6 +38,9 @@ public interface ISceneFileBuildService extends IService<SceneFileBuild> {
 
     ResultData getS3UploadUrl(String params) throws Exception;
 
-    ResultData buildLiteScene(String prefix, String dataFdage, String zipName, String userName, String password, String oldNum) throws Exception;
+    ResultData buildLiteScene(String prefix, String dataFdage, String zipName, String userName,
+                              String password, String oldNum) throws Exception;
+
+    ResultData buildScene(String prefix, String unicode, String zip, String dataFdage) throws Exception;
 
 }

+ 50 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/Scene3dNumServiceImpl.java

@@ -1,16 +1,25 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.RecStatus;
+import com.fdkankan.common.constant.RedisKey;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.scene.entity.Scene3dNum;
 import com.fdkankan.scene.mapper.IScene3dNumMapper;
 import com.fdkankan.scene.service.IScene3dNumService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -20,9 +29,13 @@ import java.util.List;
  * @author dengsixing
  * @since 2021-12-23
  */
+@Slf4j
 @Service
 public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3dNum> implements IScene3dNumService {
 
+    @Autowired
+    RedisTemplate redisTemplate;
+
     @Override
     public List<String> findSceneNum() {
         return baseMapper.findSceneNum();
@@ -45,4 +58,41 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
         baseMapper.updateUsedStatus(nums);
     }
 
+    @Override
+    public String generateSceneNum(){
+        // 从缓存中获取
+        String sceneNum = (String)redisTemplate.opsForList().leftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        if(Objects.nonNull(sceneNum)){
+            return sceneNum;
+        }
+        // 分布式加锁
+        Long loading =  redisTemplate.opsForValue().increment(RedisKey.LOCK_FDKANKAN_SCENE_NUMS);
+        if (loading.compareTo(1L) == 0) {
+            try {
+                log.info("开始从数据库加载场景码");
+                List<String> nums = this.findSceneNum();
+                this.updateUsedStatus(nums);
+                redisTemplate.opsForList().rightPush(RedisKey.FDKANKAN_SCENE_NUMS, nums.toArray(new String[]{}));
+                log.info("场景码加载完成");
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                redisTemplate.opsForValue().decrement(RedisKey.LOCK_FDKANKAN_SCENE_NUMS);
+            }
+        }else{
+            // 等待1秒加载缓存
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+        sceneNum = (String)redisTemplate.opsForList().leftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        if(StrUtil.isEmpty(sceneNum)){
+            log.error("场景码加载失败");
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5053);
+        }
+        return sceneNum;
+    }
+
 }

+ 27 - 8
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -11,6 +11,7 @@ import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.*;
+import com.fdkankan.platform.api.feign.client.PlatformClient;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneFileBuildMapper;
 import com.fdkankan.scene.service.*;
@@ -69,6 +70,9 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     private String ecsType;
 
     @Autowired
+    PlatformClient platformClient;
+
+    @Autowired
     ISceneFileUploadService sceneFileUploadService;
     @Autowired
     RedisTemplate redisTemplate;
@@ -82,6 +86,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     ISceneProEditService sceneProEditService;
     @Autowired
     ISceneProEditExtService sceneProEditExtService;
+    @Autowired
+    IScene3dNumService scene3dNumService;
 
     @Override
     public SceneFileBuild findByFileId(String fileId) {
@@ -782,6 +788,19 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
     }
 
+    @Override
+    public ResultData buildScene(String prefix, String unicode, String zip, String dataFdage) throws Exception{
+
+        String data = FileUtils.readFile(ConstantFilePath.BUILD_MODEL_PATH + unicode + "/data.fdage");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+
+        // TODO: 2021/12/31
+        String sceneNum = null;
+//       sceneNumService.generateSceneNum();
+
+        return ResultData.ok(mainUrl + sceneProNewUrl + sceneNum);
+    }
+
 //    public void turntableBuildScene(String filePath, String fileId, boolean fromOss, String prefix) throws Exception{
 //        String data = FileUtils.readFile(filePath + "data.fdage");
 //        JSONObject jsonObject = JSONObject.parseObject(data);
@@ -984,12 +1003,12 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 //        }
 //    }
 
-//    public void buildScene(String filePath, String fileId, boolean fromOss, String prefix) throws Exception{
-//        //获取解压后的资源的data.fdage中的数据
-//        String data = FileUtils.readFile(filePath + "data.fdage");
-//        JSONObject jsonObject = JSONObject.parseObject(data);
-//
-//        //调用createScene方法生成scene数据和加入算法队列
+    public void buildScene(String filePath, String fileId, boolean fromOss, String prefix) throws Exception{
+        //获取解压后的资源的data.fdage中的数据
+        String data = FileUtils.readFile(filePath + "data.fdage");
+        JSONObject jsonObject = JSONObject.parseObject(data);
+
+        //调用createScene方法生成scene数据和加入算法队列
 //        if(jsonObject != null){
 //            //有calibration值为标定,1: camera_calibration 2: color_anlysis,0正常计算
 //            if(jsonObject.get("calibration") != null && jsonObject.getString("calibration").equals("1")){
@@ -1031,7 +1050,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 //                        return;
 //                    }
 //                }else {
-//                    sceneNum = sceneNumService.generateSceneNum();
+//                    sceneNum = scene3dNumService.generateSceneNum();
 //                    rebuild = 0;
 //                }
 //
@@ -1258,7 +1277,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 //            log.info("data.fdage文件不存在");
 //            throw new BusinessException(CameraConstant.FAILURE_6009);
 //        }
-//    }
+    }
 
 
 

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -16,6 +16,8 @@ import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.*;
+import com.fdkankan.platform.api.feign.client.PlatformClient;
+import com.fdkankan.platform.api.feign.vo.Camera;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
@@ -1500,6 +1502,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Override
     public ResultData saveSceneInfo(SceneEditVO base) throws Exception{
+
         if(StrUtil.isEmpty(base.getSceneNum())){
             throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
         }

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -1035,7 +1035,7 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     public void updatePv(){
 
         Boolean lock = redisTemplate.opsForValue().setIfAbsent(
-                RedisKey.LOCK_SCENE_VISIT_UPDATE, Thread.currentThread().getId(), RedisKey.EXPIRE_TIME_2_HOUR, TimeUnit.MILLISECONDS);
+                RedisKey.LOCK_SCENE_VISIT_UPDATE, Thread.currentThread().getId()+"", RedisKey.EXPIRE_TIME_2_HOUR, TimeUnit.MILLISECONDS);
         if(!lock){
             return;
         }

+ 5 - 0
4dkankan-center-scene/src/main/resources/bootstrap.yml

@@ -19,6 +19,10 @@ spring:
           data-id: other-config.yaml
           group: DEFAULT_GROUP
           refresh: true
+        extension-configs[3]:
+          data-id: common-mq-config.yaml
+          group: DEFAULT_GROUP
+          refresh: true
       discovery:
         server-addr: 192.168.0.47:8848
         namespace: 4dkankan-dev
@@ -56,3 +60,4 @@ spring:
 
 #服务器环境,dev为测试环境,formal为正式环境, hq横琴云副控制服务器
 #environment: dev
+

+ 1 - 1
4dkankan-common/src/main/java/com/fdkankan/common/config/ShiroConfig.java

@@ -21,7 +21,7 @@ import org.springframework.context.annotation.Configuration;
 import javax.servlet.Filter;
 import java.util.*;
 
-@Configuration
+//@Configuration
 public class ShiroConfig {
 
     @Bean("shiroFilter")

+ 1 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/ErrorCode.java

@@ -126,6 +126,7 @@ public enum ErrorCode {
     FAILURE_CODE_5050(5050, "照片数目为空"),
     FAILURE_CODE_5051(5051, "md5为空"),
     FAILURE_CODE_5052(5052, "上传失败, 请重新上传。"),
+    FAILURE_CODE_5053(5053, "场景码生成失败,请重试。"),
 
 
 

+ 12 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/RedisKey.java

@@ -67,6 +67,18 @@ public class RedisKey {
      */
     public static String LOCK_UPLOAD_FLOORPLAN_PNG = "lock:upload:floorplan:png:scenecode:%s";
 
+    /**
+     * 场景码池
+     */
+    public static String FDKANKAN_SCENE_NUMS = "4dkankan:scene:nums";
+
+    /**
+     * 加载场景码池锁
+     */
+    public static String LOCK_FDKANKAN_SCENE_NUMS = "lock:4dkankan:scene:nums";
+
+
+