jiangping
2024-07-16 53e0cba6de254a1d6f19d0287da0b212f4a5ae90
Merge remote-tracking branch 'origin/master'

# Conflicts:
# server/service/src/main/java/com/doumee/service/business/UsersService.java
# server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
# server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
已添加5个文件
已修改23个文件
1066 ■■■■ 文件已修改
server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/join/UsersJoinMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Shop.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Users.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/EditMemberRequest.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/EditUsersRequest.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/response/ZTBaseInfoResponse.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/CustomerUserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/MemberService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/ShopService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/UsersService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BjParamServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CommonApi.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/PublicController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/zbom/ZbomCRMService.java
@@ -26,4 +26,5 @@
    CRMBaseResponse<List<CRMCustomerListResponse>> getCustomerList(CrmCustomerListRequest entity );
    CRMBaseResponse<List<CRMDaogouBindListResponse>> getDaogouBindList(CrmDaogouBindListRequest entity );
}
server/service/src/main/java/com/doumee/biz/zbom/ZbomZhongTaiService.java
@@ -19,16 +19,16 @@
    ZTUserGetTokenResponse getUserToken(ZTUserGetTokenRequest param);
    ZTUserGetTokenResponse userUpdateInfo(ZTUserInfoUpdateRequest param);
    ZTBaseResponse userUpdateInfo(ZTUserInfoUpdateRequest param);
    boolean userLogout(ZTBaseRequst param);
    List<ZTCatalogInfoResponse> getCatalogList(ZTCatalogListRequest param);
    List<ZTTagInfoResponse> getTagList(ZTCatalogListRequest param);
    ZTBasePageResponse<ZTContentListResponse> pageContentList(ZTContentListRequest param);
   ZTContentInfoResponse getContentInfo(ZTContentInfoRequest param);
   boolean collectDo(ZTActionDoRequest param);
   boolean likeDo(ZTActionBatchDoRequest param);
   boolean shareDo(ZTActionDoRequest param);
   boolean viewDo(ZTActionDoRequest param);
    ZTBaseResponse collectDo(ZTActionDoRequest param);
    ZTBaseResponse likeDo(ZTActionBatchDoRequest param);
    ZTBaseResponse shareDo(ZTActionDoRequest param);
    ZTBaseResponse viewDo(ZTActionDoRequest param);
    ZTBasePageResponse<ZTCollectInfoResponse> pageCollectList(ZTContentListRequest param);
    ZTBasePageResponse<ZTContentListResponse> pageLikeList(ZTContentListRequest param);
    ZTBasePageResponse<ZTBehaviorInfoResponse> pageBehavoirList(ZTContentListRequest param);
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomCRMServiceImpl.java
@@ -41,7 +41,6 @@
    private CustomerLogMapper customerLogMapper;
    @Autowired
    private CrmInterfaceLogMapper crmInterfaceLogMapper;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
@@ -70,6 +69,7 @@
            entity.setSource(CRMConstants.CRM_SOURCE.SOURCE_MP02);
            entity.setChannel(CRMConstants.CRM_SOURCE.SOURCE_MP02+"00");
        }
//        entity.setOpenId(customerLog.getOpenid());
        entity.setOpenid(customerLog.getOpenid());
        entity.setDate(DateUtil.dateToString(customerLog.getCreateDate(),"yyyy/MM/dd HH:mm"));
        CrmCustomerPostRequest obj = new CrmCustomerPostRequest();
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -91,7 +91,7 @@
     * @return
     */
    @Override
    public ZTUserGetTokenResponse userUpdateInfo(ZTUserInfoUpdateRequest param){
    public ZTBaseResponse userUpdateInfo(ZTUserInfoUpdateRequest param){
        ZTBaseResponse<ZTUserGetTokenResponse> result = sendHttpRequest(
                ZTConstants.IntegerUrl.USER_UPDATE_URL,
                ZTConstants.IntegerName.USER_UPDATE_NAME,
@@ -99,10 +99,10 @@
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTUserGetTokenResponse>>(){});
        if(result!=null){
            return result.getData();
        }
        return null;
//        if(result!=null){
//            return result.getData();
//        }
        return result;
    }
    /**
     * æ³¨é”€ç”¨æˆ·
@@ -208,7 +208,7 @@
     * @return
     */
    @Override
    public boolean collectDo(ZTActionDoRequest param){
    public ZTBaseResponse collectDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.COLLECT_DO_URL,
                ZTConstants.IntegerName.COLLECT_DO_NAME,
@@ -216,10 +216,8 @@
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
        return result;
    }
    /**
     * å†…容喜欢
@@ -227,7 +225,7 @@
     * @return
     */
    @Override
    public  boolean likeDo(ZTActionBatchDoRequest param){
    public  ZTBaseResponse likeDo(ZTActionBatchDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.LIKE_DO_URL,
                ZTConstants.IntegerName.LIKE_DO_NAME,
@@ -235,10 +233,8 @@
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
        return result;
    }
    /**
     * å†…容分享
@@ -246,7 +242,7 @@
     * @return
     */
    @Override
    public boolean shareDo(ZTActionDoRequest param){
    public ZTBaseResponse shareDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.SHARE_DO_URL,
                ZTConstants.IntegerName.SHARE_DO_NAME,
@@ -254,10 +250,7 @@
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
        return result;
    }
    /**
     * å†…容浏览
@@ -265,7 +258,7 @@
     * @return
     */
    @Override
    public boolean viewDo(ZTActionDoRequest param){
    public ZTBaseResponse viewDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.VIEW_DO_URL,
                ZTConstants.IntegerName.VIEW_DO_NAME,
@@ -273,10 +266,7 @@
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
        return result;
    }
    /**
     * ç”¨æˆ·ç»‘定客户喜欢清单,可绑定多个内容
@@ -404,7 +394,6 @@
        String res = null;
        int success = 0;
        try {
            Map<String,String> headers = new HashMap<>();
            headers.put(ZTConstants.HEADER_TOKEN,token);
            headers.put(ZTConstants.HEADER_USERTYPE,userType);
server/service/src/main/java/com/doumee/biz/zbom/model/zhongtai/ZTContentListRequest.java
@@ -36,4 +36,6 @@
    private List<String> tagCode;
    @ApiModelProperty(value = "用户主键",hidden = true)
    private String userId;
}
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -2,16 +2,31 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.business.vo.UnitCodeVo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.net.URI;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -310,6 +325,8 @@
    public static final String ACCESS_ID="ACCESS_ID";
    public static final String BUCKETNAME = "BUCKETNAME";
    public static final String OBJCET_STORAGE = "OBJCET_STORAGE";
    public static final String ZBOM_CUSTOMIZED = "ZBOM_CUSTOMIZED";
    public static final String ACCESS_KEY = "ACCESS_KEY";
    public static final String ENDPOINT = "ENDPOINT";
@@ -318,6 +335,7 @@
    public static final String USER_CARD_DEFAULT_IMG = "USER_CARD_DEFAULT_IMG";
    public static final String USERS_FILE = "USERS_FILE";
    public static final String NEWS_FILE = "NEWS_FILE";
    public static final String USER_LABEL = "USER_LABEL";
    //发送会议开始  å®šæ—¶æå‰å¤šå°‘分钟发送
    public static final String SYSTEM ="SYSTEM";
@@ -352,6 +370,8 @@
    public static final String WX_SECRET_CUSTOMER = "WX_SECRET_CUSTOMER";
    public static final String WX_APPID_PERSONNEL = "WX_APPID_PERSONNEL";
    public static final String WX_SECRET_PERSONNEL = "WX_SECRET_PERSONNEL";
    public static final String WX_TOKEN_CUSTOMER = "WX_TOKEN_CUSTOMER";
    public static final String WX_TOKEN_PERSONNEL = "WX_TOKEN_PERSONNEL";
    public interface RedisKeys {
@@ -665,4 +685,86 @@
        return sb.toString();
    }
    public static InputStream generateWxMiniImgStream(String accessToken,String scene,String page) {
        //生成图片上传OSS
        Map<String,Object> body = new HashMap<>();
        // åœºæ™¯ç ï¼Œä¸Žå‰ç«¯çº¦å®šï¼Œæœ€ç»ˆæ˜¯éœ€è¦å‰ç«¯è§£æž
        body.put("scene", scene);
        // æ­£å¼ç‰ˆä¸º "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
        body.put("env_version", "develop");
        body.put("page", page);
        // é€æ˜Žï¼Œæ ¹æ®ä½ çš„场景自行设置body参数
        body.put("is_hyaline", true);
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        okhttp3.MediaType mediaType = okhttp3.MediaType.parse("application/json");
        okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType, JSONObject.toJSONString(body));
        Request request = new Request.Builder().url("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken)
                .method("POST", requestBody).build();
        try {
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                InputStream inputStream = new ByteArrayInputStream(response.body().bytes());
//                ByteArrayOutputStream baos = new ByteArrayOutputStream();
//                    byte[] buffer = new byte[1024];
//                    int len = -1;
//                    while ((len = inputStream.read(buffer)) != -1) {
//                        baos.write(buffer, 0, len);
//                    }
//                System.out.println("data:mediatype;base64," + Base64.getEncoder().encodeToString(baos.toByteArray()));
                return inputStream;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"生成图片失败");
    }
    /**
     * å‘送get请求
     * @param url è¯·æ±‚URL
     * @param param è¯·æ±‚参数 key:value url携带参数 æˆ–者无参可不填
     * @return
     */
    public static String doGet(String url, Map<String, String> param) {
        // åˆ›å»ºHttpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        String resultString = "";
        CloseableHttpResponse response = null;
        try {
            // åˆ›å»ºuri
            URIBuilder builder = new URIBuilder(url);
            if (param != null) {
                for (String key : param.keySet()) {
                    builder.addParameter(key, param.get(key));
                }
            }
            URI uri = builder.build();
            // åˆ›å»ºhttp GET请求
            HttpGet httpGet = new HttpGet(uri);
            // æ‰§è¡Œè¯·æ±‚
            response = httpclient.execute(httpGet);
            // åˆ¤æ–­è¿”回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null) {
                    response.close();
                }
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return resultString;
    }
}
server/service/src/main/java/com/doumee/dao/business/join/UsersJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.Users;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/07/04 14:40
 */
public interface UsersJoinMapper extends MPJJoinMapper<Users> {
}
server/service/src/main/java/com/doumee/dao/business/model/Shop.java
@@ -203,6 +203,15 @@
    @ExcelColumn(name="地址")
    private String address;
    @ApiModelProperty(value = "联系电话")
    @ExcelColumn(name="联系电话")
    private String linkPhone;
    @ApiModelProperty(value = "联系人")
    @ExcelColumn(name="联系人")
    private String linkerName;
    @ApiModelProperty(value = "父级部门级别路径", example = "1")
    @TableField(exist = false)
    private String parentIdPath;
@@ -239,4 +248,7 @@
    @TableField(exist = false)
    private List<Users> usersList;
    @ApiModelProperty(value = "门店经营范围", example = "1")
    @TableField(exist = false)
    private List<String> seqNameList;
}
server/service/src/main/java/com/doumee/dao/business/model/Users.java
@@ -200,6 +200,13 @@
    @ApiModelProperty(value = "门店地址")
    @TableField(exist = false)
    private String shopAddress;
    @ApiModelProperty(value = "门店城市")
    @TableField(exist = false)
    private String shopCity;
    @ApiModelProperty(value = "C端用户手机号",notes = "用于查询用户绑定的导购",hidden = true)
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "企业二维码图片完整地址")
    @TableField(exist = false)
server/service/src/main/java/com/doumee/dao/web/reqeust/EditMemberRequest.java
@@ -20,10 +20,13 @@
public class EditMemberRequest{
    @ApiModelProperty(value = "用户主键")
    private long memberId;
    private long id;
    @ApiModelProperty(value = "头像")
    private String imgurl;
    @ApiModelProperty(value = "昵称")
    private String nickname;
    @ApiModelProperty(value = "姓名")
    private String name;
@@ -55,7 +58,7 @@
    @ApiModelProperty(value = "小区名称")
    private String district;
    @ApiModelProperty(value = "房屋面积")
    @ApiModelProperty(value = "房屋面积", example = "0.00")
    private BigDecimal housearea;
    @ApiModelProperty(value = "户型信息,室厅厨卫阳数量,格式(1-1-1-1-1)")
server/service/src/main/java/com/doumee/dao/web/reqeust/EditShopDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.doumee.dao.web.reqeust;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.dao.business.model.Users;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * å¿—邦组织信息表
 * @author æ±Ÿè¹„蹄
 * @date 2024/07/04 14:40
 */
@Data
public class EditShopDTO {
    @ApiModelProperty(value = "主键", example = "1")
    private Long id;
    @ApiModelProperty(value = "地址")
    private String address;
    @ApiModelProperty(value = "联系电话")
    private String linkPhone;
    @ApiModelProperty(value = "联系人")
    private String linkerName;
    @ApiModelProperty(value = "经度", example = "1")
    private BigDecimal longitude;
    @ApiModelProperty(value = "纬度", example = "1")
    private BigDecimal latitude;
}
server/service/src/main/java/com/doumee/dao/web/reqeust/EditUsersRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.doumee.dao.web.reqeust;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2023/3/23 9:50
 */
@Data
@ApiModel("修改员工端用户信息请求类")
public class EditUsersRequest {
    @ApiModelProperty(value = "用户主键")
    private long userId;
    @ApiModelProperty(value = "头像")
    private String imgurl;
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "签名")
    private String slogans;
    @ApiModelProperty(value = "服务客户数")
    private Integer costomerNum;
    @ApiModelProperty(value = "从业年限")
    private Integer jobDate;
    @ApiModelProperty(value = "个人二维码图片地址")
    private String qrcodeImg;
    @ApiModelProperty(value = "企业二维码图片地址")
    private String companyQrcodeImg;
}
server/service/src/main/java/com/doumee/dao/web/response/ZTBaseInfoResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.dao.web.response;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/7/16 11:20
 */
@Data
public class ZTBaseInfoResponse {
    private String token;
    private String openId;
    private String userType;
}
server/service/src/main/java/com/doumee/service/business/CustomerUserService.java
@@ -96,4 +96,6 @@
    long count(CustomerUser customerUser);
    void syncYesterday(String date);
    void syncByPhone(String phone);
}
server/service/src/main/java/com/doumee/service/business/GetZhongTaiDataService.java
@@ -49,4 +49,37 @@
     * @return
     */
    ZTContentInfoResponse getContentInfo(String id, String userType, Long userId);
    /**
     * æ”¶è—ä¸šåŠ¡
     * @param userId
     * @param userType
     * @param articleId
     */
    void collectContent(Long userId,String userType,String articleId);
    /**
     * æ”¶è—ä¸šåŠ¡
     * @param userId
     * @param userType
     * @param articleId
     */
    void likeContent(Long userId,String userType,String articleId);
    /**
     * å†…容分享
     * @param userId
     * @param userType
     * @param articleId
     */
    void shareContent(Long userId,String userType,String articleId);
    /**
     * å†…容浏览
     * @param userId
     * @param userType
     * @param articleId
     */
    void viewContent(Long userId,String userType,String articleId);
}
server/service/src/main/java/com/doumee/service/business/MemberService.java
@@ -117,7 +117,14 @@
     * æ›´æ–°ä¸ªäººä¿¡æ¯
     * @param editMemberRequest
     */
    void updMemberDetail(EditMemberRequest editMemberRequest);
    Member updMemberDetail(EditMemberRequest editMemberRequest);
    /**
     * æ›´æ–°æ‰‹æœºå·
     * @param editMemberRequest
     * @return
     */
    Member updMemberPhone(EditMemberRequest editMemberRequest);
    Member getMemberInfo(Long memberId);
@@ -128,4 +135,10 @@
     * @param memberId
     */
    void logOff(Long memberId);
    /**
     * æ›´æ–°å®¢æˆ·ç«¯å°ç¨‹åºToken
     */
    void updWxMiniToken();
}
server/service/src/main/java/com/doumee/service/business/ShopService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.admin.request.UpdateShopSortDTO;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.business.vo.ShopTreeVo;
import com.doumee.dao.web.reqeust.EditShopDTO;
import com.doumee.dao.web.reqeust.ShopQueryByLLDTO;
import org.springframework.web.multipart.MultipartFile;
@@ -125,4 +126,12 @@
     * @return
     */
    Shop shopDetail(Long id,Long memberId);
    /**
     * ä¿®æ”¹é—¨åº—信息
     * @param editShopDTO
     */
    void updShop(EditShopDTO editShopDTO);
}
server/service/src/main/java/com/doumee/service/business/UsersService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Users;
import com.doumee.dao.web.reqeust.ContentShareImgDto;
import com.doumee.dao.web.reqeust.EditUsersRequest;
import com.doumee.dao.web.response.AccountResponse;
import org.springframework.web.multipart.MultipartFile;
@@ -112,5 +113,12 @@
    String getUserCard(Users users);
    void editUserInfo(EditUsersRequest editUsersRequest);
    /**
     * æ›´æ–°å‘˜å·¥ç«¯å°ç¨‹åºToken
     */
    void updWxMiniToken();
    String getContentShareImg(Users loginUserInfo, ContentShareImgDto param);
}
server/service/src/main/java/com/doumee/service/business/impl/BjParamServiceImpl.java
@@ -216,8 +216,8 @@
        List<BjParam> bjParamList =  bjParamMapper.selectList(new QueryWrapper<BjParam>()
               .lambda().eq(BjParam::getIsdeleted,Constants.ZERO));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(bjParamList)){
            List<BjParam> roughList = bjParamList.stream().filter(i->i.getType().equals(Constants.ZERO)).collect(Collectors.toList());
            List<BjParam> exquisiteList = bjParamList.stream().filter(i->i.getType().equals(Constants.ONE)).collect(Collectors.toList());
            List<BjParam> roughList = bjParamList.stream().filter(i->i.getType().equals(Constants.ZERO+"")).collect(Collectors.toList());
            List<BjParam> exquisiteList = bjParamList.stream().filter(i->i.getType().equals(Constants.ONE+"")).collect(Collectors.toList());
            bjParamConfigResponse.setRoughList(roughList);
            bjParamConfigResponse.setExquisiteList(exquisiteList);
        }
server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java
@@ -182,6 +182,21 @@
        request.setPageSize(100);
        request.setTiming(Constants.ONE+"");
        request.setCreationDate(date);
        this.syncData(request);
    }
    @Override
    @Transactional
    public void syncByPhone(String phone) {
        CrmDaogouBindListRequest request = new CrmDaogouBindListRequest();
        request.setPage(0);
        request.setPageSize(100);
        request.setTiming(Constants.ZERO+"");
        request.setKeyWords(phone);
        this.syncData(request);
    }
    public void syncData(CrmDaogouBindListRequest request){
        boolean hasMore = true;
        int currentNum = 0;
        Date cdate = new Date();
@@ -201,7 +216,7 @@
                }
                dealSyncDataBiz(cdate,response.getData());
            }catch (Exception e){
               hasMore = false;
                hasMore = false;
            }
        }
    }
server/service/src/main/java/com/doumee/service/business/impl/GetZhongTaiDataServiceImpl.java
@@ -3,22 +3,22 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.zbom.ZbomZhongTaiService;
import com.doumee.biz.zbom.model.zhongtai.ZTCatalogListRequest;
import com.doumee.biz.zbom.model.zhongtai.ZTConstants;
import com.doumee.biz.zbom.model.zhongtai.ZTContentInfoRequest;
import com.doumee.biz.zbom.model.zhongtai.ZTContentListRequest;
import com.doumee.biz.zbom.model.zhongtai.*;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.business.IamInterfaceLogMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.UsersMapper;
import com.doumee.dao.web.response.ZTBaseInfoResponse;
import com.doumee.service.business.GetZhongTaiDataService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.xpath.operations.Bool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -128,8 +128,9 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //查询 ä¸­å°
        String token = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,ztContentListRequest.getUserId(),ztContentListRequest.getUserType());
        ztContentListRequest.setToken(token);
        ZTBaseInfoResponse ztBaseInfoResponse = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,
                Long.valueOf(ztContentListRequest.getUserId()),ztContentListRequest.getUserType());
        ztContentListRequest.setToken(ztBaseInfoResponse.getToken());
        String catalogCode = ztContentListRequest.getCatalogCode();
        if(catalogCode.equals(ZTConstants.CatalogCode.ZHISHUO_ZHUANGXIU)
                ||catalogCode.equals(ZTConstants.CatalogCode.CHANPING)
@@ -146,22 +147,90 @@
    @Override
    public ZTContentInfoResponse getContentInfo(String id,String userType,Long userId){
        //查询 ä¸­å° TOKEN
        String token = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId.toString(),userType);
        ZTBaseInfoResponse ztBaseInfoResponse  = MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
        ZTContentInfoRequest ztContentListRequest = new ZTContentInfoRequest();
        ztContentListRequest.setToken(token);
        ztContentListRequest.setUserType(userType);
        ztContentListRequest.setToken(ztBaseInfoResponse.getToken());
        ztContentListRequest.setUserType(ztBaseInfoResponse.getUserType());
        ztContentListRequest.setId(id);
        ZTContentInfoResponse response = zbomZhongTaiService.getContentInfo(ztContentListRequest);
        return response;
    }
    @Override
    public void collectContent(Long userId,String userType,String articleId){
        ZTBaseInfoResponse ztBaseInfoResponse  =  MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
        ZTActionDoRequest param = new ZTActionDoRequest();
        param.setOpenId(ztBaseInfoResponse.getOpenId());
        param.setUserType(userType);
        param.setArticleId(articleId);
        param.setToken(ztBaseInfoResponse.getToken());
        ZTBaseResponse ztBaseResponse =  zbomZhongTaiService.collectDo(param);
        if(Objects.isNull(ztBaseResponse)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台接口响应失败");
        }else{
            if(!ztBaseResponse.getSuccess()){
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台请求信息异常:"+ztBaseResponse.getMsg());
            }
        }
    }
    @Override
    public void likeContent(Long userId,String userType,String articleId){
        ZTBaseInfoResponse ztBaseInfoResponse  =  MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
        ZTActionBatchDoRequest param = new ZTActionBatchDoRequest();
        param.setOpenId(ztBaseInfoResponse.getOpenId());
        param.setUserType(userType);
        param.setToken(ztBaseInfoResponse.getToken());
        List<ZTActionDoRequest> list = new ArrayList<>();
        ZTActionDoRequest ztActionDoRequest = new ZTActionDoRequest();
        ztActionDoRequest.setArticleId(articleId);
        param.setList(list);
        ZTBaseResponse ztBaseResponse =  zbomZhongTaiService.likeDo(param);
        if(Objects.isNull(ztBaseResponse)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台接口响应失败");
        }else{
            if(!ztBaseResponse.getSuccess()){
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台请求信息异常:"+ztBaseResponse.getMsg());
            }
        }
    }
    @Override
    public void shareContent(Long userId,String userType,String articleId){
        ZTBaseInfoResponse ztBaseInfoResponse  =  MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
        ZTActionDoRequest param = new ZTActionDoRequest();
        param.setArticleId(articleId);
        param.setOpenId(ztBaseInfoResponse.getOpenId());
        param.setUserType(userType);
        param.setToken(ztBaseInfoResponse.getToken());
        ZTBaseResponse ztBaseResponse =  zbomZhongTaiService.shareDo(param);
        if(Objects.isNull(ztBaseResponse)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台接口响应失败");
        }else{
            if(!ztBaseResponse.getSuccess()){
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台请求信息异常:"+ztBaseResponse.getMsg());
            }
        }
    }
    @Override
    public void viewContent(Long userId,String userType,String articleId){
        ZTBaseInfoResponse ztBaseInfoResponse  =  MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,userId,userType);
        ZTActionDoRequest param = new ZTActionDoRequest();
        param.setArticleId(articleId);
        param.setOpenId(ztBaseInfoResponse.getOpenId());
        param.setUserType(userType);
        param.setToken(ztBaseInfoResponse.getToken());
        ZTBaseResponse ztBaseResponse =  zbomZhongTaiService.viewDo(param);
        if(Objects.isNull(ztBaseResponse)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台接口响应失败");
        }else{
            if(!ztBaseResponse.getSuccess()){
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"中台请求信息异常:"+ztBaseResponse.getMsg());
            }
        }
    }
}
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -8,6 +8,7 @@
import com.doumee.biz.zbom.model.zhongtai.ZTBaseRequst;
import com.doumee.biz.zbom.model.zhongtai.ZTUserGetTokenRequest;
import com.doumee.biz.zbom.model.zhongtai.ZTUserInfoUpdateRequest;
import com.doumee.biz.zbom.model.zhongtai.response.ZTBaseResponse;
import com.doumee.biz.zbom.model.zhongtai.response.ZTUserGetTokenResponse;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
@@ -21,14 +22,19 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.dao.business.CustomerUserMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.UsersMapper;
import com.doumee.dao.business.model.CustomerUser;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Users;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.web.reqeust.EditMemberRequest;
import com.doumee.dao.web.reqeust.WxPhoneRequest;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.dao.web.response.ZTBaseInfoResponse;
import com.doumee.service.business.CustomerService;
import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -40,6 +46,9 @@
import okhttp3.Response;
import org.apache.catalina.User;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -63,6 +72,9 @@
    @Autowired
    private UsersMapper usersMapper;
    @Autowired
    private CustomerUserMapper customerUserMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -267,20 +279,38 @@
    @Override
    public AccountResponse wxLogin(String code){
        try {
//            èŽ·å–å¾®ä¿¡æ•æ„Ÿæ•°æ®
            //获取微信敏感数据
            WxMaJscode2SessionResult session = WxMiniConfig.wxCustomerService.getUserService().getSessionInfo(code);
            String openId = session.getOpenid();
            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员");
            }
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId));
            String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode();
            if (member == null) {
                member = new Member();
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setOpenid(openId);
                member.setType(Constants.ZERO);
                member.setAuthStatus(Constants.ZERO);
        //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
        //        if(Objects.isNull(ztUserGetTokenResponse)){
        //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
        //        }else{
        //            member.setToken(ztUserGetTokenResponse.getToken());
        //        }
                memberMapper.insert(member);
                member =  this.getMemberInfo(member.getId());
            }else{
        //        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
        //        if(Objects.isNull(ztUserGetTokenResponse)){
        //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
        //        }else{
        //            member.setToken(ztUserGetTokenResponse.getToken());
        //        }
                member = this.getMemberInfo(member.getId());
            }
            //创建token
            JwtPayLoad payLoad = new JwtPayLoad(member.getId(),Constants.ZERO);
