Merge remote-tracking branch 'origin/cc_20230520_partner' into cc_20230520_partner

This commit is contained in:
zhangchenbiao
2023-06-15 15:09:06 +08:00
75 changed files with 1434 additions and 520 deletions

View File

@@ -57,6 +57,10 @@ public enum ErrorCodeEnum {
ZONE_NOT_EXIST(500004, "战区不存在!", null), ZONE_NOT_EXIST(500004, "战区不存在!", null),
INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null), INTERVIEW_ENTER_FAIL(1021101, "进入面试间失败", null),
SIGN_FAIL(600000, "验签失败", null),
GET_ACCESSTOKEN_ERROR(600001, "获取小程序TOKEN错误", null),
NEW_MOBILE_HAS_EXIST(600002,"加盟商用户信息已存在",null),
; ;

View File

@@ -0,0 +1,43 @@
package com.cool.store.enums;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author wxp
* @FileName: UserPlatformTypeEnum
* @Description: 用户平台类型
* @date 2023-06-13 17:12
*/
public enum UserPlatformTypeEnum {
WECHAT("wechat", "微信"),
DOUYIN("douyin", "抖音"),
WEIBO("weibo", "微博");
private String code;
private String msg;
protected static final Map<String, UserPlatformTypeEnum> map = Arrays.stream(values()).collect(
Collectors.toMap(UserPlatformTypeEnum::getCode, Function.identity()));
UserPlatformTypeEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
public static UserPlatformTypeEnum getByCode(String code) {
return map.get(code);
}
}

View File

@@ -30,8 +30,8 @@ public enum WorkflowStageEnum {
public static final HashMap<String,String> getWorkflowStageMap(){ public static final HashMap<String,String> getWorkflowStageMap(){
HashMap<String, String> result = new HashMap<>(); HashMap<String, String> result = new HashMap<>();
result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode()); result.put(INTENT.getCode(),WorkflowStatusEnum.INTENT_3.getCode());
result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_6.getCode()); result.put(RESERVATION.getCode(),WorkflowStatusEnum.RESERVATION_7.getCode());
result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_6.getCode()); result.put(INTERVIEW.getCode(),WorkflowStatusEnum.INTERVIEW_7.getCode());
return result; return result;
} }

View File

