瀏覽代碼

fix 新增商品信息,对接微信支付,除回调接口

Administrator 1 年之前
父節點
當前提交
fbca23a66a
共有 20 個文件被更改,包括 817 次插入18 次删除
  1. 113 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/commodity/DoumuCommodityInfoController.java
  2. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/doumu/DoumuProductInfoController.java
  3. 1 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  4. 112 0
      ruoyi-system/src/main/java/com/ruoyi/commodity/domain/DoumuCommodityInfo.java
  5. 61 0
      ruoyi-system/src/main/java/com/ruoyi/commodity/mapper/DoumuCommodityInfoMapper.java
  6. 61 0
      ruoyi-system/src/main/java/com/ruoyi/commodity/service/IDoumuCommodityInfoService.java
  7. 96 0
      ruoyi-system/src/main/java/com/ruoyi/commodity/service/impl/DoumuCommodityInfoServiceImpl.java
  8. 47 0
      ruoyi-system/src/main/java/com/ruoyi/system/domain/DoumuProductInfo.java
  9. 3 3
      ruoyi-system/src/main/java/com/ruoyi/system/domain/wx/WxPayOrderReqVo.java
  10. 3 3
      ruoyi-system/src/main/java/com/ruoyi/system/domain/wx/WxPayRespVo.java
  11. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/DoumuProductInfoMapper.java
  12. 1 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/IDoumuProductInfoService.java
  13. 5 0
      ruoyi-system/src/main/java/com/ruoyi/system/service/IWxPayService.java
  14. 5 3
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DoumuProductInfoServiceImpl.java
  15. 186 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WxPayServiceImpl.java
  16. 1 0
      ruoyi-system/src/main/resources/mapper/system/BannerMapper.xml
  17. 97 0
      ruoyi-system/src/main/resources/mapper/system/DoumuCommodityInfoMapper.xml
  18. 1 0
      ruoyi-system/src/main/resources/mapper/system/DoumuHardwareMapper.xml
  19. 15 1
      ruoyi-system/src/main/resources/mapper/system/DoumuProductInfoMapper.xml
  20. 1 0
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 113 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/commodity/DoumuCommodityInfoController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.web.controller.commodity;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.commodity.domain.DoumuCommodityInfo;
+import com.ruoyi.commodity.service.IDoumuCommodityInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 商品信息Controller
+ * 
+ * @author boman
+ * @date 2024-01-26
+ */
+@RestController
+@RequestMapping("/commodity/info")
+public class DoumuCommodityInfoController extends BaseController
+{
+    @Autowired
+    private IDoumuCommodityInfoService doumuCommodityInfoService;
+
+    /**
+     * 查询商品信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(DoumuCommodityInfo doumuCommodityInfo)
+    {
+        startPage();
+        List<DoumuCommodityInfo> list = doumuCommodityInfoService.selectDoumuCommodityInfoList(doumuCommodityInfo);
+        return getDataTable(list);
+    }
+    /**
+     * 查询商品信息列表
+     */
+    @GetMapping("/listNoPage")
+    public TableDataInfo listNoPage(DoumuCommodityInfo doumuCommodityInfo)
+    {
+        List<DoumuCommodityInfo> list = doumuCommodityInfoService.selectDoumuCommodityInfoList(doumuCommodityInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出商品信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:export')")
+    @Log(title = "商品信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, DoumuCommodityInfo doumuCommodityInfo)
+    {
+        List<DoumuCommodityInfo> list = doumuCommodityInfoService.selectDoumuCommodityInfoList(doumuCommodityInfo);
+        ExcelUtil<DoumuCommodityInfo> util = new ExcelUtil<DoumuCommodityInfo>(DoumuCommodityInfo.class);
+        util.exportExcel(response, list, "商品信息数据");
+    }
+
+    /**
+     * 获取商品信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:query')")
+    @GetMapping(value = "/{commodityId}")
+    public AjaxResult getInfo(@PathVariable("commodityId") Long commodityId)
+    {
+        return success(doumuCommodityInfoService.selectDoumuCommodityInfoByCommodityId(commodityId));
+    }
+
+    /**
+     * 新增商品信息
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:add')")
+    @Log(title = "商品信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody DoumuCommodityInfo doumuCommodityInfo)
+    {
+        return toAjax(doumuCommodityInfoService.insertDoumuCommodityInfo(doumuCommodityInfo));
+    }
+
+    /**
+     * 修改商品信息
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:edit')")
+    @Log(title = "商品信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/put")
+    public AjaxResult edit(@RequestBody DoumuCommodityInfo doumuCommodityInfo)
+    {
+        return toAjax(doumuCommodityInfoService.updateDoumuCommodityInfo(doumuCommodityInfo));
+    }
+
+    /**
+     * 删除商品信息
+     */
+    @PreAuthorize("@ss.hasPermi('commodity:info:remove')")
+    @Log(title = "商品信息", businessType = BusinessType.DELETE)
+	@GetMapping("/delete/{commodityIds}")
+    public AjaxResult remove(@PathVariable Long[] commodityIds)
+    {
+        return toAjax(doumuCommodityInfoService.deleteDoumuCommodityInfoByCommodityIds(commodityIds));
+    }
+}

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/doumu/DoumuProductInfoController.java

@@ -75,7 +75,7 @@ public class DoumuProductInfoController extends BaseController
     @PostMapping
     public AjaxResult add(@RequestBody DoumuProductInfo doumuProductInfo)
     {
-        return toAjax(doumuProductInfoService.insertDoumuProductInfo(doumuProductInfo));
+        return  doumuProductInfoService.insertDoumuProductInfo(doumuProductInfo);
     }
 
     /**

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -113,7 +113,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
                 .antMatchers("/login", "/register", "/captchaImage").permitAll()
                 .antMatchers("/new/news/**", "/wx/pay/**", "/ali/pay/**","/sf/**","/china/area/fractionation/**","/common/upload","/system/info/**").permitAll()
-                .antMatchers("/system/dict/data/type/**","/system/evaluate/**","/banner/banner/listNoPage","/system/notice/**").permitAll()
+                .antMatchers("/system/dict/data/type/**","/system/evaluate/**","/banner/banner/listNoPage","/system/notice/**","/commodity/info/listNoPage").permitAll()
                 // 静态资源,可匿名访问
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                 .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()

+ 112 - 0
ruoyi-system/src/main/java/com/ruoyi/commodity/domain/DoumuCommodityInfo.java

@@ -0,0 +1,112 @@
+package com.ruoyi.commodity.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 商品信息对象 doumu_commodity_info
+ * 
+ * @author boman
+ * @date 2024-01-26
+ */
+public class DoumuCommodityInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 商品信息编号 */
+    private Long commodityId;
+
+    /** 商品名称 */
+    @Excel(name = "商品名称")
+    private String commodityName;
+
+    /** 商品金额 */
+    @Excel(name = "商品金额")
+    private String commodityAmount;
+
+    /** 商品图片 */
+    @Excel(name = "商品图片")
+    private String commodityUrl;
+
+    /** 设备编号 */
+    @Excel(name = "设备编号")
+    private String hardwareNum;
+
+    /** 排序 */
+    @Excel(name = "排序")
+    private Long orders;
+
+    public void setCommodityId(Long commodityId) 
+    {
+        this.commodityId = commodityId;
+    }
+
+    public Long getCommodityId() 
+    {
+        return commodityId;
+    }
+    public void setCommodityName(String commodityName) 
+    {
+        this.commodityName = commodityName;
+    }
+
+    public String getCommodityName() 
+    {
+        return commodityName;
+    }
+    public void setCommodityAmount(String commodityAmount) 
+    {
+        this.commodityAmount = commodityAmount;
+    }
+
+    public String getCommodityAmount() 
+    {
+        return commodityAmount;
+    }
+    public void setCommodityUrl(String commodityUrl) 
+    {
+        this.commodityUrl = commodityUrl;
+    }
+
+    public String getCommodityUrl() 
+    {
+        return commodityUrl;
+    }
+    public void setHardwareNum(String hardwareNum) 
+    {
+        this.hardwareNum = hardwareNum;
+    }
+
+    public String getHardwareNum() 
+    {
+        return hardwareNum;
+    }
+    public void setOrders(Long orders) 
+    {
+        this.orders = orders;
+    }
+
+    public Long getOrders() 
+    {
+        return orders;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("commodityId", getCommodityId())
+            .append("commodityName", getCommodityName())
+            .append("commodityAmount", getCommodityAmount())
+            .append("commodityUrl", getCommodityUrl())
+            .append("hardwareNum", getHardwareNum())
+            .append("orders", getOrders())
+            .append("createTime", getCreateTime())
+            .append("createBy", getCreateBy())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("remark", getRemark())
+            .toString();
+    }
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/commodity/mapper/DoumuCommodityInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.commodity.mapper;
+
+import java.util.List;
+import com.ruoyi.commodity.domain.DoumuCommodityInfo;
+
+/**
+ * 商品信息Mapper接口
+ * 
+ * @author boman
+ * @date 2024-01-26
+ */
+public interface DoumuCommodityInfoMapper 
+{
+    /**
+     * 查询商品信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 商品信息
+     */
+    public DoumuCommodityInfo selectDoumuCommodityInfoByCommodityId(Long commodityId);
+
+    /**
+     * 查询商品信息列表
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 商品信息集合
+     */
+    public List<DoumuCommodityInfo> selectDoumuCommodityInfoList(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 新增商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    public int insertDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 修改商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    public int updateDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 删除商品信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 结果
+     */
+    public int deleteDoumuCommodityInfoByCommodityId(Long commodityId);
+
+    /**
+     * 批量删除商品信息
+     * 
+     * @param commodityIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDoumuCommodityInfoByCommodityIds(Long[] commodityIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/commodity/service/IDoumuCommodityInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.commodity.service;
+
+import java.util.List;
+import com.ruoyi.commodity.domain.DoumuCommodityInfo;
+
+/**
+ * 商品信息Service接口
+ * 
+ * @author boman
+ * @date 2024-01-26
+ */
+public interface IDoumuCommodityInfoService 
+{
+    /**
+     * 查询商品信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 商品信息
+     */
+    public DoumuCommodityInfo selectDoumuCommodityInfoByCommodityId(Long commodityId);
+
+    /**
+     * 查询商品信息列表
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 商品信息集合
+     */
+    public List<DoumuCommodityInfo> selectDoumuCommodityInfoList(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 新增商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    public int insertDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 修改商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    public int updateDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo);
+
+    /**
+     * 批量删除商品信息
+     * 
+     * @param commodityIds 需要删除的商品信息主键集合
+     * @return 结果
+     */
+    public int deleteDoumuCommodityInfoByCommodityIds(Long[] commodityIds);
+
+    /**
+     * 删除商品信息信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 结果
+     */
+    public int deleteDoumuCommodityInfoByCommodityId(Long commodityId);
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/commodity/service/impl/DoumuCommodityInfoServiceImpl.java

@@ -0,0 +1,96 @@
+package com.ruoyi.commodity.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.commodity.mapper.DoumuCommodityInfoMapper;
+import com.ruoyi.commodity.domain.DoumuCommodityInfo;
+import com.ruoyi.commodity.service.IDoumuCommodityInfoService;
+
+/**
+ * 商品信息Service业务层处理
+ * 
+ * @author boman
+ * @date 2024-01-26
+ */
+@Service
+public class DoumuCommodityInfoServiceImpl implements IDoumuCommodityInfoService 
+{
+    @Autowired
+    private DoumuCommodityInfoMapper doumuCommodityInfoMapper;
+
+    /**
+     * 查询商品信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 商品信息
+     */
+    @Override
+    public DoumuCommodityInfo selectDoumuCommodityInfoByCommodityId(Long commodityId)
+    {
+        return doumuCommodityInfoMapper.selectDoumuCommodityInfoByCommodityId(commodityId);
+    }
+
+    /**
+     * 查询商品信息列表
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 商品信息
+     */
+    @Override
+    public List<DoumuCommodityInfo> selectDoumuCommodityInfoList(DoumuCommodityInfo doumuCommodityInfo)
+    {
+        return doumuCommodityInfoMapper.selectDoumuCommodityInfoList(doumuCommodityInfo);
+    }
+
+    /**
+     * 新增商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    @Override
+    public int insertDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo)
+    {
+        doumuCommodityInfo.setCreateTime(DateUtils.getNowDate());
+        return doumuCommodityInfoMapper.insertDoumuCommodityInfo(doumuCommodityInfo);
+    }
+
+    /**
+     * 修改商品信息
+     * 
+     * @param doumuCommodityInfo 商品信息
+     * @return 结果
+     */
+    @Override
+    public int updateDoumuCommodityInfo(DoumuCommodityInfo doumuCommodityInfo)
+    {
+        doumuCommodityInfo.setUpdateTime(DateUtils.getNowDate());
+        return doumuCommodityInfoMapper.updateDoumuCommodityInfo(doumuCommodityInfo);
+    }
+
+    /**
+     * 批量删除商品信息
+     * 
+     * @param commodityIds 需要删除的商品信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDoumuCommodityInfoByCommodityIds(Long[] commodityIds)
+    {
+        return doumuCommodityInfoMapper.deleteDoumuCommodityInfoByCommodityIds(commodityIds);
+    }
+
+    /**
+     * 删除商品信息信息
+     * 
+     * @param commodityId 商品信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDoumuCommodityInfoByCommodityId(Long commodityId)
+    {
+        return doumuCommodityInfoMapper.deleteDoumuCommodityInfoByCommodityId(commodityId);
+    }
+}

+ 47 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/DoumuProductInfo.java

@@ -1,10 +1,12 @@
 package com.ruoyi.system.domain;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -102,6 +104,14 @@ public class DoumuProductInfo extends BaseEntity
 
     private String beginTime;
     private String endTime;
+    /**
+     * 设备编号
+     */
+    private String hardwareNum;
+
+    /** 订单过期时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date closedTime;
 
     private List<DoumuProductFj> fjList;
 
@@ -111,6 +121,14 @@ public class DoumuProductInfo extends BaseEntity
         return doumuEvaluate;
     }
 
+    public String getHardwareNum() {
+        return hardwareNum;
+    }
+
+    public void setHardwareNum(String hardwareNum) {
+        this.hardwareNum = hardwareNum;
+    }
+
     public void setDoumuEvaluate(DoumuEvaluate doumuEvaluate) {
         this.doumuEvaluate = doumuEvaluate;
     }
@@ -324,17 +342,46 @@ public class DoumuProductInfo extends BaseEntity
         this.contactNumber = contactNumber;
     }
 
+    public Date getClosedTime() {
+        return closedTime;
+    }
+
+    public void setClosedTime(Date closedTime) {
+        this.closedTime = closedTime;
+    }
+
+
     @Override
     public String toString() {
         return "DoumuProductInfo{" +
                 "productId=" + productId +
+                ", openid='" + openid + '\'' +
                 ", orderNumber='" + orderNumber + '\'' +
                 ", name='" + name + '\'' +
                 ", deliveryType='" + deliveryType + '\'' +
                 ", phonenumber='" + phonenumber + '\'' +
+                ", contactNumber='" + contactNumber + '\'' +
+                ", quantity='" + quantity + '\'' +
+                ", provinceId='" + provinceId + '\'' +
+                ", province='" + province + '\'' +
+                ", cityId='" + cityId + '\'' +
+                ", city='" + city + '\'' +
+                ", countyId='" + countyId + '\'' +
+                ", county='" + county + '\'' +
                 ", address='" + address + '\'' +
+                ", lon='" + lon + '\'' +
+                ", lat='" + lat + '\'' +
                 ", flowType='" + flowType + '\'' +
+                ", status='" + status + '\'' +
+                ", goodsName='" + goodsName + '\'' +
+                ", totalPrice=" + totalPrice +
                 ", mailNo='" + mailNo + '\'' +
+                ", beginTime='" + beginTime + '\'' +
+                ", endTime='" + endTime + '\'' +
+                ", hardwareNum='" + hardwareNum + '\'' +
+                ", closedTime=" + closedTime +
+                ", fjList=" + fjList +
+                ", doumuEvaluate=" + doumuEvaluate +
                 '}';
     }
 }

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/system/domain/wx/WxPayOrderReqVo.java

@@ -27,7 +27,7 @@ public class WxPayOrderReqVo {
     private String openId;
 
     @NotNull(message = "商品订单号不能为空!")
-    private Long orderSn;
+    private String orderSn;
 
     public String getOrderType() {
         return orderType;
@@ -61,11 +61,11 @@ public class WxPayOrderReqVo {
         this.openId = openId;
     }
 
-    public Long getOrderSn() {
+    public String getOrderSn() {
         return orderSn;
     }
 
-    public void setOrderSn(Long orderSn) {
+    public void setOrderSn(String orderSn) {
         this.orderSn = orderSn;
     }
 

+ 3 - 3
ruoyi-system/src/main/java/com/ruoyi/system/domain/wx/WxPayRespVo.java

@@ -20,7 +20,7 @@ public class WxPayRespVo implements Serializable {
     /**
      * 时间戳
      */
-    private Long timeStamp;
+    private String timeStamp;
     /**
      * 签名
      */
@@ -66,11 +66,11 @@ public class WxPayRespVo implements Serializable {
         this.nonceStr = nonceStr;
     }
 
-    public Long getTimeStamp() {
+    public String getTimeStamp() {
         return timeStamp;
     }
 
-    public void setTimeStamp(Long timeStamp) {
+    public void setTimeStamp(String timeStamp) {
         this.timeStamp = timeStamp;
     }
 

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DoumuProductInfoMapper.java

@@ -45,6 +45,13 @@ public interface DoumuProductInfoMapper
      */
     public int updateDoumuProductInfo(DoumuProductInfo doumuProductInfo);
 
+    /**
+     * 修改痘姆古陶信息
+     *
+     * @param doumuProductInfo 痘姆古陶信息
+     * @return 结果
+     */
+    public int updateDoumuProductInfoByOrderNnumber(DoumuProductInfo doumuProductInfo);
     /**
      * 删除痘姆古陶信息
      *

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/IDoumuProductInfoService.java

@@ -36,7 +36,7 @@ public interface IDoumuProductInfoService
      * @param doumuProductInfo 痘姆古陶信息
      * @return 结果
      */
-    public int insertDoumuProductInfo(DoumuProductInfo doumuProductInfo);
+    public AjaxResult insertDoumuProductInfo(DoumuProductInfo doumuProductInfo);
 
     /**
      * 修改痘姆古陶信息

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IWxPayService.java

@@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.wx.AppletLoginForm;
 import com.ruoyi.system.domain.wx.AppletSessionDTO;
 import com.ruoyi.system.domain.wx.WxPayOrderReqVo;
+import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -26,6 +27,8 @@ public interface IWxPayService {
      */
     void payNotify(HttpServletRequest request);
 
+    void TemplateMessage(Transaction parse);
+
     AppletSessionDTO jscode2Session(AppletLoginForm form);
 
     /**
@@ -34,4 +37,6 @@ public interface IWxPayService {
      * @return
      */
     AjaxResult msgSecCheck(AppletSessionDTO dto);
+
+
 }

+ 5 - 3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DoumuProductInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -100,11 +101,12 @@ public class DoumuProductInfoServiceImpl implements IDoumuProductInfoService
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int insertDoumuProductInfo(DoumuProductInfo doumuProductInfo)
+    public AjaxResult insertDoumuProductInfo(DoumuProductInfo doumuProductInfo)
     {
         doumuProductInfo.setOrderNumber("DMGT"+System.currentTimeMillis());
         doumuProductInfo.setCreateTime(DateUtils.getNowDate());
-        int i = doumuProductInfoMapper.insertDoumuProductInfo(doumuProductInfo);
+        doumuProductInfo.setClosedTime(DateUtils.toDate(LocalDateTime.now().plusMinutes(15)));
+        int rows = doumuProductInfoMapper.insertDoumuProductInfo(doumuProductInfo);
 
         //保存附件
         List<DoumuProductFj> fjList = doumuProductInfo.getFjList();
@@ -115,7 +117,7 @@ public class DoumuProductInfoServiceImpl implements IDoumuProductInfoService
                 doumuProductFjMapper.insertDoumuProductFj(doumuProductFj);
             }
         }
-        return i;
+        return rows > 0 ? AjaxResult.success(doumuProductInfo) : AjaxResult.error();
     }
 
     /**

+ 186 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WxPayServiceImpl.java

@@ -9,7 +9,9 @@ import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.common.utils.sign.Base64;
+import com.ruoyi.system.domain.DoumuProductInfo;
 import com.ruoyi.system.domain.wx.*;
+import com.ruoyi.system.mapper.DoumuProductInfoMapper;
 import com.ruoyi.system.service.IWxPayService;
 import com.wechat.pay.java.core.Config;
 import com.wechat.pay.java.core.RSAAutoCertificateConfig;
@@ -25,6 +27,7 @@ import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.omg.CORBA.TIMEOUT;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -61,8 +64,12 @@ public class WxPayServiceImpl implements IWxPayService {
     private static final String ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
     //文本内容安全识别
     private static final String MSGSECCHECK = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN";
+    //公众号发送模板消息
+    private static final String TEMPLATE_MESSAGE = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
 
 
+    @Autowired
+    private DoumuProductInfoMapper doumuProductInfoMapper;
     /**
      * 小程序appId
      */
@@ -111,8 +118,9 @@ public class WxPayServiceImpl implements IWxPayService {
             request.setMchid(wxPayV3Bean.getMchId());
             request.setDescription(req.getGoodsName());
             request.setNotifyUrl(wxPayV3Bean.getNotifyUrl());
-            request.setOutTradeNo("DMGT" + System.currentTimeMillis());
-            request.setAttach(req.getOrderType());
+            request.setOutTradeNo(req.getOrderSn());
+            //自定义数据设置为商品名称
+            request.setAttach(req.getGoodsName());
             Payer payer = new Payer();
             payer.setOpenid(req.getOpenId());
             request.setPayer(payer);
@@ -120,16 +128,17 @@ public class WxPayServiceImpl implements IWxPayService {
             PrepayResponse response = service.prepay(request);
             WxPayRespVo vo = new WxPayRespVo();
             Long timeStamp = System.currentTimeMillis() / 1000;
-            vo.setTimeStamp(timeStamp);
+            vo.setTimeStamp(timeStamp.toString());
             String substring = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
             vo.setNonceStr(substring);
             String signatureStr = Stream.of(wxPayV3Bean.getAppId(), String.valueOf(timeStamp), substring, "prepay_id=" + response.getPrepayId())
                     .collect(Collectors.joining("\n", "", "\n"));
             String sign = WxPayUtil.getSign(signatureStr, wxPayV3Bean.getKeyPath());
             vo.setPaySign(sign);
-            vo.setPrepayId(response.getPrepayId());
+            vo.setPrepayId("prepay_id="+response.getPrepayId());
             vo.setAppId(wxPayV3Bean.getAppId());
             vo.setSignType("RSA");
+            //TemplateMessageZhiFu(req,request);
             //todo 存储预支付订单信息
             return AjaxResult.success(vo);
         } catch (ServiceException e) {
@@ -200,13 +209,185 @@ public class WxPayServiceImpl implements IWxPayService {
                     .body(s1)
                     .build();
             Transaction parse = parser.parse(requestParam, Transaction.class);
-            //todo 存储支付结果
+            /**
+             * trade_state
+             * 必填
+             * string(32)
+             * 交易状态,枚举值:
+             * SUCCESS:支付成功
+             * REFUND:转入退款
+             * NOTPAY:未支付
+             * CLOSED:已关闭
+             * REVOKED:已撤销(付款码支付)
+             * USERPAYING:用户支付中(付款码支付)
+             * PAYERROR:支付失败(其他原因,如银行返回失败)
+             */
+            //todo 存储支付结果 支付成功需要修改订单状态
+            Transaction.TradeStateEnum tradeState = parse.getTradeState();
+            if (Transaction.TradeStateEnum.SUCCESS.equals(tradeState)){
+                String outTradeNo = parse.getOutTradeNo();
+                //订单支付成功
+                DoumuProductInfo doumuProductInfo = new DoumuProductInfo();
+                doumuProductInfo.setOrderNumber(outTradeNo);
+                doumuProductInfo.setStatus("2");
+                doumuProductInfoMapper.updateDoumuProductInfo(doumuProductInfo);
+            }
+            TemplateMessage(parse);
             System.out.println("parse = " + parse);
         } catch (Exception e) {
             System.out.println("获取微信支付回调失败");
         }
     }
 
+    /**
+     *   给微信公共号下发消息
+     */
+    @Override
+    public void TemplateMessage(Transaction parse ) {
+        /**
+         * {
+         *            "touser":"OPENID",
+         *            "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
+         *            "url":"http://weixin.qq.com/download",
+         *            "miniprogram":{
+         *              "appid":"xiaochengxuappid12345",
+         *              "pagepath":"index?foo=bar"
+         *            },
+         *            "client_msg_id":"MSG_000001",
+         *            "data":{
+         *
+         *                    "keyword1":{
+         *                        "value":"巧克力"
+         *                    },
+         *                    "keyword2": {
+         *                        "value":"39.8元"
+         *                    },
+         *                    "keyword3": {
+         *                        "value":"2014年9月22日"
+         *                    }
+         *            }
+         *        }
+         */
+        Object accessToken = null;
+        try {
+            //todo 需要根据公众号的appid和秘钥获取token
+            //公众号appid:wxb581c5d48ffa6327
+            //从redis中获取
+            accessToken = redisCache.getCacheObject(Constants.WX_ACCESS_TOKEN);
+            if (ObjectUtils.isEmpty(accessToken)) {
+                String result = HttpClientUtils.doGet(ACCESS_TOKEN.replace("APPID", appId)
+                        .replace("APPSECRET", appSecret)
+                );
+                JSONObject jsonObject = JSONObject.parseObject(result);
+                accessToken = jsonObject.get("access_token");
+                redisCache.setCacheObject(Constants.WX_ACCESS_TOKEN, accessToken, Constants.CAPTCHA_EXPIRATION, TimeUnit.HOURS);
+            }
+            JSONObject jsonObject = new JSONObject();
+            JSONObject jsonObjectData = new JSONObject();
+            //接收者openid sp_openid 用户在服务商应用下的用户标示 sub_appid 子商户应用载体的AppID,
+            jsonObject.put("touser", parse.getPayer().getSpOpenid());
+            //模板ID
+            jsonObject.put("template_id", "rtYn3Mjepo8TSeCwabgbln3TEiWXYcfPQmAiFP9V5PU");
+            //所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
+            jsonObject.put("appid", appId);
+            /**
+             * {{first.DATA}}
+             * 订单编号:{{keyword1.DATA}}
+             * 商品名称:{{keyword2.DATA}}
+             * 订单总价:{{keyword3.DATA}}
+             * 订单状态:{{keyword4.DATA}}
+             * 下单时间:{{keyword5.DATA}}
+             * {{remark.DATA}}
+             */
+            jsonObjectData.put("first","恭喜您!购买的商品已支付成功。");
+            jsonObjectData.put("keyword1",parse.getOutTradeNo());
+            jsonObjectData.put("keyword2",parse.getAttach());
+            jsonObjectData.put("keyword3",parse.getAmount());
+            jsonObjectData.put("keyword4",parse.getTradeStateDesc());
+            jsonObjectData.put("keyword5",parse.getOutTradeNo());
+            jsonObjectData.put("remark","欢迎您的到来!");
+            //模板数据
+            jsonObject.put("data", jsonObjectData);
+            String msgsecCheck = HttpUtil.post(TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", (String) accessToken), jsonObject.toJSONString());
+            System.out.println("消息模板通知结果:"+msgsecCheck);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     *   给微信公共号下发消息预支付测试
+     */
+    public void TemplateMessageZhiFu(WxPayOrderReqVo req,PrepayRequest request ) {
+        /**
+         * {
+         *            "touser":"OPENID",
+         *            "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
+         *            "url":"http://weixin.qq.com/download",
+         *            "miniprogram":{
+         *              "appid":"xiaochengxuappid12345",
+         *              "pagepath":"index?foo=bar"
+         *            },
+         *            "client_msg_id":"MSG_000001",
+         *            "data":{
+         *
+         *                    "keyword1":{
+         *                        "value":"巧克力"
+         *                    },
+         *                    "keyword2": {
+         *                        "value":"39.8元"
+         *                    },
+         *                    "keyword3": {
+         *                        "value":"2014年9月22日"
+         *                    }
+         *            }
+         *        }
+         */
+        Object accessToken = null;
+        try {
+            //从redis中获取
+            accessToken = redisCache.getCacheObject(Constants.WX_ACCESS_TOKEN);
+            if (ObjectUtils.isEmpty(accessToken)) {
+                String result = HttpClientUtils.doGet(ACCESS_TOKEN.replace("APPID", appId)
+                        .replace("APPSECRET", appSecret)
+                );
+                JSONObject jsonObject = JSONObject.parseObject(result);
+                accessToken = jsonObject.get("access_token");
+                redisCache.setCacheObject(Constants.WX_ACCESS_TOKEN, accessToken, Constants.CAPTCHA_EXPIRATION, TimeUnit.HOURS);
+            }
+            JSONObject jsonObject = new JSONObject();
+            JSONObject jsonObjectData = new JSONObject();
+            //接收者openid sp_openid 用户在服务商应用下的用户标示 sub_appid 子商户应用载体的AppID,
+            jsonObject.put("touser", req.getOpenId());
+            //模板ID
+            jsonObject.put("template_id", "rtYn3Mjepo8TSeCwabgbln3TEiWXYcfPQmAiFP9V5PU");
+            //所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
+            jsonObject.put("appid", appId);
+            /**
+             * {{first.DATA}}
+             * 订单编号:{{keyword1.DATA}}
+             * 商品名称:{{keyword2.DATA}}
+             * 订单总价:{{keyword3.DATA}}
+             * 订单状态:{{keyword4.DATA}}
+             * 下单时间:{{keyword5.DATA}}
+             * {{remark.DATA}}
+             */
+            jsonObjectData.put("first","恭喜您!购买的商品等待支付。");
+            jsonObjectData.put("keyword1",request.getOutTradeNo());
+            jsonObjectData.put("keyword2",request.getAttach());
+            jsonObjectData.put("keyword3",request.getAmount());
+            jsonObjectData.put("keyword4","待支付");
+            jsonObjectData.put("keyword5",request.getOutTradeNo());
+            jsonObjectData.put("remark","欢迎您的到来!");
+            //模板数据
+            jsonObject.put("data", jsonObjectData);
+            String msgsecCheck = HttpUtil.post(TEMPLATE_MESSAGE.replace("ACCESS_TOKEN", (String) accessToken), jsonObject.toJSONString());
+            System.out.println("消息模板通知结果:"+msgsecCheck);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 根据code获取小程序openid和unionid
      *

+ 1 - 0
ruoyi-system/src/main/resources/mapper/system/BannerMapper.xml

@@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="type != null "> and type = #{type}</if>
             <if test="status != null  and status != ''"> and status = #{status}</if>
         </where>
+        order by create_time DESC
     </select>
     
     <select id="selectBannerByBannerId" parameterType="Long" resultMap="BannerResult">

+ 97 - 0
ruoyi-system/src/main/resources/mapper/system/DoumuCommodityInfoMapper.xml

@@ -0,0 +1,97 @@
+<?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.ruoyi.commodity.mapper.DoumuCommodityInfoMapper">
+    
+    <resultMap type="DoumuCommodityInfo" id="DoumuCommodityInfoResult">
+        <result property="commodityId"    column="commodity_id"    />
+        <result property="commodityName"    column="commodity_name"    />
+        <result property="commodityAmount"    column="commodity_amount"    />
+        <result property="commodityUrl"    column="commodity_url"    />
+        <result property="hardwareNum"    column="hardware_num"    />
+        <result property="orders"    column="orders"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="remark"    column="remark"    />
+    </resultMap>
+
+    <sql id="selectDoumuCommodityInfoVo">
+        select commodity_id, commodity_name, commodity_amount, commodity_url, hardware_num, orders, create_time, create_by, update_by, update_time, remark from doumu_commodity_info
+    </sql>
+
+    <select id="selectDoumuCommodityInfoList" parameterType="DoumuCommodityInfo" resultMap="DoumuCommodityInfoResult">
+        <include refid="selectDoumuCommodityInfoVo"/>
+        <where>  
+            <if test="commodityName != null  and commodityName != ''"> and commodity_name like concat('%', #{commodityName}, '%')</if>
+            <if test="commodityAmount != null  and commodityAmount != ''"> and commodity_amount = #{commodityAmount}</if>
+            <if test="commodityUrl != null  and commodityUrl != ''"> and commodity_url = #{commodityUrl}</if>
+            <if test="hardwareNum != null  and hardwareNum != ''"> and hardware_num = #{hardwareNum}</if>
+            <if test="orders != null "> and orders = #{orders}</if>
+        </where>
+        order by orders
+    </select>
+    
+    <select id="selectDoumuCommodityInfoByCommodityId" parameterType="Long" resultMap="DoumuCommodityInfoResult">
+        <include refid="selectDoumuCommodityInfoVo"/>
+        where commodity_id = #{commodityId}
+    </select>
+        
+    <insert id="insertDoumuCommodityInfo" parameterType="DoumuCommodityInfo" useGeneratedKeys="true" keyProperty="commodityId">
+        insert into doumu_commodity_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="commodityName != null">commodity_name,</if>
+            <if test="commodityAmount != null">commodity_amount,</if>
+            <if test="commodityUrl != null and commodityUrl != ''">commodity_url,</if>
+            <if test="hardwareNum != null">hardware_num,</if>
+            <if test="orders != null">orders,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="remark != null">remark,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="commodityName != null">#{commodityName},</if>
+            <if test="commodityAmount != null">#{commodityAmount},</if>
+            <if test="commodityUrl != null and commodityUrl != ''">#{commodityUrl},</if>
+            <if test="hardwareNum != null">#{hardwareNum},</if>
+            <if test="orders != null">#{orders},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="remark != null">#{remark},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDoumuCommodityInfo" parameterType="DoumuCommodityInfo">
+        update doumu_commodity_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="commodityName != null">commodity_name = #{commodityName},</if>
+            <if test="commodityAmount != null">commodity_amount = #{commodityAmount},</if>
+            <if test="commodityUrl != null and commodityUrl != ''">commodity_url = #{commodityUrl},</if>
+            <if test="hardwareNum != null">hardware_num = #{hardwareNum},</if>
+            <if test="orders != null">orders = #{orders},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="remark != null">remark = #{remark},</if>
+        </trim>
+        where commodity_id = #{commodityId}
+    </update>
+
+    <delete id="deleteDoumuCommodityInfoByCommodityId" parameterType="Long">
+        delete from doumu_commodity_info where commodity_id = #{commodityId}
+    </delete>
+
+    <delete id="deleteDoumuCommodityInfoByCommodityIds" parameterType="String">
+        delete from doumu_commodity_info where commodity_id in 
+        <foreach item="commodityId" collection="array" open="(" separator="," close=")">
+            #{commodityId}
+        </foreach>
+    </delete>
+</mapper>

+ 1 - 0
ruoyi-system/src/main/resources/mapper/system/DoumuHardwareMapper.xml

@@ -32,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="hardwareUrl != null  and hardwareUrl != ''"> and hardware_url = #{hardwareUrl}</if>
             <if test="hardwareType != null  and hardwareType != ''"> and hardware_type = #{hardwareType}</if>
         </where>
+        order by create_time DESC
     </select>
     
     <select id="selectDoumuHardwareByHardwareId" parameterType="Long" resultMap="DoumuHardwareResult">

+ 15 - 1
ruoyi-system/src/main/resources/mapper/system/DoumuProductInfoMapper.xml

@@ -27,6 +27,8 @@
         <result property="goodsName"    column="goods_name"    />
         <result property="totalPrice"    column="total_price"    />
         <result property="mailNo"    column="mail_no"    />
+        <result property="hardwareNum"    column="hardware_num"    />
+        <result property="closedTime"    column="closed_time"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
@@ -39,7 +41,7 @@
 
     <sql id="selectDoumuProductInfoVo">
         select product_id,openid,order_number, name, delivery_type, phonenumber,contact_number,quantity,province_id,province,city_id,city,county_id,county,lon,lat,status, address,
-               flow_type,goods_name,total_price, mail_no, create_by, create_time, update_by, update_time, remark from doumu_product_info
+               flow_type,goods_name,total_price, mail_no,hardware_num,closed_time, create_by, create_time, update_by, update_time, remark from doumu_product_info
     </sql>
 
     <select id="selectDoumuProductInfoList" parameterType="DoumuProductInfo" resultMap="DoumuProductInfoResult">
@@ -100,6 +102,8 @@
             <if test="goodsName != null">goods_name,</if>
             <if test="totalPrice != null and totalPrice != 0">total_price,</if>
             <if test="mailNo != null">mail_no,</if>
+            <if test="hardwareNum != null">hardware_num,</if>
+            <if test="closedTime != null">closed_time,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
@@ -128,6 +132,8 @@
             <if test="goodsName != null">#{goodsName},</if>
             <if test="totalPrice != null and totalPrice != 0">#{totalPrice},</if>
             <if test="mailNo != null">#{mailNo},</if>
+            <if test="hardwareNum != null">#{hardwareNum},</if>
+            <if test="closedTime != null">#{closedTime},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -168,6 +174,14 @@
         </trim>
         where product_id = #{productId}
     </update>
+    <update id="updateDoumuProductInfoByOrderNnumber" parameterType="DoumuProductInfo">
+        update doumu_product_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="orderNumber != null  and orderNumber != ''"> order_number = #{orderNumber},</if>
+            <if test="status != null">status = #{status},</if>
+        </trim>
+        where order_number = #{orderNumber}
+    </update>
 
     <update id="updateDoumuProductInfoFlowList">
         update doumu_product_info set flow_type = #{flowType} where product_id in

+ 1 - 0
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -84,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</if>
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
+		order by u.create_time DESC
 	</select>
 	
 	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">