@@ -313,50 +343,83 @@
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"更新手机号失败");
    }
    @Override
    public void updMemberDetail(EditMemberRequest editMemberRequest){
        Member member = memberMapper.selectById(editMemberRequest.getMemberId());
    public Member updMemberDetail(EditMemberRequest editMemberRequest){
        Member member = memberMapper.selectById(editMemberRequest.getId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(Objects.isNull(editMemberRequest)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member memberDto = new Member();
        BeanUtils.copyProperties(editMemberRequest,memberDto);
        memberDto.setOpenid(member.getOpenid());
//        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
//        if(Objects.isNull(ztUserGetTokenResponse)){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
//        }else{
//            member.setToken(ztUserGetTokenResponse.getToken());
//        }
        memberMapper.updateById(memberDto);
        return this.getMemberInfo(member.getId());
    }
    @Override
    public Member updMemberPhone(EditMemberRequest editMemberRequest){
        if(Objects.isNull(editMemberRequest)||StringUtils.isBlank(editMemberRequest.getPhone())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(editMemberRequest.getId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        Member memberDto = new Member();
        BeanUtils.copyProperties(editMemberRequest,memberDto);
        memberDto.setOpenid(member.getOpenid());
//        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
//        if(Objects.isNull(ztUserGetTokenResponse)){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
//        }else{
//            member.setToken(ztUserGetTokenResponse.getToken());
//        }
        memberMapper.updateById(memberDto);
        return this.getMemberInfo(member.getId());
    }
    public ZTUserGetTokenResponse syncZhongTaiUser(Member member){
        ZTUserInfoUpdateRequest ztUserInfoUpdateRequest = new  ZTUserInfoUpdateRequest();
        ztUserInfoUpdateRequest.setOpenId(member.getOpenid());
        String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode();
        ztUserInfoUpdateRequest.setAppId(appId);
        ztUserInfoUpdateRequest.setPlatform(Constants.PLATFORM);
        ztUserInfoUpdateRequest.setPhone(editMemberRequest.getPhone());
        ztUserInfoUpdateRequest.setName(editMemberRequest.getName());
        ztUserInfoUpdateRequest.setAddress(editMemberRequest.getProvinceName()+editMemberRequest.getCityName()+editMemberRequest.getAreaName());
        ztUserInfoUpdateRequest.setFullAddress(editMemberRequest.getAddress());
        ztUserInfoUpdateRequest.setPhone(member.getPhone());
        ztUserInfoUpdateRequest.setName(member.getNickname());
        ztUserInfoUpdateRequest.setAddress(member.getProvinceName()+member.getCityName()+member.getAreaName());
        ztUserInfoUpdateRequest.setFullAddress(member.getAddress());
        String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode();
        if(StringUtils.isNotBlank(editMemberRequest.getImgurl())){
            ztUserInfoUpdateRequest.setAvatarUrl(prefix + editMemberRequest.getImgurl());
        if(StringUtils.isNotBlank(member.getImgurl())){
            ztUserInfoUpdateRequest.setAvatarUrl(prefix + member.getImgurl());
        }
        ztUserInfoUpdateRequest.setUptown(editMemberRequest.getDistrict());
        ztUserInfoUpdateRequest.setHouseArea(editMemberRequest.getHousearea().toString());
        ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(editMemberRequest.getHousetype()));
        ZTUserGetTokenResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest);
        if(Objects.isNull(userUpdateInfo)){
        ztUserInfoUpdateRequest.setUptown(member.getDistrict());
        if(Objects.nonNull(member.getHousearea())){
            ztUserInfoUpdateRequest.setHouseArea(member.getHousearea().toString());
        }
        ztUserInfoUpdateRequest.setHouseLayout(Constants.getHouseLayout(member.getHousetype()));
        ZTBaseResponse userUpdateInfo = zbomZhongTaiService.userUpdateInfo(ztUserInfoUpdateRequest);
        if(Objects.isNull(userUpdateInfo)||userUpdateInfo.getCode()!=200){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台信息更新失败,请联系管理员");
        }
        memberMapper.update(new UpdateWrapper<Member>()
                .lambda()
                .set(StringUtils.isNotBlank(editMemberRequest.getImgurl()),Member::getImgurl,editMemberRequest.getImgurl())
                .set(StringUtils.isNotBlank(editMemberRequest.getName()),Member::getName,editMemberRequest.getName())
                .set(StringUtils.isNotBlank(editMemberRequest.getPhone()),Member::getPhone,editMemberRequest.getPhone())
                .set(StringUtils.isNotBlank(editMemberRequest.getProvinceName()),Member::getProvinceName,editMemberRequest.getProvinceName())
                .set(StringUtils.isNotBlank(editMemberRequest.getProvinceCode()),Member::getProvinceCode,editMemberRequest.getProvinceCode())
                .set(StringUtils.isNotBlank(editMemberRequest.getCityCode()),Member::getCityCode,editMemberRequest.getCityCode())
                .set(StringUtils.isNotBlank(editMemberRequest.getCityName()),Member::getCityName,editMemberRequest.getCityName())
                .set(StringUtils.isNotBlank(editMemberRequest.getAreaCode()),Member::getAreaCode,editMemberRequest.getAreaCode())
                .set(StringUtils.isNotBlank(editMemberRequest.getAreaName()),Member::getAreaName,editMemberRequest.getAreaName())
                .set(StringUtils.isNotBlank(editMemberRequest.getAddress()),Member::getAddress,editMemberRequest.getAddress())
                .set(StringUtils.isNotBlank(editMemberRequest.getDistrict()),Member::getDistrict,editMemberRequest.getDistrict())
                .set(Objects.nonNull(editMemberRequest.getHousearea()),Member::getHousearea,editMemberRequest.getHousearea())
                .set(StringUtils.isNotBlank(editMemberRequest.getHousetype()),Member::getHousetype,editMemberRequest.getHousetype())
                .set(Objects.nonNull(editMemberRequest.getLatitude()),Member::getLatitude,editMemberRequest.getLatitude())
                .set(Objects.nonNull(editMemberRequest.getLongitude()),Member::getLongitude,editMemberRequest.getLongitude())
                .set(Member::getToken,userUpdateInfo.getToken())
                .eq(Member::getId,editMemberRequest.getMemberId()));
        ZTUserGetTokenResponse ztUserGetTokenResponse = (ZTUserGetTokenResponse) userUpdateInfo.getData();
        return ztUserGetTokenResponse;
    }
    @Override
    public Member getMemberInfo(Long memberId){
@@ -367,18 +430,22 @@
        String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode();
        member.setPrefix(prefix);
        return member;
       return member;
    }
    public static String getZTToken(ZbomZhongTaiService zbomZhongTaiService, MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, String id, String userType){
    public static ZTBaseInfoResponse getZTToken(ZbomZhongTaiService zbomZhongTaiService,
                                                MemberMapper memberMapper, UsersMapper usersMapper, SystemDictDataBiz systemDictDataBiz, Long id, String userType){
        ZTBaseInfoResponse ztBaseInfoResponse = new ZTBaseInfoResponse();
        if(userType.equals(Constants.CUSTOMER)){
            Member member = memberMapper.selectById(id);
            if(Objects.isNull(member)){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            ztBaseInfoResponse.setUserType(Constants.CUSTOMER);
            ztBaseInfoResponse.setOpenId(member.getOpenid());
            //如果无有效期/已过期 é‡æ–°èŽ·å–
            if(Objects.isNull(member.getTokenDate()) || member.getTokenDate().getTime()<=System.currentTimeMillis() ){
                ZTUserGetTokenRequest param = new ZTUserGetTokenRequest();
@@ -392,17 +459,21 @@
                    //TODO æš‚无过期日期
                    memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getToken,ztUserGetTokenResponse.getToken())
                            .eq(Member::getId,member.getId()));
                    return ztUserGetTokenResponse.getToken();
                    ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken());
                    return ztBaseInfoResponse;
                }else{
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员");
                }
            }
            return member.getToken();
            ztBaseInfoResponse.setToken(member.getToken());
            return ztBaseInfoResponse;
        }else if(userType.equals(Constants.BUSINESS)){
            Users users = usersMapper.selectById(id);
            if(Objects.isNull(users)){
                throw new BusinessException(ResponseStatus.BAD_REQUEST);
            }
            ztBaseInfoResponse.setUserType(Constants.BUSINESS);
            ztBaseInfoResponse.setOpenId(users.getOpenid());
            if(Objects.isNull(users.getTokenDate()) || users.getTokenDate().getTime()<=System.currentTimeMillis() ){
                ZTUserGetTokenRequest param = new ZTUserGetTokenRequest();
                //查询APPID
@@ -415,12 +486,14 @@
                    //TODO æš‚无过期日期
                    usersMapper.update(new UpdateWrapper<Users>().lambda().set(Users::getToken,ztUserGetTokenResponse.getToken())
                            .eq(Users::getId,users.getId()));
                    return ztUserGetTokenResponse.getToken();
                    ztBaseInfoResponse.setToken(ztUserGetTokenResponse.getToken());
                    return ztBaseInfoResponse;
                }else{
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台TOKEN获取失败,请联系管理员");
                }
            }
            return users.getToken();
            ztBaseInfoResponse.setToken(users.getToken());
            return ztBaseInfoResponse;
        }else{
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"参数错误");
        }
@@ -439,7 +512,7 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已注销");
        }
        //校验用户token信息
        MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId().toString(),Constants.CUSTOMER);
        MemberServiceImpl.getZTToken(zbomZhongTaiService,memberMapper,usersMapper,systemDictDataBiz,member.getId(),Constants.CUSTOMER);
        //调起中台注销接口
        ZTBaseRequst ztBaseRequst = new ZTBaseRequst();
        ztBaseRequst.setUserType(Constants.CUSTOMER);
@@ -459,5 +532,20 @@
    @Override
    public void updWxMiniToken(){
        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
        ThreadContext.bind(manager);
        String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_CUSTOMER).getCode();
        String appSecret = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_SECRET_CUSTOMER).getCode();
        //生成微信token
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
        String response = Constants.doGet(url,null);
        JSONObject json = JSONObject.parseObject(response);
        SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_TOKEN_CUSTOMER);
        systemDictData.setCode(json.getString("access_token"));
        systemDictData.setUpdateTime(new Date());
        systemDictDataBiz.updateByIdNew(systemDictData);
    }
}
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -21,6 +21,8 @@
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.ShopTree;
import com.doumee.dao.business.vo.ShopTreeVo;
import com.doumee.dao.business.vo.UnitCodeVo;
import com.doumee.dao.web.reqeust.EditShopDTO;
import com.doumee.dao.web.reqeust.ShopQueryByLLDTO;
import com.doumee.service.business.ShopService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -30,6 +32,7 @@
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Async;
@@ -42,6 +45,7 @@
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
 * å¿—邦组织信息表Service实现
@@ -261,7 +265,30 @@
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(shopMapper.selectPage(page, queryWrapper));
        PageData<Shop> pageData = PageData.from(shopMapper.selectPage(page, queryWrapper));
        //查询经营范围信息
        List<CategorySeg> categorySegAllList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda()
                .isNotNull(CategorySeg::getOrgId)
                .eq(CategorySeg::getIsdeleted,Constants.ZERO));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegAllList)){
            for (Shop shop:pageData.getRecords()) {
                if(StringUtils.isBlank(shop.getOrgId())){
                    continue;
                }
                List<CategorySeg> categorySegList = categorySegAllList.stream().filter(i->i.getOrgId().equals(shop.getOrgId())).collect(Collectors.toList());
                List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList();
                List<String> seqNameList = new ArrayList<>();
                for(CategorySeg model : categorySegList){
                    String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList);
                    if(Objects.nonNull(seqName)){
                        seqNameList.add(seqName);
                    }
                }
                shop.setSeqNameList(seqNameList);
            }
        }
        return pageData;
    }
    @Override
