This commit is contained in:
2024-01-31 14:54:49 +08:00
parent 71e28fd448
commit 2fd8b3d341
48 changed files with 1657 additions and 583 deletions
@@ -0,0 +1,43 @@
package com.gxwebsoft.shop.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Data
@ConfigurationProperties(prefix = "wx.miniapp")
@Configuration
public class WxMaProperties {
private List<Config> configs;
@Data
public static class Config {
/**
* 设置微信小程序的appid
*/
private String appid;
/**
* 设置微信小程序的Secret
*/
private String secret;
/**
* 设置微信小程序消息服务器配置的token
*/
private String token;
/**
* 设置微信小程序消息服务器配置的EncodingAESKey
*/
private String aesKey;
/**
* 消息格式,XML或者JSON
*/
private String msgDataFormat;
}
}
@@ -51,11 +51,13 @@ public class CategoryController extends BaseController {
@ApiOperation("查询全部商品分类表")
@GetMapping()
public ApiResult<List<Category>> list(CategoryParam param) {
System.out.println("====== param ======");
System.out.println(param);
PageParam<Category, CategoryParam> page = new PageParam<>(param);
// page.setDefaultOrder("create_time desc");
QueryWrapper<Category> wrapper = new QueryWrapper<>();
page.setDefaultOrder("sort_number");
if (param.getParentId() == -1){
if (param.getParentId() != null && param.getParentId() == -1){
wrapper.ne("parent_id", "0");
}
return success(categoryService.list(wrapper));
@@ -1,5 +1,8 @@
package com.gxwebsoft.shop.controller;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
@@ -18,10 +21,12 @@ import com.gxwebsoft.common.system.entity.UserRole;
import com.gxwebsoft.common.system.param.UserParam;
import com.gxwebsoft.common.system.result.LoginResult;
import com.gxwebsoft.common.system.service.*;
import com.gxwebsoft.shop.config.WxMaProperties;
import com.gxwebsoft.shop.entity.UserOauth;
import com.gxwebsoft.shop.service.UserOauthService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import me.chanjar.weixin.common.error.WxRuntimeException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +35,8 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY;
@@ -51,9 +58,13 @@ public class WxLoginController extends BaseController {
private LoginRecordService loginRecordService;
@Resource
private RoleService roleService;
@Resource
private WxMaProperties wxMaProperties;
@Autowired
private StringRedisTemplate redisTemplate;
@ApiOperation("获取微信openId")
@Transactional(rollbackFor = {Exception.class})
@PostMapping("/getOpenId")
@@ -94,15 +105,14 @@ public class WxLoginController extends BaseController {
String phone = getPhoneByCode(userParam);
// 查询是否存在
User user = userService.getByPhone(phone);
// 不存在则注册
// 不存在
if (user == null) {
userParam.setPhone(phone);
user = addUser(userParam);
return fail("该用户不存在", new LoginResult());
}
// 签发token
String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()),
configProperties.getTokenExpireTime(), configProperties.getTokenKey());
loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REGISTER, null, user.getTenantId(), request);
loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, user.getTenantId(), request);
return success("登录成功", new LoginResult(access_token, user));
}
@@ -193,7 +203,7 @@ public class WxLoginController extends BaseController {
* 获取接口调用凭据AccessToken
* https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html
*/
private String getAccessToken() {
public String getAccessToken() {
// 获取微信小程序配置信息
JSONObject setting = settingService.getBySettingKey("mp-weixin");
// 从缓存获取access_token
@@ -219,5 +229,25 @@ public class WxLoginController extends BaseController {
return null;
}
public WxMaService wxMaService() {
List<WxMaProperties.Config> configs = wxMaProperties.getConfigs();
if (configs == null) {
throw new WxRuntimeException("大哥,拜托先看下项目首页的说明(readme文件),添加下相关配置,注意别配错了!");
}
WxMaService maService = new WxMaServiceImpl();
maService.setMultiConfigs(
configs.stream()
.map(a -> {
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid(a.getAppid());
config.setSecret(a.getSecret());
config.setToken(a.getToken());
config.setAesKey(a.getAesKey());
config.setMsgDataFormat(a.getMsgDataFormat());
return config;
}).collect(Collectors.toMap(WxMaDefaultConfigImpl::getAppid, a -> a, (o, n) -> o)));
return maService;
}
}
@@ -1,12 +1,11 @@
package com.gxwebsoft.shop.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.*;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -67,4 +66,16 @@ public class Category implements Serializable {
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "子分类")
@TableField(exist = false)
private List<Category> children;
//
// @ApiModelProperty(value = "配件名称")
// @TableField(exist = false)
// private LocalDateTime partsTitle;
//
// @ApiModelProperty(value = "父类配件名称")
// @TableField(exist = false)
// private LocalDateTime parentPartsTitle;
}
@@ -11,7 +11,7 @@
AND a.category_id = #{param.categoryId}
</if>
<if test="param.title != null">
AND a.name LIKE CONCAT('%', #{param.name}, '%')
AND a.title LIKE CONCAT('%', #{param.title}, '%')
</if>
<if test="param.parentId != null">
AND a.parent_id = #{param.parentId}