package com.doumee.api.web; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.biz.zbom.ZbomCRMService; import com.doumee.biz.zbom.model.crm.CrmCustomerListRequest; import com.doumee.biz.zbom.model.crm.response.CRMBaseResponse; import com.doumee.biz.zbom.model.crm.response.CRMCustomerListResponse; import com.doumee.biz.zbom.model.zhongtai.*; import com.doumee.biz.zbom.model.zhongtai.response.*; import com.doumee.config.annotation.LoginRequired; import com.doumee.config.annotation.UserLoginRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.dao.business.model.Shop; import com.doumee.dao.business.model.SmsEmail; import com.doumee.dao.business.model.Users; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.web.reqeust.*; import com.doumee.dao.web.response.AccountResponse; import com.doumee.service.business.*; import com.doumee.service.system.SystemDictDataService; 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.shiro.authz.annotation.RequiresPermissions; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import java.util.Objects; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/7/10 18:06 */ @Api(tags = "【B端小程序】用户业务") @Trace(exclude = true) @RestController @RequestMapping("/web/personnel") @Slf4j public class PersonnelApi extends ApiController{ @Autowired public UsersService usersService; @Autowired public SmsEmailService smsEmailService; @Autowired public ShopService shopService; @Autowired public GetCrmDataService getCrmDataService; @Autowired private GetZhongTaiDataService getZhongTaiDataService; @ApiOperation(value = "小程序登陆", notes = "员工端小程序") @GetMapping("/loginByWx") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "微信code", required = true), }) public ApiResponse loginByWx(@RequestParam String code) { return ApiResponse.success(usersService.wxLogin(code)); } @ApiOperation(value = "发送短信验证码", notes = "员工端小程序") @GetMapping("/sendSms") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号", required = true), }) public ApiResponse sendSms(@RequestParam String phone) { SmsEmail smsEmail = new SmsEmail(); smsEmail.setPhone(phone); smsEmailService.sendSms(smsEmail); return ApiResponse.success("发送成功"); } @ApiOperation(value = "手机号验证码登陆", notes = "员工端小程序") @GetMapping("/loginByPhone") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "短信验证码", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "openid", value = "openid", required = false), }) public ApiResponse loginByPhone(@RequestParam String phone,@RequestParam String code,String openid) { return ApiResponse.success(usersService.phoneLogin(phone,code,openid)); } @UserLoginRequired @ApiOperation(value = "绑定openid", notes = "员工端小程序") @GetMapping("/bindingOpenid") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "openid", value = "openid", required = true), }) public ApiResponse bindingOpenid(@RequestParam String openid) { usersService.bindingOpenid(openid,getUserId()); return ApiResponse.success("操作成功"); } @ApiOperation(value = "手机号快捷登录", notes = "员工端小程序") @PostMapping("/getWxMiniPhoneLogin") public ApiResponse getWxMiniPhone(@Valid @RequestBody WxPhoneRequest wxPhoneRequest) { return ApiResponse.success("获取成功",usersService.getWxMiniPhoneLogin(wxPhoneRequest)); } @UserLoginRequired @ApiOperation(value = "获取个人信息详情", notes = "员工端小程序") @GetMapping("/getUserDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse getUserDetail() { return ApiResponse.success("操作成功",usersService.usersDetailById(getUserId())); } @UserLoginRequired @ApiOperation(value = "更新个人信息", notes = "员工端小程序") @PostMapping("/editUsers") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse editUsers(@RequestBody EditUsersRequest editUsersRequest) { editUsersRequest.setUserId(getUserId()); usersService.editUserInfo(editUsersRequest); return ApiResponse.success("更新成功"); } @UserLoginRequired @ApiOperation(value = "门店分页", notes = "员工端小程序") @PostMapping("/shopPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse> shopPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(shopService.findPage(pageWrap)); } @UserLoginRequired @ApiOperation(value = "获取员工管理门店列表", notes = "员工端小程序") @GetMapping("/userShopList") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse> userShopList () { return ApiResponse.success(shopService.getUserShopList(getMemberId())); } @UserLoginRequired @ApiOperation(value = "门店详情", notes = "员工端小程序") @GetMapping("/shopDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "shopId", value = "门店主键", required = true) }) public ApiResponse shopDetail (@RequestParam Long shopId) { return ApiResponse.success(shopService.shopDetail(shopId,null)); } @UserLoginRequired @ApiOperation(value = "修改门店信息", notes = "员工端小程序") @PostMapping("/updShop") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse updShop(@RequestBody EditShopDTO editShopDTO) { shopService.updShop(editShopDTO); return ApiResponse.success("操作成功"); } @UserLoginRequired @ApiOperation(value = "获取个人名片", notes = "员工端小程序") @PostMapping("/getUserCard") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse getUserCard() { return ApiResponse.success(usersService.getUserCard(this.getLoginUserInfo())); } @Autowired private SystemDictDataBiz systemDictDataBiz; @UserLoginRequired @LoginRequired @ApiOperation(value = "更新token", notes = "员工端小程序") @GetMapping("/updateToken") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse updateToken () { systemDictDataBiz.updWxMiniToken(); return ApiResponse.success("操作成功"); } @UserLoginRequired @ApiOperation(value = "获取内容分享海报", notes = "获取内容分享海报,加小程序码") @PostMapping("/getContentShareImg") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse getContentShareImg(@RequestBody ContentShareImgDto param) { return ApiResponse.success(usersService.getContentShareImg(this.getLoginUserInfo(),param)); } @UserLoginRequired @ApiOperation(value = "获取客户/潜客列表", notes = "员工端小程序") @PostMapping("/getCustomerList") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse>> getCustomerList(@RequestBody CrmCustomerListRequest crmCustomerListRequest) { crmCustomerListRequest.setUserId(getUserId()); return ApiResponse.success(getCrmDataService.getCrmCustomerList(crmCustomerListRequest)); } @UserLoginRequired @LoginRequired @ApiOperation(value = "批量添加喜欢给客户", notes = "员工端小程序") @PostMapping("/batchAddLike") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse batchAddLike(@RequestBody ZTBatchAddListRequest ztBatchAddListRequest) { ztBatchAddListRequest.setUserType(getUserType()); ztBatchAddListRequest.setUserId(getUserId().toString()); getZhongTaiDataService.batchAddLike(ztBatchAddListRequest); return ApiResponse.success("操作成功"); } @UserLoginRequired @ApiOperation(value = "用户注销", notes = "员工端小程序") @PostMapping("/logOff") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse logOff() { ZTBaseRequst ztBaseRequst = usersService.logOff(getUserId(),getToken()); if(Objects.nonNull(ztBaseRequst)){ getZhongTaiDataService.userLogout(ztBaseRequst); } return ApiResponse.success("操作成功"); } }