@@ -382,7 +409,7 @@
    }
    @Async
    private void dealCategoryDataBiz(List<CategoryImport> dataList, Date date, LoginUserInfo loginUserInfo) {
    public void dealCategoryDataBiz(List<CategoryImport> dataList, Date date, LoginUserInfo loginUserInfo) {
        try {
            List<CategorySeg> categorySegList = new ArrayList<>();
            List<Segments> segmentsList = new ArrayList<>();
@@ -907,15 +934,14 @@
    @Override
    public Shop shopDetail(Long id,Long memberId) {
        Member member = memberMapper.selectById(memberId);
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到用户信息");
        }
        QueryWrapper<Shop> queryWrapper = new QueryWrapper<Shop>();
        //如果人员没有经纬度信息,则不查询距离
        if(Objects.nonNull(member.getLatitude())&&Objects.nonNull(member.getLongitude())){
            queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," +
                    " CONVERT (ST_Distance_Sphere (point ("+member.getLongitude()+", "+member.getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance ");
        if(Objects.nonNull(memberId)){
            Member member = memberMapper.selectById(memberId);
            //如果人员没有经纬度信息,则不查询距离
            if(Objects.nonNull(member)&&Objects.nonNull(member.getLatitude())&&Objects.nonNull(member.getLongitude())){
                queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE," +
                        " CONVERT (ST_Distance_Sphere (point ("+member.getLongitude()+", "+member.getLatitude()+" ), point ( LONGITUDE, LATITUDE )) /1000,decimal(15,2)) as distance ");
            }
        }
        queryWrapper.eq("id",id);
        Shop shop = shopMapper.selectOne(queryWrapper);
@@ -935,9 +961,35 @@
            }
        }
        shop.setUsersList(usersList);
        //查询经营范围信息
        List<CategorySeg> categorySegList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda().eq(CategorySeg::getOrgId,shop.getOrgId()).eq(CategorySeg::getIsdeleted,Constants.ZERO));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categorySegList)){
            List<UnitCodeVo> unitCodeVoList =systemDictDataBiz.getUnitList();
            List<String> seqNameList = new ArrayList<>();
            for(CategorySeg model : categorySegList){
                String seqName = systemDictDataBiz.getUnitName(model.getUnitCode(),unitCodeVoList);
                if(Objects.nonNull(seqName)){
                    seqNameList.add(seqName);
                }
            }
            shop.setSeqNameList(seqNameList);
        }
        return shop;
    }
    @Override
    public void updShop(EditShopDTO editShopDTO) {
        if(Objects.isNull(editShopDTO)
        || Objects.isNull(editShopDTO.getId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Shop shop = shopMapper.selectById(editShopDTO.getId());
        if(Objects.isNull(shop)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        Shop updShop = new Shop();
        BeanUtils.copyProperties(editShopDTO,updShop);
        shopMapper.updateById(updShop);
    }
}
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -2,6 +2,7 @@
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.hutool.core.date.DateUnit;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.zbom.model.IamUserRoleModel;
import com.doumee.biz.zbom.model.IamUserTypeModel;
@@ -25,7 +26,9 @@
import com.doumee.dao.business.SmsEmailMapper;
import com.doumee.dao.business.UsersMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.EditUsersRequest;
import com.doumee.dao.web.reqeust.ContentShareImgDto;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.service.business.UsersService;
@@ -33,12 +36,15 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.catalina.User;
import org.apache.commons.lang3.StringUtils;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -51,6 +57,8 @@
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import static com.aliyun.api.internal.util.AliyunWebUtils.doGet;
/**
 * å‘˜å·¥ä¿¡æ¯è¡¨Service实现
@@ -148,6 +156,9 @@
                .selectAs(Shop::getSecondType,Users::getShopSecType)
                .selectAll(Users.class);
        Utils.MP.blankToNull(pageWrap.getModel());
        if (StringUtils.isNotBlank(pageWrap.getModel().getPhone())) {
            queryWrapper.apply(" t.id in ( select c.USER_ID from customer_user c where c.phone = '"+pageWrap.getModel().getPhone()+"'  ) ");
        }
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.eq(Users::getId, pageWrap.getModel().getId());
        }
@@ -291,7 +302,6 @@
                        f.setQrcodeImgFull(path + f.getQrcodeImg());
                    }
                }
        }
        return pageData;
    }
@@ -687,10 +697,14 @@
        if(StringUtils.isNotBlank(users.getCompanyQrcodeImg())){
            users.setCompanyQrcodeImgFull(prefix + users.getCompanyQrcodeImg());
        }
        if(StringUtils.isBlank(users.getSlogans())){
            users.setSlogans(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ZBOM_CUSTOMIZED,Constants.USER_LABEL).getCode()));
        }
        if(Objects.nonNull(users.getDepartmentId())){
            Shop shop = shopMapper.selectById(users.getDepartmentId());
            if(Objects.nonNull(shop)){
                users.setShopName(shop.getName());
                users.setShopCity(shop.getProvinceName()+shop.getCityName()+shop.getAreaName());
                if(StringUtils.isNotBlank(shop.getAddress())){
                    users.setShopAddress(shop.getAddress());
                }else{
@@ -703,5 +717,48 @@
    @Override
    public void editUserInfo(EditUsersRequest editUsersRequest){
        if(Objects.isNull(editUsersRequest)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Users users = usersMapper.selectById(editUsersRequest.getUserId());
        if(Objects.isNull(users)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        //TODO è°ƒèµ· ä¸­å°æŽ¥å£
        usersMapper.update(new UpdateWrapper<Users>()
                .lambda()
                .set(Users::getCardImg,"-") //重置名片为 -
                .set(StringUtils.isNotBlank(editUsersRequest.getImgurl()),Users::getImgurl,editUsersRequest.getImgurl())
                .set(StringUtils.isNotBlank(editUsersRequest.getName()),Users::getName,editUsersRequest.getName())
                .set(StringUtils.isNotBlank(editUsersRequest.getPhone()),Users::getPhone,editUsersRequest.getPhone())
                .set(StringUtils.isNotBlank(editUsersRequest.getCompanyQrcodeImg()),Users::getCompanyQrcodeImg,editUsersRequest.getCompanyQrcodeImg())
                .set(StringUtils.isNotBlank(editUsersRequest.getQrcodeImg()),Users::getQrcodeImg,editUsersRequest.getQrcodeImg())
                .set(StringUtils.isNotBlank(editUsersRequest.getSlogans()),Users::getSlogans,editUsersRequest.getSlogans())
                .set(Objects.nonNull(editUsersRequest.getCostomerNum()),Users::getCostomerNum,editUsersRequest.getCostomerNum())
                .set(Objects.nonNull(editUsersRequest.getJobDate()),Users::getJobDate,editUsersRequest.getJobDate())
                .set(StringUtils.isNotBlank(editUsersRequest.getPhone()),Users::getPhone,editUsersRequest.getPhone())
                .eq(Users::getId,editUsersRequest.getUserId()));
    }
    @Override
    public void updWxMiniToken(){
        DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
        ThreadContext.bind(manager);
        String appId = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_APPID_PERSONNEL).getCode();
        String appSecret = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_SECRET_PERSONNEL).getCode();
        //生成微信token
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
        String response = Constants.doGet(url,null);
        JSONObject json = JSONObject.parseObject(response);
        SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.WX_MINI_CONFIG,Constants.WX_TOKEN_PERSONNEL);
        systemDictData.setCode(json.getString("access_token"));
        systemDictData.setUpdateTime(new Date());
        systemDictDataBiz.updateByIdNew(systemDictData);
    }
}
server/web/src/main/java/com/doumee/api/web/CommonApi.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.doumee.api.web;
import com.doumee.biz.zbom.ZbomCRMService;
import com.doumee.biz.zbom.ZbomZhongTaiService;
import com.doumee.biz.zbom.model.zhongtai.ZTAreaListRequest;
import com.doumee.biz.zbom.model.zhongtai.response.ZTAreaInfoResponse;
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.dao.business.model.CustomerLog;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.business.model.Users;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.dao.web.response.BjParamConfigResponse;
import com.doumee.service.business.*;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/7/10 14:03
 */
@Api(tags = "工具类业务")
@Trace(exclude = true)
@RestController
@RequestMapping("/web/common")
@Slf4j
public class CommonApi extends ApiController{
    @Autowired
    private ZbomZhongTaiService zbomZhongTaiService;
    @ApiOperation(value = "获取区划信息", notes = "客户端小程序")
    @PostMapping("/getArea")
    public ApiResponse<List<ZTAreaInfoResponse>> getArea(@RequestBody ZTAreaListRequest ztAreaListRequest) {
        if(StringUtils.isBlank(ztAreaListRequest.getPid())){
            ztAreaListRequest.setPid("1");
        }
        List<ZTAreaInfoResponse> ztAreaInfoResponses =  zbomZhongTaiService.getAreaList(ztAreaListRequest);
        return  ApiResponse.success(ztAreaInfoResponses);
    }
}
server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -1,11 +1,13 @@
package com.doumee.api.web;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.zbom.ZbomCRMService;
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 +21,16 @@
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;
/**
 * Created by IntelliJ IDEA.
@@ -58,6 +64,9 @@
    @Autowired
    private UsersService usersService;
    @Autowired
    private CustomerUserService customerUserService;
    @ApiOperation(value = "客户端小程序登陆", notes = "客户端小程序")
    @GetMapping("/wxLoginCustomer")
    @ApiImplicitParams({
@@ -83,10 +92,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
@@ -116,7 +156,7 @@
    public ApiResponse saveRenovationCalculator(@RequestBody RenovationCalculatorDTO renovationCalculatorDTO) {
        renovationCalculatorDTO.setMemberId(getMemberId());
        CustomerLog customerLog =customerService.saveRenovationCalculator(renovationCalculatorDTO);
        zbomCRMService.dealCustomerLogData(customerLog);
//        zbomCRMService.dealCustomerLogData(customerLog);
        return  ApiResponse.success("操作成功");
    }
@@ -130,7 +170,7 @@
    public ApiResponse saveFreeCustomizationApply(@RequestBody FreeCustomizationDTO freeCustomizationDTO) {
        freeCustomizationDTO.setMemberId(getMemberId());
        CustomerLog customerLog = customerService.saveFreeCustomizationApply(freeCustomizationDTO);
        zbomCRMService.dealCustomerLogData(customerLog);
//        zbomCRMService.dealCustomerLogData(customerLog);
        return  ApiResponse.success("操作成功");
    }
@@ -143,7 +183,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,6 +218,17 @@
    }
    @LoginRequired
    @ApiOperation("我的导购列表")
    @PostMapping("/myUserPage")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse<PageData<Users>> myUserPage (@RequestBody PageWrap<Users> pageWrap) {
        return ApiResponse.success(usersService.findPage(pageWrap));
    }
    @LoginRequired
    @ApiOperation(value = "导购详情", notes = "客户端小程序")
    @GetMapping("/usersDetail")
    @ApiImplicitParams({
@@ -189,6 +240,41 @@
    }
    @LoginRequired
    @ApiOperation(value = "测试小程序Token", notes = "客户端小程序")
    @GetMapping("/testToken")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse testToken () {
        memberService.updWxMiniToken();
        return ApiResponse.success("更新成功");
    }
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @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();
        }
    }
}
server/web/src/main/java/com/doumee/api/web/PersonnelApi.java
@@ -1,12 +1,20 @@
package com.doumee.api.web;
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.dao.business.model.Shop;
import com.doumee.dao.business.model.SmsEmail;
import com.doumee.dao.web.reqeust.EditMemberRequest;
import com.doumee.dao.web.reqeust.EditShopDTO;
import com.doumee.dao.web.reqeust.EditUsersRequest;
import com.doumee.dao.web.reqeust.ContentShareImgDto;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.ShopService;
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.UsersService;
import io.swagger.annotations.Api;
@@ -14,6 +22,7 @@
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.*;
@@ -36,6 +45,9 @@
    @Autowired
    public SmsEmailService smsEmailService;
    @Autowired
    public ShopService shopService;
    @ApiOperation(value = "小程序登陆", notes = "员工端小程序")
@@ -77,6 +89,7 @@
    @ApiOperation(value = "绑定openid", notes = "员工端小程序")
    @GetMapping("/bindingOpenid")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "微信code", required = true),
    })
    public ApiResponse bindingOpenid(@RequestParam String code) {
@@ -84,6 +97,63 @@
        return  ApiResponse.success("操作成功");
    }
    @UserLoginRequired
    @ApiOperation(value = "获取个人信息详情", notes = "员工端小程序")
    @GetMapping("/getUserDetail")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse getUserDetail() {
        usersService.usersDetail(getMemberId());
        return  ApiResponse.success("操作成功");
    }
    @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(getMemberId());
        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<PageData<Shop>> shopPage (@RequestBody PageWrap<Shop> pageWrap) {
        return ApiResponse.success(shopService.findPage(pageWrap));
    }
    @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<Shop> shopDetail (@RequestParam Long shopId) {
        return ApiResponse.success(shopService.shopDetail(shopId,null));
    }
    @UserLoginRequired
    @ApiOperation(value = "修改门店信息", notes = "员工端小程序")
    @GetMapping("/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("操作成功");
    }
    @ApiOperation(value = "获取个人名片", notes = "员工端小程序")
    @PostMapping("/getUserCard")
    public ApiResponse<String> getUserCard() {
server/web/src/main/java/com/doumee/api/web/PublicController.java
@@ -64,40 +64,16 @@
    }
    public static FtpUtil ftp  = null;
    @ApiOperation(value = "上传", notes = "上传", httpMethod = "POST", position = 6)
    @ApiImplicitParams({
        @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
            @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
    })
    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        upload(multipartRequest, response, folder + "/",
            systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode(),
            systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(),
            systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_KEY).getCode(),
            systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode(),
            systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ENDPOINT).getCode());
    }
    @ApiOperation(value = "上传图片", notes = "上传图片", httpMethod = "POST", position = 6)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
    })
    @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data")
    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Iterator<String> fileNames = multipartRequest.getFileNames();
        Map<String, Object> context = new HashMap<>();
        while (fileNames.hasNext()){
            MultipartFile file = multipartRequest.getFile(fileNames.next());
            String fileName = file.getOriginalFilename();
            String suffix = fileName.substring(fileName.lastIndexOf("."));
            if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) {
                context.put("code", 0);
                context.put("message", "对不起,文件格式上传有误!");
            }
        }
        upload(multipartRequest, response, folder + "/",
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode(),
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(),
@@ -107,9 +83,6 @@
    }
    public static  FtpUtil ftp  = null;
    @ApiOperation(value = "上传文件到FTP")
    @RequestMapping(method= RequestMethod.POST,value="api/uploadFtp.do",headers = "content-type=multipart/form-data")
@@ -205,7 +178,7 @@
    public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
        String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
                       String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        Map<String, Object> context = new HashMap<>();
@@ -236,6 +209,11 @@
                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
                        context.put("code", 4000);
                        context.put("message", "对不起,文件格式\".dll\"上传有误!");
                        return;
                    }
                    if (StringUtils.equalsIgnoreCase(nfix, ".so")) {
                        context.put("code", 4000);
                        context.put("message", "对不起,文件格式\".so\"上传有误!");
                        return;
                    }
                    String nowDate = DateUtil.getNowShortDate();// å½“前时间(年月日)
@@ -297,6 +275,5 @@
            e.printStackTrace();
        }
    }
}