jiangping
2024-07-17 0743a3120f3c74839254e77cd77ae9dba0a54868
server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -1,11 +1,16 @@
package com.doumee.api.web;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.zbom.ZbomCRMService;
import com.doumee.biz.zbom.model.zhongtai.ZTCatalogListRequest;
import com.doumee.biz.zbom.model.zhongtai.ZTContentListRequest;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.config.annotation.LoginRequired;
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.CustomerLog;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
@@ -19,12 +24,17 @@
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.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.InputStream;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
@@ -32,12 +42,14 @@
 * @Author : Rk
 * @create 2024/7/10 14:03
 */
@Api(tags = "客户端小程序用户业务")
@Api(tags = "【C端小程序】用户业务")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/customer")
@Slf4j
public class CustomerApi extends ApiController{
    @Autowired
@@ -50,13 +62,23 @@
    private CustomerService customerService;
    @Autowired
    private ZbomCRMService zbomCRMService;
    private GetZhongTaiDataService getZhongTaiDataService;
    @Autowired
    private ShopService shopService;
    @Autowired
    private UsersService usersService;
    @Autowired
    private ZbomCRMService zbomCRMService;
    @Autowired
    private CustomerUserService customerUserService;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private CustomerLogService customerLogService;
    @ApiOperation(value = "客户端小程序登陆", notes = "客户端小程序")
    @GetMapping("/wxLoginCustomer")
@@ -83,10 +105,41 @@
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse updMemberDetail(@RequestBody EditMemberRequest editMemberRequest) {
        editMemberRequest.setMemberId(getMemberId());
        memberService.updMemberDetail(editMemberRequest);
        return  ApiResponse.success("更新成功");
    public ApiResponse<Member> editMember(@RequestBody EditMemberRequest editMemberRequest) {
        editMemberRequest.setId(getMemberId());
        //同步导购绑定信息
        if(StringUtils.isNotBlank(editMemberRequest.getPhone())){
            customerUserService.syncByPhone(editMemberRequest.getPhone());
        }
        return  ApiResponse.success("更新成功",memberService.updMemberDetail(editMemberRequest));
    }
    @LoginRequired
    @ApiOperation(value = "绑定手机号信息", notes = "客户端小程序")
    @PostMapping("/binDingPhone")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<Member> binDingPhone(@RequestBody EditMemberRequest editMemberRequest) {
        editMemberRequest.setId(getMemberId());
        //同步导购绑定信息
        if(StringUtils.isNotBlank(editMemberRequest.getPhone())){
            customerUserService.syncByPhone(editMemberRequest.getPhone());
        }
        return  ApiResponse.success("更新成功",memberService.updMemberPhone(editMemberRequest));
    }
    @LoginRequired
    @ApiOperation(value = "同步导购绑定信息", notes = "客户端小程序")
    @GetMapping("/syncCustomerUser")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号信息", required = true),
    })
    public ApiResponse syncCustomerUser(@RequestParam String phone) {
        customerUserService.syncByPhone(phone);
        return  ApiResponse.success("同步成功");
    }
    @LoginRequired
@@ -143,7 +196,7 @@
    public ApiResponse saveTestTrimStyle(@RequestBody TestTrimStyleDTO testTrimStyleDTO) {
        testTrimStyleDTO.setMemberId(getMemberId());
        CustomerLog customerLog = customerService.saveTestTrimStyle(testTrimStyleDTO);
        zbomCRMService.dealCustomerLogData(customerLog);
//        zbomCRMService.dealCustomerLogData(customerLog);
        return  ApiResponse.success("操作成功");
    }
