package com.nova.sankuai.controller.v1; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nova.sankuai.domain.dto.BlankCustomerVisitDto; import com.nova.sankuai.domain.dto.LoanMarketConfigDto; import com.nova.sankuai.domain.dto.LoanSupermarketPageDto; import com.nova.sankuai.domain.dto.LoanSupermarketVisitDto; import com.nova.sankuai.domain.entity.LoanSupermarket; import com.nova.sankuai.domain.entity.SystemParam; import com.nova.sankuai.domain.vo.LoanSupermarketVo; import com.nova.sankuai.domain.vo.SystemSwitchParamVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.constants.ResultCode; import com.nova.sankuai.infra.utils.PageRequest; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.infra.utils.UserUtil; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * @author weikangdi */ @Api(tags = "贷款超市") @RestController @RequestMapping(value = "/api/v1/loanSupermarket") @AllArgsConstructor @Slf4j public class LoanSupermarketController { private final ILoanSupermarketService supermarketService; private final IChannelInfoService channelInfoService; private final ICustomerService customerService; private final ISystemParamService systemParamService; private final IChannelLogService channelLogService; @PostMapping("/add") @ApiOperation(value = "新增贷款超市") @PreAuthorize("hasAuthority('loanSupermarket.add')") public ResultJson add(@RequestBody LoanSupermarket supermarket) { supermarketService.addLoanSupermarket(supermarket); return ResultJson.success(); } @PutMapping("/edit") @ApiOperation(value = "编辑贷款超市") @PreAuthorize("hasAuthority('loanSupermarket.edit')") public ResultJson edit(@RequestBody LoanSupermarket supermarket) { supermarketService.edit(supermarket); return ResultJson.success(); } @DeleteMapping("/delete/{id}") @ApiOperation(value = "删除贷款超市") @PreAuthorize("hasAuthority('loanSupermarket.delete')") public ResultJson delete(@PathVariable("id") Long id) { supermarketService.delete(id); return ResultJson.success(); } @GetMapping("/page") @ApiOperation(value = "分页获取贷款超市列表") @PreAuthorize("hasAuthority('loanSupermarket.page')") public ResultJson> page(PageRequest pageRequest, LoanSupermarketPageDto pageDto) { IPage page = supermarketService.pageModel(pageRequest, pageDto); return ResultJson.ok(page); } @GetMapping(value = "/list") @ApiOperation(value = "获取贷款超市列表") public ResultJson> list() { List result = supermarketService.getSupermarketList(); return ResultJson.ok(result); } @GetMapping(value = "/addVisitRecord") @ApiOperation(value = "新增贷款超市访问记录") @PreAuthorize("hasAuthority('loanSupermarket.addVisitRecord')") public ResultJson addVisitRecord(LoanSupermarketVisitDto visitDto) { supermarketService.addVisitRecord(visitDto); return ResultJson.success(); } @GetMapping(value = "/getSupermarketListByKey") @ApiOperation(value = "根据渠道Key获取可用贷超列表") public ResultJson> getSupermarketListByKey(String appId, HttpServletRequest request) { UserDetail user = UserUtil.getUser(request.getHeader("Authorization")); String phone = null; if (user != null) { phone = user.getPhone(); } List result = channelInfoService.getSupermarketListByKey(appId, phone); return ResultJson.ok(result); } @GetMapping(value = "/addBlankVisitRecord") @ApiOperation(value = "新增空白客户贷超访问记录") @PreAuthorize("hasAuthority('loanSupermarket.addBlankVisitRecord')") public ResultJson addBlankVisitRecord(BlankCustomerVisitDto visitDto) { log.info("新增空白贷超客户访问记录开始,原始数据:" + visitDto.toString()); if (StringUtils.isEmpty(visitDto.getPhone())) { throw new CommonException("客户手机号不能为空"); } customerService.addBlankVisitRecord(visitDto); return ResultJson.success(); } @GetMapping(value = "/updateLoanMarketArray") @ApiOperation(value = "更新贷超排列配置") @PreAuthorize("hasAuthority('loanSupermarket.updateLoanMarketArray')") public ResultJson updateLoanMarketArray(Integer type) { systemParamService.updateLoanMarketArray(type); return ResultJson.success(); } @GetMapping(value = "/addJYDLoanMarketRecord") @ApiOperation(value = "新增APP贷超访问记录") public ResultJson addJYDLoanMarketRecord(Long loanMarkId, @AuthenticationPrincipal UserDetail userDetail) { if (loanMarkId == null) { throw new CommonException("贷款超市不能为空"); } log.info("新增戒易贷贷超访问记录开始,原始贷超Id:" + loanMarkId + "用户信息" + userDetail.toString()); channelLogService.addJYDLoanMarketRecord(loanMarkId, userDetail); return ResultJson.success(); } @PutMapping("/editChannelConfig") @ApiOperation(value = "编辑贷超渠道配置") @PreAuthorize("hasAuthority('loanSupermarket.edit')") public ResultJson editChannelConfig(@RequestBody LoanMarketConfigDto configDto) { supermarketService.editChannelConfig(configDto); return ResultJson.success(); } @GetMapping(value = "/checkLoanMarketHotLinkRely") @ApiOperation(value = "检测贷款超市直链引用") @PreAuthorize("hasAuthority('loanSupermarket.checkLoanMarketHotLinkRely')") public ResultJson checkLoanMarketHotLinkRely(Long loanMarketId) { boolean result = supermarketService.checkLoanMarketHotLinkRely(loanMarketId); return ResultJson.ok(result); } /** * 于2022.10.11新增:系统开关编辑 * @param param * @return */ @PutMapping("/systemSwitchConfig") @ApiOperation(value = "编辑系统开关") // @PreAuthorize("hasAuthority('systemSwitchConfig.switch')") public ResultJson systemSwitchConfig(@RequestBody SystemSwitchParamVo param) { SystemParam systemParam = new SystemParam(); BeanUtils.copyProperties(param, systemParam); return systemParamService.updateById(systemParam) ? ResultJson.success() : ResultJson.failure(ResultCode.SERVER_ERROR); } /** * 于2022.10.11新增:获取系统开关 * @return */ @GetMapping("/getSystemSwitch") @ApiOperation(value = "获取系统开关") // @PreAuthorize("hasAuthority('systemSwitchConfig.switch')") public ResultJson getSystemSwitch() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.ge("id", 0); SystemParam param = systemParamService.getOne(wrapper); SystemSwitchParamVo paramVo = new SystemSwitchParamVo(); BeanUtils.copyProperties(param, paramVo); return ResultJson.ok(paramVo); } }