@@ -14,16 +14,17 @@ public enum WorkflowStatusEnum {
//预约面试阶段 //预约面试阶段
RESERVATION_0("0","待预约"), RESERVATION_0("0","待预约"),
RESERVATION_6("6","到期未预约"), RESERVATION_1("1","待审核"),
RESERVATION_7("7","到期未预约"),
//合格资格面试 //合格资格面试
INTERVIEW_1("1","待面试"), INTERVIEW_2("2","待面试"),
INTERVIEW_2("2","已开始"), INTERVIEW_3("3","已开始"),
INTERVIEW_3("3","待审核"), INTERVIEW_4("4","待审核"),
INTERVIEW_4("4","审核中"), INTERVIEW_5("5","审核中"),
INTERVIEW_5("5","审核通过"), INTERVIEW_6("6","审核通过"),
INTERVIEW_6("6","拒绝"), INTERVIEW_7("7","拒绝"),
; ;

View File

@@ -0,0 +1,80 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cool.store.utils;
import com.cool.store.exception.ServiceException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* The type Md5 utils.
*/
public class Md5Utils {
/**
* logger.
*/
private static final Logger LOG = LoggerFactory.getLogger(Md5Utils.class);
/**
* Md 5 string.
*
* @param src the src
* @param charset the charset
*
* @return the string
*/
private static String md5(final String src, final String charset) {
MessageDigest md5;
StringBuilder hexValue = new StringBuilder(32);
try {
md5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new ServiceException(e.getMessage());
}
byte[] byteArray = new byte[0];
try {
byteArray = src.getBytes(charset);
} catch (UnsupportedEncodingException e) {
LOG.error(e.getMessage(), e);
}
byte[] md5Bytes = md5.digest(byteArray);
for (byte md5Byte : md5Bytes) {
int val = ((int) md5Byte) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
/**
* Md 5 string.
*
* @param src the src
* @return the string
*/
public static String md5(final String src) {
return md5(src, StandardCharsets.UTF_8.name());
}
}

View File

@@ -0,0 +1,22 @@
package com.cool.store.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Sha1Utils {
public static String getSha1(byte[] input) {
try {
MessageDigest mDigest = MessageDigest.getInstance("SHA1");
byte[] result = mDigest.digest(input);
StringBuffer sb = new StringBuffer();
for (byte b : result) {
sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
}

View File

@@ -0,0 +1,37 @@
package com.cool.store.dao;
import com.cool.store.entity.HyAdvancedSettingDO;
import com.cool.store.mapper.HyAdvancedSettingMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
/**
* @Author suzhuhong
* @Date 2023/6/14 20:33
* @Version 1.0
*/
@Repository
public class HyAdvancedSettingDAO {
@Resource
HyAdvancedSettingMapper hyAdvancedSettingMapper;
public int insertSelective(HyAdvancedSettingDO record){
return hyAdvancedSettingMapper.insertSelective(record);
}
public int updateByPrimaryKeySelective( HyAdvancedSettingDO record){
return hyAdvancedSettingMapper.updateByPrimaryKeySelective(record);
}
public HyAdvancedSettingDO selectAdvanceSetting(){
return hyAdvancedSettingMapper.selectAdvanceSetting();
}
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.dao;
import com.cool.store.entity.HyPartnerClerkDO;
import com.cool.store.mapper.HyPartnerClerkMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 10:09
* @Version 1.0
*/
@Repository
public class HyPartnerClerkDAO {
@Resource
HyPartnerClerkMapper hyPartnerClerkMapper;
public int insertSelective( HyPartnerClerkDO record){
return hyPartnerClerkMapper.insertSelective(record);
}
public int updateByPrimaryKeySelective(HyPartnerClerkDO record){
return hyPartnerClerkMapper.updateByPrimaryKeySelective(record);
}
public List<HyPartnerClerkDO> getHyPartnerClerkList(Long lineId){
return hyPartnerClerkMapper.getHyPartnerClerkList(lineId);
}
}

View File

@@ -5,7 +5,6 @@ import com.cool.store.mapper.HyPartnerUserInfoMapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -41,6 +40,18 @@ public class HyPartnerUserInfoDAO {
return hyPartnerUserInfoMapper.selectByPartnerId(partnerId); return hyPartnerUserInfoMapper.selectByPartnerId(partnerId);
} }
/**
* 根据mobile查询用户
* @param mobile
* @return
*/
public HyPartnerUserInfoDO selectByMobile(String mobile){
if (StringUtils.isEmpty(mobile)){
return null;
}
return hyPartnerUserInfoMapper.selectByMobile(mobile);
}
/** /**
* 根据PartnerIds批量查询用户 * 根据PartnerIds批量查询用户
* @param partnerIds * @param partnerIds
@@ -53,4 +64,9 @@ public class HyPartnerUserInfoDAO {
return hyPartnerUserInfoMapper.selectByPartnerIds(partnerIds); return hyPartnerUserInfoMapper.selectByPartnerIds(partnerIds);
} }
public int insertSelective( HyPartnerUserInfoDO record){
return hyPartnerUserInfoMapper.insertSelective(record);
}
} }

View File

@@ -0,0 +1,43 @@
package com.cool.store.dao;
import com.cool.store.entity.HyPartnerUserPlatformBindDO;
import com.cool.store.mapper.HyPartnerUserPlatformBindMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
/**
* @Author wxp
* @Date 2023/6/13 19:41
* @Version 1.0
*/
@Repository
public class HyPartnerUserPlatformBindDAO {
@Resource
HyPartnerUserPlatformBindMapper hyPartnerUserPlatformBindMapper;
public int insertSelective( HyPartnerUserPlatformBindDO record){
return hyPartnerUserPlatformBindMapper.insertSelective(record);
}
public int updateByPrimaryKeySelective(HyPartnerUserPlatformBindDO record){
return hyPartnerUserPlatformBindMapper.updateByPrimaryKeySelective(record);
}
public HyPartnerUserPlatformBindDO getByPlatformTypeAndUserId(String platformType, String platformUserId){
if(StringUtils.isAnyBlank(platformType, platformUserId)){
return null;
}
return hyPartnerUserPlatformBindMapper.getByPlatformTypeAndUserId(platformType, platformUserId);
}
public HyPartnerUserPlatformBindDO getByPartnerId(String partnerId){
if (StringUtils.isEmpty(partnerId)){
return null;
}
return hyPartnerUserPlatformBindMapper.getByPartnerId(partnerId);
}
}

View File

@@ -22,4 +22,10 @@ public interface HyAdvancedSettingMapper {
* dateTime:2023-05-29 03:49 * dateTime:2023-05-29 03:49
*/ */
int updateByPrimaryKeySelective(@Param("record") HyAdvancedSettingDO record); int updateByPrimaryKeySelective(@Param("record") HyAdvancedSettingDO record);
/**
* 查询高级设置
* @return
*/
HyAdvancedSettingDO selectAdvanceSetting();
} }

View File

@@ -3,6 +3,8 @@ package com.cool.store.mapper;
import com.cool.store.entity.HyPartnerClerkDO; import com.cool.store.entity.HyPartnerClerkDO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
* @date 2023-05-29 03:51 * @date 2023-05-29 03:51
@@ -22,4 +24,7 @@ public interface HyPartnerClerkMapper {
* dateTime:2023-05-29 03:51 * dateTime:2023-05-29 03:51
*/ */
int updateByPrimaryKeySelective(@Param("record") HyPartnerClerkDO record); int updateByPrimaryKeySelective(@Param("record") HyPartnerClerkDO record);
List<HyPartnerClerkDO> getHyPartnerClerkList(@Param("lineId") Long lineId);
} }

View File

@@ -32,6 +32,8 @@ public interface HyPartnerUserInfoMapper {
*/ */
HyPartnerUserInfoDO selectByPartnerId(@Param("partnerId") String partnerId); HyPartnerUserInfoDO selectByPartnerId(@Param("partnerId") String partnerId);
HyPartnerUserInfoDO selectByMobile(@Param("mobile") String mobile);
/** /**
* 根据partnerIDs批量查询用户信息 * 根据partnerIDs批量查询用户信息
* @param partnerIdList * @param partnerIdList

View File

@@ -1,5 +1,6 @@
package com.cool.store.mapper; package com.cool.store.mapper;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.entity.HyPartnerUserPlatformBindDO; import com.cool.store.entity.HyPartnerUserPlatformBindDO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -22,4 +23,9 @@ public interface HyPartnerUserPlatformBindMapper {
* dateTime:2023-05-29 03:53 * dateTime:2023-05-29 03:53
*/ */
int updateByPrimaryKeySelective(@Param("record") HyPartnerUserPlatformBindDO record); int updateByPrimaryKeySelective(@Param("record") HyPartnerUserPlatformBindDO record);
HyPartnerUserPlatformBindDO getByPlatformTypeAndUserId(@Param("platformType") String platformType, @Param("platformUserId") String platformUserId);
HyPartnerUserPlatformBindDO getByPartnerId(@Param("partnerId") String partnerId);
} }

View File

@@ -16,6 +16,13 @@
id, partner_url, allocation_roles, tencent_video_account, tencent_video_key, create_time, id, partner_url, allocation_roles, tencent_video_account, tencent_video_key, create_time,
update_time, create_user_id, update_user_id update_time, create_user_id, update_user_id
</sql> </sql>
<select id="selectAdvanceSetting" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from hy_advanced_setting
</select>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true"> <insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into hy_advanced_setting insert into hy_advanced_setting
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -73,32 +80,11 @@
</insert> </insert>
<update id="updateByPrimaryKeySelective"> <update id="updateByPrimaryKeySelective">
update hy_advanced_setting update hy_advanced_setting
<set> set
<if test="record.partnerUrl != null">
partner_url = #{record.partnerUrl}, partner_url = #{record.partnerUrl},
</if>
<if test="record.allocationRoles != null">
allocation_roles = #{record.allocationRoles},
</if>
<if test="record.tencentVideoAccount != null">
tencent_video_account = #{record.tencentVideoAccount}, tencent_video_account = #{record.tencentVideoAccount},
</if>
<if test="record.tencentVideoKey != null">
tencent_video_key = #{record.tencentVideoKey}, tencent_video_key = #{record.tencentVideoKey},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime},
</if>
<if test="record.createUserId != null">
create_user_id = #{record.createUserId},
</if>
<if test="record.updateUserId != null">
update_user_id = #{record.updateUserId}, update_user_id = #{record.updateUserId},
</if>
</set>
where id = #{record.id} where id = #{record.id}
</update> </update>
</mapper> </mapper>

View File

@@ -101,4 +101,11 @@
</set> </set>
where id = #{record.id} where id = #{record.id}
</update> </update>
<select id="getHyPartnerClerkList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from hy_partner_clerk
where partner_line_id = #{lineId}
</select>
</mapper> </mapper>

View File

@@ -25,6 +25,13 @@
where partner_id = #{partnerId} where partner_id = #{partnerId}
</select> </select>
<select id="selectByMobile" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List"></include>
from hy_partner_user_info
where mobile = #{mobile}
</select>
<select id="selectByPartnerIds" resultMap="BaseResultMap" > <select id="selectByPartnerIds" resultMap="BaseResultMap" >
select select

View File

@@ -80,4 +80,20 @@
</set> </set>
where id = #{record.id} where id = #{record.id}
</update> </update>
<select id="getByPlatformTypeAndUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from
hy_partner_user_platform_bind
where platform_type = #{platformType} and platform_user_id = #{platformUserId}
</select>
<select id="getByPartnerId" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List"></include>
from hy_partner_user_platform_bind
where partner_id = #{partnerId}
</select>
</mapper> </mapper>

View File

@@ -13,12 +13,12 @@ import javax.validation.constraints.NotBlank;
@Data @Data
public class MiniProgramLoginDTO { public class MiniProgramLoginDTO {
@NotBlank(message = "appid不能为空")
private String appid;
@NotBlank(message = "jsCode不能为空") @NotBlank(message = "jsCode不能为空")
private String jsCode; private String jsCode;
@NotBlank(message = "手机号code不能为空")
private String mobileCode;
@NotBlank(message = "用户encryptedData不能为空") @NotBlank(message = "用户encryptedData不能为空")
private String encryptedData; private String encryptedData;

View File

@@ -0,0 +1,36 @@
package com.cool.store.dto.wx;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
/**
* @author wxp
* @FileName: PhoneInfoDTO
* @Description:
* @date 2023-06-14 14:28
*/
@Data
public class PhoneInfoDTO extends WXBaseResultDTO{
@JSONField(name = "phone_info")
private PhoneInfo phoneInfo;
@Data
public static class PhoneInfo{
/**
* 用户绑定的手机号(国外手机号会有区号)
*/
private String phoneNumber;
/**
* 没有区号的手机号
*/
private String purePhoneNumber;
/**
* 区号
*/
private String countryCode;
}
}

View File

@@ -22,6 +22,4 @@ public class AdvancedSettingRequest {
private String tencentVideoKey; private String tencentVideoKey;
private List<String> roleIdList;
} }

View File

@@ -0,0 +1,23 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author wxp
* @Date 2023/5/31 11:01
* @Version 1.0
*/
@Data
@ApiModel
public class MobileUpdateRequest {
@NotBlank(message = "手机号code不能为空")
@ApiModelProperty("手机号code")
private String mobileCode;
}

View File

@@ -22,6 +22,4 @@ public class AdvancedSettingVO {
private String tencentVideoKey; private String tencentVideoKey;
private List<String> roleIdList;
} }

View File

@@ -14,7 +14,7 @@ import lombok.Data;
public class OrganizationVO { public class OrganizationVO {
@ApiModelProperty("id") @ApiModelProperty("id")
private Long id; private String id;
@ApiModelProperty("组织机构名称") @ApiModelProperty("组织机构名称")
private String name; private String name;

View File

@@ -3,6 +3,9 @@ package com.cool.store.vo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.Objects;
/** /**
* @Author suzhuhong * @Author suzhuhong
@@ -16,6 +19,9 @@ public class PartnerUserInfoVO {
@ApiModelProperty("ID") @ApiModelProperty("ID")
private Long id; private Long id;
@ApiModelProperty("hy_partner_user_info.partner_id")
private String partnerId;
@ApiModelProperty("手机号") @ApiModelProperty("手机号")
private String mobile; private String mobile;
@@ -37,4 +43,22 @@ public class PartnerUserInfoVO {
@ApiModelProperty("邀请码") @ApiModelProperty("邀请码")
private String inviteCode; private String inviteCode;
@ApiModelProperty("openid")
private String openid;
@ApiModelProperty("unionid")
private String unionId;
@ApiModelProperty("是否需要提交意向信息")
private Boolean isNeedSubmitWantInfo;
public Boolean getNeedSubmitWantInfo() {
if(StringUtils.isBlank(username)
|| StringUtils.isBlank(mobile)
|| StringUtils.isBlank(liveArea)
|| StringUtils.isBlank(wantShopArea)){
return true;
}
return false;
}
} }

View File

@@ -1,5 +1,6 @@
package com.cool.store.vo.wx; package com.cool.store.vo.wx;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@@ -15,4 +16,8 @@ public class CodeSessionVO {
private String openid; private String openid;
private String unionId; private String unionId;
private String partnerId;
private String mobile;
} }

View File

@@ -0,0 +1,34 @@
package com.cool.store.context;
import com.alibaba.fastjson.JSON;
import com.cool.store.vo.PartnerUserInfoVO;
import org.apache.commons.lang3.StringUtils;
/**
* C端登录用户信息
*/
public class PartnerUserHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static PartnerUserInfoVO getUser() {
String userStr = contextHolder.get();
if (StringUtils.isNotBlank(userStr)) {
return JSON.parseObject(userStr, PartnerUserInfoVO.class);
}
return new PartnerUserInfoVO();
}
public static void setUser(String user) {
contextHolder.set(user);
}
public static void removeUser(){
contextHolder.remove();
}
}

View File

@@ -1,16 +1,20 @@
package com.cool.store.http; package com.cool.store.http;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.dto.response.ResultDTO;
import com.cool.store.dto.wx.CodeSessionDTO; import com.cool.store.dto.wx.CodeSessionDTO;
import com.cool.store.dto.wx.PhoneInfoDTO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.utils.RestTemplateUtil; import com.cool.store.mq.util.HttpRestTemplateService;
import com.cool.store.utils.RedisUtilPool;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** /**
@@ -23,24 +27,81 @@ import java.util.Objects;
@Service @Service
public class WechatRest { public class WechatRest {
@Resource
private RedisUtilPool redisUtilPool;
@Resource
private HttpRestTemplateService httpRestTemplateService;
/**
* 小程序Token 地址
*/
String ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
/**
* 获取手机号码 地址
*/
String GET_USERPHONENUMBER = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s";
public CodeSessionDTO miniProgramJsCodeSession(String appId, String secret, String jsCode){ public CodeSessionDTO miniProgramJsCodeSession(String appId, String secret, String jsCode){
String url = "https://api.weixin.qq.com/sns/jscode2session"; String url = "https://api.weixin.qq.com/sns/jscode2session";
Map requestMap = new HashMap<String, String>(); HashMap requestMap = new HashMap();
requestMap.put("appId", appId); requestMap.put("appid", appId);
requestMap.put("secret", secret); requestMap.put("secret", secret);
requestMap.put("jsCode", jsCode); requestMap.put("js_code", jsCode);
ResponseEntity<CodeSessionDTO> responseEntity = null; requestMap.put("grant_type","authorization_code");
ResultDTO responseEntity = null;
try { try {
responseEntity = RestTemplateUtil.get(url, CodeSessionDTO.class); responseEntity = httpRestTemplateService.getForObject(url, ResultDTO.class, requestMap);
log.info("url:{}, response:{}", url, JSONObject.toJSONString(responseEntity)); log.info("WechatRest#miniProgramJsCodeSession, url:{}, response:{}", url, JSONObject.toJSONString(responseEntity));
if(Objects.nonNull(responseEntity.getBody()) && responseEntity.getBody().isSuccess()){ if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
return responseEntity.getBody(); return JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getData()), CodeSessionDTO.class);
} }
} catch (Exception e) { } catch (Exception e) {
log.info("调用微信服务异常{}", e); log.error("调用微信服务异常", e);
throw new ServiceException(ErrorCodeEnum.WX_SERVICE_ERROR);
} }
return null; return null;
} }
public String getAccessToken(String appId, String secret) {
String cacheAccessToken = "mini_" + appId;
String accessToken = redisUtilPool.getString(cacheAccessToken);
if (StringUtils.isNotBlank(accessToken)) {
return accessToken;
}
String reqUrl = String.format(ACCESS_TOKEN, appId, secret);
ResultDTO responseEntity = null;
try {
responseEntity = httpRestTemplateService.getForObject(reqUrl, ResultDTO.class, null);
log.info("WechatRest#getAccessToken, reqUrl:{}, response:{}", reqUrl, JSONObject.toJSONString(responseEntity));
if(Objects.nonNull(responseEntity.getData()) && responseEntity.isSuccess()){
JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(responseEntity.getData()));
String token = jsonObject.getString("access_token");
if (StringUtils.isBlank(token)) {
throw new ServiceException(ErrorCodeEnum.GET_ACCESSTOKEN_ERROR);
}
redisUtilPool.setString(cacheAccessToken, token, 7000);
accessToken = token;
}
} catch (Exception e) {
log.error("获取微信小程序token异常", e);
}
return accessToken;
}
public PhoneInfoDTO getUserPhoneNumber(String code, String accessToken){
String reqUrl = String.format(GET_USERPHONENUMBER, accessToken);
HashMap requestMap = new HashMap();
requestMap.put("code", code);
PhoneInfoDTO phoneInfoDTO = null;
try {
phoneInfoDTO = httpRestTemplateService.postForObject(reqUrl, requestMap, PhoneInfoDTO.class);
log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, JSONObject.toJSONString(phoneInfoDTO));
} catch (Exception e) {
log.error("获取手机号异常", e);
}
return phoneInfoDTO;
}
} }

View File

@@ -0,0 +1,33 @@
package com.cool.store.service;
import com.cool.store.request.AdvancedSettingRequest;
import com.cool.store.vo.AdvancedSettingVO;
/**
* @Author suzhuhong
* @Date 2023/6/14 20:31
* @Version 1.0
*/
public interface AdvanceSettingService {
/**
* addAdvanceSetting
* @param userId
* @param advancedSettingRequest
* @return
*/
Boolean addOrUpdateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest);
/**
* 查询高级设置详情
* @return
*/
AdvancedSettingVO getAdvancedSettingDetail();
}

View File

@@ -1,4 +1,4 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.vo.InterviewPlanVO; import com.cool.store.vo.InterviewPlanVO;
import com.cool.store.vo.InterviewScheduleInfoVO; import com.cool.store.vo.InterviewScheduleInfoVO;

View File

@@ -1,4 +1,4 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.request.AddTagsRequest; import com.cool.store.request.AddTagsRequest;

View File

@@ -0,0 +1,25 @@
package com.cool.store.service;
import com.cool.store.vo.PartnerClerkVO;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 11:05
* @Version 1.0
*/
public interface HyPartnerClerkService {
/**
* 通过线索ID查询店员信息
* @param lineId
* @return
*/
List<PartnerClerkVO> getPartnerClerkList(Long lineId);
}

View File

@@ -1,4 +1,4 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.request.BaseUserInfoRequest; import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.vo.PartnerIntentApplyInfoVO; import com.cool.store.vo.PartnerIntentApplyInfoVO;

View File

@@ -1,12 +1,9 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.vo.InterviewDetailInfoVO; import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerInterviewInfoVO;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**

View File

@@ -1,4 +1,4 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest; import com.cool.store.request.LineRequest;

View File

@@ -1,8 +1,10 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.request.OpenAreaRequest; import com.cool.store.request.OpenAreaRequest;
import com.cool.store.vo.OpenAreaTreeVO; import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO; import com.cool.store.vo.OpenAreaVO;
import com.cool.store.vo.OpenProvinceVO;
import com.github.pagehelper.PageInfo;
import java.util.List; import java.util.List;
@@ -19,7 +21,16 @@ public interface OpenAreaService {
* @param keyword * @param keyword
* @return * @return
*/ */
List<OpenAreaTreeVO> queryByKeyword(String keyword); List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag);
/**
* 查询所有的开放区域 城市树
* @param keyword
* @param flag
* @return
*/
List<OpenAreaTreeVO> queryAllOpenAreaByKeyword(String keyword,Boolean flag);
/** /**
@@ -38,4 +49,17 @@ public interface OpenAreaService {
*/ */
Boolean batchUpdate(String userId, OpenAreaRequest openAreaRequest); Boolean batchUpdate(String userId, OpenAreaRequest openAreaRequest);
PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber);
/**
* 查询可申请区域 可预约区域
* @return
*/
OpenProvinceVO getOpenProvince();
} }

View File

@@ -0,0 +1,5 @@
package com.cool.store.service;
public interface PartnerUserInfoService {
}

View File

@@ -1,10 +1,8 @@
package com.cool.store.service; package com.cool.store.service;
import com.cool.store.dto.wx.MiniProgramLoginDTO; import com.cool.store.dto.wx.MiniProgramLoginDTO;
import com.cool.store.dto.wx.MiniProgramMsgDTO; import com.cool.store.request.MobileUpdateRequest;
import com.cool.store.vo.wx.CodeSessionVO; import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.wx.MiniProgramUserVO;
/** /**
* @author zhangchenbiao * @author zhangchenbiao
* @FileName: WechatMiniAppService * @FileName: WechatMiniAppService
@@ -14,9 +12,9 @@ import com.cool.store.vo.wx.MiniProgramUserVO;
public interface WechatMiniAppService { public interface WechatMiniAppService {
CodeSessionVO miniProgramLogin(MiniProgramLoginDTO param); PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param);
CodeSessionVO getUserPhoneNumber(MiniProgramLoginDTO param); Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO);
CodeSessionVO queryMiniProgramUser(MiniProgramMsgDTO param); PartnerUserInfoVO getUserInfo(String mobile, String openId);
} }

View File

@@ -1,10 +1,9 @@
package com.cool.store.Service; package com.cool.store.service;
import com.cool.store.request.IntentAreaSettingRequest; import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.vo.ZoneCheckVO; import com.cool.store.vo.ZoneCheckVO;
import com.cool.store.vo.ZoneVO; import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.models.auth.In;
import java.util.List; import java.util.List;

View File

@@ -0,0 +1,63 @@
package com.cool.store.service.impl;
import com.cool.store.dao.HyAdvancedSettingDAO;
import com.cool.store.entity.HyAdvancedSettingDO;
import com.cool.store.request.AdvancedSettingRequest;
import com.cool.store.service.AdvanceSettingService;
import com.cool.store.vo.AdvancedSettingVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author suzhuhong
* @Date 2023/6/14 20:31
* @Version 1.0
*/
@Service
public class AdvanceSettingServiceImpl implements AdvanceSettingService {
@Resource
HyAdvancedSettingDAO hyAdvancedSettingDAO;
@Override
public Boolean addOrUpdateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest) {
if (advancedSettingRequest.getId()!=null){
//修改
updateAdvanceSetting(userId,advancedSettingRequest);
}
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
hyAdvancedSettingDO.setCreateUserId(userId);
hyAdvancedSettingDO.setPartnerUrl(advancedSettingRequest.getPartnerUrl());
hyAdvancedSettingDO.setTencentVideoAccount(advancedSettingRequest.getTencentVideoAccount());
hyAdvancedSettingDO.setTencentVideoKey(advancedSettingRequest.getTencentVideoKey());
hyAdvancedSettingDAO.insertSelective(hyAdvancedSettingDO);
return Boolean.TRUE;
}
private Boolean updateAdvanceSetting(String userId, AdvancedSettingRequest advancedSettingRequest) {
HyAdvancedSettingDO hyAdvancedSettingDO = new HyAdvancedSettingDO();
hyAdvancedSettingDO.setCreateUserId(userId);
hyAdvancedSettingDO.setId(advancedSettingRequest.getId());
hyAdvancedSettingDO.setPartnerUrl(advancedSettingRequest.getPartnerUrl());
hyAdvancedSettingDO.setTencentVideoAccount(advancedSettingRequest.getTencentVideoAccount());
hyAdvancedSettingDO.setTencentVideoKey(advancedSettingRequest.getTencentVideoKey());
hyAdvancedSettingDAO.updateByPrimaryKeySelective(hyAdvancedSettingDO);
return Boolean.TRUE;
}
@Override
public AdvancedSettingVO getAdvancedSettingDetail() {
HyAdvancedSettingDO hyAdvancedSettingDO = hyAdvancedSettingDAO.selectAdvanceSetting();
if (hyAdvancedSettingDO==null){
return null;
}
AdvancedSettingVO advancedSettingVO = new AdvancedSettingVO();
advancedSettingVO.setId(hyAdvancedSettingDO.getId());
advancedSettingVO.setPartnerUrl(hyAdvancedSettingDO.getPartnerUrl());
advancedSettingVO.setTencentVideoAccount(hyAdvancedSettingDO.getTencentVideoAccount());
advancedSettingVO.setTencentVideoKey(hyAdvancedSettingDO.getTencentVideoKey());
return advancedSettingVO;
}
}

View File

@@ -1,23 +1,21 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.cool.store.Service.DeskService;
import com.cool.store.Service.HyPartnerInterviewPlanService;
import com.cool.store.Service.HyPartnerLineInfoService;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerInterviewPlanDAO; import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO; import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO; import com.cool.store.dto.partner.SpecialDateRangeInterviewCountDTO;
import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.service.DeskService;
import com.cool.store.service.HyPartnerInterviewPlanService;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.InterviewDetailInfoVO; import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.InterviewPlanVO; import com.cool.store.vo.InterviewPlanVO;
import com.cool.store.vo.InterviewScheduleInfoVO; import com.cool.store.vo.InterviewScheduleInfoVO;
import com.cool.store.vo.StageCountVO; import com.cool.store.vo.StageCountVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.utils.DateUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;

View File

@@ -1,15 +1,14 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.Service.HyPartnerBaseInfoService;
import com.cool.store.dao.HyPartnerBaseInfoDAO; import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.entity.HyPartnerBaseInfoDO; import com.cool.store.entity.HyPartnerBaseInfoDO;
import com.cool.store.request.AddTagsRequest; import com.cool.store.request.AddTagsRequest;
import com.cool.store.service.HyPartnerBaseInfoService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collection;
/** /**
* @Author suzhuhong * @Author suzhuhong

View File

@@ -0,0 +1,41 @@
package com.cool.store.service.impl;
import com.cool.store.dao.HyPartnerClerkDAO;
import com.cool.store.entity.HyPartnerClerkDO;
import com.cool.store.service.HyPartnerClerkService;
import com.cool.store.vo.PartnerClerkVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 11:05
* @Version 1.0
*/
@Service
public class HyPartnerClerkImpl implements HyPartnerClerkService {
@Resource
HyPartnerClerkDAO hyPartnerClerkDAO;
@Override
public List<PartnerClerkVO> getPartnerClerkList(Long lineId) {
List<HyPartnerClerkDO> hyPartnerClerkList = hyPartnerClerkDAO.getHyPartnerClerkList(lineId);
List<PartnerClerkVO> result= new ArrayList<>();
hyPartnerClerkList.forEach(x->{
PartnerClerkVO partnerClerkVO = new PartnerClerkVO();
partnerClerkVO.setPartnerId(x.getPartnerId());
partnerClerkVO.setPartnerLineId(x.getPartnerLineId());
partnerClerkVO.setAge(x.getAge());
partnerClerkVO.setChooseReason(x.getChooseReason());
partnerClerkVO.setUsername(x.getUsername());
partnerClerkVO.setRelationship(x.getRelationship());
result.add(partnerClerkVO);
});
return result;
}
}

