Browse Source

增加小程序登陆

lilt085163@126.com 3 years ago
parent
commit
a226630c53

+ 21 - 0
src/main/java/com/care/client/config/PlatformConfig.java

@@ -0,0 +1,21 @@
+package com.care.client.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 描述:
+ *
+ * @autho:wenskys
+ * @create 2020/5/11 0:05
+ **/
+@Configuration
+public class PlatformConfig {
+
+    @Bean
+    @ConfigurationProperties(prefix = "wx.pinanbao")
+    public WxConfig wxConfig() {
+        return new WxConfig();
+    }
+}

+ 13 - 0
src/main/java/com/care/client/config/WxConfig.java

@@ -0,0 +1,13 @@
+package com.care.client.config;
+
+import lombok.Data;
+
+@Data
+public class WxConfig {
+
+    private String codeUrl;
+    private String tokenUrl;
+    private String appId;
+    private String secret;
+
+}

+ 77 - 0
src/main/java/com/care/client/passport/AbstractPassportService.java

@@ -0,0 +1,77 @@
+package com.care.client.passport;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import com.care.client.vo.MemberInfoVO;
+import com.care.client.vo.MemberInitParams;
+import com.care.common.cache.RedisKeyConstant;
+import com.care.common.cache.RedisUtil;
+import com.care.common.entity.CareMemberInfo;
+import com.care.common.service.CareMemberInfoService;
+import com.care.common.util.Result;
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class AbstractPassportService {
+
+    @Resource
+    private RedisUtil redisUtil;
+
+
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
+
+    public Result<Object> cache(MemberInitParams params) {
+        String token = IdUtil.fastUUID();
+        // cache member
+        CareMemberInfo member = null;
+
+        if ("wx".equalsIgnoreCase(params.getLoginType())) {
+            member = careMemberInfoService.detailByOpenid(params.getOpenid());
+            if (member == null) {
+                member = careMemberInfoService.detailByPhone(params.getPhone());
+                if (member == null) {
+                    return Result.error("账号不存在!");
+                }
+            }
+        } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
+            member = careMemberInfoService.detailByPhone(params.getPhone());
+            if (member == null) {
+                return Result.error("账号密码不匹配");
+            }
+            if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), member.getPassword())) {
+                return Result.error("账号密码不匹配");
+            }
+        }
+        MemberInfoVO memberInfoVO = new MemberInfoVO();
+        BeanUtil.copyProperties(member,memberInfoVO);
+        redisUtil.hset(RedisKeyConstant.PINANBAO_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.LOGIN_INFO_TIME);
+
+        Map<String,Object> data = Maps.newHashMap();
+        data.put("token", token);
+        data.put("member", member);
+        return Result.success(data);
+    }
+
+    public MemberInfoVO refreshMember(String token) {
+        if (StrUtil.isNotBlank(token) && redisUtil.hHasKey(RedisKeyConstant.PINANBAO_LOGIN_INFO, token)) {
+            MemberInfoVO oldMemberInfoVo = (MemberInfoVO)redisUtil.hget(RedisKeyConstant.PINANBAO_LOGIN_INFO, token);
+            CareMemberInfo member = careMemberInfoService.getById(oldMemberInfoVo.getId());
+            if (oldMemberInfoVo != null && member != null) {
+                MemberInfoVO memberInfoVO = new MemberInfoVO();
+                BeanUtil.copyProperties(member,memberInfoVO);
+                redisUtil.hset(RedisKeyConstant.PINANBAO_LOGIN_INFO, token, memberInfoVO, RedisKeyConstant.LOGIN_INFO_TIME);
+                return memberInfoVO;
+            }
+        }
+        return null;
+    }
+}

+ 92 - 0
src/main/java/com/care/client/passport/PassportService.java

@@ -0,0 +1,92 @@
+package com.care.client.passport;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Service
+public class PassportService {
+
+    /*@Resource
+    private RedisUtil redisUtil;
+    @Resource
+    private WxPassportService wxPassportService;
+    @Resource
+    private MemberOpenService memberOpenService;
+
+    private final Cache<Long, String> timeoutCache = CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build();
+
+    public ResultData login(MemberInitParams params) {
+        CheckUtils.valueIsNull(params, "platform");
+
+        if ("wx".equalsIgnoreCase(params.getLoginType())) {
+            CheckUtils.valueIsNull(params, "code");
+        } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
+            CheckUtils.valueIsNull(params, "phone");
+            CheckUtils.valueIsNull(params, "password");
+        }
+        ResultData result;
+        switch (params.getPlatform()) {
+            case WX:
+                result = wxPassportService.login(params);
+                break;
+            default:
+                throw BaseException.newException(PassportException.APP_NOT_SUPPORT, "platform[{0}] not support", params.getPlatform());
+        }
+        return result;
+    }
+
+    public void logout(String token) {
+        CheckUtils.notNull(token, "token");
+        MemberInfoVO open = (MemberInfoVO) redisUtil.hget(RedisKeyConstant.LOGIN_INFO, token);
+        if (open != null) {
+            redisUtil.hset(RedisKeyConstant.LOGIN_INFO, token, null);
+        }
+    }
+
+    public MemberInfoVO checkToken(String token) {
+        CheckUtils.notNull(token, "token");
+        if (!redisUtil.hHasKey(RedisKeyConstant.LOGIN_INFO, token)) {
+            throw BaseException.newException(PassportException.INVALID_TOKEN, "TOKEN WAS WRONG :[{0}]", token);
+        }
+        return (MemberInfoVO) redisUtil.hget(RedisKeyConstant.LOGIN_INFO, token);
+    }
+
+    public boolean notMatchMemberField(String token) {
+        CheckUtils.notNull(token, "token");
+        if (!redisUtil.hHasKey(RedisKeyConstant.LOGIN_INFO, token)) {
+            throw BaseException.newException(PassportException.INVALID_TOKEN, "TOKEN WAS WRONG :[{0}]", token);
+        }
+        MemberInfoVO oldMemberInfoVO = (MemberInfoVO) redisUtil.hget(RedisKeyConstant.LOGIN_INFO, token);
+        try {
+            String newKey = timeoutCache.get(oldMemberInfoVO.getId(), () -> {
+                MemberOpenDO dbMemberOpenDO = memberOpenService.get(oldMemberInfoVO.getId());
+                StringBuffer sb = new StringBuffer();
+                if (dbMemberOpenDO != null && dbMemberOpenDO.getMember() != null) {
+                    sb.append("isReadVip").append(dbMemberOpenDO.getMember().getIsReadVip());
+                    sb.append("isCourseVip").append(dbMemberOpenDO.getMember().getIsCourseVip());
+                    sb.append("readVipExpired").append(dbMemberOpenDO.getMember().getReadVipExpired());
+                    sb.append("courseVipExpired").append(dbMemberOpenDO.getMember().getCourseVipExpired());
+                    sb.append("deposited").append(dbMemberOpenDO.getMember().getDeposited());
+                }
+                return sb.toString();
+            });
+            StringBuffer oldSb = new StringBuffer();
+            oldSb.append("isReadVip").append(oldMemberInfoVO.getIsReadVip());
+            oldSb.append("isCourseVip").append(oldMemberInfoVO.getIsCourseVip());
+            oldSb.append("readVipExpired").append(oldMemberInfoVO.getReadVipExpired());
+            oldSb.append("courseVipExpired").append(oldMemberInfoVO.getCourseVipExpired());
+            oldSb.append("deposited").append(oldMemberInfoVO.getDeposited());
+            return !newKey.equalsIgnoreCase(oldSb.toString());
+        } catch (ExecutionException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }*/
+}

+ 155 - 0
src/main/java/com/care/client/passport/WxPassportService.java

@@ -0,0 +1,155 @@
+package com.care.client.passport;
+
+import cn.hutool.core.util.StrUtil;
+import com.care.client.config.PlatformConfig;
+import com.care.client.vo.MemberInitParams;
+import com.care.common.cache.RedisUtil;
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.Field;
+import java.text.MessageFormat;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class WxPassportService extends AbstractPassportService {
+
+   /* @Resource
+    private RedisUtil redisUtil;
+
+    @Resource
+    private PlatformConfig platformConfig;
+
+    Gson gson = new Gson();
+
+    public ResultData login(MemberInitParams params) {
+        WxConfig wxConfig = platformConfig.wxConfig();
+        // 解析codeUrl
+        String codeUrl = MessageFormat.format(wxConfig.getCodeUrl(), wxConfig.getAppId(), wxConfig.getSecret(), params.getCode());
+        // 通过codeUrl获取openid
+        JSONObject jsonObject = this.httpGet(codeUrl);
+        log.warn("-----jsonObject:[{}]", jsonObject);
+
+        String openid = jsonObject.getString("openid");
+        String sessionKey = jsonObject.getString("session_key"); // TODO 暂时用不到
+        log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
+
+        // TODO 测试阶段先注释掉
+        params.setOpenid(openid);
+        return cache(params);
+    }
+
+    private JSONObject httpGet(String url) {
+        HttpResponse response = HttpRequest.get(url).send();
+        String json = response.charset("utf-8").bodyText();
+        JSONObject jsonObject = JSON.parseObject(json);
+        return jsonObject;
+    }
+
+    private String accessToken() {
+        WxConfig wxConfig = platformConfig.wxConfig();
+        String access_token = (String) redisUtil.hget(RedisKeyConstant.WX_ACCESS_TOKEN, wxConfig.getAppId());
+        if (access_token != null) {
+            return access_token;
+        }
+        return this.flushWxToken();
+    }
+
+    private String flushWxToken() {
+        WxConfig wxConfig = platformConfig.wxConfig();
+        // 解析codeUrl
+        String tokenUrl = MessageFormat.format(wxConfig.getTokenUrl(), wxConfig.getAppId(), wxConfig.getSecret());
+        // 通过codeUrl获取openid
+        JSONObject jsonObject = this.httpGet(tokenUrl);
+        String access_token = jsonObject.getString("access_token");
+        redisUtil.hset(RedisKeyConstant.WX_ACCESS_TOKEN, wxConfig.getAppId(), access_token, RedisKeyConstant.WX_ACCESS_TOKEN_TIME);
+        return access_token;
+    }
+
+    private JSONObject httpPost(String url, String content) {
+        HttpRequest httpRequest = HttpRequest.post(url).bodyText(content, "application/json", "utf-8");
+        HttpResponse res = httpRequest.send();
+        String json = res.charset("utf-8").bodyText();
+        JSONObject jsonObject = JSON.parseObject(json);
+        return jsonObject;
+    }
+
+    public  int msgSecCheck(String content){
+        WxConfig wxConfig = platformConfig.wxConfig();
+        int result = 0;
+        String url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + this.accessToken();
+        Map<String ,String> map = Maps.newHashMap();
+        map.put("content",content);
+        String resBody = cn.hutool.http.HttpRequest.post(url).header(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8").body(gson.toJson(map)).execute().body();
+        if (StrUtil.isNotEmpty(resBody)){
+            JsonObject object = gson.fromJson(resBody, JsonObject.class);
+            JsonElement ele = object.get("errcode");
+            if (ele != null){
+                if (ele.getAsInt() == 0 ){
+                    result = 1;
+                }else if(ele.getAsInt() == 87014){
+                    result = -1;
+                }else{
+                    result = 9999;
+                }
+            }
+        }
+        return result;
+    }
+    public boolean msgCheck(Object object) {
+        boolean flag = true;
+        try{
+            StringBuffer text = new StringBuffer();
+            Field[] fields = object.getClass().getDeclaredFields();
+            for (Field field : fields){
+                field.setAccessible( true );
+                if (field.isAnnotationPresent(MsgSecAnnotation.class)){
+                    if (null != field.get(object)){
+                        String value = (String)field.get(object);
+                        if (StrUtil.isNotBlank(value)){
+                            text.append(value).append("|");
+                        }
+                    }
+                }
+
+            }
+            if (StrUtil.isNotEmpty(text.toString())){
+                int  secCheck = this.msgSecCheck(text.toString());
+                if (-1 == secCheck){
+                    flag = false;
+                }else{
+                    flag = true;
+                }
+            }
+
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }catch (Exception e){
+
+        }
+        return  flag;
+    }
+
+    public static void main(String[] args) {
+        String code = "0117jbby1dPIob0szIdy1Xidby17jbby";
+        String appid = "wxfaea3a9cf3b92ded";
+        String secret = "36bd50d9a65c2950c00d85338fc76c25";
+        String url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code";
+        String codeUrl = MessageFormat.format(url, appid, secret, code);
+        // 通过codeUrl获取openid
+        HttpResponse response = HttpRequest.get(codeUrl).send();
+        String json = response.charset("utf-8").bodyText();
+        JSONObject jsonObject = JSON.parseObject(json);
+
+        log.warn("-----jsonObject:[{}], ", jsonObject);
+        String openid = jsonObject.getString("openid");
+        String sessionKey = jsonObject.getString("session_key"); // TODO 暂时用不到
+        log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
+    }*/
+}

+ 67 - 0
src/main/java/com/care/client/vo/MemberInfoVO.java

