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.core.wx.wxPlat.WxPlatNotice; 
 | 
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.Arrays; 
 | 
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<WxAuthorizeVO> wxAuthorize(@RequestParam String code,@RequestParam Integer source) { 
 | 
        WxAuthorizeVO wxAuthorizeVO =  memberService.wxAuthorize(code,source); 
 | 
        return ApiResponse.success("查询成功",wxAuthorizeVO); 
 | 
    } 
 | 
  
 | 
    @ApiOperation(value = "查询被访问人信息", notes = "查询被访问人信息") 
 | 
    @PostMapping("/getVisitedMember") 
 | 
    public ApiResponse<List<MemberVO>> 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<List<VisitReason>> visitReason() { 
 | 
        return ApiResponse.success("查询成功", visitReasonService.findList(null)); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    @ApiOperation(value = "访客记录详情", notes = "访客记录详情") 
 | 
    @GetMapping("/detail") 
 | 
    public ApiResponse<VisitDetailVO> 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<PageData<Visits>> visitPage (@RequestBody PageWrap<Visits> pageWrap) { 
 | 
        if(Objects.isNull(pageWrap.getModel()) || StringUtils.isBlank(pageWrap.getModel().getOpenid())){ 
 | 
            pageWrap.getModel().setMemberId(0); 
 | 
        }else{ 
 | 
            if(Objects.nonNull(pageWrap.getModel()) && Objects.nonNull(pageWrap.getModel().getStatus()) ){ 
 | 
                pageWrap.getModel().setBusinessStatus(pageWrap.getModel().getStatus()); 
 | 
                pageWrap.getModel().setStatus(null); 
 | 
            } 
 | 
        } 
 | 
        return ApiResponse.success(visitsService.findPage(pageWrap)); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |