package com.nova.sankuai.controller.v2; import com.nova.sankuai.domain.dto.BlankCustomerVisitDto; import com.nova.sankuai.domain.dto.LoanSupermarketVisitDto; import com.nova.sankuai.domain.entity.LoanSupermarket; import com.nova.sankuai.domain.vo.LoanSupermarketVo; import com.nova.sankuai.infra.config.CommonException; 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.IChannelInfoService; import com.nova.sankuai.service.IChannelLogService; import com.nova.sankuai.service.ICustomerService; import com.nova.sankuai.service.ILoanSupermarketService; 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.security.access.prepost.PreAuthorize; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.util.List; /** * @author weikangdi */ @Api(tags = "贷款超市V2") @RestController @RequestMapping(value = "/api/v2/loanSupermarket") @AllArgsConstructor @Slf4j public class LoanSupermarketV2Controller { private final ILoanSupermarketService supermarketService; private final ICustomerService customerService; private final IChannelLogService channelLogService; private final IChannelInfoService channelInfoService; @GetMapping(value = "/getSupermarketListByKey") @ApiOperation(value = "根据渠道Key获取可用贷超列表") public ResultJson> getSupermarketListByKey(String appId, HttpServletRequest request) { String token = request.getHeader("Authorization"); UserDetail user = UserUtil.getUser(token); String phone = null; if (user != null) { phone = user.getPhone(); } List result = channelInfoService.getSupermarketListByKey(appId, phone); 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 = "/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 = "/addJYDLoanMarketRecord") @ApiOperation(value = "新增戒易贷贷超访问记录") 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(); } @GetMapping(value = "/getH5LoanMarketListByKey") @ApiOperation(value = "根据渠道Key获取H5贷超列表") public ResultJson> getH5LoanMarketListByKey(String appId) { List result = channelInfoService.getH5LoanMarketListByKey(appId); return ResultJson.ok(result); } @GetMapping(value = "/getSecondSupermarket") @ApiOperation(value = "获取排序为第二个的贷超") public ResultJson> getSecondSupermarket() { List secondSupermarket = supermarketService.getSecondSupermarket(); return ResultJson.ok(secondSupermarket); } @GetMapping(value = "/getVipMode") @ApiOperation(value = "获取开启了会员模式的贷超产品") public ResultJson> getVipMode() { List secondSupermarket = supermarketService.getVipMode(); return ResultJson.ok(secondSupermarket); } @GetMapping(value = "/getMyMoney") @ApiOperation(value = "获取开启我的金额开关的贷超产品") public ResultJson> getMyMoney(@AuthenticationPrincipal UserDetail userDetail) { List secondSupermarket = supermarketService.getMyMoney(userDetail); return ResultJson.ok(secondSupermarket); } @GetMapping(value = "/getWaitApproval") @ApiOperation(value = "获取开启我的金额开关的贷超产品") public ResultJson getWaitApproval(@AuthenticationPrincipal UserDetail userDetail) { LoanSupermarketVo waitApproval = supermarketService.getWaitApproval(userDetail); return ResultJson.ok(waitApproval); } }