puzhibing
2023-12-13 1772afb069b75871572c9c438bbd2bc403f864df
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -1,24 +1,34 @@
package com.ruoyi.shop.controller.management;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.system.domain.dto.*;
import com.ruoyi.shop.domain.vo.MgtShopInfoVo;
import com.ruoyi.shop.domain.vo.MgtShopPageVo;
import com.ruoyi.shop.domain.vo.MgtShopTagVo;
import com.ruoyi.shop.service.shop.ShopRelTagService;
import com.ruoyi.shop.service.shop.ShopService;
import com.ruoyi.shop.domain.pojo.shop.BankBranchCode;
import com.ruoyi.shop.domain.vo.*;
import com.ruoyi.shop.service.shop.*;
import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
/**
 * @author jqs34
@@ -32,58 +42,364 @@
@RequestMapping("/mgt/shop")
public class MgtShopController {
    @Autowired
    Logger logger = LoggerFactory.getLogger(MgtShopController.class);
    @Resource
    private ShopService shopService;
    @Autowired
    @Resource
    private ShopRelTagService shopRelTagService;
    @RequestMapping(value = "/pageShop", method = RequestMethod.POST)
    @Resource
    private ShopProportionService shopProportionService;
    @Resource
    private ShopSuggestService shopSuggestService;
    @Resource
    private ShopCertificateService shopCertificateService;
    @Resource
    private BankBranchCodeService bankBranchCodeService;
    @RequestMapping(value = "/listMgtShopSimpleVo", method = RequestMethod.POST)
    @ApiOperation(value = "获取简易商户列表")
    public R<List<MgtShopListSimpleVo>> listMgtShopSimpleVo(@RequestBody MgtShopListDto mgtShopListDto) {
        List<MgtShopListSimpleVo> mgtShopListSimpleVoList = shopService.listMgtShopSimpleVo(mgtShopListDto);
        return R.ok(mgtShopListSimpleVoList);
    }
    @RequestMapping(value = "/pageMgtShop", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取商户列表")
    public R<Page<MgtShopPageVo>> pageShop(@RequestBody MgtShopPageDto mgtShopPageDto) {
    public R<Page<MgtShopPageVo>> pageMgtShop(@RequestBody MgtShopPageDto mgtShopPageDto) {
        Page<MgtShopPageVo> page = new Page<>();
        page.setSize(mgtShopPageDto.getPageSize());
        page.setCurrent(mgtShopPageDto.getPageNum());
        List<MgtShopPageVo> mgtShopPageVoList = shopService.pageShop(page,mgtShopPageDto);
        List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto);
        return R.ok(page.setRecords(mgtShopPageVoList));
    }
    @RequestMapping(value = "/createShop", method = RequestMethod.POST)
    @ApiOperation(value = "创建商户")
    public R createShop(@RequestBody MgtEditShopDto mgtEditShopDto) {
    @RequestMapping(value = "/exportPageMgtShop", method = RequestMethod.POST)
    @ApiOperation(value = "导出商户列表")
    public void exportPageMgtShop(MgtShopPageDto mgtShopPageDto, HttpServletResponse response) {
        Page<MgtShopPageVo> page = new Page<>();
        if(mgtShopPageDto.getPageSize() > 5000){
            page.setSize(5000);
            page.setCurrent(1);
        }else{
            page.setSize(mgtShopPageDto.getPageSize());
            page.setCurrent(mgtShopPageDto.getPageNum());
        }
        List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto);
        ExcelUtil<MgtShopPageVo> util = new ExcelUtil<MgtShopPageVo>(MgtShopPageVo.class);
        util.exportExcel(response, mgtShopPageVoList, "商户列表");
    }
    @RequestMapping(value = "/createMgtShop", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "编辑商户")
    @ApiOperation(value = "平台编辑商户")
    public R createMgtShop(@Validated @RequestBody MgtEditShopDto mgtEditShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtEditShopDto.setUserId(userId);
        shopService.createShop(mgtEditShopDto);
        return R.ok();
    }
    @RequestMapping(value = "/getShopInfo", method = RequestMethod.POST)
    @RequestMapping(value = "/getMgtShopInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户详情")
    public R<MgtShopInfoVo> getShopInfo(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
    public R<MgtShopInfoVo> getMgtShopInfo(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        MgtShopInfoVo mgtShopInfoVo = shopService.getMgtShopInfo(Long.valueOf(mgtBaseGetDto.getId()));
        return R.ok(mgtShopInfoVo);
    }
    @RequestMapping(value = "/getShopTag", method = RequestMethod.POST)
    @RequestMapping(value = "/getMgtShopTag", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户标签")
    public R<List<MgtShopTagVo>> getShopTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        List<MgtShopTagVo> mgtShopInfoVoList = shopRelTagService.listShopTagVo(Long.valueOf(mgtBaseGetDto.getId()));
    public R<List<MgtShopTagVo>> getMgtShopTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        List<MgtShopTagVo> mgtShopInfoVoList = shopRelTagService.listShopTagVo(mgtBaseGetDto);
        return R.ok(mgtShopInfoVoList);
    }
    @RequestMapping(value = "/editShopTag", method = RequestMethod.POST)
    @RequestMapping(value = "/editMgtShopTag", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "修改商户标签")
    @ApiOperation(value = "修改商户标签")
    public R editShopTag(@RequestBody MgtEditShopTagDto mgtEditShopTagDto) {
    public R editMgtShopTag(@RequestBody MgtEditShopTagDto mgtEditShopTagDto) {
        shopService.editShopTag(mgtEditShopTagDto);
        return R.ok();
    }
    @RequestMapping(value = "/changeCooperationTime", method = RequestMethod.POST)
    @RequestMapping(value = "/transferMgtShop", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "转移客户")
    @ApiOperation(value = "转移客户")
    public R transferMgtShop(@RequestBody MgtTransferShopDto mgtTransferShopDto) {
        shopService.transferMgtShop(mgtTransferShopDto);
        return R.ok();
    }
    @RequestMapping(value = "/terminateMgtCooperation", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "终止合作")
    @ApiOperation(value = "终止合作")
    public R terminateMgtCooperation(@RequestBody MgtTerminateCooperationDto mgtTerminateCooperationDto) {
        Long userId = SecurityUtils.getUserId();
        mgtTerminateCooperationDto.setUserId(userId);
        shopService.terminateMgtCooperation(mgtTerminateCooperationDto);
        return R.ok();
    }
    @RequestMapping(value = "/frozenMgtShop", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "终止合作")
    @ApiOperation(value = "冻结商户")
    public R frozenMgtShop(@RequestBody MgtFrozenShopDto mgtFrozenShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtFrozenShopDto.setUserId(userId);
        shopService.frozenMgtShop(mgtFrozenShopDto);
        return R.ok();
    }
    @RequestMapping(value = "/changeMgtCooperationTime", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "修改合作时间")
    @ApiOperation(value = "修改合作时间")
    public R changeCooperationTime(@RequestBody MgtChangeCoopDto mgtChangeCoopDto) {
    public R changeMgtCooperationTime(@RequestBody MgtChangeCoopDto mgtChangeCoopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtChangeCoopDto.setUserId(userId);
        shopService.changeCooperationTime(mgtChangeCoopDto);
        return R.ok();
    }
    @RequestMapping(value = "/pageMgtShopProportion", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取商户分成列表")
    public R<Page<MgtShopProportionPageVo>> pageMgtShopProportion(@RequestBody MgtShopProportionPageDto mgtShopProportionPageDto) {
        Page<MgtShopProportionPageVo> page = new Page<>();
        page.setSize(mgtShopProportionPageDto.getPageSize());
        page.setCurrent(mgtShopProportionPageDto.getPageNum());
        List<MgtShopProportionPageVo> mgtShopProportionPageVoList = shopService.pageMgtShopProportion(page,mgtShopProportionPageDto);
        return R.ok(page.setRecords(mgtShopProportionPageVoList));
    }
    @RequestMapping(value = "/editMgtShopProportion", method = RequestMethod.POST)
    @Log(title = "商户管理", businessType = BusinessType.UPDATE,operContent = "修改商户分成")
    @ApiOperation(value = "修改商户分成")
    public R editMgtShopProportion(@RequestBody MgtShopProportionEditDto mgtShopProportionEditDto) {
        mgtShopProportionEditDto.setUserId(SecurityUtils.getUserId());
        shopProportionService.editMgtShopProportion(mgtShopProportionEditDto);
        return R.ok();
    }
    @RequestMapping(value = "/pageMgtShopSuggest", method = RequestMethod.POST)
    @ApiOperation(value = "平台获取商户建议列表")
    public R<Page<MgtShopSuggestPageVo>> pageMgtShopSuggest(@RequestBody MgtShopSuggestPageDto mgtShopSuggestPageDto) {
        Long userId = SecurityUtils.getUserId();
        mgtShopSuggestPageDto.setUserId(userId);
        Page<MgtShopSuggestPageVo> page = new Page<>();
        page.setSize(mgtShopSuggestPageDto.getPageSize());
        page.setCurrent(mgtShopSuggestPageDto.getPageNum());
        List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto);
        return R.ok(page.setRecords(mgtShopSuggestPageVoList));
    }
    @RequestMapping(value = "/exportPageMgtShopSuggest", method = RequestMethod.POST)
    @ApiOperation(value = "导出商户建议列表")
    public void exportPageMgtShopSuggest(MgtShopSuggestPageDto mgtShopSuggestPageDto, HttpServletResponse response) {
        Long userId = SecurityUtils.getUserId();
        mgtShopSuggestPageDto.setUserId(userId);
        Page<MgtShopSuggestPageVo> page = new Page<>();
        if(mgtShopSuggestPageDto.getPageSize() > 5000){
            page.setSize(5000);
            page.setCurrent(1);
        }else{
            page.setSize(mgtShopSuggestPageDto.getPageSize());
            page.setCurrent(mgtShopSuggestPageDto.getPageNum());
        }
        List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto);
        ExcelUtil<MgtShopSuggestPageVo> util = new ExcelUtil<MgtShopSuggestPageVo>(MgtShopSuggestPageVo.class);
        util.exportExcel(response, mgtShopSuggestPageVoList, "商户建议列表");
    }
    @RequestMapping(value = "/mgtReplayShopSuggest", method = RequestMethod.POST)
    @Log(title = "商户建议管理", businessType = BusinessType.UPDATE,operContent = "回复商户建议")
    @ApiOperation(value = "平台回复建议")
    public R mgtReplayShopSuggest(@RequestBody MgtReplayShopSuggestDto mgtReplayShopSuggestDto) {
        Long userId = SecurityUtils.getUserId();
        mgtReplayShopSuggestDto.setUserId(userId);
        shopSuggestService.mgtReplayShopSuggest(mgtReplayShopSuggestDto);
        return R.ok();
    }
    @RequestMapping(value = "/listMgtShopSuggestTag", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户建议标签")
    public R<List<MgtShopSuggestTagVo>> listMgtShopSuggestTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        List<MgtShopSuggestTagVo> mgtShopSuggestTagVoList = shopSuggestService.listMgtShopSuggestTag(Long.valueOf(mgtBaseGetDto.getId()));
        return R.ok(mgtShopSuggestTagVoList);
    }
    @RequestMapping(value = "/mgtEditShopSuggestTag", method = RequestMethod.POST)
    @Log(title = "商户建议管理", businessType = BusinessType.UPDATE,operContent = "编辑商户建议标签")
    @ApiOperation(value = "平台编辑商户建议标签")
    public R mgtEditShopSuggestTag(@RequestBody MgtTagShopSuggestDto mgtTagShopSuggestDto) {
        Long userId = SecurityUtils.getUserId();
        mgtTagShopSuggestDto.setUserId(userId);
        shopSuggestService.mgtEditShopSuggestTag(mgtTagShopSuggestDto);
        return R.ok();
    }
    @RequestMapping(value = "/pageMgtShopCertificate", method = RequestMethod.POST)
    @ApiOperation(value = "平台获取商户证书审核列表")
    public R<Page<MgtShopCertificatePageVo>> pageMgtShopCertificate(@RequestBody MgtShopCertificatePageDto mgtShopCertificatePageDto) {
        Long userId = SecurityUtils.getUserId();
        mgtShopCertificatePageDto.setUserId(userId);
        Page<MgtShopCertificatePageVo> page = new Page<>();
        page.setSize(mgtShopCertificatePageDto.getPageSize());
        page.setCurrent(mgtShopCertificatePageDto.getPageNum());
        List<MgtShopCertificatePageVo> mgtShopCertificatePageVoList = shopCertificateService.pageMgtShopCertificate(page,mgtShopCertificatePageDto);
        return R.ok(page.setRecords(mgtShopCertificatePageVoList));
    }
    @RequestMapping(value = "/mgtAuditShopCertificate", method = RequestMethod.POST)
    @Log(title = "商户证书管理", businessType = BusinessType.UPDATE,operContent = "审核商户证书")
    @ApiOperation(value = "平台审核商户证书")
    public R mgtAuditShopCertificate(@RequestBody MgtAuditShopCertificateDto mgtAuditShopCertificateDto) {
        Long userId = SecurityUtils.getUserId();
        mgtAuditShopCertificateDto.setUserId(userId);
        shopCertificateService.mgtAuditShopCertificate(mgtAuditShopCertificateDto);
        return R.ok();
    }
    @RequestMapping(value = "/pageMgtShopByCityCode", method = RequestMethod.POST)
    @ApiOperation(value = "通过市code分页获取商户列表")
    public R<Page<MgtSimpleShopVo>> pageMgtShopByCityCode(@RequestBody MgtShopByCodePageDto mgtShopByCodePageDto) {
        Page<MgtSimpleShopVo> page = new Page<>();
        page.setSize(mgtShopByCodePageDto.getPageSize());
        page.setCurrent(mgtShopByCodePageDto.getPageNum());
        List<MgtSimpleShopVo> mgtSimpleShopVoList = shopService.pageMgtShopByCityCode(page,mgtShopByCodePageDto);
        return R.ok(page.setRecords(mgtSimpleShopVoList));
    }
    @RequestMapping(value = "/pageMgtShopAuth", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取商户进件列表")
    public R<Page<MgtShopAuthPageVo>> pageMgtShopAuth(@RequestBody MgtShopAuthPageDto mgtShopAuthPageDto) {
        Page<MgtShopAuthPageVo> page = new Page<>();
        page.setSize(mgtShopAuthPageDto.getPageSize());
        page.setCurrent(mgtShopAuthPageDto.getPageNum());
        List<MgtShopAuthPageVo> mgtShopAuthPageVoList = shopService.pageMgtShopAuth(page,mgtShopAuthPageDto);
        return R.ok(page.setRecords(mgtShopAuthPageVoList));
    }
    @RequestMapping(value = "/mgtShopAuth", method = RequestMethod.POST)
    @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户进件")
    @ApiOperation(value = "平台商户进件")
    public R mgtShopAuth(@Validated @RequestBody MgtShopAuthDto mgtShopAuthDto) {
        Long userId = SecurityUtils.getUserId();
        mgtShopAuthDto.setUserId(userId);
        shopService.mgtShopAuth(mgtShopAuthDto);
        return R.ok();
    }
    @RequestMapping(value = "/getMgtShopAuth", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户进件信息")
    public R<MgtShopAuthGetVo> getMgtShopAuth(@RequestBody MgtShopAuthGetDto mgtShopAuthGetDto) {
        MgtShopAuthGetVo shopAuthGetVo = shopService.getMgtShopAuth(mgtShopAuthGetDto.getAuthId());
        return R.ok(shopAuthGetVo);
    }
    @RequestMapping(value = "/getMgtShopAuthCode", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户进件验证信息")
    public R<MgtShopAuthCodeVo> getMgtShopAuthCode(@RequestBody MgtShopAuthGetDto mgtShopAuthGetDto) {
        MgtShopAuthCodeVo mgtShopAuthCodeVo = shopService.getMgtShopAuthCode(mgtShopAuthGetDto.getAuthId());
        return R.ok(mgtShopAuthCodeVo);
    }
    @RequestMapping(value = "/mgtAddProfitSharingReceiver", method = RequestMethod.POST)
    @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户添加分账方")
    @ApiOperation(value = "平台商户添加分账方")
    public R mgtAddProfitSharingReceiver(@RequestBody MgtShopAuthGetDto mgtShopAuthGetDto){
        Long userId = SecurityUtils.getUserId();
        mgtShopAuthGetDto.setUserId(userId);
        shopService.addProfitSharingReceiver(mgtShopAuthGetDto);
        return R.ok();
    }
    @RequestMapping(value = "/pageMgtShopHFTXAuth", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取商户进件列表(汇付天下)")
    public R<Page<MgtShopHFTXAuthPageVo>> pageMgtShopHFTXAuth(@RequestBody MgtShopHFTXAuthPageDto mgtShopAuthPageDto) {
        Page<MgtShopHFTXAuthPageVo> page = new Page<>();
        page.setSize(mgtShopAuthPageDto.getPageSize());
        page.setCurrent(mgtShopAuthPageDto.getPageNum());
        List<MgtShopHFTXAuthPageVo> mgtShopHFTXAuthPageVos = shopService.pageMgtShopHFTXAuth(page, mgtShopAuthPageDto);
        return R.ok(page.setRecords(mgtShopHFTXAuthPageVos));
    }
    @RequestMapping(value = "/mgtShopHFTXAuth", method = RequestMethod.POST)
    @Log(title = "商户进件管理", businessType = BusinessType.UPDATE,operContent = "商户进件")
    @ApiOperation(value = "平台商户进件(汇付天下)")
    public R mgtShopHFTXAuth(@RequestBody MgtShopHFTXAuthDto mgtShopHFTXAuthDto) {
        Long userId = SecurityUtils.getUserId();
        mgtShopHFTXAuthDto.setUserId(userId);
        shopService.mgtShopHFTXAuth(mgtShopHFTXAuthDto);
        return R.ok();
    }
    @RequestMapping(value = "/merchantBasicdataNotify", method = RequestMethod.POST)
    @Log(title = "商户进件回调通知(汇付天下)", businessType = BusinessType.UPDATE,operContent = "商户进件")
    public void merchantBasicdataNotify(MerchantBasicDataNotifyDto dto, HttpServletResponse response){
        R<String> r = shopService.merchantBasicdataNotify(dto);
        if(r.getCode() == 200){
            response.setStatus(200);
            PrintWriter out = null;
            try {
                out = response.getWriter();
                out.print("RECV_ORD_ID_" + r.getData());
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                out.close();
            }
        }
    }
    @RequestMapping(value = "/getMgtShopHFTXAuthInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户进件信息(汇付天下)")
    public R<MgtShopHFTXAuthGetVo> getMgtShopHFTXAuthInfo(@Validated @RequestBody MgtShopHFTXAuthGetDto mgtShopHFTXAuthGetDto){
        MgtShopHFTXAuthGetVo mgtShopHFTXAuthInfo = shopService.getMgtShopHFTXAuthInfo(mgtShopHFTXAuthGetDto.getShopId());
        return R.ok(mgtShopHFTXAuthInfo);
    }
    @RequestMapping(value = "/setMgtShopShareRatio", method = RequestMethod.POST)
    @ApiOperation(value = "设置分账比例(汇付天下)")
    public R setMgtShopShareRatio(@Validated @RequestBody MgtShopShareRatioSetDto mgtShopShareRatioSetDto){
        return shopService.setMgtShopShareRatio(mgtShopShareRatioSetDto);
    }
    @RequestMapping(value = "/getMerchantBasicDataSettlement", method = RequestMethod.POST)
    @ApiOperation(value = "获取提现记录(汇付天下)")
    public R<List<MerchantBasicdataSettlementVo>> getMerchantBasicDataSettlement(@Validated @RequestBody MerchantBasicdataSettlementDto mgtShopShareRatioSetDto){
        return shopService.getMerchantBasicDataSettlement(mgtShopShareRatioSetDto);
    }
    @RequestMapping(value = "/getBankList", method = RequestMethod.POST)
    @ApiOperation(value = "获取银行列表(汇付天下)")
    public R<List<Map<String, String>>> getBankList(@Validated @RequestBody BankListGetDto dto){
        List<Map<String, String>> bankList = bankBranchCodeService.getBankList(dto.getName());
        return R.ok(bankList);
    }
    @RequestMapping(value = "/getBankBranchCode", method = RequestMethod.POST)
    @ApiOperation(value = "获取银行分行列表(汇付天下)")
    public R<List<Map<String, String>>> getBankBranchCode(@Validated @RequestBody BankBranchCodeGetDto dto){
        List<Map<String, String>> bankBranchCode = bankBranchCodeService.getBankBranchCode(dto.getBankNumber());
        return R.ok(bankBranchCode);
    }
}