View File

@@ -1,21 +1,18 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import com.cool.store.Service.HyPartnerIntentInfoService;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerBaseInfoDAO; import com.cool.store.dao.HyPartnerBaseInfoDAO;
import com.cool.store.dao.HyPartnerIntentInfoDAO; import com.cool.store.dao.HyPartnerIntentInfoDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO; import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO; import com.cool.store.dto.partner.PartnerIntentApplyInfoDTO;
import com.cool.store.entity.HyPartnerIntentInfoDO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO; import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.HyPartnerBaseInfoMapper;
import com.cool.store.request.BaseUserInfoRequest; import com.cool.store.request.BaseUserInfoRequest;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.vo.PartnerIntentApplyInfoVO; import com.cool.store.vo.PartnerIntentApplyInfoVO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@@ -53,7 +50,7 @@ public class HyPartnerIntentInfoServiceImpl implements HyPartnerIntentInfoServic
workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode(); workflowStatus = WorkflowStatusEnum.RESERVATION_0.getCode();
} }
if (CommonConstants.FOLLOW.equals(type)) { if (CommonConstants.FOLLOW.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode(); workflowStatus = WorkflowStatusEnum.INTERVIEW_5.getCode();
} }
PageHelper.startPage(pageNumber,pageSize); PageHelper.startPage(pageNumber,pageSize);
PageInfo partnerIntentApplyInfo = hyPartnerIntentInfoDAO.selectPartnerIntentApplyInfoList(userId, WorkflowStageEnum.INTENT.getCode(), workflowStatus); PageInfo partnerIntentApplyInfo = hyPartnerIntentInfoDAO.selectPartnerIntentApplyInfoList(userId, WorkflowStageEnum.INTENT.getCode(), workflowStatus);

View File

@@ -1,7 +1,6 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.cool.store.Service.HyPartnerInterviewPlanService;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerInterviewPlanDAO; import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.HyPartnerUserInfoDAO;
@@ -10,6 +9,7 @@ import com.cool.store.entity.HyPartnerInterviewPlanDO;
import com.cool.store.entity.HyPartnerUserInfoDO; import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.enums.WorkflowStageEnum; import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum; import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.service.HyPartnerInterviewPlanService;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.vo.InterviewDetailInfoVO; import com.cool.store.vo.InterviewDetailInfoVO;
import com.cool.store.vo.PartnerInterviewInfoVO; import com.cool.store.vo.PartnerInterviewInfoVO;
@@ -20,7 +20,10 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -81,10 +84,10 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
public PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId, String type, Integer pageSize, Integer pageNumber) { public PageInfo<PartnerInterviewInfoVO> getQualifiedInterviewList(String userId, String type, Integer pageSize, Integer pageNumber) {
String workflowStatus = ""; String workflowStatus = "";
if (CommonConstants.PENDING.equals(type)) { if (CommonConstants.PENDING.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_3.getCode(); workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode();
} }
if (CommonConstants.FOLLOW.equals(type)) { if (CommonConstants.FOLLOW.equals(type)) {
workflowStatus = WorkflowStatusEnum.INTERVIEW_4.getCode(); workflowStatus = WorkflowStatusEnum.INTERVIEW_5.getCode();
} }
PageHelper.startPage(pageNumber,pageSize); PageHelper.startPage(pageNumber,pageSize);

View File

@@ -1,9 +1,7 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPObject;
import com.cool.store.Service.HyPartnerLineInfoService;
import com.cool.store.dao.HyPartnerLineInfoDAO; import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO; import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dto.partner.PartnerBlackListDTO; import com.cool.store.dto.partner.PartnerBlackListDTO;
@@ -18,6 +16,7 @@ import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.request.CloseFollowRequest; import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.LineRequest; import com.cool.store.request.LineRequest;
import com.cool.store.service.HyPartnerLineInfoService;
import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.CoolDateUtils;
import com.cool.store.utils.StringUtil; import com.cool.store.utils.StringUtil;
import com.cool.store.vo.BlackListVO; import com.cool.store.vo.BlackListVO;
@@ -26,16 +25,11 @@ import com.cool.store.vo.PartnerLineInfoVO;
import com.cool.store.vo.StageCountVO; import com.cool.store.vo.StageCountVO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.gson.JsonObject;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;

View File

@@ -1,10 +1,11 @@
package com.cool.store.service.Impl; package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.HyOpenAreaInfoDAO; import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dto.partner.ApplyReservationProvinceDTO; import com.cool.store.dto.partner.ApplyReservationProvinceDTO;
import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.request.OpenAreaRequest;
import com.cool.store.service.OpenAreaService; import com.cool.store.service.OpenAreaService;
import com.cool.store.vo.OpenAreaTreeVO; import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO; import com.cool.store.vo.OpenAreaVO;
@@ -20,61 +21,50 @@ import java.util.stream.Collectors;
/** /**
* @Author suzhuhong * @Author suzhuhong
* @Date 2023/6/6 14:28 * @Date 2023/6/13 22:11
* @Version 1.0 * @Version 1.0
*/ */
@Service @Service
public class OpenAreaServiceImpl implements OpenAreaService { public class OpenAreaServiceImpl implements OpenAreaService {
@Resource @Resource
HyOpenAreaInfoDAO hyOpenAreaInfoDAO; HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Override @Override
public PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) { public List<OpenAreaTreeVO> queryByKeyword(String keyword,Boolean flag) {
PageHelper.startPage(pageNumber,pageSize);
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
if (hyOpenAreaInfoDOPageInfo==null){
return new PageInfo<>();
}
List<OpenAreaVO> list = new ArrayList<>();
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList();
hyOpenAreaInfoDOList.stream().forEach(x->{
list.add(convertDoToVo(x));
});
hyOpenAreaInfoDOPageInfo.setList(list);
return hyOpenAreaInfoDOPageInfo;
}
/**
* List DO->VO
* @param hyOpenAreaInfoDO
* @return
*/
private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
OpenAreaVO openAreaVO = new OpenAreaVO();
openAreaVO.setId(hyOpenAreaInfoDO.getId());
openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName());
openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId());
openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath());
openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus());
openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner());
openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner());
return openAreaVO;
}
@Override
public List<OpenAreaTreeVO> queryByKeyword(String keyword) {
//先查出所有的一级菜单 //先查出所有的一级菜单
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel(); List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
//查询关键字下所有的数据 原始的数据 //查询关键字下所有的数据 原始的数据
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,Boolean.FALSE); List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
Set<Long> longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet());
hyOpenAreaInfoDOS.stream().forEach(x->{
Long parentId = x.getParentId();
if (parentId!=null&&!longSet.contains(parentId)){
//添加到集合中
longSet.add(x.getParentId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = longHyOpenAreaInfoDOMap.get(parentId);
hyOpenAreaInfoDOS.add(hyOpenAreaInfoDO);
}
});
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
return openAreaTreeVOS;
}
@Override
public List<OpenAreaTreeVO> queryAllOpenAreaByKeyword(String keyword, Boolean flag) {
//先查出所有的一级菜单
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
//查询关键字下所有的数据 原始的数据
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,flag);
Map<Long, HyOpenAreaInfoDO> hyMap = hyOpenAreaInfoDOS.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); Map<Long, HyOpenAreaInfoDO> hyMap = hyOpenAreaInfoDOS.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
@@ -114,6 +104,43 @@ public class OpenAreaServiceImpl implements OpenAreaService {
return openAreaTreeVOS; return openAreaTreeVOS;
} }
@Override
public List<OpenAreaVO> getChildrenList(String type, Long parentId) {
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId);
List<OpenAreaVO> result = new ArrayList<>();
childrenList.stream().forEach(x->{
OpenAreaVO openAreaVO = convertDoToVo(x);
result.add(openAreaVO);
});
return result;
}
@Override
public Boolean batchUpdate(String userId, OpenAreaRequest request) {
//修改选择的区域
hyOpenAreaInfoDAO.batchUpdateById(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
//修改选择区域的子区域
hyOpenAreaInfoDAO.batchUpdateByParentId(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
return Boolean.TRUE;
}
@Override
public PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) {
PageHelper.startPage(pageNumber,pageSize);
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
if (hyOpenAreaInfoDOPageInfo==null){
return new PageInfo<>();
}
List<OpenAreaVO> list = new ArrayList<>();
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList();
hyOpenAreaInfoDOList.stream().forEach(x->{
list.add(convertDoToVo(x));
});
hyOpenAreaInfoDOPageInfo.setList(list);
return hyOpenAreaInfoDOPageInfo;
}
@Override @Override
public OpenProvinceVO getOpenProvince() { public OpenProvinceVO getOpenProvince() {
//先查出所有的一级菜单 //先查出所有的一级菜单
@@ -139,20 +166,21 @@ public class OpenAreaServiceImpl implements OpenAreaService {
return openProvinceVO; return openProvinceVO;
} }
@Override private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
public List<OpenAreaVO> getChildrenList(String type, Long parentId) { OpenAreaVO openAreaVO = new OpenAreaVO();
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId); openAreaVO.setId(hyOpenAreaInfoDO.getId());
List<OpenAreaVO> result = new ArrayList<>(); openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName());
childrenList.stream().forEach(x->{ openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId());
OpenAreaVO openAreaVO = convertDoToVo(x); openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath());
result.add(openAreaVO); openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus());
}); openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner());
return result; openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner());
return openAreaVO;
} }
/** /**
* 组装城市 * 构建
* @param arr * @param arr
* @param id * @param id
* @param pid * @param pid

View File

@@ -0,0 +1,14 @@
package com.cool.store.service.impl;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.service.PartnerUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PartnerUserInfoServiceImpl implements PartnerUserInfoService {
@Autowired
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
}

View File

@@ -1,24 +1,36 @@
package com.cool.store.service.impl; package com.cool.store.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
import com.cool.store.dao.HyPartnerUserPlatformBindDAO;
import com.cool.store.dto.wx.CodeSessionDTO; import com.cool.store.dto.wx.CodeSessionDTO;
import com.cool.store.dto.wx.MiniProgramLoginDTO; import com.cool.store.dto.wx.MiniProgramLoginDTO;
import com.cool.store.dto.wx.MiniProgramMsgDTO; import com.cool.store.dto.wx.PhoneInfoDTO;
import com.cool.store.entity.HyPartnerLineInfoDO;
import com.cool.store.entity.HyPartnerUserInfoDO;
import com.cool.store.entity.HyPartnerUserPlatformBindDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.UserPlatformTypeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.http.WechatRest; import com.cool.store.http.WechatRest;
import com.cool.store.request.MobileUpdateRequest;
import com.cool.store.service.WechatMiniAppService; import com.cool.store.service.WechatMiniAppService;
import com.cool.store.utils.AesUtil; import com.cool.store.utils.AesUtil;
import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.RedisUtilPool;
import com.cool.store.vo.wx.CodeSessionVO; import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.wx.MiniProgramUserVO; import com.cool.store.vo.wx.MiniProgramUserVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.Date;
import java.util.Objects; import java.util.Objects;
/** /**
@@ -35,49 +47,105 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService {
private RedisUtilPool redisUtilPool; private RedisUtilPool redisUtilPool;
@Resource @Resource
private WechatRest wechatRest; private WechatRest wechatRest;
@Resource
private HyPartnerUserInfoDAO hyPartnerUserInfoDAO;
@Resource
private HyPartnerUserPlatformBindDAO hyPartnerUserPlatformBindDAO;
@Resource
private HyPartnerLineInfoDAO hyPartnerLineInfoDAO;
@Value("${weixin.appId}")
private String wxAppId;
@Value("${weixin.appSecret}")
private String wxAppSecret;
@Override @Override
public CodeSessionVO miniProgramLogin(MiniProgramLoginDTO param) { public PartnerUserInfoVO miniProgramLogin(MiniProgramLoginDTO param) {
PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO();
String jsCode = param.getJsCode(); String jsCode = param.getJsCode();
String lockKey = "codeSession:" + param.getAppid() + CommonConstants.MOSAICS + jsCode; String lockKey = "codeSession:" + wxAppId + CommonConstants.MOSAICS + jsCode;
boolean lock = redisUtilPool.lock(lockKey); boolean lock = redisUtilPool.lock(lockKey);
if (!lock) { if (!lock) {
throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME); throw new ServiceException(ErrorCodeEnum.OPERATION_OVER_TIME);
} }
String appid = param.getAppid(); CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(wxAppId, wxAppSecret, jsCode);
String secret = redisUtilPool.getString(MessageFormat.format(CommonConstants.WX_APP_SECRET_KEY, appid));
if(StringUtils.isBlank(secret)){
throw new ServiceException(ErrorCodeEnum.GET_APP_SECRET_ERROR);
}
CodeSessionDTO codeSession = wechatRest.miniProgramJsCodeSession(appid, secret, jsCode);
String openid = codeSession.getOpenid(); String openid = codeSession.getOpenid();
String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, appid, openid); String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, wxAppId, openid);
redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS); redisUtilPool.setString(sessionCacheKey, codeSession.getSessionKey(), CommonConstants.THREE_DAY_SECONDS);
String unionId = codeSession.getUnionId(); String unionId = codeSession.getUnionId();
log.info("小程序登录:{}", unionId); log.info("小程序登录:{}", unionId);
//todo 保存授权信息 判断是否第一次授权 log.info("sessionKey {}", codeSession.getSessionKey());
return CodeSessionVO.builder().openid(openid).unionId(unionId).build(); String decryptUser = AesUtil.decryptWechat(codeSession.getSessionKey(), param.getEncryptedData(), param.getIvStr());
}
@Override
public CodeSessionVO getUserPhoneNumber(MiniProgramLoginDTO param) {
return null;
}
@Override
public CodeSessionVO queryMiniProgramUser(MiniProgramMsgDTO param) {
String sessionCacheKey = MessageFormat.format(CommonConstants.MINI_PROGRAM_SESSION_KEY, param.getAppid(), param.getOpenid());
String sessionKey = redisUtilPool.getString(sessionCacheKey);
if (StringUtils.isBlank(sessionKey)) {
throw new ServiceException(ErrorCodeEnum.SESSION_KEY_ERROR);
}
log.info("sessionKey {}", sessionKey);
String decryptUser = AesUtil.decryptWechat(sessionKey, param.getEncryptedData(), param.getIvStr());
log.info("解密用户信息:{}", decryptUser); log.info("解密用户信息:{}", decryptUser);
MiniProgramUserVO miniProgramUser = JSON.parseObject(decryptUser, MiniProgramUserVO.class); MiniProgramUserVO miniProgramUser = JSON.parseObject(decryptUser, MiniProgramUserVO.class);
if (Objects.isNull(miniProgramUser)) { if (Objects.isNull(miniProgramUser)) {
throw new ServiceException(ErrorCodeEnum.GET_WECHAT_USER_INFO_FAIL); throw new ServiceException(ErrorCodeEnum.GET_WECHAT_USER_INFO_FAIL);
} }
return new CodeSessionVO(); // 获取小程序token
String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret);
// 获取手机号码
PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(param.getMobileCode(), accessToken);
if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
if(hyPartnerUserInfoDO == null){
hyPartnerUserInfoDO = new HyPartnerUserInfoDO();
hyPartnerUserInfoDO.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
hyPartnerUserInfoDO.setUsername(miniProgramUser.getNickName());
hyPartnerUserInfoDO.setPartnerId(UUIDUtils.get32UUID());
hyPartnerUserInfoDAO.insertSelective(hyPartnerUserInfoDO);
// 生成一条线索
HyPartnerLineInfoDO hyPartnerLineInfoDO = new HyPartnerLineInfoDO();
hyPartnerLineInfoDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
hyPartnerLineInfoDAO.insertSelective(hyPartnerLineInfoDO);
} }
HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPlatformTypeAndUserId(UserPlatformTypeEnum.WECHAT.getCode(), openid);
if(hyPartnerUserPlatformBindDO == null){
hyPartnerUserPlatformBindDO = new HyPartnerUserPlatformBindDO();
hyPartnerUserPlatformBindDO.setPlatformType(UserPlatformTypeEnum.WECHAT.getCode());
hyPartnerUserPlatformBindDO.setPlatformUserId(openid);
hyPartnerUserPlatformBindDO.setBindTime(new Date());
hyPartnerUserPlatformBindDO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
hyPartnerUserPlatformBindDAO.insertSelective(hyPartnerUserPlatformBindDO);
}
userInfoVO.setPartnerId(hyPartnerUserInfoDO.getPartnerId());
userInfoVO.setMobile(hyPartnerUserInfoDO.getMobile());
userInfoVO.setUsername(hyPartnerUserInfoDO.getUsername());
}
userInfoVO.setOpenid(openid);
userInfoVO.setUnionId(unionId);
return userInfoVO;
}
@Override
public Boolean updateUserPhoneNumber(MobileUpdateRequest request, PartnerUserInfoVO userInfoVO) {
HyPartnerUserInfoDO oldUserInfo = hyPartnerUserInfoDAO.selectByMobile(userInfoVO.getMobile());
if (oldUserInfo == null) {
throw new ServiceException(ErrorCodeEnum.PARTNER_USER_NOT_EXIST);
}
// 获取小程序token
String accessToken = wechatRest.getAccessToken(wxAppId, wxAppSecret);
// 获取手机号码
PhoneInfoDTO phoneInfoDTO = wechatRest.getUserPhoneNumber(request.getMobileCode(), accessToken);
if(phoneInfoDTO != null && phoneInfoDTO.getPhoneInfo() != null && StringUtils.isNotBlank(phoneInfoDTO.getPhoneInfo().getPhoneNumber())){
HyPartnerUserInfoDO newUserInfo = hyPartnerUserInfoDAO.selectByMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
if (newUserInfo != null) {
throw new ServiceException(ErrorCodeEnum.NEW_MOBILE_HAS_EXIST);
}
oldUserInfo.setMobile(phoneInfoDTO.getPhoneInfo().getPhoneNumber());
hyPartnerUserInfoDAO.updateByPrimaryKeySelective(oldUserInfo);
}
return true;
}
@Override
public PartnerUserInfoVO getUserInfo(String mobile, String openId) {
PartnerUserInfoVO userInfoVO = new PartnerUserInfoVO();
HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(mobile);
BeanUtil.copyProperties(hyPartnerUserInfoDO, userInfoVO);
HyPartnerUserPlatformBindDO hyPartnerUserPlatformBindDO = hyPartnerUserPlatformBindDAO.getByPartnerId(hyPartnerUserInfoDO.getPartnerId());
userInfoVO.setOpenid(hyPartnerUserPlatformBindDO.getPlatformUserId());
return userInfoVO;
}
} }

View File

@@ -1,11 +1,7 @@
package com.cool.store.Service.impl; package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.Service.ZoneService; import com.cool.store.dao.*;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.dao.HyIntendDevMappingDAO;
import com.cool.store.dao.HyIntendDevZoneInfoDAO;
import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.dto.partner.ZoneCheckDTO; import com.cool.store.dto.partner.ZoneCheckDTO;
import com.cool.store.entity.EnterpriseUserDO; import com.cool.store.entity.EnterpriseUserDO;
import com.cool.store.entity.HyIntendDevZoneInfoDO; import com.cool.store.entity.HyIntendDevZoneInfoDO;
@@ -13,22 +9,20 @@ import com.cool.store.entity.HyIntendDevelopementMappingDO;
import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException; import com.cool.store.exception.ServiceException;
import com.cool.store.mapper.HyIntendDevelopementMappingMapper;
import com.cool.store.request.IntentAreaSettingRequest; import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.service.ZoneService;
import com.cool.store.utils.StringUtil;
import com.cool.store.vo.OpenAreaSingleVO;
import com.cool.store.vo.OrganizationVO;
import com.cool.store.vo.ZoneCheckVO; import com.cool.store.vo.ZoneCheckVO;
import com.cool.store.vo.ZoneVO; import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Array; import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -50,6 +44,8 @@ public class ZoneServiceImpl implements ZoneService {
HyOpenAreaInfoDAO openAreaInfoDAO; HyOpenAreaInfoDAO openAreaInfoDAO;
@Resource @Resource
EnterpriseUserDAO enterpriseUserDAO; EnterpriseUserDAO enterpriseUserDAO;
@Resource
RegionDAO regionDAO;
@@ -119,14 +115,19 @@ public class ZoneServiceImpl implements ZoneService {
List<String> updateUserIdList = list.stream().map(HyIntendDevZoneInfoDO::getUpdateUserId).collect(Collectors.toList()); List<String> updateUserIdList = list.stream().map(HyIntendDevZoneInfoDO::getUpdateUserId).collect(Collectors.toList());
List<EnterpriseUserDO> updateUserList = enterpriseUserDAO.getUserInfoByUserIds(updateUserIdList); List<EnterpriseUserDO> updateUserList = enterpriseUserDAO.getUserInfoByUserIds(updateUserIdList);
Map<String, String> updateUserNameMap = updateUserList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName)); Map<String, String> updateUserNameMap = updateUserList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName));
list.forEach(x->{
ZoneVO zoneVO = new ZoneVO();
zoneVO.setZoneName(x.getZoneName());
zoneVO.setId(x.getId());
zoneVO.setUpdateTime(x.getUpdateTime());
zoneVO.setUpdateUserId(x.getUpdateUserId()); Set<String> regionSet = new HashSet<>();
list.stream().forEach(x->{
if (StringUtil.isNotEmpty(x.getAssociatedRegionId())){
List<String> regionIds = JSONObject.parseArray(x.getAssociatedRegionId(), String.class);
regionSet.addAll(regionIds);
}
});
Map<String, String> regionMap = regionDAO.getRegionMap(new ArrayList<>(regionSet));
list.forEach(x->{
ZoneVO zoneVO = handleZoneVO(regionMap, x);
zoneVO.setUpdateUserName(updateUserNameMap.get(x.getUpdateUserId())); zoneVO.setUpdateUserName(updateUserNameMap.get(x.getUpdateUserId()));
result.add(zoneVO);
}); });
hyIntendDevZoneInfoList.setList(result); hyIntendDevZoneInfoList.setList(result);
return hyIntendDevZoneInfoList; return hyIntendDevZoneInfoList;
@@ -138,8 +139,44 @@ public class ZoneServiceImpl implements ZoneService {
if (hyIntendDevZoneInfoDO==null){ if (hyIntendDevZoneInfoDO==null){
throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST); throw new ServiceException(ErrorCodeEnum.ZONE_NOT_EXIST);
} }
ZoneVO zoneVO = null;
EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.getUserInfoById(hyIntendDevZoneInfoDO.getUpdateUserId());
if (StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())){
List<String> regionIds = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
Map<String, String> regionMap = regionDAO.getRegionMap(regionIds);
zoneVO = handleZoneVO(regionMap, hyIntendDevZoneInfoDO);
zoneVO.setUpdateUserName(enterpriseUserDO.getName());
}
List<ZoneCheckDTO> zoneCheckDTOS = hyIntendDevMappingDAO.selectByMappingIdList(Arrays.asList(zoneId));
List<OpenAreaSingleVO> openAreaVOS = new ArrayList<>();
zoneCheckDTOS.forEach(x->{
OpenAreaSingleVO openAreaSingleVO = new OpenAreaSingleVO();
openAreaSingleVO.setId(x.getOpenAreaMappingId());
openAreaVOS.add(openAreaSingleVO);
});
zoneVO.setOpenAreaVOS(openAreaVOS);
return zoneVO;
}
return null;
private ZoneVO handleZoneVO(Map<String, String> regionMap,HyIntendDevZoneInfoDO hyIntendDevZoneInfoDO){
ZoneVO zoneVO = new ZoneVO();
zoneVO.setZoneName(hyIntendDevZoneInfoDO.getZoneName());
zoneVO.setId(hyIntendDevZoneInfoDO.getId());
zoneVO.setUpdateTime(hyIntendDevZoneInfoDO.getUpdateTime());
List<OrganizationVO> organizationVOS = new ArrayList<>();
if (StringUtil.isNotEmpty(hyIntendDevZoneInfoDO.getAssociatedRegionId())){
List<String> regionIds = JSONObject.parseArray(hyIntendDevZoneInfoDO.getAssociatedRegionId(), String.class);
regionIds.forEach(regionId->{
OrganizationVO organizationVO = new OrganizationVO();
organizationVO.setId(regionId);
organizationVO.setName(regionMap.get(regionId));
organizationVOS.add(organizationVO);
});
}
zoneVO.setOrgVos(organizationVOS);
zoneVO.setUpdateUserId(hyIntendDevZoneInfoDO.getUpdateUserId());
return zoneVO;
} }
@Override @Override

View File

@@ -1,148 +0,0 @@
package com.cool.store.Service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.Service.OpenAreaService;
import com.cool.store.dao.HyOpenAreaInfoDAO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.request.OpenAreaRequest;
import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author suzhuhong
* @Date 2023/6/13 22:11
* @Version 1.0
*/
@Service
public class OpenAreaServiceImpl implements OpenAreaService {
@Resource
HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Override
public List<OpenAreaTreeVO> queryByKeyword(String keyword) {
//先查出所有的一级菜单
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
//查询关键字下所有的数据 原始的数据
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword,Boolean.TRUE);
Set<Long> longSet = hyOpenAreaInfoDOS.stream().map(HyOpenAreaInfoDO::getId).collect(Collectors.toSet());
hyOpenAreaInfoDOS.stream().forEach(x->{
Long parentId = x.getParentId();
if (parentId!=null&&!longSet.contains(parentId)){
//添加到集合中
longSet.add(x.getParentId());
HyOpenAreaInfoDO hyOpenAreaInfoDO = longHyOpenAreaInfoDOMap.get(parentId);
hyOpenAreaInfoDOS.add(hyOpenAreaInfoDO);
}
});
JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" );
List<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
return openAreaTreeVOS;
}
@Override
public List<OpenAreaVO> getChildrenList(String type, Long parentId) {
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId);
List<OpenAreaVO> result = new ArrayList<>();
childrenList.stream().forEach(x->{
OpenAreaVO openAreaVO = convertDoToVo(x);
result.add(openAreaVO);
});
return result;
}
@Override
public Boolean batchUpdate(String userId, OpenAreaRequest request) {
//修改选择的区域
hyOpenAreaInfoDAO.batchUpdateById(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
//修改选择区域的子区域
hyOpenAreaInfoDAO.batchUpdateByParentId(request.getBackgroundBanner(),request.getDetailBanner(),request.getStatus(),userId,request.getIdList());
return Boolean.TRUE;
}
private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){
OpenAreaVO openAreaVO = new OpenAreaVO();
openAreaVO.setId(hyOpenAreaInfoDO.getId());
openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName());
openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId());
openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath());
openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus());
openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner());
openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner());
return openAreaVO;
}
/**
* 构建树
* @param arr
* @param id
* @param pid
* @param child
* @return
*/
public static JSONArray buildTree(JSONArray arr, String id, String pid, String child) {
//新建一个JSONArray来接收组装成树形结构的返回值
JSONArray jsonArray = new JSONArray();
//新建一个JSONObject对象
JSONObject hash = new JSONObject();
//将数组转换为object格式
for (int i = 0; i < arr.size(); i++) {
//获取当前的JSON对象
JSONObject json = (JSONObject) arr.get(i);
//把当前id作为键当前JSON对象作为值 put回hash这个Object对象中
//这里的put方法类似于map的put方法
hash.put(json.getString(id), json);
}
//遍历结果集
for (int j = 0; j < arr.size(); j++) {
//单条记录
JSONObject aVal = (JSONObject) arr.get(j);
//在hash中取出key为单条记录中pid的值
String pidStr = "";
//如果父级id不等于null
if (aVal.get(pid) != null) {
pidStr = aVal.get(pid).toString();
}
//从hash这个对象中获取父级对象 parent
JSONObject hashParent = (JSONObject) hash.get(pidStr);
//如果记录的pid存在则说明它有父节点将她添加到孩子节点的集合中
if (hashParent != null) {
//检查是否有child属性
if (hashParent.get(child) != null) {
//有子节点 则先将子节点取出
JSONArray children = (JSONArray) hashParent.get(child);
//然后把当前这个对象放进子节点之中
children.add(aVal);
//最后把子节点在放回父节点之中
hashParent.put(child, children);
} else {
//无子节点 则新建一个子节点
JSONArray children = new JSONArray();
//然后再把当前对象放进去
children.add(aVal);
//最后在放回父节点之中
hashParent.put(child, children);
}
} else {
jsonArray.add(aVal);
}
}
return jsonArray;
}
}

View File

@@ -0,0 +1,45 @@
package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.dao.HyAdvancedSettingDAO;
import com.cool.store.request.AdvancedSettingRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.AdvanceSettingService;
import com.cool.store.vo.AdvancedSettingVO;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @Author suzhuhong
* @Date 2023/6/14 20:48
* @Version 1.0
*/
@RestController
@Slf4j
public class AdvanceSettingController {
@Resource
AdvanceSettingService advanceSettingService;
@GetMapping(path = "/getAdvanceSetting")
@ApiOperation("查询企业高级设置")
public ResponseResult<AdvancedSettingVO> getAdvanceSetting(){
return ResponseResult.success(advanceSettingService.getAdvancedSettingDetail());
}
@GetMapping(path = "/changeAdvanceSetting")
@ApiOperation("新增或者修改高级设置")
public ResponseResult<Boolean> getAdvanceSetting(@RequestBody AdvancedSettingRequest advancedSettingRequest){
return ResponseResult.success(advanceSettingService.addOrUpdateAdvanceSetting(CurrentUserHolder.getUserId(),advancedSettingRequest));
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.controller;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.HyPartnerClerkService;
import com.cool.store.vo.PartnerClerkVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 11:13
* @Version 1.0
*/
@RestController
@Slf4j
public class ClerkController {
@Resource
HyPartnerClerkService hyPartnerClerkService;
@GetMapping(path = "/queryPartnerClerkInfoList")
@ApiOperation("根据线索ID 查询店员列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
})
public ResponseResult<List<PartnerClerkVO>> queryPartnerClerkInfoList(@RequestParam(value = "lineId",required = false)Long lineId){
return ResponseResult.success(hyPartnerClerkService.getPartnerClerkList(lineId));
}
}

View File

@@ -1,9 +1,10 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.cool.store.Service.*; import com.cool.store.context.CurrentUserHolder;
import com.cool.store.enums.LineStatusEnum; import com.cool.store.enums.LineStatusEnum;
import com.cool.store.request.*; import com.cool.store.request.*;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.*;
import com.cool.store.vo.*; import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@@ -35,15 +36,14 @@ public class DeskController {
HyPartnerLineInfoService hyPartnerLineInfoService; HyPartnerLineInfoService hyPartnerLineInfoService;
@Resource @Resource
HyPartnerBaseInfoService hyPartnerBaseInfoService; HyPartnerBaseInfoService hyPartnerBaseInfoService;
@Resource
OpenAreaService openAreaService;
@GetMapping(path = "/interviewSchedule") @GetMapping(path = "/interviewSchedule")
@ApiOperation("面试日程信息 面试信息有限 不做分页") @ApiOperation("面试日程信息 面试信息有限 不做分页")
public ResponseResult<InterviewScheduleInfoVO> interviewSchedule(@RequestParam(value = "userId",required = false) String userId, public ResponseResult<InterviewScheduleInfoVO> interviewSchedule(@RequestParam(value = "selectedData",required = false) Date selectedData){
@RequestParam(value = "selectedData",required = false) Date selectedData){
String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(deskService.interviewSchedule(userId,selectedData)); return ResponseResult.success(deskService.interviewSchedule(userId,selectedData));
} }
@@ -60,10 +60,8 @@ public class DeskController {
@GetMapping(path = "/queryInterviewPlan") @GetMapping(path = "/queryInterviewPlan")
@ApiOperation("是否有面试与临期线索") @ApiOperation("是否有面试与临期线索")
@ApiImplicitParams({ public ResponseResult<InterviewPlanVO> queryInterviewPlanVO(){
@ApiImplicitParam(name = "userId", value = "招商经理ID", required = false), String userId = CurrentUserHolder.getUserId();
})
public ResponseResult<InterviewPlanVO> queryInterviewPlanVO(@RequestParam(value = "userId",required = false)String userId){
return ResponseResult.success(deskService.getInterviewPlan(userId)); return ResponseResult.success(deskService.getInterviewPlan(userId));
} }
@@ -78,7 +76,7 @@ public class DeskController {
public ResponseResult<PageInfo<PartnerIntentApplyInfoVO>> queryIntentApplyList(@RequestParam(value = "type",required = false)String type, public ResponseResult<PageInfo<PartnerIntentApplyInfoVO>> queryIntentApplyList(@RequestParam(value = "type",required = false)String type,
@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
String userId = ""; String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyList(userId,type,pageSize,pageNumber)); return ResponseResult.success(hyPartnerIntentInfoService.getPartnerIntentApplyList(userId,type,pageSize,pageNumber));
} }
@@ -88,7 +86,7 @@ public class DeskController {
public ResponseResult<PageInfo<PartnerInterviewInfoVO>> querySubscribeInterviewTimeList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, public ResponseResult<PageInfo<PartnerInterviewInfoVO>> querySubscribeInterviewTimeList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
String userId = ""; String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(hyPartnerInterviewPlanService.getPartnerInterviewInfoList(userId,pageSize,pageNumber)); return ResponseResult.success(hyPartnerInterviewPlanService.getPartnerInterviewInfoList(userId,pageSize,pageNumber));
} }
@@ -100,7 +98,7 @@ public class DeskController {
public ResponseResult<PageInfo<PartnerInterviewInfoVO>> queryQualifiedInterviewList(@RequestParam(value = "type",required = false)String type, public ResponseResult<PageInfo<PartnerInterviewInfoVO>> queryQualifiedInterviewList(@RequestParam(value = "type",required = false)String type,
@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
String userId = ""; String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(hyPartnerInterviewPlanService.getQualifiedInterviewList(userId,type,pageSize,pageNumber)); return ResponseResult.success(hyPartnerInterviewPlanService.getQualifiedInterviewList(userId,type,pageSize,pageNumber));
} }
@@ -158,7 +156,7 @@ public class DeskController {
public ResponseResult<PageInfo<PartnerLineInfoVO>> lastMonthCloseLine(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, public ResponseResult<PageInfo<PartnerLineInfoVO>> lastMonthCloseLine(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
String userId = ""; String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(hyPartnerLineInfoService.lastMonthCloseLine(userId,pageSize,pageNumber)); return ResponseResult.success(hyPartnerLineInfoService.lastMonthCloseLine(userId,pageSize,pageNumber));
} }
@@ -242,74 +240,4 @@ public class DeskController {
return ResponseResult.success(hyPartnerBaseInfoService.addTags(addTagsRequest)); return ResponseResult.success(hyPartnerBaseInfoService.addTags(addTagsRequest));
} }
// TODO: 2023/6/13 添加根据线索查询店员接口列表接口
// @GetMapping(path = "/queryPartnerIntentApplyInfo")
// @ApiOperation("查看意向审核信息")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "lineId", value = "线索ID", required = false),
// })
// public ResponseResult<PartnerSummaryInfoVO> queryPartnerIntentApplyInfo(@RequestParam(value = "lineId",required = false)Long lineId){
//
// return ResponseResult.success();
// }
@GetMapping(path = "/getOpenAreaTree")
@ApiOperation("开放城市树-搜索城市")
@ApiImplicitParams({
@ApiImplicitParam(name = "keyWord", value = "搜索关键字", required = false)
})
public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaTree(@RequestParam(value = "keyWord",required = false)String keyWord){
return ResponseResult.success(openAreaService.queryByKeyword(keyWord));
}
@GetMapping(path = "/getOpenAreaList")
@ApiOperation("开放城市树-子列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "parentId", value = "父区域名称", required = false),
@ApiImplicitParam(name = "type", value = "可预约-reservation 可申请-apply ", required = false)
})
public ResponseResult<List<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "parentId",required = false)Long parentId,
@RequestParam(value = "type",required = false)String type){
return ResponseResult.success(openAreaService.getChildrenList(type,parentId));
}
@PostMapping(path = "/changeOpenAreaStatus")
@ApiOperation("变更开放区域状态")
public ResponseResult<Boolean> changeOpenAreaStatus(@RequestBody OpenAreaRequest openAreaRequest){
String userId = "";
return ResponseResult.success(openAreaService.batchUpdate( userId, openAreaRequest));
}
@GetMapping(path = "/getAdvanceSetting")
@ApiOperation("查询企业高级设置")
public ResponseResult<AdvancedSettingVO> getAdvanceSetting(){
return ResponseResult.success();
}
@GetMapping(path = "/changeAdvanceSetting")
@ApiOperation("新增或者修改高级设置")
public ResponseResult<AdvancedSettingVO> getAdvanceSetting(@RequestBody AdvancedSettingRequest advancedSettingRequest){
return ResponseResult.success();
}
} }

View File

@@ -0,0 +1,67 @@
package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.request.OpenAreaRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.OpenAreaService;
import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/15 9:49
* @Version 1.0
*/
@RestController
public class OpenAreaController {
@Resource
OpenAreaService openAreaService;
@GetMapping(path = "/getOpenAreaTree")
@ApiOperation("开放城市树-搜索城市 到第二节点")
@ApiImplicitParams({
@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false)
})
public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaTree(@RequestParam(value = "keyword",required = false)String keyword){
return ResponseResult.success(openAreaService.queryByKeyword(keyword,Boolean.TRUE));
}
@GetMapping(path = "/getAllOpenAreaTree")
@ApiOperation("开放城市树-所有节点")
@ApiImplicitParams({
@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false)
})
public ResponseResult<List<OpenAreaTreeVO>> getAllOpenAreaTree(@RequestParam(value = "keyword",required = false)String keyword){
return ResponseResult.success(openAreaService.queryAllOpenAreaByKeyword(keyword,Boolean.FALSE));
}
@GetMapping(path = "/getOpenAreaList")
@ApiOperation("开放城市树-子列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "parentId", value = "父区域名称", required = false),
@ApiImplicitParam(name = "type", value = "可预约-reservation 可申请-apply ", required = false)
})
public ResponseResult<List<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "parentId",required = false)Long parentId,
@RequestParam(value = "type",required = false)String type){
return ResponseResult.success(openAreaService.getChildrenList(type,parentId));
}
@PostMapping(path = "/changeOpenAreaStatus")
@ApiOperation("变更开放区域状态")
public ResponseResult<Boolean> changeOpenAreaStatus(@RequestBody OpenAreaRequest openAreaRequest){
String userId = CurrentUserHolder.getUserId();
return ResponseResult.success(openAreaService.batchUpdate( userId, openAreaRequest));
}
}

View File

@@ -1,7 +1,9 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.request.IntentAreaSettingRequest; import com.cool.store.request.IntentAreaSettingRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.ZoneService;
import com.cool.store.vo.ZoneVO; import com.cool.store.vo.ZoneVO;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@@ -10,6 +12,8 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/** /**
* @Author suzhuhong * @Author suzhuhong
* @Date 2023/6/14 11:40 * @Date 2023/6/14 11:40
@@ -19,19 +23,20 @@ import org.springframework.web.bind.annotation.*;
@Slf4j @Slf4j
public class ZoneController { public class ZoneController {
@Resource
ZoneService zoneService;
@PostMapping(path = "/addZone") @PostMapping(path = "/addZone")
@ApiOperation("新建意向战区/开发战区") @ApiOperation("新建意向战区/开发战区")
public ResponseResult<Boolean> addZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){ public ResponseResult<Boolean> addZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){
return ResponseResult.success(zoneService.addZone( CurrentUserHolder.getUserId(),intentAreaSettingRequest));
return ResponseResult.success();
} }
@PostMapping(path = "/updateZone") @PostMapping(path = "/updateZone")
@ApiOperation("编辑意向战区/开发战区") @ApiOperation("编辑意向战区/开发战区")
public ResponseResult<Boolean> updateZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){ public ResponseResult<Boolean> updateZone(@RequestBody IntentAreaSettingRequest intentAreaSettingRequest){
return ResponseResult.success(); return ResponseResult.success(zoneService.updateZone(CurrentUserHolder.getUserId(),intentAreaSettingRequest));
} }
@GetMapping(path = "/getZoneList") @GetMapping(path = "/getZoneList")
@@ -42,7 +47,7 @@ public class ZoneController {
public ResponseResult<PageInfo<ZoneVO>> getZoneList(@RequestParam(value = "type",required = false)String type, public ResponseResult<PageInfo<ZoneVO>> getZoneList(@RequestParam(value = "type",required = false)String type,
@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
return ResponseResult.success(); return ResponseResult.success(zoneService.getZoneList(type,pageSize,pageNumber));
} }
@@ -52,6 +57,15 @@ public class ZoneController {
@ApiImplicitParam(name = "id", value = "id", required = false), @ApiImplicitParam(name = "id", value = "id", required = false),
}) })
public ResponseResult<Boolean> deletedZoneList(@RequestParam(value = "id",required = false)Long id){ public ResponseResult<Boolean> deletedZoneList(@RequestParam(value = "id",required = false)Long id){
return ResponseResult.success(); return ResponseResult.success(zoneService.deletedZone(id));
}
@GetMapping(path = "/zoneDetail")
@ApiOperation("战区详情")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "id", required = false),
})
public ResponseResult<ZoneVO> zoneDetail(@RequestParam(value = "id",required = false)Long id){
return ResponseResult.success(zoneService.zoneDetail(id));
} }
} }

View File

@@ -56,6 +56,11 @@ cdn.url=https://testhsaypic.coolstore.cn
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
#xxljob配置 #xxljob配置
xxl.job.admin.addresses = http://10.7.53.224:10001/xxl-job-admin xxl.job.admin.addresses = http://10.7.53.224:10001/xxl-job-admin
xxl.job.executor.appname = ${spring.application.name} xxl.job.executor.appname = ${spring.application.name}

View File

@@ -53,6 +53,11 @@ corp.id = 171cddee76471740
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
#xxljob配置 #xxljob配置
xxl.job.admin.addresses = https://djob.coolstore.cn/xxl-job-admin xxl.job.admin.addresses = https://djob.coolstore.cn/xxl-job-admin
xxl.job.executor.appname = ${spring.application.name} xxl.job.executor.appname = ${spring.application.name}

View File

@@ -52,3 +52,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -59,6 +59,11 @@ cdn.url=https://testhsaypic.coolstore.cn
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411
xxl.job.admin.addresses = xxl.job.admin.addresses =
xxl.job.executor.appname = ${spring.application.name} xxl.job.executor.appname = ${spring.application.name}
xxl.job.executor.ip = xxl.job.executor.ip =

View File

@@ -52,3 +52,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -52,3 +52,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -52,3 +52,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411

View File

@@ -0,0 +1,126 @@
package com.cool.store.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.WechatMiniAppService;
import com.cool.store.utils.AesUtil;
import com.cool.store.utils.Md5Utils;
import com.cool.store.utils.Sha1Utils;
import com.cool.store.vo.PartnerUserInfoVO;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @author ydw
* @Description 权限校验
* @date 2020/1/15
*/
@Component
@Order(3)
@Slf4j
public class SignValidateFilter implements Filter {
@Resource
private WechatMiniAppService wechatMiniAppService;
@Value("${signKey}")
private String signKey;
private static AntPathMatcher matcher = new AntPathMatcher();
private static List<String> patternList =
Lists.newArrayList("/web/check/ok","/check/ok",
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**","/partner/pc/feiShuLogin","/partner/pc/oss/getUploadFileConfig",
"/**/swagger*/**", "/**/webjars/**");
/**
* @param uri
* @return boolean
* @throws
* @Title excludePath
* @Description 是否是放行的请求
*/
private boolean excludePath(String uri) {
for (String pattern : patternList) {
if (matcher.match(pattern, uri)) {
return true;
}
}
return false;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
String uri = request.getRequestURI();
String method = request.getMethod();
String userStr = "";
boolean isInWhiteList = excludePath(uri);
log.info("url:{}", uri);
if ( !isInWhiteList && !method.equals("OPTIONS")) {
Map<String, String[]> parameterMap = request.getParameterMap();
String jsonStr = JSONObject.toJSONString(parameterMap);
JSONObject obj = JSONObject.parseObject(jsonStr);
log.info("params:{}", obj.toJSONString());
String params = obj.toJSONString();
String sign = request.getHeader("SIGN");
String nonce = request.getHeader("NONCE");
String timestamp = request.getHeader("TIMESTAMP");
String aesPhone = request.getHeader("PHONE");
String openid = request.getHeader("OPENID");
String phone = AesUtil.decrypt(aesPhone, signKey);
String md5Value = phone + Md5Utils.md5(Md5Utils.md5(openid));
log.info("sign:{}, nonce:{}, timestamp:{},aesPhone:{}, openid:{}, 解密后的手机号:{}, md5Value:{}",
sign, nonce, timestamp, aesPhone, openid, phone, md5Value);
String signStr = timestamp + nonce + params + signKey + md5Value;
String newSign = Sha1Utils.getSha1(signStr.getBytes());
log.info("newSign: {}", newSign);
// 前后端验签不等
if (!newSign.equals(sign)) {
response.setStatus(HttpStatus.OK.value());
response.getWriter().write(JSON.toJSONString(
ResponseResult.fail(ErrorCodeEnum.SIGN_FAIL)));
return;
}
PartnerUserInfoVO partnerUserInfoVO = wechatMiniAppService.getUserInfo(phone, openid);
if(partnerUserInfoVO != null){
userStr = JSONObject.toJSONString(partnerUserInfoVO);
log.info("url:{}, userStr:{}", uri, userStr);
}
}
try {
PartnerUserHolder.setUser(userStr);
filterChain.doFilter(servletRequest, servletResponse);
} finally {
PartnerUserHolder.removeUser();
}
}
@Override
public void destroy() {
}
}