@@ -0,0 +1,67 @@
+package com.care.client.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 用户登录信息(CareMemberInfo)实体类
+ *
+ * @author makejava
+ * @since 2021-06-07 00:18:53
+ */
+
+@Data
+public class MemberInfoVO implements Serializable {
+    private static final long serialVersionUID = 676002338375207640L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("房屋")
+    private Long houseId;
+
+
+    @ApiModelProperty("openId")
+    private String openId;
+
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+
+    @ApiModelProperty("昵称")
+    private String nickname;
+
+
+    @ApiModelProperty("电话")
+    private String phone;
+
+
+
+
+    @ApiModelProperty("头像")
+    private String profile;
+
+
+    @ApiModelProperty("邮箱")
+    private String email;
+
+
+    @ApiModelProperty("性别")
+    private String gender;
+
+
+    @ApiModelProperty("分享码")
+    private String shareCode;
+
+
+    @ApiModelProperty("状态")
+    private String status;
+
+
+}

+ 32 - 0
src/main/java/com/care/client/vo/MemberInitParams.java

@@ -0,0 +1,32 @@
+package com.care.client.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@ApiModel(description = "登录参数")
+@Data
+public class MemberInitParams implements Serializable {
+
+    private static final long serialVersionUID = 2825354998621065333L;
+
+    @ApiModelProperty(name = "openid", value = "平台标识")
+    private String openid;
+
+    @ApiModelProperty(name = "nickname", value = "昵称")
+    private String nickname;
+
+    @ApiModelProperty(name = "profile", value = "头像")
+    private String profile;
+
+    @ApiModelProperty(name = "phone", value = "手机号码")
+    private String phone;
+
+    @ApiModelProperty(name = "password", value = "密码")
+    private String password;
+
+    @ApiModelProperty(name = "loginType", value = "登录方式")
+    private String loginType;
+}

+ 2 - 2
src/main/java/com/care/common/cache/RedisKeyConstant.java

