Kaynağa Gözat

日志通知

yq 2 yıl önce
ebeveyn
işleme
dfdb8af8ee

+ 89 - 89
src/main/java/com/usky/dxtop/MysqlGenerator.java

@@ -1,89 +1,89 @@
-//package com.usky.dxtop;
-//
-//import com.baomidou.mybatisplus.core.toolkit.StringPool;
-//import com.baomidou.mybatisplus.generator.AutoGenerator;
-//import com.baomidou.mybatisplus.generator.InjectionConfig;
-//import com.baomidou.mybatisplus.generator.config.*;
-//import com.baomidou.mybatisplus.generator.config.po.TableInfo;
-//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
-//
-//import java.util.ArrayList;
-//import java.util.List;
-//
-//public class MysqlGenerator {
-//
-//
-//    public static void main(String[] args) {
-//        AutoGenerator mpg = new AutoGenerator();
-//        //1、全局配置
-//        GlobalConfig gc = new GlobalConfig();
-//        String projectPath = System.getProperty("user.dir");
-//        gc.setOutputDir(projectPath + "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
-//        gc.setAuthor("yq"); //设置作者
-//        gc.setOpen(false);
-//        gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
-//        gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
-//        gc.setBaseResultMap(true); //生成resultMap
-//        mpg.setGlobalConfig(gc);
-//
-//        //2、数据源配置
-//        DataSourceConfig dsc = new DataSourceConfig();
-//        dsc.setUrl("jdbc:mysql://101.133.214.75:3306/dxtop?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
-//        dsc.setDriverName("com.mysql.jdbc.Driver");
-//        dsc.setUsername("usky");
-//        dsc.setPassword("Yt#75Usky");
-//        mpg.setDataSource(dsc);
-//
-//        // 3、包配置
-//        PackageConfig pc = new PackageConfig();
-//        pc.setParent("com.usky.dxtop");
-//        pc.setController("controller.web");
-//        pc.setEntity("model");
-//        pc.setMapper("mapper");
-//        pc.setService("service");
-//        pc.setServiceImpl("service.impl");
-//        mpg.setPackageInfo(pc);
-//
-//        // 4、策略配置
-//        StrategyConfig strategy = new StrategyConfig();
-//        strategy.setNaming(NamingStrategy.underline_to_camel);
-//        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
-//        // strategy.setTablePrefix("t_"); // 表名前缀
-//        strategy.setEntityLombokModel(true); //使用lombok
-//        strategy.setInclude("dre_user");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
-//
-//        mpg.setStrategy(strategy);
-//        // 关闭默认 xml 生成,调整生成 至 根目录
-//        //修改对应的模块名称
-//        TemplateConfig tc = new TemplateConfig();
-//        // 自定义配置
-//        InjectionConfig cfg = new InjectionConfig() {
-//            @Override
-//            public void initMap() {
-//                // to do nothing
-//            }
-//        };
-//        //如果模板引擎是 velocity
-//        String templatePath = "/templates/mapper.xml.vm";
-//        // 自定义输出配置
-//        List<FileOutConfig> focList = new ArrayList<>();
-//        // 自定义配置会被优先输出
-//        String finalProjectPath = projectPath;
-//        focList.add(new FileOutConfig(templatePath) {
-//            @Override
-//            public String outputFile(TableInfo tableInfo) {
-//                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
-//                return finalProjectPath + "/src/main/resources/mapper" + "/"
-//                        + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
-//            }
-//        });
-//        cfg.setFileOutConfigList(focList);
-//        mpg.setCfg(cfg);
-//        tc.setXml(null);
-//        mpg.setTemplate(tc);
-//
-//        //5、执行
-//        mpg.execute();
-//    }
-//
-//}
+package com.usky.dxtop;
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MysqlGenerator {
+
+
+    public static void main(String[] args) {
+        AutoGenerator mpg = new AutoGenerator();
+        //1、全局配置
+        GlobalConfig gc = new GlobalConfig();
+        String projectPath = System.getProperty("user.dir");
+        gc.setOutputDir(projectPath + "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
+        gc.setAuthor("yq"); //设置作者
+        gc.setOpen(false);
+        gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
+        gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
+        gc.setBaseResultMap(true); //生成resultMap
+        mpg.setGlobalConfig(gc);
+
+        //2、数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://101.133.214.75:3306/dxtop?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setDriverName("com.mysql.jdbc.Driver");
+        dsc.setUsername("usky");
+        dsc.setPassword("Yt#75Usky");
+        mpg.setDataSource(dsc);
+
+        // 3、包配置
+        PackageConfig pc = new PackageConfig();
+        pc.setParent("com.usky.dxtop");
+        pc.setController("controller.web");
+        pc.setEntity("model");
+        pc.setMapper("mapper");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+        mpg.setPackageInfo(pc);
+
+        // 4、策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        // strategy.setTablePrefix("t_"); // 表名前缀
+        strategy.setEntityLombokModel(true); //使用lombok
+        strategy.setInclude("dre_order_notice_log");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+
+        mpg.setStrategy(strategy);
+        // 关闭默认 xml 生成,调整生成 至 根目录
+        //修改对应的模块名称
+        TemplateConfig tc = new TemplateConfig();
+        // 自定义配置
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+        //如果模板引擎是 velocity
+        String templatePath = "/templates/mapper.xml.vm";
+        // 自定义输出配置
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+        String finalProjectPath = projectPath;
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+                return finalProjectPath + "/src/main/resources/mapper" + "/"
+                        + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        tc.setXml(null);
+        mpg.setTemplate(tc);
+
+        //5、执行
+        mpg.execute();
+    }
+
+}

+ 0 - 7
src/main/java/com/usky/dxtop/controller/web/business/DreMenuController.java

@@ -4,19 +4,12 @@ package com.usky.dxtop.controller.web.business;
 import com.usky.dxtop.common.annotation.RepeatSubmit;
 import com.usky.dxtop.common.core.domain.ApiResult;
 import com.usky.dxtop.common.core.page.CommonPage;
-import com.usky.dxtop.model.Company;
 import com.usky.dxtop.model.DreMenu;
 import com.usky.dxtop.service.DreMenuService;
-import com.usky.dxtop.service.vo.OrderFileVO;
-import io.swagger.annotations.ApiResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import org.springframework.stereotype.Controller;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
-
 /**
  * 餐品信息
  * @author yq

+ 44 - 0
src/main/java/com/usky/dxtop/controller/web/business/DreOrderNoticeLogController.java

@@ -0,0 +1,44 @@
+package com.usky.dxtop.controller.web.business;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.dxtop.common.core.domain.ApiResult;
+import com.usky.dxtop.model.DreOrderNoticeLog;
+import com.usky.dxtop.service.DreOrderNoticeLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * 推送日志
+ * @author yq
+ * @since 2022-08-18
+ */
+@RestController
+@RequestMapping("/dreOrderNoticeLog")
+public class DreOrderNoticeLogController {
+
+
+    @Autowired
+    private DreOrderNoticeLogService dreOrderNoticeLogService;
+
+
+
+
+    @PutMapping("/updateByUser")
+    public ApiResult<Void> updateByUser(DreOrderNoticeLog dreOrderNoticeLog){
+        dreOrderNoticeLog.setReadTime(new Date());
+        LambdaQueryWrapper<DreOrderNoticeLog> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper
+                .eq(DreOrderNoticeLog::getOrderId,dreOrderNoticeLog.getOrderId())
+                .eq(DreOrderNoticeLog::getNoticeUserId,dreOrderNoticeLog.getNoticeUserId());
+        dreOrderNoticeLogService.update(dreOrderNoticeLog,queryWrapper);
+        return ApiResult.success();
+    }
+
+}
+

+ 1 - 2
src/main/java/com/usky/dxtop/framework/config/SecurityConfig.java

@@ -14,7 +14,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.security.web.authentication.logout.LogoutFilter;
 import org.springframework.web.filter.CorsFilter;
@@ -103,7 +102,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                         "/dxtop/charge/page","/dxtop/dish/page","/wxLogin","/wxAccToken","/dxtop/order/callUnifiedPay",
                         "/dxtop/staff/one","/dxtop/staff/cardBalance","/dxtop/charge/cordPage","/dxtop/charge","/dxtop/dish",
                         "/dxtop/staff","/offSendMessage","/offOpenId","/loginByCenter","/aliWeather","/dreMenu/**","/dreOrder/**",
-                        "/dreOrderDetail/**","/system/config/configKey/**"
+                        "/dreOrderDetail/**","/system/config/configKey/**","/dreOrderNoticeLog/updateByUser"
                         ).permitAll()
                 .antMatchers(
                         HttpMethod.GET,

+ 16 - 0
src/main/java/com/usky/dxtop/mapper/DreOrderNoticeLogMapper.java

@@ -0,0 +1,16 @@
+package com.usky.dxtop.mapper;
+
+import com.usky.dxtop.model.DreOrderNoticeLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 自助点餐-订单通知日志 Mapper 接口
+ * </p>
+ *
+ * @author yq
+ * @since 2022-08-18
+ */
+public interface DreOrderNoticeLogMapper extends BaseMapper<DreOrderNoticeLog> {
+
+}

+ 89 - 0
src/main/java/com/usky/dxtop/model/DreOrderNoticeLog.java

@@ -0,0 +1,89 @@
+package com.usky.dxtop.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 自助点餐-订单通知日志
+ * </p>
+ *
+ * @author yq
+ * @since 2022-08-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class DreOrderNoticeLog implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 订单ID
+     */
+    private Integer orderId;
+
+    /**
+     * 通知时间
+     */
+    private Date notcieTime;
+
+    /**
+     * 通知人ID
+     */
+    private Integer noticeUserId;
+
+    /**
+     * 通知人姓名
+     */
+    private String noticeUserName;
+
+    /**
+     * 读取时间
+     */
+    private Date readTime;
+
+    /**
+     * 发送状态(0:发送成功 1:发送失败)
+     */
+    private Integer sendStatus;
+
+    /**
+     * 发送结果
+     */
+    private String sendResult;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+
+}

+ 16 - 0
src/main/java/com/usky/dxtop/service/DreOrderNoticeLogService.java

@@ -0,0 +1,16 @@
+package com.usky.dxtop.service;
+
+import com.usky.dxtop.model.DreOrderNoticeLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 自助点餐-订单通知日志 服务类
+ * </p>
+ *
+ * @author yq
+ * @since 2022-08-18
+ */
+public interface DreOrderNoticeLogService extends IService<DreOrderNoticeLog> {
+
+}

+ 20 - 0
src/main/java/com/usky/dxtop/service/impl/DreOrderNoticeLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.dxtop.service.impl;
+
+import com.usky.dxtop.model.DreOrderNoticeLog;
+import com.usky.dxtop.mapper.DreOrderNoticeLogMapper;
+import com.usky.dxtop.service.DreOrderNoticeLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 自助点餐-订单通知日志 服务实现类
+ * </p>
+ *
+ * @author yq
+ * @since 2022-08-18
+ */
+@Service
+public class DreOrderNoticeLogServiceImpl extends ServiceImpl<DreOrderNoticeLogMapper, DreOrderNoticeLog> implements DreOrderNoticeLogService {
+
+}

+ 34 - 15
src/main/java/com/usky/dxtop/service/impl/DreOrderServiceImpl.java

@@ -7,21 +7,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.usky.dxtop.common.core.domain.model.LoginUser;
 import com.usky.dxtop.common.core.page.CommonPage;
 import com.usky.dxtop.common.exception.CustomException;
 import com.usky.dxtop.common.utils.*;
-import com.usky.dxtop.common.utils.uuid.UUID;
-import com.usky.dxtop.model.*;
 import com.usky.dxtop.mapper.DreOrderMapper;
+import com.usky.dxtop.model.*;
 import com.usky.dxtop.service.*;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.usky.dxtop.service.api.WxApi;
 import com.usky.dxtop.service.emun.AsyncResultType;
-import com.usky.dxtop.service.emun.OrderPayType;
-import com.usky.dxtop.service.emun.OrderSceneCode;
 import com.usky.dxtop.service.emun.OrderStatus;
-import com.usky.dxtop.service.vo.*;
+import com.usky.dxtop.service.vo.DreOrderExport;
+import com.usky.dxtop.service.vo.DreOrderRequest;
+import com.usky.dxtop.service.vo.DreUserVO;
+import com.usky.dxtop.service.vo.OrderExport;
 import ma.glasnost.orika.MapperFacade;
 import ma.glasnost.orika.MapperFactory;
 import ma.glasnost.orika.impl.DefaultMapperFactory;
@@ -66,6 +66,11 @@ public class DreOrderServiceImpl extends ServiceImpl<DreOrderMapper, DreOrder> i
     @Autowired
     private DreUserService dreUserService;
 
+    private static final String ORDER_PREFIX = "DX-";
+
+    @Autowired
+    private DreOrderNoticeLogService dreOrderNoticeLogService;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean add(DreOrder dreOrder) {
@@ -214,14 +219,34 @@ public class DreOrderServiceImpl extends ServiceImpl<DreOrderMapper, DreOrder> i
         String url = String.format("%s%s",URL,dreOrder.getId());
         List<DreUserVO> list = dreUserService.list(null, true);
         list = list.stream().filter(dreUserVO -> StringUtils.isNotBlank(dreUserVO.getOpenId())).collect(Collectors.toList());
+        List<DreOrderNoticeLog> dreOrderNoticeLogs = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list)){
             for (DreUserVO dreUserVO:list) {
-                String result = wxApi.sendMessageApi(dreUserVO.getOpenId(),getMessageData(dreOrder),wxApi.getToken(WxApi.APP_ID,WxApi.SECRET), WxApi.DRE_ORDER_INSERT,url);
-                wxApi.againSendMessage(result,dreUserVO.getOpenId(), getMessageData(dreOrder), WxApi.DRE_ORDER_INSERT, URL,WxApi.APP_ID,WxApi.SECRET);
+                DreOrderNoticeLog dreOrderNoticeLog = generateNoticeLog(dreOrder, dreUserVO);
+                String result;
+                try {
+                    result = wxApi.sendMessageApi(dreUserVO.getOpenId(),getMessageData(dreOrder),wxApi.getToken(WxApi.APP_ID,WxApi.SECRET), WxApi.DRE_ORDER_INSERT,url);
+                    result = wxApi.againSendMessage(result,dreUserVO.getOpenId(), getMessageData(dreOrder), WxApi.DRE_ORDER_INSERT, URL,WxApi.APP_ID,WxApi.SECRET);
+                }catch (Exception e){
+                    dreOrderNoticeLog.setSendStatus(1);
+                    result = e.getMessage();
+                }
+                dreOrderNoticeLog.setSendResult(result);
+                dreOrderNoticeLogs.add(dreOrderNoticeLog);
             }
+            dreOrderNoticeLogService.saveBatch(dreOrderNoticeLogs);
         }
     }
 
+    public DreOrderNoticeLog  generateNoticeLog(DreOrder dreOrder, DreUserVO dreUserVO){
+        DreOrderNoticeLog dreOrderNoticeLog = new DreOrderNoticeLog();
+        dreOrderNoticeLog.setOrderId(dreOrder.getId().intValue());
+        dreOrderNoticeLog.setNotcieTime(new Date());
+        dreOrderNoticeLog.setNoticeUserId(dreUserVO.getSId().intValue());
+        dreOrderNoticeLog.setNoticeUserName(dreUserVO.getName());
+        return dreOrderNoticeLog;
+    }
+
     public Map<String,Object> getMessageData(DreOrder dreOrder){
         Map<String, Object> map = new HashMap<>();
         map.put("first",getMap("您好,您有新订单",null));
@@ -243,14 +268,8 @@ public class DreOrderServiceImpl extends ServiceImpl<DreOrderMapper, DreOrder> i
 
 
     public static String generateOrderNumber(){
-        Random random = new Random();
-        String result="";
-        for (int i=0;i<4;i++)
-        {
-            result+=random.nextInt(10);
-        }
         String format = DateUtils.format(new Date(), DateUtils.YYYYMMDDHHMMSS);
-        return String.format("%s%s",result,format);
+        return String.format("%s%s",ORDER_PREFIX,format);
     }
 
 }

+ 21 - 0
src/main/resources/mapper/DreOrderNoticeLogMapper.xml

@@ -0,0 +1,21 @@
+<?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.usky.dxtop.mapper.DreOrderNoticeLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.dxtop.model.DreOrderNoticeLog">
+        <id column="id" property="id" />
+        <result column="order_id" property="orderId" />
+        <result column="notcie_time" property="notcieTime" />
+        <result column="notice_user_id" property="noticeUserId" />
+        <result column="notice_user_name" property="noticeUserName" />
+        <result column="read_time" property="readTime" />
+        <result column="send_status" property="sendStatus" />
+        <result column="send_result" property="sendResult" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>