districtList = platformDictMapper.queryAllByType("homeDistrict",environment);
+ homeUpVO.setDistrict(districtList);
+ return Result.success(CodeEnum.SUCCESS,homeUpVO);
+ }
+}
diff --git a/src/main/resources/mapper/TbPlatformDictMapper.xml b/src/main/resources/mapper/TbPlatformDictMapper.xml
new file mode 100644
index 0000000..fa4182b
--- /dev/null
+++ b/src/main/resources/mapper/TbPlatformDictMapper.xml
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into tb_platform_dict(name, type, cover_img, share_img, video, video_cover_img, rel_url, abs_url, created_at, updated_at, is_show_cash, is_show_mall, is_show_app, sort)
+ values (#{name}, #{type}, #{coverImg}, #{shareImg}, #{video}, #{videoCoverImg}, #{relUrl}, #{absUrl}, #{createdAt}, #{updatedAt}, #{isShowCash}, #{isShowMall}, #{isShowApp}, #{sort})
+
+
+
+ insert into tb_platform_dict(name, type, cover_img, share_img, video, video_cover_img, rel_url, abs_url, created_at, updated_at, is_show_cash, is_show_mall, is_show_app, sort)
+ values
+
+ (#{entity.name}, #{entity.type}, #{entity.coverImg}, #{entity.shareImg}, #{entity.video}, #{entity.videoCoverImg}, #{entity.relUrl}, #{entity.absUrl}, #{entity.createdAt}, #{entity.updatedAt}, #{entity.isShowCash}, #{entity.isShowMall}, #{entity.isShowApp}, #{entity.sort})
+
+
+
+
+ insert into tb_platform_dict(name, type, cover_img, share_img, video, video_cover_img, rel_url, abs_url, created_at, updated_at, is_show_cash, is_show_mall, is_show_app, sort)
+ values
+
+ (#{entity.name}, #{entity.type}, #{entity.coverImg}, #{entity.shareImg}, #{entity.video}, #{entity.videoCoverImg}, #{entity.relUrl}, #{entity.absUrl}, #{entity.createdAt}, #{entity.updatedAt}, #{entity.isShowCash}, #{entity.isShowMall}, #{entity.isShowApp}, #{entity.sort})
+
+ on duplicate key update
+ name = values(name),
+ type = values(type),
+ cover_img = values(cover_img),
+ share_img = values(share_img),
+ video = values(video),
+ video_cover_img = values(video_cover_img),
+ rel_url = values(rel_url),
+ abs_url = values(abs_url),
+ created_at = values(created_at),
+ updated_at = values(updated_at),
+ is_show_cash = values(is_show_cash),
+ is_show_mall = values(is_show_mall),
+ is_show_app = values(is_show_app),
+ sort = values(sort)
+
+
+
+
+ update tb_platform_dict
+
+
+ name = #{name},
+
+
+ type = #{type},
+
+
+ cover_img = #{coverImg},
+
+
+ share_img = #{shareImg},
+
+
+ video = #{video},
+
+
+ video_cover_img = #{videoCoverImg},
+
+
+ rel_url = #{relUrl},
+
+
+ abs_url = #{absUrl},
+
+
+ created_at = #{createdAt},
+
+
+ updated_at = #{updatedAt},
+
+
+ is_show_cash = #{isShowCash},
+
+
+ is_show_mall = #{isShowMall},
+
+
+ is_show_app = #{isShowApp},
+
+
+ sort = #{sort},
+
+
+ where id = #{id}
+
+
+
+
+ delete from tb_platform_dict where id = #{id}
+
+
+
+
diff --git a/src/main/resources/mapper/TbProductSkuMapper.xml b/src/main/resources/mapper/TbProductSkuMapper.xml
index 6ba93af..969e918 100644
--- a/src/main/resources/mapper/TbProductSkuMapper.xml
+++ b/src/main/resources/mapper/TbProductSkuMapper.xml
@@ -355,4 +355,19 @@
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/TbShopInfoMapper.xml b/src/main/resources/mapper/TbShopInfoMapper.xml
index bad0fbf..0634beb 100644
--- a/src/main/resources/mapper/TbShopInfoMapper.xml
+++ b/src/main/resources/mapper/TbShopInfoMapper.xml
@@ -617,4 +617,31 @@
+
+
\ No newline at end of file
From 976f63d09c1850530a41a5256248fc1ed70bd42e Mon Sep 17 00:00:00 2001
From: wangw <1594593906@qq.com>
Date: Wed, 3 Apr 2024 10:51:46 +0800
Subject: [PATCH 5/6] =?UTF-8?q?app=20=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?=
=?UTF-8?q?=20=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C=20=E9=80=80=E5=87=BA=20?=
=?UTF-8?q?=20redis=205=E5=BA=93=20token=E7=9A=84key=E4=B8=BAONLINE=5FAPP?=
=?UTF-8?q?=5FUSER:=E7=94=A8=E6=88=B7id=20app=E7=AB=AF=20=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E6=A0=A1=E9=AA=8C=20code=20-4=20=E8=B4=A6=E5=8F=B7?=
=?UTF-8?q?=E8=BF=87=E6=9C=9F=20app=E7=AB=AF=20=E7=89=88=E6=9C=AC=E6=98=AF?=
=?UTF-8?q?=E5=90=A6=E6=9B=B4=E6=96=B0=E6=A0=A1=E9=AA=8C=20=20redis=205?=
=?UTF-8?q?=E5=BA=93=20=E7=89=88=E6=9C=AC=E6=98=AF=E5=90=A6=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=E7=9A=84key=E4=B8=BALDBL=5FAPP=5FVERSION:android/ios:?=
=?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=20=E5=85=A8=E5=B1=80=E8=B7=A8?=
=?UTF-8?q?=E5=9F=9F=E6=94=BE=E8=A1=8C=E5=A4=84=E7=90=86=20=E7=BB=8F?=
=?UTF-8?q?=E7=BA=AC=E5=BA=A6=E8=AE=A1=E7=AE=97=E8=B7=9D=E7=A6=BB=E5=B7=A5?=
=?UTF-8?q?=E4=BD=9C=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cashierservice/auth/LoginFilter.java | 11 +--
.../config/AppApiMethodAspect.java | 61 ++++++++++++++++
.../cashierservice/config/CorsFilter.java | 35 ++++++++++
.../controller/LoginContoller.java | 66 +++++++++++-------
.../system/cashierservice/redis/RedisCst.java | 1 +
.../cashierservice/service/LoginService.java | 69 +++++++++----------
.../system/cashierservice/sign/CodeEnum.java | 1 +
.../cashierservice/util/LocationUtils.java | 55 +++++++++++++++
8 files changed, 231 insertions(+), 68 deletions(-)
create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/config/AppApiMethodAspect.java
create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/config/CorsFilter.java
create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
index 19b5294..ce5ae7e 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
@@ -37,6 +37,7 @@ public class LoginFilter implements Filter {
"css/**",
"js/**",
"cashierService/phoneValidateCode",//验证码
+ "cashierService/tbPlatformDict",//
"cashierService/home/homePageUp",//首页上半
"cashierService/home",//首页
"cashierService/login/**"//登录部分接口不校验
@@ -68,14 +69,14 @@ public class LoginFilter implements Filter {
}
String environment = request.getHeader("environment");
//token校验目前只对app生效
- if(!environment.equals("app")){
+ if (StringUtils.isNotBlank(environment) || !environment.equals("app")) {
chain.doFilter(req, resp);
return;
}
// 判断用户TOKEN是否存在
String token = request.getHeader("token");
if (StringUtils.isBlank(token)) {
- Result result = new Result(CodeEnum.TOKEN_EXEIST);
+ Result result = new Result(CodeEnum.TOKEN_EXEIST);
String jsonString = JSONObject.toJSONString(result);
JSONObject jsonObject = JSONObject.parseObject(jsonString, JSONObject.class);
response.getWriter().print(jsonObject);
@@ -86,8 +87,8 @@ public class LoginFilter implements Filter {
String loginName = TokenUtil.parseParamFromToken(token, "userId").toString();
//获取redis中的token
String message = redisUtil.getMessage(RedisCst.ONLINE_APP_USER.concat(loginName));
- if(StringUtils.isBlank(message)){
- Result result = new Result(CodeEnum.TOKEN_EXPIRED);
+ if (StringUtils.isBlank(message)) {
+ Result result = new Result(CodeEnum.TOKEN_EXPIRED);
String jsonString = JSONObject.toJSONString(result);
JSONObject jsonObject = JSONObject.parseObject(jsonString, JSONObject.class);
response.getWriter().print(jsonObject);
@@ -96,7 +97,7 @@ public class LoginFilter implements Filter {
}
String redisToken = JSON.parseObject(message).getString("token");
if (!token.equals(redisToken)) {
- Result result = new Result(CodeEnum.TOKEN_EXPIRED);
+ Result result = new Result(CodeEnum.TOKEN_EXPIRED);
String jsonString = JSONObject.toJSONString(result);
JSONObject jsonObject = JSONObject.parseObject(jsonString, JSONObject.class);
response.getWriter().print(jsonObject);
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/config/AppApiMethodAspect.java b/src/main/java/com/chaozhanggui/system/cashierservice/config/AppApiMethodAspect.java
new file mode 100644
index 0000000..5a08f2f
--- /dev/null
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/config/AppApiMethodAspect.java
@@ -0,0 +1,61 @@
+package com.chaozhanggui.system.cashierservice.config;
+
+import com.chaozhanggui.system.cashierservice.redis.RedisCst;
+import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
+import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.chaozhanggui.system.cashierservice.sign.Result;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Objects;
+
+/**
+ * 方法调用统一切面处理
+ */
+@Aspect
+@Component
+@Slf4j
+public class AppApiMethodAspect {
+
+ @Autowired
+ RedisUtil redisUtil;
+
+ @Pointcut("execution(public * (" +
+ "com.chaozhanggui.system.cashierservice.controller.* " +
+ ").*(..))")
+ public void pkg() {
+ }
+
+ @Around("pkg()")
+ public Object around(ProceedingJoinPoint pjp) throws Throwable {
+ HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+ HttpServletRequest req = request;
+ //version:版本号
+ //type: ios; android;
+ //environment:app;wx
+ String environment = req.getHeader("environment");
+ if (StringUtils.isNotBlank(environment) && environment.equals("app")) {
+ String type = req.getHeader("type");
+ String version = req.getHeader("version");
+ //LDBL_APP_VERSION:ios:version 存在即需要强制更新
+ String message = redisUtil.getMessage(RedisCst.LDBL_APP_VERSION + type + ":" + version);
+ if (StringUtils.isNotBlank(message)) {
+ return Result.success(CodeEnum.UPGRADE_REQUIRED, message);
+ }
+ }
+
+ // 执行被拦截的方法
+ Object result = pjp.proceed();
+ return result;
+
+ }
+}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/config/CorsFilter.java b/src/main/java/com/chaozhanggui/system/cashierservice/config/CorsFilter.java
new file mode 100644
index 0000000..31e33e6
--- /dev/null
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/config/CorsFilter.java
@@ -0,0 +1,35 @@
+package com.chaozhanggui.system.cashierservice.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 跨域过滤器
+ */
+@Slf4j
+@Component
+@Order(1)
+@WebFilter(filterName = "CorsFilter", urlPatterns = "/*")
+public class CorsFilter implements Filter {
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
+ throws IOException, ServletException {
+ HttpServletResponse response = (HttpServletResponse) resp;
+ HttpServletRequest reqs = (HttpServletRequest) req;
+ String curOrigin = reqs.getHeader("Origin");
+ response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);
+ response.setHeader("Access-Control-Allow-Methods", "*");
+ response.setHeader("Access-Control-Max-Age", "3600");
+ response.setHeader("Access-Control-Allow-Headers", "x-requested-with,signature");
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+ chain.doFilter(req, resp);
+ }
+}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
index 4a9a57d..a5e2af1 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
@@ -1,36 +1,35 @@
package com.chaozhanggui.system.cashierservice.controller;
-
-import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
-import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chaozhanggui.system.cashierservice.dao.TbMerchantAccountMapper;
import com.chaozhanggui.system.cashierservice.entity.TbMerchantAccount;
-import com.chaozhanggui.system.cashierservice.entity.TbUserInfo;
import com.chaozhanggui.system.cashierservice.entity.dto.AuthUserDto;
import com.chaozhanggui.system.cashierservice.entity.dto.OnlineUserDto;
+import com.chaozhanggui.system.cashierservice.redis.RedisCst;
+import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
import com.chaozhanggui.system.cashierservice.service.LoginService;
import com.chaozhanggui.system.cashierservice.service.OnlineUserService;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.IpUtil;
-import com.chaozhanggui.system.cashierservice.util.JSONUtil;
import com.chaozhanggui.system.cashierservice.util.MD5Utils;
import com.chaozhanggui.system.cashierservice.util.StringUtil;
+import com.chaozhanggui.system.cashierservice.util.TokenUtil;
import com.chaozhanggui.system.cashierservice.wxUtil.WechatUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
@CrossOrigin(origins = "*")
@RestController
@@ -58,6 +57,8 @@ public class LoginContoller {
@Resource
TbMerchantAccountMapper merchantAccountMapper;
+ @Autowired
+ RedisUtil redisUtil;
@RequestMapping("/wx/business/login")
@@ -223,35 +224,37 @@ public class LoginContoller {
/**
* 用户注册
- *
- * @param phone 手机号
- * @param nickName 用户昵称
- * @param password 密码
- * @param code 验证码
+ * phone 手机号
+ * nickName 用户昵称
+ * password 密码
+ * code 验证码
* @return
*/
- @PostMapping("register")
- public Result register(@RequestBody TbUserInfo userInfo) {
- boolean tf = loginService.validate(userInfo.getCode(), userInfo.getTelephone());
- if (tf) {
- return loginService.register(userInfo.getTelephone(), userInfo.getPassword(), userInfo.getNickName());
- } else {
- return Result.fail("验证码校验失败");
- }
- }
+// @PostMapping("register")
+// public Result register(@RequestBody TbUserInfo userInfo) {
+// boolean tf = loginService.validate(userInfo.getCode(), userInfo.getTelephone());
+// if (tf) {
+// return loginService.register(userInfo.getTelephone(), userInfo.getPassword(), userInfo.getNickName());
+// } else {
+// return Result.fail("验证码校验失败");
+// }
+// }
/**
- * App登录用户端的请求接口
- *
- * @param username 手机号
- * @param password 密码登录时使用
- * @param code 验证码登录时使用
+ * App登录用户端的请求接口 登录即注册
+ * 查看 {@link com.chaozhanggui.system.cashierservice.entity.dto.AuthUserDto}
+ * username 手机号
+ * password 密码登录时使用
+ * code 验证码登录时使用
* @return
*/
@PostMapping("/app/login")
public Result applogin(@RequestBody AuthUserDto authUserDto) {
if (ObjectUtil.isNull(authUserDto.getCode())) {
+ if(StringUtils.isBlank(authUserDto.getPassword())){
+ return Result.fail("请输入密码,或使用验证码登录");
+ }
//验证密码
String mdPasswordString = MD5Utils.MD5Encode(authUserDto.getPassword(), "utf-8");
return loginService.appLogin(authUserDto.getUsername(), mdPasswordString);
@@ -266,4 +269,15 @@ public class LoginContoller {
}
+ //退出登录的接口
+ @PostMapping("/loginOut")
+ public Result loginOut(HttpServletRequest request) {
+ String token = request.getHeader("token");
+ //获取当前登录人的账号
+ String userId = TokenUtil.parseParamFromToken(token, "userId").toString();
+ redisUtil.deleteByKey(RedisCst.ONLINE_APP_USER.concat(userId));
+ return Result.success(CodeEnum.SUCCESS);
+ }
+
+
}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java b/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java
index 26353e2..00513a8 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/redis/RedisCst.java
@@ -11,6 +11,7 @@ public class RedisCst {
//在线用户
public static final String ONLINE_USER = "ONLINE_USER:";
public static final String ONLINE_APP_USER = "ONLINE_APP_USER:";
+ public static final String LDBL_APP_VERSION = "LDBL_APP_VERSION:";
public static final String TABLE_CART = "TABLE:CART:";
public static final String PRODUCT = "PRODUCT:";
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
index c8251d5..0e9532c 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
@@ -45,7 +45,6 @@ public class LoginService {
TbTokenMapper tbTokenMapper;
-
@Autowired
RedisUtil redisUtil;
@@ -158,49 +157,44 @@ public class LoginService {
return Result.fail("登录失败");
}
- public Result register(String phone, String password, String nickName) {
- TbUserInfo userInfo = tbUserInfoMapper.selectByPhone(phone);
- if (ObjectUtil.isNull(userInfo)) {
- userInfo = new TbUserInfo();
- userInfo.setAmount(BigDecimal.ZERO);
- userInfo.setChargeAmount(BigDecimal.ZERO);
- userInfo.setLineOfCredit(BigDecimal.ZERO);
- userInfo.setConsumeNumber(0);
- userInfo.setConsumeAmount(BigDecimal.ZERO);
- userInfo.setTotalScore(0);
- userInfo.setLockScore(0);
- userInfo.setHeadImg("");
- userInfo.setNickName(nickName);
- userInfo.setTelephone(phone);
- userInfo.setStatus(Byte.parseByte("1"));
- userInfo.setParentType("PERSON");
- userInfo.setIsResource(Byte.parseByte("0"));
- userInfo.setIsOnline(Byte.parseByte("0"));
- userInfo.setIsVip(Byte.parseByte("0"));
- userInfo.setSourcePath("APP");
- userInfo.setIsAttentionMp(Byte.parseByte("0"));
- userInfo.setSearchWord("||移动端用户");
- userInfo.setLastLogInAt(System.currentTimeMillis());
- userInfo.setCreatedAt(System.currentTimeMillis());
- userInfo.setUpdatedAt(System.currentTimeMillis());
+ public TbUserInfo register(String phone, String password, String nickName) {
+
+ TbUserInfo userInfo = new TbUserInfo();
+ userInfo.setAmount(BigDecimal.ZERO);
+ userInfo.setChargeAmount(BigDecimal.ZERO);
+ userInfo.setLineOfCredit(BigDecimal.ZERO);
+ userInfo.setConsumeNumber(0);
+ userInfo.setConsumeAmount(BigDecimal.ZERO);
+ userInfo.setTotalScore(0);
+ userInfo.setLockScore(0);
+ userInfo.setHeadImg("");
+ userInfo.setNickName(nickName);
+ userInfo.setTelephone(phone);
+ userInfo.setStatus(Byte.parseByte("1"));
+ userInfo.setParentType("PERSON");
+ userInfo.setIsResource(Byte.parseByte("0"));
+ userInfo.setIsOnline(Byte.parseByte("0"));
+ userInfo.setIsVip(Byte.parseByte("0"));
+ userInfo.setSourcePath("APP");
+ userInfo.setIsAttentionMp(Byte.parseByte("0"));
+ userInfo.setSearchWord("||移动端用户");
+ userInfo.setLastLogInAt(System.currentTimeMillis());
+ userInfo.setCreatedAt(System.currentTimeMillis());
+ userInfo.setUpdatedAt(System.currentTimeMillis());
+ if(StringUtils.isNotBlank(password)){
userInfo.setPassword(MD5Utils.MD5Encode(password, "UTF-8"));
- tbUserInfoMapper.insert(userInfo);
-
- } else {
- return Result.fail("用户已注册");
}
- //app与微信小程序用户关联
-
+ tbUserInfoMapper.insert(userInfo);
+ //注册时 app与微信小程序用户关联
TbUserInfo wechatUser = tbUserInfoMapper.selectUserByPhone(phone, "WECHAT-APP");
+ TbUserInfo appUser = tbUserInfoMapper.selectByPhone(phone);
if (wechatUser != null) {
- TbUserInfo appUser = tbUserInfoMapper.selectByPhone(phone);
appUser.setUserId(wechatUser.getId());
tbUserInfoMapper.updateByPrimaryKey(appUser);
wechatUser.setUserId(appUser.getId());
tbUserInfoMapper.updateByPrimaryKey(wechatUser);
}
-
- return Result.success(CodeEnum.SUCCESS);
+ return appUser;
}
/**
@@ -226,7 +220,8 @@ public class LoginService {
public Result appLogin(String username, String password) {
TbUserInfo userInfo = tbUserInfoMapper.selectUserByPhone(username, "APP");
if (ObjectUtil.isNull(userInfo)) {
- return Result.fail("用户未注册");
+ //注册
+ userInfo=register(username, password, username);
}
if (StringUtils.isNotBlank(password) && !password.equalsIgnoreCase(userInfo.getPassword())) {
return Result.fail("密码错误");
@@ -242,7 +237,7 @@ public class LoginService {
try {
map.put("token", token);
map.put("userInfo", userInfo);
- redisUtil.saveMessage(RedisCst.ONLINE_APP_USER.concat(userInfo.getId()+""), JSON.toJSONString(map));
+ redisUtil.saveMessage(RedisCst.ONLINE_APP_USER.concat(userInfo.getId() + ""), JSON.toJSONString(map));
return Result.success(CodeEnum.SUCCESS, map);
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java b/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java
index dd1a367..0eda53e 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/sign/CodeEnum.java
@@ -5,6 +5,7 @@ public enum CodeEnum {
//系统编码
SYS_EXCEPTION("999",false,"系统异常","fail"),
SUCCESS("0",false,"成功","success"),
+ UPGRADE_REQUIRED("426",true,"成功","success"),
ENCRYPT("0",true,"成功","success"),
FAIL("1",false,"失败","fail"),
TOKEN_EXEIST("-2",false,"token不能为空","fail"),
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
new file mode 100644
index 0000000..18d224f
--- /dev/null
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
@@ -0,0 +1,55 @@
+package com.chaozhanggui.system.cashierservice.util;
+
+import static java.lang.Math.*;
+import static java.lang.Math.sin;
+
+public class LocationUtils {
+
+ /**
+ * 将角度转化为弧度
+ */
+ public static double radians(double d) {
+ return d * Math.PI / 180.0;
+ }
+ /**
+ * 根据两点经纬度坐标计算直线距离
+ *
+ * S = 2arcsin√sin²(a/2)+cos(lat1)*cos(lat2)*sin²(b/2) ̄*6378.137
+ *
+ * 1. lng1 lat1 表示A点经纬度,lng2 lat2 表示B点经纬度;
+ * 2. a=lat1 – lat2 为两点纬度之差 b=lng1 -lng2 为两点经度之差;
+ * 3. 6378.137为地球赤道半径,单位为千米;
+ *
+ * @param lng1 点1经度
+ * @param lat1 点1纬度
+ * @param lng2 点2经度
+ * @param lat2 点2纬度
+ * @return 距离,单位千米(KM)
+ * @see 半正矢(Haversine)公式
+ */
+ public static double getDistanceFrom2LngLat(double lng1, double lat1, double lng2, double lat2) {
+ //将角度转化为弧度
+ double radLng1 = radians(lng1);
+ double radLat1 = radians(lat1);
+ double radLng2 = radians(lng2);
+ double radLat2 = radians(lat2);
+
+ double a = radLat1 - radLat2;
+ double b = radLng1 - radLng2;
+
+ return 2 * asin(sqrt(sin(a / 2) * sin(a / 2) + cos(radLat1) * cos(radLat2) * sin(b / 2) * sin(b / 2))) * 6378.137;
+ }
+
+// public static void main(String[] args) {
+// // 示例经纬度坐标
+// double lat1 = 108.954398;
+// double lon1 = 34.308687;
+//
+// double lat2 = 108.953555;
+// double lon2 = 34.276169;
+//
+// // 计算距离
+// double distance = getDistanceFrom2LngLat(lat1, lon1, lat2, lon2);
+// System.out.println("Distance between the two points is: " + distance + " km");
+// }
+}
From 106288497ea0cd759543816de51902734bc86172 Mon Sep 17 00:00:00 2001
From: wangw <1594593906@qq.com>
Date: Wed, 3 Apr 2024 15:28:50 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E9=AB=98=E5=BE=B7=E8=A1=8C=E6=94=BF?=
=?UTF-8?q?=E5=8C=BA=E6=8E=A5=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cashierservice/auth/LoginFilter.java | 2 +-
.../controller/LocationController.java | 37 +++++++++++++++++++
.../cashierservice/util/LocationUtils.java | 14 +++++++
3 files changed, 52 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
index ce5ae7e..8960af6 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/auth/LoginFilter.java
@@ -37,7 +37,7 @@ public class LoginFilter implements Filter {
"css/**",
"js/**",
"cashierService/phoneValidateCode",//验证码
- "cashierService/tbPlatformDict",//
+ "cashierService/location/**",//
"cashierService/home/homePageUp",//首页上半
"cashierService/home",//首页
"cashierService/login/**"//登录部分接口不校验
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java
new file mode 100644
index 0000000..0f4be0a
--- /dev/null
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LocationController.java
@@ -0,0 +1,37 @@
+package com.chaozhanggui.system.cashierservice.controller;
+
+import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
+import com.chaozhanggui.system.cashierservice.sign.Result;
+import com.chaozhanggui.system.cashierservice.util.LocationUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+@CrossOrigin(origins = "*")
+@RestController
+@Slf4j
+@RequestMapping("/location")
+public class LocationController {
+
+
+ /**
+ * 行政区域查询
+ *
+ * @param keywords citycode市、adcode区
+ * @return
+ */
+ @GetMapping("/district")
+ public Result createOrder(String keywords) throws JsonProcessingException {
+ String district = LocationUtils.district(keywords);
+ ObjectMapper mapper = new ObjectMapper();
+ // 将 JSON 字符串解析为 JsonNode 对象
+ JsonNode jsonNode = mapper.readTree(district);
+ JsonNode districts = jsonNode.get("districts");
+
+
+ return Result.success(CodeEnum.SUCCESS, districts);
+ }
+}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
index 18d224f..ad4ccb9 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/LocationUtils.java
@@ -1,10 +1,24 @@
package com.chaozhanggui.system.cashierservice.util;
+import java.util.HashMap;
+import java.util.Map;
+
import static java.lang.Math.*;
import static java.lang.Math.sin;
public class LocationUtils {
+ public static String district(String keywords) {
+ Map param=new HashMap<>();
+ //超掌柜生活-用户端
+ param.put("key","7a7f2e4790ea222660a027352ee3af39");
+ param.put("keywords",keywords);
+ param.put("subdistrict","1");
+ param.put("extensions","base");
+ String s = HttpClientUtil.doGet("https://restapi.amap.com/v3/config/district", param);
+ return s;
+ }
+
/**
* 将角度转化为弧度
*/