AppOrderController.java 8.2 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
package com.boco.nbd.wios.flow.controller;

import cn.hutool.core.lang.Assert;
import com.boco.nbd.wios.flow.entity.vo.AppOrderDetailVO;
import com.boco.nbd.wios.flow.entity.vo.AppOrderInstallVO;
import com.boco.nbd.wios.flow.entity.vo.AppOrderVO;
import com.boco.nbd.wios.flow.entity.vo.AppPayBillVO;
import com.boco.nbd.wios.flow.service.IAppOrderService;
import com.boco.nbd.wios.manage.entity.bo.MaterialConfig;
import com.boco.nbd.wios.manage.entity.bo.OrderScoreDTO;
import com.boco.nbd.wios.manage.service.impl.OrderScoreService;
import com.boco.nbd.wios.manage.service.impl.OrderService;
import com.ihidea.component.api.v2.BaseResponse;
import com.ihidea.core.support.exception.ServiceException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

/**
 * @author:cao hai
 * @date:2022/10/27 10:35
 * @version:V1.0
 * @description:CAMS APP 接口保留原先一期格式规范 也没需求,接口格式还不让调整,拷贝原先的代码实现
 * @modify:
 */
@RestController
@Slf4j
@RequestMapping("/api2")
@Api(tags = "CamsApp接口")
public class AppOrderController {

    @Autowired
    private IAppOrderService appOrderService;

    @Autowired
    private OrderScoreService orderScoreService;

    @Autowired
    private OrderService orderService;

    /**
     * 查询订单评分
     *
     * @return
     */
    @GetMapping(value = "orderScore/getOrderScoreByOrderId")
    @ApiOperation(value = "查询订单评分")
    @ApiImplicitParam(paramType = "query", name = "orderId", value = "订单表ID", required = true, dataType = "String")
    public BaseResponse<Object> list(String orderId) {
        return new BaseResponse<>(orderScoreService.getOrderScoreByOrderId(orderId));
    }

    /**
     * 保存订单回访信息
     * description
     *
     * @param list
     */
    @PostMapping(value = "orderScore/save")
    @ApiOperation(value = "保存订单回访信息")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "订单id", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "visitContent", value = "意见或建议", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "files", value = "图片地址,多个逗号分割", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "list", value = "格式:[{\"id\":9,\"score\":70,\"description\":\"描述\"},{\"id\":12,\"score\":60,\"description\":\"描述\"}]", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "knowAfterSalesChannel", value = "是否了解墙盒售后问题反馈渠道:0-否,1:是", dataType = "int", paramType = "query", required = true),
            @ApiImplicitParam(name = "installLength", value = "墙盒线缆的安装长度", dataType = "int", paramType = "query", required = true),
    })
    public BaseResponse<Object> save(String orderId, String visitContent, String files, String list, Integer knowAfterSalesChannel, Integer installLength) {
        return orderService.saveOrderScore(orderId, visitContent, files, list, knowAfterSalesChannel, installLength);
    }

    @GetMapping(value = "order/qryList")
    @ApiOperation(value = "查询订单列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "camsPhone", value = "cams手机号", dataType = "String", paramType = "query", required = true),})
    public BaseResponse<List<AppOrderVO>> getList(String camsPhone) {
        Assert.notEmpty(camsPhone, "手机号不能为空");
        return new BaseResponse<>(appOrderService.queryOrderList(camsPhone));
    }

    @GetMapping(value = "order/qryOrderDetail")
    @ApiOperation(value = "查询订单详情")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "工单号", dataType = "String", paramType = "query", required = true),})
    public BaseResponse<AppOrderDetailVO> qryOrderDetail(String orderId) {
        Assert.notEmpty(orderId, "工单号不能为空");
        AppOrderDetailVO result = appOrderService.getOrderDetail(orderId);
        return new BaseResponse<>(result);
    }

    @GetMapping(value = "order/qryInstallDetail")
    @ApiOperation(value = "查询安装订单详情")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "工单号", dataType = "String", paramType = "query", required = true),})
    public BaseResponse<AppOrderInstallVO> qryInstallDetail(String orderId) {
        Assert.notEmpty(orderId, "工单号不能为空");
        AppOrderInstallVO orderInstallDTO = appOrderService.getInstallDetail(orderId);
        return new BaseResponse<>(orderInstallDTO);
    }

    @GetMapping(value = "order/qryExpandIntro")
    @ApiOperation(value = "查询报装说明")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "工单号", dataType = "String", paramType = "query", required = true),})
    public BaseResponse<String> getExpandIntro(String orderId) {
        Assert.notEmpty(orderId, "缺少参数");
        MaterialConfig mc = appOrderService.getExpandIntro(orderId);
        if (mc != null) {
            return new BaseResponse<>(mc.getContent());
        } else {
            return new BaseResponse<>();
        }
    }

    /**
     * 查询账单列表
     *
     * @param camsPhone
     * @param orderId
     * @param status
     * @return
     */
    @GetMapping(value = "order/qryBillList")
    @ApiOperation(value = "查询账单列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "camsPhone", value = "cams手机号", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "orderId", value = "工单号", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "status", value = "状态 0-未支付 1-已支付", dataType = "int", paramType = "query", required = false),})
    public BaseResponse<List<AppPayBillVO>> qryBillList(String camsPhone, String orderId, Integer status) {
        if (!StringUtils.isEmpty(camsPhone) && !StringUtils.isEmpty(orderId)) {
            throw new ServiceException("cams手机号和工单号不能同时为空");
        }
        List<AppPayBillVO> list = appOrderService.qryBill(camsPhone, orderId, status);
        return new BaseResponse<>(list);
    }


    /**
     * 报装
     *
     * @param orderId
     * @param expandStatus
     * @param expandFailReason
     * @param expandFailOperate
     */
    @PostMapping(value = "order/expand")
    @ApiOperation(value = "报装")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "订单id", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "expandStatus", value = "报装状态 1:通过 2:不通过", dataType = "int", paramType = "query", required = true),
            @ApiImplicitParam(name = "expandFailReason", value = "报装不通过原因", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "expandFailOperate", value = "报装不通过后订单后续操作 1:换其他用电类型继续安装  2:不安装了", dataType = "int", paramType = "query", required = false),})
    public BaseResponse<Object> expand(String orderId, Integer expandStatus, String expandFailReason, Integer expandFailOperate) {
        if (StringUtils.isEmpty(orderId) || expandStatus == null) {
            throw new ServiceException("缺少参数");
        }
        Integer[] items = {1, 2};
        if (!Arrays.asList(items).contains(expandStatus)) {
            throw new ServiceException("状态不合法");
        }
        appOrderService.expand(orderId, expandStatus, expandFailReason, expandFailOperate);
        return new BaseResponse<>();
    }

}