View File

@@ -1,11 +1,12 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dto.wx.MiniProgramLoginDTO; import com.cool.store.dto.wx.MiniProgramLoginDTO;
import com.cool.store.dto.wx.MiniProgramMsgDTO; import com.cool.store.request.MobileUpdateRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.WechatMiniAppService; import com.cool.store.service.WechatMiniAppService;
import com.cool.store.vo.wx.CodeSessionVO; import com.cool.store.vo.PartnerUserInfoVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -29,23 +30,24 @@ public class MiniProgramAppController {
private WechatMiniAppService wechatMiniAppService; private WechatMiniAppService wechatMiniAppService;
@ApiOperation("小程序登录") @ApiOperation("小程序登录")
@PostMapping("/code/login") @PostMapping("/login")
public ResponseResult<CodeSessionVO> login(@RequestBody @Valid MiniProgramLoginDTO param) { public ResponseResult<PartnerUserInfoVO> login(@RequestBody @Valid MiniProgramLoginDTO param) {
CodeSessionVO codeSessionVO = wechatMiniAppService.miniProgramLogin(param); PartnerUserInfoVO userInfoVO = wechatMiniAppService.miniProgramLogin(param);
return ResponseResult.success(codeSessionVO); return ResponseResult.success(userInfoVO);
} }
@ApiOperation("获取手机号") @ApiOperation("更新手机号")
@PostMapping("/code/getUserPhoneNumber") @PostMapping("/updateUserPhoneNumber")
public ResponseResult<CodeSessionVO> getUserPhoneNumber(@RequestBody @Valid MiniProgramLoginDTO param) { public ResponseResult<Boolean> updateUserPhoneNumber(@RequestBody @Valid MobileUpdateRequest request) {
CodeSessionVO codeSessionVO = wechatMiniAppService.getUserPhoneNumber(param); PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser();
return ResponseResult.success(codeSessionVO); return ResponseResult.success(wechatMiniAppService.updateUserPhoneNumber(request, userInfoVO));
} }
@ApiOperation("获取小程序用户信息") @ApiOperation("根据mobile和openId获取用户信息")
@PostMapping("/user") @PostMapping("/getUserInfo")
public ResponseResult<CodeSessionVO> queryMiniProgramUser(@RequestBody @Valid MiniProgramMsgDTO param) { public ResponseResult<PartnerUserInfoVO> getUserInfo(@RequestParam(value = "mobile",required = false) String mobile,
CodeSessionVO codeSessionVO = wechatMiniAppService.queryMiniProgramUser(param); @RequestParam(value = "openId",required = false) String openId){
return ResponseResult.success(codeSessionVO); PartnerUserInfoVO userInfoVO = wechatMiniAppService.getUserInfo(mobile, openId);
return ResponseResult.success(userInfoVO);
} }
} }

View File

@@ -1,11 +1,7 @@
package com.cool.store.controller; package com.cool.store.controller;
import com.alibaba.fastjson.JSONArray;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.common.filter.impl.Op;
import com.cool.store.enums.RocketMqTagEnum;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.OpenAreaService; import com.cool.store.service.OpenAreaService;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.OpenAreaTreeVO; import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO; import com.cool.store.vo.OpenAreaVO;
import com.cool.store.vo.OpenProvinceVO; import com.cool.store.vo.OpenProvinceVO;
@@ -55,7 +51,7 @@ public class OpenAreaController {
@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false), @ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false),
}) })
public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword){ public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword){
List<OpenAreaTreeVO> openAreaTreeVOS = openAreaService.queryByKeyword(keyword); List<OpenAreaTreeVO> openAreaTreeVOS = openAreaService.queryAllOpenAreaByKeyword(keyword,Boolean.FALSE);
return ResponseResult.success(openAreaTreeVOS); return ResponseResult.success(openAreaTreeVOS);
} }

View File

@@ -5,6 +5,8 @@ import com.cool.store.request.PartnerBaseInfoRequest;
import com.cool.store.request.PartnerClerkInfoRequest; import com.cool.store.request.PartnerClerkInfoRequest;
import com.cool.store.request.PartnerIntentInfoRequest; import com.cool.store.request.PartnerIntentInfoRequest;
import com.cool.store.response.ResponseResult; import com.cool.store.response.ResponseResult;
import com.cool.store.service.HyPartnerIntentInfoService;
import com.cool.store.service.PartnerUserInfoService;
import com.cool.store.vo.*; import com.cool.store.vo.*;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -14,6 +16,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
/** /**
@@ -27,13 +30,16 @@ import java.util.List;
@Api(tags = "加盟商信息") @Api(tags = "加盟商信息")
public class PartnerController { public class PartnerController {
@Resource
private PartnerUserInfoService partnerUserInfoService;
@Resource
HyPartnerIntentInfoService hyPartnerIntentInfoService;
@PostMapping(path = "/applyBaseInfo") @PostMapping(path = "/applyBaseInfo")
@ApiOperation("提交基本信息") @ApiOperation("提交基本信息")
public ResponseResult<Boolean> applyBaseInfo(@RequestBody BaseUserInfoRequest baseUserInfoRequest){ public ResponseResult<Boolean> applyBaseInfo(@RequestBody BaseUserInfoRequest baseUserInfoRequest){
return ResponseResult.success(hyPartnerIntentInfoService.updatePartnerIntentInfo(baseUserInfoRequest));
return ResponseResult.success();
} }

View File

@@ -1,50 +0,0 @@
package com.cool.store.service;
import com.alibaba.fastjson.JSONArray;
import com.cool.store.vo.OpenAreaTreeVO;
import com.cool.store.vo.OpenAreaVO;
import com.cool.store.vo.OpenProvinceVO;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2023/6/6 14:27
* @Version 1.0
*/
public interface OpenAreaService {
/**
* 重点城市
* @param pageSize
* @param pageNumber
* @return
*/
PageInfo<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize,Integer pageNumber);
/**
* 查询全部
* @return
*/
List<OpenAreaTreeVO> queryByKeyword(String keyword);
/**
* 查询可申请区域 可预约区域
* @return
*/
OpenProvinceVO getOpenProvince();
/**
* 查询子列表
* @param type
* @param parentId
* @return
*/
List<OpenAreaVO> getChildrenList(String type,Long parentId);
}

View File

@@ -55,3 +55,8 @@ cdn.url=https://testhsaypic.coolstore.cn
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411

View File

@@ -52,3 +52,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411

View File

@@ -50,3 +50,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -59,3 +59,8 @@ cdn.url=https://testhsaypic.coolstore.cn
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411

View File

@@ -50,3 +50,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -50,3 +50,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=d851f2a9ac90474abecdc2fbb148d4d7

View File

@@ -50,3 +50,8 @@ corp.id = 171cddee76471740
#TRTC #TRTC
trtc.sdkAppId=1400811820 trtc.sdkAppId=1400811820
trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219 trtc.secretKey=4854bab106c2ca2a2fda16a8c966933e28a078a34e458999d6227e8cd8ab8219
weixin.appId=wx6f984e535e571818
weixin.appSecret=245a483747e6e9f8762d3e8539cf0318
signKey=77fea013c3a6459685b83c21a2fc3411