package com.doumee.cloud.web; import com.doumee.api.BaseController; import com.doumee.config.annotation.LoginNoRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.dao.business.model.VisitReason; import com.doumee.dao.business.model.Visits; import com.doumee.dao.web.reqeust.CheckVisitedDTO; import com.doumee.dao.web.response.MemberVO; import com.doumee.dao.web.response.VisitDetailVO; import com.doumee.dao.web.response.VisitRecordVO; import com.doumee.dao.web.response.WxAuthorizeVO; import com.doumee.service.business.MemberService; import com.doumee.service.business.VisitReasonService; import com.doumee.service.business.VisitsService; 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.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ServerWebExchange; import javax.validation.Valid; import java.util.List; import java.util.Objects; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/12/7 10:40 */ @Api(tags = "【公众号】访客业务") @Trace(exclude = true) @RestController @LoginNoRequired @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/visitor") @Slf4j public class VisitorWebController extends BaseController { @Autowired private MemberService memberService; @Autowired private VisitsService visitsService; @Autowired private VisitReasonService visitReasonService; @ApiOperation(value = "访客微信授权", notes = "访客微信授权获取openId") @GetMapping("/wxAuthorize") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "授权码", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "source", value = "来源:0=司机;1=访客;2=内部员工", required = true) }) public ApiResponse wxAuthorize(@RequestParam String code,@RequestParam Integer source) { WxAuthorizeVO wxAuthorizeVO = memberService.wxAuthorize(code,source); return ApiResponse.success("查询成功",wxAuthorizeVO); } @ApiOperation(value = "查询被访问人信息", notes = "查询被访问人信息") @PostMapping("/getVisitedMember") public ApiResponse> getVisitedMember(@Valid @RequestBody CheckVisitedDTO checkVisitedDTO) { return ApiResponse.success("查询成功", memberService.getVisitedMember(checkVisitedDTO)); } @ApiOperation(value = "访客记录提交", notes = "访客提交") @PostMapping("/createFk") public ApiResponse createFk(@RequestBody Visits visits) { visits.setSourceType(Constants.ZERO); return ApiResponse.success("查询成功", visitsService.createFk(visits,false,Constants.ZERO)); } @ApiOperation(value = "来访事由", notes = "来访事由") @PostMapping("/visitReason") public ApiResponse> visitReason() { return ApiResponse.success("查询成功", visitReasonService.findList(null)); } @ApiOperation(value = "访客记录详情", notes = "访客记录详情") @GetMapping("/detail") public ApiResponse detail(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { LoginUserInfo loginUserInfo = getLoginUser(token); return ApiResponse.success("查询成功", visitsService.getVisitDetail(id, Objects.isNull(loginUserInfo)?null:loginUserInfo.getMemberId())); } @ApiOperation("访客记录 - 分页列表") @PostMapping("/visitPage") public ApiResponse> visitPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(visitsService.findPage(pageWrap)); } }