9 changed files with 238 additions and 0 deletions
@ -0,0 +1,33 @@ |
|||||
|
package com.yxt.yyth.api.lpkcustomer; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableField; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.UUID; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:06 |
||||
|
*/ |
||||
|
@ApiModel(value = "客户信息", description = "客户信息") |
||||
|
@TableName("lpk_customer") |
||||
|
@Data |
||||
|
public class LpkCustomer { |
||||
|
private String id; |
||||
|
private String sid=UUID.randomUUID().toString(); |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") |
||||
|
private Date createTime; |
||||
|
private String remarks; |
||||
|
private String isEnable; |
||||
|
@TableField(value = "wx_mp_openid") |
||||
|
private String wxMpOpenid; |
||||
|
private String mobile; |
||||
|
private String bindDate; |
||||
|
private String realName; |
||||
|
private String nick; |
||||
|
private String photo; |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
package com.yxt.yyth.api.lpkcustomer; |
||||
|
|
||||
|
import com.yxt.common.core.dto.Dto; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:13 |
||||
|
*/ |
||||
|
@ApiModel(value = "客户信息 数据传输对象", description = "客户信息 数据传输对象") |
||||
|
@Data |
||||
|
public class LpkCustomerDto implements Dto { |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
package com.yxt.yyth.api.lpkcustomer; |
||||
|
|
||||
|
import com.yxt.common.core.query.Query; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:31 |
||||
|
*/ |
||||
|
@ApiModel(value = "客户信息 查询条件", description = "客户信息 查询条件") |
||||
|
@Data |
||||
|
public class LpkCustomerQuery implements Query { |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package com.yxt.yyth.api.lpkcustomer; |
||||
|
|
||||
|
import com.yxt.common.core.vo.Vo; |
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:12 |
||||
|
*/ |
||||
|
@Data |
||||
|
@ApiModel(value = "客户信息 视图数据对象", description = "客户信息 视图数据对象") |
||||
|
@NoArgsConstructor |
||||
|
public class LpkCustomerVo implements Vo { |
||||
|
} |
@ -0,0 +1,17 @@ |
|||||
|
package com.yxt.yyth.api.lpkcustomer; |
||||
|
|
||||
|
import com.yxt.common.core.dto.Dto; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class WxBindMobileDto implements Dto { |
||||
|
|
||||
|
@ApiModelProperty(value = "手机号") |
||||
|
private String mobile; |
||||
|
@ApiModelProperty(value = "验证码") |
||||
|
private String code; |
||||
|
//微信id
|
||||
|
private String openid; |
||||
|
private String unionid; |
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
package com.yxt.yyth.biz.lpkcustomer; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.yxt.yyth.api.lpkcustomer.LpkCustomer; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:03 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface LpkCustomerMapper extends BaseMapper<LpkCustomer> { |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
<mapper namespace="com.yxt.yyth.biz.lpkcustomer.LpkCustomerMapper"> |
||||
|
<!-- <where> ${ew.sqlSegment} </where>--> |
||||
|
<!-- ${ew.customSqlSegment} --> |
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,35 @@ |
|||||
|
package com.yxt.yyth.biz.lpkcustomer; |
||||
|
|
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.yyth.api.lpkcustomer.LpkCustomer; |
||||
|
import com.yxt.yyth.api.lpkcustomer.LpkCustomerVo; |
||||
|
import com.yxt.yyth.api.lpkcustomer.WxBindMobileDto; |
||||
|
import io.swagger.annotations.Api; |
||||
|
import io.swagger.annotations.ApiOperation; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:03 |
||||
|
*/ |
||||
|
|
||||
|
@Api(tags = "用户信息") |
||||
|
@RestController |
||||
|
@RequestMapping("lpkcustomer") |
||||
|
public class LpkCustomerRest { |
||||
|
|
||||
|
@Autowired |
||||
|
LpkCustomerService lpkCustomerService; |
||||
|
|
||||
|
@PostMapping("/wxBindMobile") |
||||
|
@ApiOperation(value = "微信绑定手机") |
||||
|
public ResultBean wxBindMobile(@RequestBody WxBindMobileDto wxBindMobileDto){ |
||||
|
return lpkCustomerService.wxBindMobile(wxBindMobileDto); |
||||
|
} |
||||
|
@ApiOperation(value = "微信静默登录") |
||||
|
@GetMapping("/wxSilentLogin") |
||||
|
public ResultBean<LpkCustomerVo> wxSilentLogin(@RequestParam(value = "wxCode") String wxCode) { |
||||
|
return lpkCustomerService.wxSilentLogin(wxCode); |
||||
|
} |
||||
|
} |
@ -0,0 +1,89 @@ |
|||||
|
package com.yxt.yyth.biz.lpkcustomer; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.yxt.common.base.service.MybatisBaseService; |
||||
|
import com.yxt.common.base.utils.StringUtils; |
||||
|
import com.yxt.common.core.result.ResultBean; |
||||
|
import com.yxt.yyth.api.lpkcustomer.LpkCustomer; |
||||
|
import com.yxt.yyth.api.lpkcustomer.LpkCustomerVo; |
||||
|
import com.yxt.yyth.api.lpkcustomer.WxBindMobileDto; |
||||
|
import org.springframework.http.ResponseEntity; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.web.client.RestTemplate; |
||||
|
|
||||
|
import java.text.SimpleDateFormat; |
||||
|
import java.util.Date; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* @author wangpengfei |
||||
|
* @date 2023/11/21 15:03 |
||||
|
*/ |
||||
|
@Service |
||||
|
public class LpkCustomerService extends MybatisBaseService<LpkCustomerMapper, LpkCustomer> { |
||||
|
String APP_ID = "wx4724e3a3c27f36b5"; |
||||
|
String SECRET = "971fd3b8aa7b08ce3e8a5f3e502b1a8d"; |
||||
|
private static final String WX_URL_LOGIN = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code "; |
||||
|
public ResultBean<JSONObject> wxLogin(String jsCode, String appid, String secret) { |
||||
|
ResultBean rb=new ResultBean(); |
||||
|
String url = WX_URL_LOGIN.replace("APPID", appid).replace("SECRET", secret).replace("JSCODE",jsCode).replace("authorization_code","authorization_code"); |
||||
|
RestTemplate restTemplate = new RestTemplate(); |
||||
|
ResponseEntity<String> forEntity = restTemplate.getForEntity(url,String.class); |
||||
|
JSONObject jsonObject = JSONObject.parseObject(forEntity.getBody()); |
||||
|
System.out.println(jsonObject); |
||||
|
return rb.success().setData(jsonObject); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 微信静默登录 |
||||
|
* @param wxCode 临时凭证code值 |
||||
|
* @return ResultBean data:Token |
||||
|
* 登陆成功后data返回用户Sid |
||||
|
* 聂金毅 2022/6/8 20:30 创建 |
||||
|
*/ |
||||
|
public ResultBean<LpkCustomerVo> wxSilentLogin(String wxCode) { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
// 通过wxCode获取unionid,失败返回微信的错误提示。
|
||||
|
|
||||
|
ResultBean<JSONObject> rbJsonObject = wxLogin(wxCode,APP_ID,SECRET); |
||||
|
if (!rbJsonObject.getSuccess()){ |
||||
|
JSONObject jsonObject = rbJsonObject.getData(); |
||||
|
String errcode = jsonObject.get("errcode").toString(); |
||||
|
String errmsg = jsonObject.get("errmsg").toString(); |
||||
|
return rb.setMsg(errmsg).setCode(errcode); |
||||
|
} |
||||
|
// 判断存在不存在unionid,用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见 UnionID 机制说明。、
|
||||
|
JSONObject jsonObject = rbJsonObject.getData(); |
||||
|
if (!jsonObject.containsKey("openid")){ |
||||
|
return rb.setMsg("未获得openid,请联系管理员"); |
||||
|
} |
||||
|
String unionid = jsonObject.get("unionid").toString(); |
||||
|
String openid = jsonObject.get("openid").toString(); |
||||
|
Map<String,String> map=new HashMap<>(); |
||||
|
map.put("unionid",unionid); |
||||
|
map.put("openid",openid); |
||||
|
LpkCustomer lpkCustomer= baseMapper.selectOne(new QueryWrapper<LpkCustomer>().eq("wx_mp_openid",openid)); |
||||
|
//查询用户是否存在
|
||||
|
if(null==lpkCustomer){ |
||||
|
//新增用户
|
||||
|
LpkCustomer newCustomer=new LpkCustomer(); |
||||
|
newCustomer.setWxMpOpenid(openid); |
||||
|
newCustomer.setCreateTime(new Date()); |
||||
|
baseMapper.insert(newCustomer); |
||||
|
return rb.success().setData(newCustomer); |
||||
|
} |
||||
|
return rb.success().setData(lpkCustomer); |
||||
|
} |
||||
|
public ResultBean wxBindMobile(WxBindMobileDto wxBindMobileDto) { |
||||
|
ResultBean rb = ResultBean.fireFail(); |
||||
|
String mobile = wxBindMobileDto.getMobile(); |
||||
|
LpkCustomer lpkCustomer= baseMapper.selectOne(new QueryWrapper<LpkCustomer>().eq("wx_mp_openid",wxBindMobileDto.getOpenid())); |
||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); |
||||
|
lpkCustomer.setBindDate(sdf.format(new Date())); |
||||
|
lpkCustomer.setMobile(mobile); |
||||
|
baseMapper.insert(lpkCustomer); |
||||
|
return rb.setMsg("绑定成功"); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue