Browse Source

feat:1.新增产品分类统计 2.新增用户信息查询接口 3.新增订单表产品分类字段的 4.调整小程序登录 token 时效性为一天

master
tanzhisong 1 month ago
parent
commit
bad1b55c56
14 changed files with 133 additions and 26 deletions
  1. +3
    -2
      jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/MLoginUser.java
  2. +4
    -0
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/AppOrder.java
  3. +27
    -0
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/OrderStatistics.java
  4. +24
    -0
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/OrderTypeCount.java
  5. +5
    -1
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/mapper/AppOrderMapper.java
  6. +19
    -2
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/mapper/xml/AppOrderMapper.xml
  7. +0
    -1
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/product/mapper/AppProductMapper.java
  8. +2
    -1
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/productCategory/mapper/AppCategoryMapper.java
  9. +13
    -0
      jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/productCategory/mapper/xml/AppCategoryMapper.xml
  10. +2
    -5
      jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java
  11. +2
    -5
      jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/OrderService.java
  12. +12
    -6
      jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java
  13. +19
    -2
      jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/user/contoller/MUserController.java
  14. +1
    -1
      jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/user/service/impl/UserServiceImpl.java

+ 3
- 2
jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/MLoginUser.java View File

@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.common.desensitization.annotation.SensitiveField;
import org.jeecg.common.desensitization.enums.SensitiveEnum;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
@ -24,7 +25,7 @@ public class MLoginUser {
/**头像*/
private java.lang.String avatar;
/**手机号*/
@SensitiveField
@SensitiveField(type = SensitiveEnum.MOBILE_PHONE)
private java.lang.String phone;
/**小程序 openid*/
private java.lang.String openid;
@ -36,7 +37,7 @@ public class MLoginUser {
/**状态*/
private java.lang.Integer status;
/**邮箱*/
@SensitiveField
@SensitiveField(type = SensitiveEnum.EMAIL)
private java.lang.String email;
/**最后登录时间*/
private java.util.Date lastLoginAt;


+ 4
- 0
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/AppOrder.java View File

@ -53,6 +53,10 @@ public class AppOrder implements Serializable {
@Excel(name = "产品合同模板", width = 15)
@ApiModelProperty(value = "产品合同模板")
private java.lang.String productContractTemp;
/**产品分类*/
@Excel(name = "产品分类", width = 15)
@ApiModelProperty(value = "产品分类")
private java.lang.String productType;
/**经销商*/
@Excel(name = "经销商", width = 15)
@ApiModelProperty(value = "经销商")


+ 27
- 0
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/OrderStatistics.java View File

@ -0,0 +1,27 @@
package org.jeecg.modules.sysMiniapp.order.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author Tanzs
* @date 2025/3/6 下午2:15
* @description 订单统计实体类
*/
@ApiModel(value="OrderStatistics对象", description="订单统计信息")
@Data
public class OrderStatistics {
@ApiModelProperty(value = "当月订单总数量")
private String orderCount;
@ApiModelProperty(value = "当月订单总销售额")
private String totalMoney;
@ApiModelProperty(value = "当月订单分类统计信息")
private List<OrderTypeCount> orderTypeCount;
}

+ 24
- 0
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/entity/OrderTypeCount.java View File

@ -0,0 +1,24 @@
package org.jeecg.modules.sysMiniapp.order.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Tanzs
* @date 2025/3/6 下午3:38
* @description
*/
@Data
@ApiModel(value="OrderTypeCount对象", description="订单分类统计信息")
public class OrderTypeCount {
@ApiModelProperty(value = "产品类别名称")
private String productType;
@ApiModelProperty(value = "产品类别对应订单数量")
private String orderCount;
@ApiModelProperty(value = "产品类别对应订单销售额")
private String totalMoney;
}

+ 5
- 1
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/mapper/AppOrderMapper.java View File

@ -2,8 +2,11 @@ package org.jeecg.modules.sysMiniapp.order.mapper;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.sysMiniapp.order.entity.OrderStatistics;
import org.jeecg.modules.sysMiniapp.order.entity.OrderTypeCount;
import org.springframework.data.repository.query.Param;
import java.util.List;
import java.util.Map;
/**
@ -14,6 +17,7 @@ import java.util.Map;
*/
public interface AppOrderMapper extends BaseMapper<AppOrder> {
Map<String,String> getStatistics(@Param("userName")String userName);
OrderStatistics getStatistics(@Param("userName")String userName);
List<OrderTypeCount> getOrderTypeCount(@Param("userName")String userName);
}

+ 19
- 2
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/order/mapper/xml/AppOrderMapper.xml View File

@ -2,10 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.sysMiniapp.order.mapper.AppOrderMapper">
<select id="getStatistics" resultType="java.util.Map">
<select id="getStatistics" resultType="org.jeecg.modules.sysMiniapp.order.entity.OrderStatistics">
SELECT
count( 1 ) AS orderCount,
IFNULL(SUM( v.service_money ),0) AS totalMoney
COALESCE(SUM( v.service_money ),0) AS totalMoney
FROM
app_order o
Left Join app_order_voucher v ON o.id = v.order_fk_id
@ -15,4 +15,21 @@
AND o.create_by = #{userName}
</select>
<select id="getOrderTypeCount" resultType="org.jeecg.modules.sysMiniapp.order.entity.OrderTypeCount">
SELECT
o.product_type AS productType,
COUNT(o.id) AS orderCount,
COALESCE(SUM(v.service_money), 0) AS totalMoney
FROM
app_order o
LEFT JOIN
app_order_voucher v ON o.id = v.order_fk_id
WHERE
STATUS = 1
AND DATE_FORMAT(o.create_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') -- 直接匹配年月
AND o.create_by = #{userName}
GROUP BY
o.product_type
</select>
</mapper>

+ 0
- 1
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/product/mapper/AppProductMapper.java View File

@ -15,5 +15,4 @@ import java.util.List;
public interface AppProductMapper extends BaseMapper<AppProduct> {
List<AppProduct> getAppProductsByCateGory(@Param("name")String name, @Param("categoryId")Integer categoryId);
}

+ 2
- 1
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/productCategory/mapper/AppCategoryMapper.java View File

@ -1,5 +1,6 @@
package org.jeecg.modules.sysMiniapp.productCategory.mapper;
import io.lettuce.core.dynamic.annotation.Param;
import org.jeecg.modules.sysMiniapp.productCategory.entity.AppCategory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@ -11,5 +12,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface AppCategoryMapper extends BaseMapper<AppCategory> {
AppCategory getCategoryByProductName(@Param("productName") String productName);
}

+ 13
- 0
jeecg-module-demo/src/main/java/org/jeecg/modules/sysMiniapp/productCategory/mapper/xml/AppCategoryMapper.xml View File

@ -2,4 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.sysMiniapp.productCategory.mapper.AppCategoryMapper">
<select id="getCategoryByProductName" resultType="org.jeecg.modules.sysMiniapp.productCategory.entity.AppCategory">
SELECT
a.id as id,
a.category_name as categoryName
FROM
app_product AS p
LEFT JOIN app_product_category_join AS c ON p.id = c.product_id
LEFT JOIN app_category AS a ON c.category_id = a.id
<where>
p.`name` = #{name}
</where>
</select>
</mapper>

+ 2
- 5
jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/controller/OrderController.java View File

@ -21,10 +21,7 @@ import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.miniapp.order.service.OrderService;
import org.jeecg.modules.miniapp.order.service.impl.OrderServiceImpl;
import org.jeecg.modules.miniapp.utils.UserInfoUtil;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrder;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderCar;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderFinance;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderVoucher;
import org.jeecg.modules.sysMiniapp.order.entity.*;
import org.jeecg.modules.sysMiniapp.order.service.IAppOrderCarService;
import org.jeecg.modules.sysMiniapp.order.service.IAppOrderFinanceService;
import org.jeecg.modules.sysMiniapp.order.service.IAppOrderService;
@ -128,7 +125,7 @@ public class OrderController {
*/
@ApiOperation(value="查询当前用户订单统计", notes="查询当前用户订单统计")
@GetMapping(value = "/statistics")
public Result<Map<String,String>> getStatistics() {
public Result<OrderStatistics> getStatistics() {
return Result.OK(orderService.getStatistics());
}


+ 2
- 5
jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/OrderService.java View File

@ -1,9 +1,6 @@
package org.jeecg.modules.miniapp.order.service;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrder;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderCar;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderFinance;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderVoucher;
import org.jeecg.modules.sysMiniapp.order.entity.*;
import java.util.List;
import java.util.Map;
@ -27,7 +24,7 @@ public interface OrderService {
* 统计当前用户订单信息
* @return
*/
Map<String,String> getStatistics();
OrderStatistics getStatistics();
/**
* 生成订单合同


+ 12
- 6
jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/order/service/impl/OrderServiceImpl.java View File

@ -13,14 +13,12 @@ import org.jeecg.modules.miniapp.order.entity.OrderInfo;
import org.jeecg.modules.miniapp.order.service.OrderService;
import org.jeecg.modules.miniapp.utils.PdfFormUtils;
import org.jeecg.modules.miniapp.utils.UserInfoUtil;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrder;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderCar;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderFinance;
import org.jeecg.modules.sysMiniapp.order.entity.AppOrderVoucher;
import org.jeecg.modules.sysMiniapp.order.entity.*;
import org.jeecg.modules.sysMiniapp.order.mapper.AppOrderCarMapper;
import org.jeecg.modules.sysMiniapp.order.mapper.AppOrderFinanceMapper;
import org.jeecg.modules.sysMiniapp.order.mapper.AppOrderMapper;
import org.jeecg.modules.sysMiniapp.order.mapper.AppOrderVoucherMapper;
import org.jeecg.modules.sysMiniapp.productCategory.mapper.AppCategoryMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -59,6 +57,8 @@ public class OrderServiceImpl implements OrderService {
@Autowired
private AppOrderFinanceMapper appOrderFinanceMapper;
@Autowired
private AppCategoryMapper appCategoryMapper;
@Autowired
private UserInfoUtil userInfoUtil;
@Autowired
private PdfFormUtils pdfFormUtils;
@ -90,6 +90,10 @@ public class OrderServiceImpl implements OrderService {
// 当前登录用户
appOrder.setCreateBy(user.getNickName());
appOrder.setCreateTime(new Date());
// 根据产品名称查询产品对应的分类
String productCategory = appCategoryMapper.getCategoryByProductName(appOrder.getProductName()).getCategoryName();
appOrder.setProductType(productCategory);
// 合同模板不为空则生成 pdf 合同为空则不需要生成
if (StrUtil.isNotBlank(appOrder.getProductContractTemp())){
BeanUtils.copyProperties(appOrder, orderInfo);
BeanUtils.copyProperties(appOrderCarList.get(0),orderInfo);
@ -126,10 +130,12 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public Map<String, String> getStatistics() {
public OrderStatistics getStatistics() {
// 获取当前用户信息
MLoginUser user =userInfoUtil.getUserInfo();
return appOrderMapper.getStatistics(user.getNickName());
OrderStatistics orderStatistics = appOrderMapper.getStatistics(user.getNickName()); // 统计当月总的订单量和销售额
orderStatistics.setOrderTypeCount(appOrderMapper.getOrderTypeCount(user.getNickName())); // 统计产品分类订单量和销售额
return orderStatistics;
}
@Override


+ 19
- 2
jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/user/contoller/MUserController.java View File

@ -10,6 +10,7 @@ import org.jeecg.common.system.vo.MLoginUser;
import org.jeecg.config.shiro.IgnoreAuth;
import org.jeecg.modules.miniapp.user.domain.WxLoginInfo;
import org.jeecg.modules.miniapp.user.service.UserService;
import org.jeecg.modules.miniapp.utils.UserInfoUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -29,8 +30,11 @@ public class MUserController {
@Autowired
UserService userService;
@Autowired
UserInfoUtil userInfoUtil;
@IgnoreAuth
@ApiOperation(value="微信小程序登录", notes="微信小程序登录测试")
// @ApiOperation(value="微信小程序登录", notes="微信小程序登录测试")
@PostMapping(value = "/wxlogin")
public Result<Object> wxLogin(@RequestBody WxLoginInfo wxLoginInfo) {
return userService.wxLogin(wxLoginInfo);
@ -38,7 +42,7 @@ public class MUserController {
@IgnoreAuth
@ApiOperation(value="获取授权手机号", notes="获取授权手机号")
// @ApiOperation(value="获取授权手机号", notes="获取授权手机号")
@PostMapping(value = "/bindPhone")
public Result<Object> getWxphoneNumer(String code) {
return userService.getWxphoneNumer(code);
@ -57,6 +61,19 @@ public class MUserController {
return userService.logout(request);
}
@ApiOperation(value="获取当前登录用户信息", notes="获取当前登录用户信息")
@GetMapping(value = "/getUserInfo")
public Result<MLoginUser> getUserInfo() {
MLoginUser mLoginUser = userInfoUtil.getUserInfo();
//用户信息加密
try {
SensitiveInfoUtil.handlerObject(mLoginUser, true);
} catch (IllegalAccessException e) {
log.error(e.getMessage(), e);
}
return Result.OK(mLoginUser);
}
/**
* 根据用户账号查询用户信息
* @param username


+ 1
- 1
jeecg-module-miniapp/src/main/java/org/jeecg/modules/miniapp/user/service/impl/UserServiceImpl.java View File

@ -122,7 +122,7 @@ public class UserServiceImpl implements UserService {
String token = JwtUtil.signMiniApp(username, syspassword);
// 设置超时时间
redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000);
redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, 86400); // 小程序的暂时保存一天
redisUtil.del(CommonConstant.LOGIN_FAIL + username);
// 5. 更新用户信息


Loading…
Cancel
Save