diff --git a/README.md b/README.md
index e69de29..2e28de7 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,90 @@
+## 平台简介
+
+一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
+
+性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依)
+
+若依参考后台模板。有需要可自行到群内下载。
+
+> 如需单应用,请移步 [RuoYi-fast](https://gitee.com/y_project/RuoYi-fast) `(保持同步更新)`,如需其他版本,请移步 [项目扩展](http://doc.ruoyi.vip/#/standard/xmkz) `(不定时更新)`
+
+> 阿里云通用云产品1888优惠券 :[点我领取](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof) 腾讯云通用云产品2860优惠券 :[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) `(仅限新用户)`
+
+> 阿里云Hi拼购 限量爆款 低至199元/年 [点我进入](https://www.aliyun.com/acts/hi-group-buying?userCode=brki8iof) `(仅限新用户)`
+
+## 内置功能
+
+1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
+2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
+3. 岗位管理:配置系统用户所属担任职务。
+4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
+5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
+6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
+7. 参数管理:对系统动态配置常用参数。
+8. 通知公告:系统通知公告信息发布维护。
+9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
+10. 登录日志:系统登录日志记录查询包含登录异常。
+11. 在线用户:当前系统中活跃用户状态监控。
+12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
+13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
+14. 系统接口:根据业务代码自动生成相关的api接口文档。
+15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
+16. 在线构建器:拖动表单元素生成相应的HTML代码。
+17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
+## 在线体验
+> admin/admin123
+> 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
+
+演示地址:http://ruoyi.vip
+
+文档地址:http://doc.ruoyi.vip
+
+## 演示图
+
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+  |
+  |
+
+
+
+
+## 若依交流群
+
+QQ群: [](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [](https://jq.qq.com/?_wv=1027&k=5g75dCU) [](https://jq.qq.com/?_wv=1027&k=58cPoHA) [](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [](https://jq.qq.com/?_wv=1027&k=5yugASz) 点击按钮入群。
\ No newline at end of file
diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/common/persistence/model/StoreMember.java b/ruoyi-api/src/main/java/com/ruoyi/app/common/persistence/model/StoreMember.java
index ad9c05d..07aad18 100644
--- a/ruoyi-api/src/main/java/com/ruoyi/app/common/persistence/model/StoreMember.java
+++ b/ruoyi-api/src/main/java/com/ruoyi/app/common/persistence/model/StoreMember.java
@@ -26,11 +26,7 @@ public class StoreMember extends Model {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
- /**
- * 店铺ID
- */
- @TableField("store_id")
- private Integer storeId;
+
/**
* vip编号
*/
@@ -40,20 +36,8 @@ public class StoreMember extends Model {
* 会员微信OPENID
*/
private String openid;
- /**
- * 商家版小程序openid
- */
- @TableField("seller_openid")
- private String sellerOpenid;
- /**
- * 公众号openid
- */
- @TableField("wx_openid")
- private String wxOpenid;
- /**
- * unionid唯一标识
- */
- private String unionid;
+
+
/**
* 会员手机号
*/
@@ -62,11 +46,7 @@ public class StoreMember extends Model {
* 登录密码
*/
private String password;
- /**
- * 余额支付密码
- */
- @TableField("pay_password")
- private String payPassword;
+
/**
* 会员昵称
*/
@@ -75,11 +55,7 @@ public class StoreMember extends Model {
* 会员头像
*/
private String headimg;
- /**
- * 用户类型 1-普通用户 2-商家用户
- */
- @TableField("user_type")
- private Integer userType;
+
/**
* 性别
*/
@@ -118,11 +94,7 @@ public class StoreMember extends Model {
*/
@TableField("pay_points")
private Integer payPoints;
- /**
- * 冻结积分
- */
- @TableField("frozen_points")
- private Integer frozenPoints;
+
/**
* 默认收货地址
*/
@@ -136,8 +108,9 @@ public class StoreMember extends Model {
* 会员状态0待审核 1-已审核 2-已拒绝
*/
private Integer status;
+
@TableField("create_time")
- private Long createTime;
+ private Date createTime;
/**
* 创建时间
*/
@@ -148,43 +121,7 @@ public class StoreMember extends Model {
*/
@TableField("status_time")
private Long statusTime;
- @TableField("login_at")
- private Date loginAt;
- /**
- * 登录次数
- */
- @TableField("login_num")
- private Integer loginNum;
- /**
- * 是否为分销商 0 否 1 是
- */
- @TableField("is_distribut")
- private Integer isDistribut;
- /**
- * 第一个上级
- */
- @TableField("first_leader")
- private Long firstLeader;
- /**
- * 第二个上级
- */
- @TableField("second_leader")
- private Long secondLeader;
- /**
- * 第三个上级
- */
- @TableField("third_leader")
- private Long thirdLeader;
- /**
- * 是否是超管 1-是 0不是
- */
- @TableField("is_super")
- private Integer isSuper;
- /**
- * 分销推广二维码图片
- */
- @TableField("spread_qrcode")
- private String spreadQrcode;
+
public Long getId() {
@@ -195,13 +132,6 @@ public class StoreMember extends Model {
this.id = id;
}
- public Integer getStoreId() {
- return storeId;
- }
-
- public void setStoreId(Integer storeId) {
- this.storeId = storeId;
- }
public String getVipNo() {
return vipNo;
@@ -219,30 +149,6 @@ public class StoreMember extends Model {
this.openid = openid;
}
- public String getSellerOpenid() {
- return sellerOpenid;
- }
-
- public void setSellerOpenid(String sellerOpenid) {
- this.sellerOpenid = sellerOpenid;
- }
-
- public String getWxOpenid() {
- return wxOpenid;
- }
-
- public void setWxOpenid(String wxOpenid) {
- this.wxOpenid = wxOpenid;
- }
-
- public String getUnionid() {
- return unionid;
- }
-
- public void setUnionid(String unionid) {
- this.unionid = unionid;
- }
-
public String getPhone() {
return phone;
}
@@ -259,13 +165,6 @@ public class StoreMember extends Model {
this.password = password;
}
- public String getPayPassword() {
- return payPassword;
- }
-
- public void setPayPassword(String payPassword) {
- this.payPassword = payPassword;
- }
public String getNickname() {
return nickname;
@@ -283,13 +182,6 @@ public class StoreMember extends Model {
this.headimg = headimg;
}
- public Integer getUserType() {
- return userType;
- }
-
- public void setUserType(Integer userType) {
- this.userType = userType;
- }
public String getSex() {
return sex;
@@ -355,13 +247,6 @@ public class StoreMember extends Model {
this.payPoints = payPoints;
}
- public Integer getFrozenPoints() {
- return frozenPoints;
- }
-
- public void setFrozenPoints(Integer frozenPoints) {
- this.frozenPoints = frozenPoints;
- }
public Integer getAddressId() {
return addressId;
@@ -387,11 +272,11 @@ public class StoreMember extends Model {
this.status = status;
}
- public Long getCreateTime() {
+ public Date getCreateTime() {
return createTime;
}
- public void setCreateTime(Long createTime) {
+ public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@@ -411,69 +296,7 @@ public class StoreMember extends Model {
this.statusTime = statusTime;
}
- public Date getLoginAt() {
- return loginAt;
- }
- public void setLoginAt(Date loginAt) {
- this.loginAt = loginAt;
- }
-
- public Integer getLoginNum() {
- return loginNum;
- }
-
- public void setLoginNum(Integer loginNum) {
- this.loginNum = loginNum;
- }
-
- public Integer getIsDistribut() {
- return isDistribut;
- }
-
- public void setIsDistribut(Integer isDistribut) {
- this.isDistribut = isDistribut;
- }
-
- public Long getFirstLeader() {
- return firstLeader;
- }
-
- public void setFirstLeader(Long firstLeader) {
- this.firstLeader = firstLeader;
- }
-
- public Long getSecondLeader() {
- return secondLeader;
- }
-
- public void setSecondLeader(Long secondLeader) {
- this.secondLeader = secondLeader;
- }
-
- public Long getThirdLeader() {
- return thirdLeader;
- }
-
- public void setThirdLeader(Long thirdLeader) {
- this.thirdLeader = thirdLeader;
- }
-
- public Integer getIsSuper() {
- return isSuper;
- }
-
- public void setIsSuper(Integer isSuper) {
- this.isSuper = isSuper;
- }
-
- public String getSpreadQrcode() {
- return spreadQrcode;
- }
-
- public void setSpreadQrcode(String spreadQrcode) {
- this.spreadQrcode = spreadQrcode;
- }
@Override
protected Serializable pkVal() {
@@ -484,18 +307,12 @@ public class StoreMember extends Model {
public String toString() {
return "StoreMember{" +
"id=" + id +
- ", storeId=" + storeId +
", vipNo=" + vipNo +
", openid=" + openid +
- ", sellerOpenid=" + sellerOpenid +
- ", wxOpenid=" + wxOpenid +
- ", unionid=" + unionid +
", phone=" + phone +
", password=" + password +
- ", payPassword=" + payPassword +
", nickname=" + nickname +
", headimg=" + headimg +
- ", userType=" + userType +
", sex=" + sex +
", level=" + level +
", totalAmount=" + totalAmount +
@@ -504,21 +321,12 @@ public class StoreMember extends Model {
", frozenMoney=" + frozenMoney +
", underlingNumber=" + underlingNumber +
", payPoints=" + payPoints +
- ", frozenPoints=" + frozenPoints +
", addressId=" + addressId +
", remark=" + remark +
", status=" + status +
", createTime=" + createTime +
", createAt=" + createAt +
", statusTime=" + statusTime +
- ", loginAt=" + loginAt +
- ", loginNum=" + loginNum +
- ", isDistribut=" + isDistribut +
- ", firstLeader=" + firstLeader +
- ", secondLeader=" + secondLeader +
- ", thirdLeader=" + thirdLeader +
- ", isSuper=" + isSuper +
- ", spreadQrcode=" + spreadQrcode +
"}";
}
}
diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/auth/controller/AuthController.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/auth/controller/AuthController.java
index 8300de6..e63f6e6 100644
--- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/auth/controller/AuthController.java
+++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/auth/controller/AuthController.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
* @Author hupeng <610796224@qq.com>
* @Date 2019/6/27
**/
-@RequestMapping(value = "/auth")
+//@RequestMapping(value = "/")
@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
//@Api(value = "认证授权模块", tags = "认证授权模块", description = "认证授权模块")
@@ -36,7 +36,7 @@ public class AuthController {
*
* @return 用户信息
*/
- @GetMapping("/user")
+ @GetMapping("/get/user")
//@ApiOperation(value = "获取用户信息",notes = "获取用户信息")
public User user() {
return userOperator.getUser();
@@ -44,14 +44,20 @@ public class AuthController {
/**
- * 模拟登录,颁发token
+ * 小程序登陆,颁发token,暂时模拟openid
*
* @return token字符串
*/
- @PostMapping("/login")
+ @PostMapping("/oauth/access_token")
// @ApiOperation(value = "获取token",notes = "获取token")
public R loginReturnToken(@Validated @RequestBody LoginVO loginVO) {
- String openid = "oqwKL5Zm8oINt29qiXdbtgYA9EDo";
+ Boolean isProduct = false;
+ String openid = null;
+ if(isProduct){
+ //todo 此处结合小程序API
+ }else{
+ openid = "orIMY4xGhMmipwFZoSL1vOhUNFZ0";
+ }
StoreMember member = memberService.login(openid);
if(member == null){
R.error(401,"用户登陆失败");
@@ -59,11 +65,11 @@ public class AuthController {
User user = User.builder()
.id(member.getId().intValue())
.username(member.getNickname())
- .roles(Arrays.asList("user", "admin"))
+ //.roles(Arrays.asList("user", "admin"))
.build();
String token = operator.generateToken(user);
HashMap map = new HashMap<>();
- map.put("token",token);
+ map.put("access_token",token);
return R.success(map);
}
}
\ No newline at end of file
diff --git a/ruoyi-api/src/main/java/com/ruoyi/app/modular/member/service/vo/LoginVO.java b/ruoyi-api/src/main/java/com/ruoyi/app/modular/member/service/vo/LoginVO.java
index eadbf52..dc0c213 100644
--- a/ruoyi-api/src/main/java/com/ruoyi/app/modular/member/service/vo/LoginVO.java
+++ b/ruoyi-api/src/main/java/com/ruoyi/app/modular/member/service/vo/LoginVO.java
@@ -6,14 +6,13 @@ import javax.validation.constraints.NotBlank;
@Data
public class LoginVO {
- @NotBlank(message = "code必传")
+ //@NotBlank(message = "code必传")
private String code;
private String encrypted_data;
private String iv;
- private String share_user_id;
diff --git a/ruoyi-api/src/main/resources/application.yml b/ruoyi-api/src/main/resources/application.yml
index 90548db..f43178a 100644
--- a/ruoyi-api/src/main/resources/application.yml
+++ b/ruoyi-api/src/main/resources/application.yml
@@ -4,7 +4,7 @@ light-security:
# 权限规则配置:表示用{http-method}方法请求的{path}路径必须具备什么{expression}
spec-list:
- http-method: ANY
- path: /auth/login
+ path: /oauth/access_token
expression: "anon()"
- http-method: get
path: /doc.html
@@ -15,9 +15,9 @@ light-security:
- http-method: get
path: /swagger-resources/**
expression: "anon()"
- - http-method: GET
- path: /user/info
- expression: "hasAnyRoles('user')"
+# - http-method: GET
+# path: /user/info
+# expression: "hasAnyRoles('user')"
- http-method: ANY
path: /user/super
expression: "hasAllRoles('user','admin')"
@@ -53,7 +53,7 @@ spring:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
- url: jdbc:mysql://localhost:3306/tours?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC
+ url: jdbc:mysql://localhost:3306/ruoyi?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource #这里是配置druid连接池,以下都是druid的配置信息
filters: stat,wall,log4j
maxActive: 20
diff --git a/ruoyi-api/src/test/java/com/ruoyi/generator/EntityGenerator.java b/ruoyi-api/src/test/java/com/ruoyi/generator/EntityGenerator.java
new file mode 100644
index 0000000..770b24c
--- /dev/null
+++ b/ruoyi-api/src/test/java/com/ruoyi/generator/EntityGenerator.java
@@ -0,0 +1,91 @@
+package com.ruoyi.generator;
+
+
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
+import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
+
+import com.baomidou.mybatisplus.generator.config.rules.DbType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 自动生成
+ */
+public class EntityGenerator {
+
+ @Test
+ public void entityGenerator() {
+ AutoGenerator mpg = new AutoGenerator();
+
+ // 全局配置
+ GlobalConfig gc = new GlobalConfig();
+ gc.setOutputDir("E:\\java\\Supply\\src\\main\\java");//这里写你自己的java目录
+ gc.setFileOverride(true);//是否覆盖
+ gc.setActiveRecord(true);
+ gc.setEnableCache(false);// XML 二级缓存
+ gc.setBaseResultMap(true);// XML ResultMap
+ gc.setBaseColumnList(false);// XML columList
+ gc.setAuthor("hupeng");
+ mpg.setGlobalConfig(gc);
+
+ // 数据源配置
+ DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setDbType(DbType.MYSQL);
+ dsc.setTypeConvert(new MySqlTypeConvert() {
+ // 自定义数据库表字段类型转换【可选】
+ @Override
+ public DbColumnType processTypeConvert(String fieldType) {
+ return super.processTypeConvert(fieldType);
+ }
+ });
+ dsc.setDriverName("com.mysql.jdbc.Driver");
+ dsc.setUsername("root");
+ dsc.setPassword("root");
+ dsc.setUrl("jdbc:mysql://127.0.0.1:3306/ruoyi?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");
+ mpg.setDataSource(dsc);
+
+ // 策略配置
+ StrategyConfig strategy = new StrategyConfig();
+ //strategy.setTablePrefix(new String[]{"_"});// 此处可以修改为您的表前缀
+ strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
+ strategy.setInclude(new String[]{"store_ads"});
+ mpg.setStrategy(strategy);
+
+ // 包配置
+ PackageConfig pc = new PackageConfig();
+ pc.setParent(null);
+ pc.setEntity("com.ruoyi.app.common.persistence.model");
+ pc.setMapper("com.ruoyi.app.common.persistence.dao");
+ pc.setXml("com.ruoyi.app.common.persistence.dao.mapping");
+ pc.setService("TTT"); //本项目没用,生成之后删掉
+ pc.setServiceImpl("TTT"); //本项目没用,生成之后删掉
+ pc.setController("TTT"); //本项目没用,生成之后删掉
+ mpg.setPackageInfo(pc);
+
+ // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值
+ InjectionConfig cfg = new InjectionConfig() {
+ @Override
+ public void initMap() {
+ Map map = new HashMap<>();
+ map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
+ this.setMap(map);
+ }
+ };
+ mpg.setCfg(cfg);
+
+ // 执行生成
+ mpg.execute();
+
+ // 打印注入设置
+ System.err.println(mpg.getCfg().getMap().get("abc"));
+ }
+}