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