张天森
2022-11-17 11899dc62d10c1c7778fbebb631f5ee25705b7db
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/ShopFlowerApi.java
New file
@@ -0,0 +1,354 @@
package com.panzhihua.applets.api;
import cn.hutool.core.util.StrUtil;
import com.panzhihua.applets.weixin.CheckService;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO;
import com.panzhihua.common.model.dtos.shop.*;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.convenient.ConvenientElevatingPointVO;
import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO;
import com.panzhihua.common.model.vos.shop.*;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.validated.PutGroup;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @auther yh
 * @create 2022-11-08 17:25:45
 * @describe 商城模块API
 */
@Slf4j
@RestController
@RequestMapping("/shopFlower/")
@Api(tags = {"商城服务"})
public class ShopFlowerApi extends BaseController {
    @Resource
    private CommunityService communityService;
    @Resource
    private CheckService checkService;
    @ApiOperation(value = "查询便民服务商家详情", response = ConvenientMerchantVO.class)
    @GetMapping("/merchant/getMerchantByUserId")
    public R getMerchant(@RequestParam("userId") Long userId) {
        return communityService.getMerchantByUserId(userId);
    }
    @ApiOperation(value = "编辑便民服务商家")
    @PutMapping("/merchant/put")
    public R putMerchant(@RequestBody @Validated(PutGroup.class) ConvenientMerchantDTO convenientMerchantDTO) {
        convenientMerchantDTO.setUpdatedBy(this.getUserId());
        convenientMerchantDTO.setCreatedBy(this.getUserId());
        return communityService.putMerchant(convenientMerchantDTO);
    }
    @ApiOperation(value = "分页查询商品列表", response = ComShopFlowerGoodsVO.class)
    @PostMapping("pageShopGoods")
    public R pageShopGoods(@RequestBody ComShopFlowerGoodsDTO comShopGoodsDTO) {
        return communityService.pageShopFlowerGoodsByApp(comShopGoodsDTO);
    }
    @ApiOperation(value = "查询商品详情", response = ComShopFlowerGoodsVO.class)
    @PostMapping("shopGoodsDetail")
    @ApiImplicitParam(name = "goodsId", value = "商品id", required = true)
    public R shopGoodsDetail(@RequestParam("goodsId") Long goodsId) {
        return communityService.shopFlowerGoodsDetail(goodsId);
    }
    @ApiOperation(value = "查询用户收货地址列表", response = ComShopUserAddressVO.class)
    @PostMapping("shopUserAddressList")
    public R shopUserAddressList(@RequestBody PageComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if (userId == null) {
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopFlowerUserAddressList(comShopAddressDTO);
    }
    @ApiOperation(value = "添加用户收货地址列表")
    @PostMapping("shopAddUserAddress")
    public R shopAddUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if (userId == null) {
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopFlowerAddUserAddress(comShopAddressDTO);
    }
    @ApiOperation(value = "修改用户收货地址列表")
    @PostMapping("shopEditUserAddress")
    public R shopEditUserAddress(@RequestBody ComShopAddressDTO comShopAddressDTO) {
        Long userId = this.getUserId();
        if (userId == null) {
            return R.fail("请重新登陆");
        }
        comShopAddressDTO.setUserId(userId);
        return communityService.shopFlowerEditUserAddress(comShopAddressDTO);
    }
    @ApiOperation(value = "删除用户收货地址列表")
    @PostMapping("shopDelUserAddress")
    @ApiImplicitParam(name = "addressId", value = "收货地址id", required = true)
    public R shopDelUserAddress(@RequestParam("addressId") Long addressId) {
        return communityService.shopFlowerDelUserAddress(addressId);
    }
    @ApiOperation(value = "订单预览", response = ComShopOrderPreviewVO.class)
    @PostMapping("orderPreview")
    public R orderPreview(@RequestBody ComShopOrderPreviewDTO orderPreviewDTO) {
        Long userId = this.getUserId();
        if (userId == null) {
            return R.fail("请重新登陆");
        }
        orderPreviewDTO.setUserId(userId);
        return communityService.orderPreviewFlower(orderPreviewDTO);
    }
    @ApiOperation(value = "创建订单", response = ComShopOrderVO.class)
    @PostMapping("orderCreate")
    public R orderCreate(@RequestBody ComShopOrderCreateDTO orderCreateDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        orderCreateDTO.setUserId(loginUserInfo.getUserId());
        orderCreateDTO.setPhone(loginUserInfo.getPhone());
        orderCreateDTO.setOpenId(loginUserInfo.getOpenid());
        return communityService.orderCreateFlower(orderCreateDTO);
    }
    @ApiOperation(value = "分页查询订单列表", response = ComShopOrderPageVO.class)
    @PostMapping("pageOrderList")
    public R pageOrderList(@RequestBody PageComFlowerOrderListDTO comOrderListDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        comOrderListDTO.setUserId(loginUserInfo.getUserId());
        return communityService.pageOrderListFlower(comOrderListDTO);
    }
    @ApiOperation(value = "查询订单详情", response = ComShopOrderPageVO.class)
    @PostMapping("orderDetail")
    @ApiImplicitParam(name = "orderId", value = "订单id", required = true)
    public R orderDetail(@RequestParam("orderId") Long orderId) {
        return communityService.orderDetail(orderId);
    }
    @ApiOperation(value = "取消订单")
    @PostMapping("orderCancel")
    public R orderCancel(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        return communityService.orderCancelFlower(comShopOrderQueryDTO);
    }
    @ApiOperation(value = "删除订单")
    @PostMapping("orderDelete")
    @ApiImplicitParam(name = "orderId", value = "订单id", required = true)
    public R orderDelete(@RequestParam("orderId") Long orderId) {
        return communityService.orderDelete(orderId);
    }
    @ApiOperation(value = "订单确认收货")
    @PostMapping("orderConfirm")
    public R orderConfirm(@RequestBody ComShopOrderQueryDTO comShopOrderQueryDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        return communityService.orderConfirmFlower(comShopOrderQueryDTO);
    }
/*    @ApiOperation(value = "统计当前用户订单", response = OrderStatisticsVO.class)
    @PostMapping("orderStatistics")
    public R orderStatistics() {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        return communityService.orderStatistics(loginUserInfo.getUserId());
    }*/
    @ApiOperation(value = "小程序微信调起支付")
    @PostMapping("wxpay")
    public R wxPay(@RequestBody OrderPayDTO orderPayDTO) {
        LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
        if (loginUserInfo == null) {
            return R.fail("请重新登陆");
        }
        orderPayDTO.setOpenId(loginUserInfo.getOpenid());
        return communityService.wxPay(orderPayDTO);
    }
    /**
     * 获取当前商铺周围的自提点信息以及距离手机距离
     *
     * @param merchantId
     * @return
     */
    @ApiOperation(value = "获取自提点")
    @ApiImplicitParams({@ApiImplicitParam(name = "merchantId", value = "商家Id", required = true),
            @ApiImplicitParam(name = "lat", value = "经度", required = true), @ApiImplicitParam(name = "lng", value = "纬度", required = true)})
    @GetMapping("/point/findPointByMerchantId")
    public R findPointByMerchantId(@RequestParam("merchantId") Long merchantId, @RequestParam("lat") String lat, @RequestParam("lng") String lng) {
        return communityService.findPointByMerchantId(merchantId, lat, lng);
    }
    /**
     * 保存评价
     *
     * @param comShopFlowerEvaluateDTO
     * @return
     */
    @ApiOperation(value = "保存评价")
    @PostMapping("/saveEvaluate")
    public R saveEvaluate(@RequestBody ComShopFlowerEvaluateDTO comShopFlowerEvaluateDTO) {
        String evaluateContent = comShopFlowerEvaluateDTO.getEvaluateContent();
        if (StrUtil.isNotBlank(evaluateContent)) {
            String result = checkService.checkMessageBy(evaluateContent,this.getLoginUserInfo().getOpenid(),this.getAppId());
            if (StrUtil.isNotBlank(result)) {
                return R.fail(501, "填写内容存在 " + result + " 违规信息");
            }
        }
        return communityService.saveEvaluate(comShopFlowerEvaluateDTO);
    }
    /**
     * 分页查询评价
     *
     * @param pageComShopFlowerEvaluateDTO
     * @return
     */
    @ApiOperation(value = "分页查询评价", response = ComShopFlowerEvaluateVO.class)
    @PostMapping("/pageEvaluate")
    public R pageEvaluate(@RequestBody PageComShopFlowerEvaluateDTO pageComShopFlowerEvaluateDTO) {
        return communityService.pageEvaluate(pageComShopFlowerEvaluateDTO);
    }
    /**
     * 评价详情
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "评价详情")
    @GetMapping("/detailEvaluate")
    public R detailEvaluate(@RequestParam("id") Long id) {
        return communityService.detailEvaluate(id);
    }
    /**
     * 删除评价
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "删除评价")
    @DeleteMapping("deleteEvaluate")
    public R deleteEvaluate(@RequestParam("id") Long id) {
        return communityService.deleteEvaluate(id);
    }
    /**
     * 取货码
     *
     * @param orderId
     * @return
     */
    @ApiOperation(value = "取货码")
    @GetMapping("getQRCode")
    @ApiImplicitParam(name = "orderId", value = "订单id", required = true)
    public R getQRCode(@RequestParam("orderId") Long orderId) {
        return communityService.getQRCode(orderId);
    }
    /**
     * 保存配送单
     *
     * @param comShopFlowerOrderDeliveryDTO
     */
    @PostMapping("saveDelivery")
    @ApiOperation(value = "保存配送单")
    public R saveDelivery(@RequestBody ComShopFlowerOrderDeliveryDTO comShopFlowerOrderDeliveryDTO) {
        return communityService.saveDelivery(comShopFlowerOrderDeliveryDTO);
    }
    /**
     * 更新配送单
     *
     * @param comShopFlowerOrderDeliveryDTO
     */
    @PostMapping("updateDelivery")
    @ApiOperation(value = "更新配送单")
    public R updateDelivery(@RequestBody ComShopFlowerOrderDeliveryDTO comShopFlowerOrderDeliveryDTO) {
        return communityService.updateDelivery(comShopFlowerOrderDeliveryDTO);
    }
    /**
     * 已配送、已送达 分页查询
     *
     * @param pageComFlowerOrderDeliveryDTO
     * @return
     */
    @PostMapping("pageDelivery")
    @ApiOperation(value = "已配送、已送达 分页查询", response = ComShopFlowerOrderDeliveryVO.class)
    public R pageDelivery(@RequestBody PageComFlowerOrderDeliveryDTO pageComFlowerOrderDeliveryDTO) {
        return communityService.pageDelivery(pageComFlowerOrderDeliveryDTO);
    }
    /**
     * 未配送 分页查询
     *
     * @param pageComFlowerOrderDeliveryDTO
     * @return
     */
    @ApiOperation(value = "未配送 分页查询", response = ConvenientElevatingPointVO.class)
    @PostMapping("pageNoDelivery")
    public R pageNoDelivery(@RequestBody PageComFlowerOrderDeliveryDTO pageComFlowerOrderDeliveryDTO) {
        return communityService.pageNoDelivery(pageComFlowerOrderDeliveryDTO);
    }
    /**
     * 未配送-开始配送-订单列表
     *
     * @param pageComFlowerOrderListDTO
     * @return
     */
    @ApiOperation(value = "未配送-开始配送-订单列表", response = ComShopFlowerOrderPageVO.class)
    @PostMapping("pageNoDeliveryOrderList")
    public R pageNoDeliveryOrderList(@RequestBody PageComFlowerOrderListDTO pageComFlowerOrderListDTO) {
        return communityService.pageNoDeliveryOrderList(pageComFlowerOrderListDTO);
    }
    /**
     * 根据商家id查询商家的订单
     *
     * @param pageComFlowerOrderListDTO
     * @return
     */
    @ApiOperation(value = "根据商家id分页查询商家的订单", response = ComShopFlowerOrderStoreListVO.class)
    @PostMapping("pageOrderByStoreId")
    public R pageOrderByStoreId(@RequestBody PageComFlowerOrderListDTO pageComFlowerOrderListDTO) {
        return communityService.pageOrderByStoreId(pageComFlowerOrderListDTO);
    }
}