@@ -178,17 +231,173 @@
    }
    @LoginRequired
    @ApiOperation(value = "导购详情", notes = "客户端小程序")
    @GetMapping("/usersDetail")
    @ApiOperation("我的导购列表")
    @PostMapping("/myUserPage")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Long", name = "userId", value = "导购主键", required = true)
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<Users> usersDetail (@RequestParam Long userId) {
        return ApiResponse.success(usersService.usersDetail(userId));
    public ApiResponse<PageData<Users>> myUserPage (@RequestBody PageWrap<Users> pageWrap) {
        return ApiResponse.success(usersService.findPage(pageWrap));
    }
    @LoginRequired
    @ApiOperation(value = "导购详情", notes = "客户端小程序")
    @GetMapping("/usersDetailByIamId")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "iamId", value = "导购IAM编码", required = true)
    })
    public ApiResponse<Users> usersDetailByIamId (@RequestParam String iamId) {
        return ApiResponse.success(usersService.usersDetailByIamId(iamId));
    }
    @LoginRequired
    @ApiOperation(value = "测试小程序Token", notes = "客户端小程序")
    @GetMapping("/testToken")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse testToken () {
        systemDictDataBiz.updWxMiniToken();
        return ApiResponse.success("更新成功");
    }
    @LoginRequired
    @ApiOperation(value = "获取分享小程序二维码(图片流,img标签src指定)", notes = "客户端小程序")
    @GetMapping("/generateImg")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public void generateImg(HttpServletResponse response) {
        try{
            response.setHeader("Cache-Control", "no-store, no-cache");
            response.setContentType("image/jpeg");
            InputStream inputStream = Constants.generateWxMiniImgStream(
                    systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_TOKEN_CUSTOMER).getCode(),"123",""
            );
            ImageIO.write(ImageIO.read(inputStream),"png",response.getOutputStream());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @LoginRequired
    @ApiOperation(value = "我的预约分页查询",notes = "客户端小程序")
    @PostMapping("/customerLogPage")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<PageData<CustomerLog>> customerLogPage(@RequestBody PageWrap<CustomerLog> pageWrap) {
        pageWrap.getModel().setCostomerId(getMemberId().toString());
        return ApiResponse.success(customerLogService.findPage(pageWrap));
    }
    @LoginRequired
    @ApiOperation(value = "分类数据 - 中台", notes = "客户端小程序")
    @PostMapping("/getCatalogList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<List<ZTCatalogInfoResponse>> getCatalogList (@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
        List<ZTCatalogInfoResponse> ztCatalogInfoResponseList = getZhongTaiDataService.getCatalogList(ztCatalogListRequest);
        return ApiResponse.success("查询成功",ztCatalogInfoResponseList);
    }
    @LoginRequired
    @ApiOperation(value = "标签数据 - 中台", notes = "客户端小程序")
    @PostMapping("/getCataLogTagList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<List<ZTTagInfoResponse>> getCataLogTagList(@RequestBody ZTCatalogListRequest ztCatalogListRequest ) {
        List<ZTTagInfoResponse> ztTagInfoResponseList = getZhongTaiDataService.getCataLogTagList(ztCatalogListRequest);
        return ApiResponse.success("查询成功",ztTagInfoResponseList);
    }
    @LoginRequired
    @ApiOperation(value = "内容分页 - 中台", notes = "客户端小程序")
    @PostMapping("/pageContentList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<ZTBasePageResponse<ZTContentListResponse>> pageContentList(@RequestBody ZTContentListRequest ztContentListRequest) {
        ztContentListRequest.setUserId(getMemberId()+"");
        ztContentListRequest.setUserType(Constants.CUSTOMER);
        ZTBasePageResponse<ZTContentListResponse>  ztBasePageResponse= getZhongTaiDataService.pageContentList(ztContentListRequest);
        return ApiResponse.success("查询成功",ztBasePageResponse);
    }
    @LoginRequired
    @ApiOperation(value = "内容详情 - 中台", notes = "客户端小程序")
    @GetMapping("/getContentInfo")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse<ZTContentInfoResponse> getContentInfo(@RequestParam String id) {
        ZTContentInfoResponse ztContentInfoResponse= getZhongTaiDataService.getContentInfo(id,Constants.CUSTOMER,getMemberId());
        return ApiResponse.success("查询成功",ztContentInfoResponse);
    }
    @LoginRequired
    @ApiOperation(value = "内容收藏 - 中台", notes = "客户端小程序")
    @GetMapping("/collectContent")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse collectContent(@RequestParam String id) {
        getZhongTaiDataService.collectContent(getMemberId(),Constants.CUSTOMER,id);
        return ApiResponse.success("操作成功");
    }
    @LoginRequired
    @ApiOperation(value = "内容喜欢 - 中台", notes = "客户端小程序")
    @GetMapping("/likeContent")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse likeContent(@RequestParam String id) {
        getZhongTaiDataService.likeContent(getMemberId(),Constants.CUSTOMER,id);
        return ApiResponse.success("操作成功");
    }
    @LoginRequired
    @ApiOperation(value = "内容分享 - 中台", notes = "客户端小程序")
    @GetMapping("/shareContent")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse shareContent(@RequestParam String id) {
        getZhongTaiDataService.shareContent(getMemberId(),Constants.CUSTOMER,id);
        return ApiResponse.success("操作成功");
    }
    @LoginRequired
    @ApiOperation(value = "内容浏览 - 中台", notes = "客户端小程序")
    @GetMapping("/viewContent")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "id", value = "内容主键", required = true),
    })
    public ApiResponse viewContent(@RequestParam String id) {
        getZhongTaiDataService.viewContent(getMemberId(),Constants.CUSTOMER,id);
        return ApiResponse.success("操作成功");
    }
}