@@ -16,8 +16,8 @@ public class RedisKeyConstant {
     public static final int WX_ACCESS_TOKEN_TIME = (3600 - 2) * 2;
 
     // 会员登录信息 2days
-    public static final String LOGIN_INFO = "LOGIN";
-    public static final int LOGIN_INFO_TIME = 3600 * 24 * 2;
+    public static final String PINANBAO_LOGIN_INFO = "PINANBAO:LOGIN";
+    public static final int LOGIN_INFO_TIME = 3600 * 24 * 7;
 
     // 后台登录信息 6 小时
     public static final String BACK_LOGIN_INFO = "BACK:LOGIN";

+ 12 - 2
src/main/java/com/care/common/entity/CareMemberInfo.java

@@ -17,7 +17,7 @@ import java.util.Date;
  * 用户登录信息(CareMemberInfo)实体类
  *
  * @author makejava
- * @since 2021-06-02 21:43:38
+ * @since 2021-06-07 00:18:53
  */
 
 @Data
@@ -26,12 +26,22 @@ import java.util.Date;
 @TableName("care_member_info")
 @ApiModel(value = "用户登录信息", description = "")
 public class CareMemberInfo implements Serializable {
-    private static final long serialVersionUID = 353859844290691859L;
+    private static final long serialVersionUID = 676002338375207640L;
 
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
 
 
+    @ApiModelProperty("房屋")
+    @TableField("HOUSE_ID")
+    private Long houseId;
+
+
+    @ApiModelProperty("openId")
+    @TableField("OPEN_ID")
+    private String openId;
+
+
     @ApiModelProperty("姓名")
     @TableField("NAME")
     private String name;

+ 1 - 1
src/main/java/com/care/common/entity/CcCallResult.java

@@ -80,7 +80,7 @@ public class CcCallResult implements Serializable {
 
     @ApiModelProperty("外呼结果状态,,2未接通 4无法赶往 5:已赶往 6:已到达 7申请钥匙 8已获取钥匙")
     @TableField("call_status")
-    private String callStatus;
+    private Integer callStatus;
 
     @ApiModelProperty("外呼结果描述信息")
     @TableField("desc_msg")

+ 2 - 0
src/main/java/com/care/common/service/CareMemberInfoService.java

@@ -10,5 +10,7 @@ import com.care.common.entity.CareMemberInfo;
  * @since 2021-06-02 21:43:38
  */
 public interface CareMemberInfoService extends IService<CareMemberInfo> {
+    CareMemberInfo detailByOpenid(String openId);
 
+    CareMemberInfo detailByPhone(String phone);
 }

+ 2 - 0
src/main/java/com/care/common/service/CcCallResultService.java

@@ -17,4 +17,6 @@ public interface CcCallResultService extends IService<CcCallResult> {
      * @return
      */
     CcCallResultVO getCallResult(Long id);
+
+    void saveCallResult(CcCallResult result);
 }

+ 14 - 0
src/main/java/com/care/common/service/impl/CareMemberInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.care.common.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.care.common.entity.CareMemberInfo;
 import com.care.common.mapper.CareMemberInfoMapper;
@@ -15,4 +16,17 @@ import org.springframework.stereotype.Service;
 @Service
 public class CareMemberInfoServiceImpl extends ServiceImpl<CareMemberInfoMapper, CareMemberInfo> implements CareMemberInfoService {
 
+    @Override
+    public CareMemberInfo detailByOpenid(String openId) {
+        QueryWrapper<CareMemberInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareMemberInfo::getOpenId,openId);
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public CareMemberInfo detailByPhone(String phone) {
+        QueryWrapper<CareMemberInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareMemberInfo::getPhone,phone);
+        return this.getOne(queryWrapper);
+    }
 }

+ 32 - 0
src/main/java/com/care/common/service/impl/CcCallResultServiceImpl.java

@@ -1,12 +1,19 @@
 package com.care.common.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.care.common.entity.CareEventOrderHandleHis;
 import com.care.common.entity.CcCallResult;
+import com.care.common.enums.ContactorStatusEnum;
+import com.care.common.enums.UserRoleEnum;
 import com.care.common.mapper.CcCallResultMapper;
+import com.care.common.service.CareEventOrderHandleHisService;
 import com.care.common.service.CcCallResultService;
 import com.care.common.vo.outcall.CcCallResultVO;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 /**
  * 外呼结果表(CcCallResult)表服务实现类
  *
@@ -16,6 +23,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class CcCallResultServiceImpl extends ServiceImpl<CcCallResultMapper, CcCallResult> implements CcCallResultService {
 
+    @Resource
+    private CareEventOrderHandleHisService careEventOrderHandleHisService;
     /**
      * 获取呼叫结果
      *
@@ -26,4 +35,27 @@ public class CcCallResultServiceImpl extends ServiceImpl<CcCallResultMapper, CcC
     public CcCallResultVO getCallResult(Long id) {
         return this.baseMapper.getCallResult(id);
     }
+
+    @Override
+    public void saveCallResult(CcCallResult result) {
+
+        this.save(result);
+
+        CareEventOrderHandleHis his = new CareEventOrderHandleHis();
+        his.setOrgId(result.getOrgId());
+        his.setStationId(result.getStationId());
+        his.setOrderId(result.getOrderId());
+        // his.setLogType();
+        his.setLogObjectId(result.getCalledId());
+        his.setLogObjectName(result.getCalledName());
+        his.setLogResult(ContactorStatusEnum.getCodeToName(result.getCallStatus()));
+        his.setOpUserRole(UserRoleEnum.SEAT.getValue());
+        //his.setOpUserId(loginUser.getId());
+        //his.setOpUserName(loginUser.getName());
+        his.setCreateTime(DateUtil.date());
+        his.setRelationTypeDesc(result.getRelationTypeDesc());
+        this.careEventOrderHandleHisService.save(his);
+    }
+
+
 }

+ 1 - 1
src/main/java/com/care/common/vo/outcall/CcCallResultVO.java

@@ -64,7 +64,7 @@ public class CcCallResultVO implements Serializable {
 
 
     @ApiModelProperty("外呼结果状态,,2未接通 4无法赶往 5:已赶往 6:已到达 7申请钥匙 8已获取钥匙")
-    private String callStatus;
+    private Integer callStatus;
 
     @ApiModelProperty("外呼结果描述信息")
     private String descMsg;

+ 1 - 1
src/main/java/com/care/outcall/controller/KoalaOutCallController.java

@@ -100,7 +100,7 @@ public class KoalaOutCallController {
             Date now = new Date();
             ccCallResult.setCreateTime(now);
             ccCallResult.setUpdateTime(now);
-            ccCallResultService.save(ccCallResult);
+            ccCallResultService.saveCallResult(ccCallResult);
         } catch (Exception e) {
             logger.error("保存呼叫结果接口异常,异常信息:" + e.getMessage());
         }

+ 2 - 2
src/main/resources/application.properties

@@ -53,8 +53,8 @@ spring.freemarker.template-loader-path=classpath:/template,classpath:/font
 
 
 
-wx.codeUrl=https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code
-wx.tokenUrl=https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}
+wx.pinanbao.codeUrl=https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code
+wx.pinanbao.tokenUrl=https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}
 wx.pinanbao.appid=wxda02870032b8f928
 wx.pinanbao.secret=7cf405b453e3b99a491980e3abf901d9