Commit 24181a36 by 张新旗

代码修改

parent 652b4e9c
......@@ -2,6 +2,9 @@ package com.ruoyi.web.controller.coffee;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.system.domain.OrderOperationLog;
import com.ruoyi.system.service.IOrderOperationLogService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -32,73 +35,20 @@ import com.ruoyi.common.core.page.TableDataInfo;
public class OrderLogController extends BaseController
{
@Autowired
private IOrderLogService orderLogService;
private IOrderOperationLogService orderLogService;
/**
* 查询订单日志列表
*/
@PreAuthorize("@ss.hasPermi('system:log:list')")
@GetMapping("/list")
public TableDataInfo list(OrderLog orderLog)
{
startPage();
List<OrderLog> list = orderLogService.selectOrderLogList(orderLog);
return getDataTable(list);
}
/**
* 导出订单日志列表
*/
@PreAuthorize("@ss.hasPermi('system:log:export')")
@Log(title = "订单日志", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, OrderLog orderLog)
{
List<OrderLog> list = orderLogService.selectOrderLogList(orderLog);
ExcelUtil<OrderLog> util = new ExcelUtil<OrderLog>(OrderLog.class);
util.exportExcel(response, list, "订单日志数据");
}
/**
* 获取订单日志详细信息
*/
@PreAuthorize("@ss.hasPermi('system:log:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id)
{
return AjaxResult.success(orderLogService.selectOrderLogById(id));
}
/**
* 新增订单日志
*/
@PreAuthorize("@ss.hasPermi('system:log:add')")
@Log(title = "订单日志", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody OrderLog orderLog)
@GetMapping("/list")
public AjaxResult list(String orderId)
{
return toAjax(orderLogService.insertOrderLog(orderLog));
OrderOperationLog orderOperationLog = new OrderOperationLog();
orderOperationLog.setOrderId(orderId);
List<OrderOperationLog> orderOperationLogs = orderLogService.selectOrderOperationLogList(orderOperationLog);
return AjaxResult.success(orderOperationLogs);
}
/**
* 修改订单日志
*/
@PreAuthorize("@ss.hasPermi('system:log:edit')")
@Log(title = "订单日志", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody OrderLog orderLog)
{
return toAjax(orderLogService.updateOrderLog(orderLog));
}
/**
* 删除订单日志
*/
@PreAuthorize("@ss.hasPermi('system:log:remove')")
@Log(title = "订单日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids)
{
return toAjax(orderLogService.deleteOrderLogByIds(ids));
}
}
package com.ruoyi.web.controller.coffee;
import java.math.BigDecimal;
import java.util.List;
import com.ruoyi.framework.web.service.WeixinServiceImpl;
import org.checkerframework.checker.units.qual.A;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -32,6 +35,8 @@ public class OrderRefundController extends BaseController
{
@Autowired
private IOrderRefundService orderRefundService;
@Autowired
private WeixinServiceImpl weixinService;
/**
* 查询订单退款列表
......@@ -65,12 +70,25 @@ public class OrderRefundController extends BaseController
AjaxResult ajaxResult = orderRefundService.insertOrderRefund(orderRefund);
Object obejct = ajaxResult.get(AjaxResult.DATA_TAG);
if(obejct!=null && obejct instanceof OrderRefund){
OrderRefund orderRefund1 = (OrderRefund) obejct;
int totalFee = orderRefund1.getTotalFee().movePointRight(2).intValue();
int refundAmount = orderRefund1.getRefundAmount().movePointRight(2).intValue();
weixinService.refund(orderRefund1.getRefundNo(),orderRefund1.getOrderNo(),totalFee,refundAmount);
orderRefund1.setState("1");
orderRefundService.updateOrderRefund(orderRefund1);
}
return ajaxResult;
}
@GetMapping("/refund")
public AjaxResult refund(String id){
OrderRefund orderRefund = orderRefundService.getOrderRefund(id);
int totalFee = orderRefund.getTotalFee().movePointRight(2).intValue();
int refundAmount = orderRefund.getRefundAmount().movePointRight(2).intValue();
orderRefund.setState("1");
weixinService.refund(orderRefund.getRefundNo(),orderRefund.getOrderNo(),totalFee,refundAmount);
return AjaxResult.success( orderRefundService.updateOrderRefund(orderRefund));
}
// public void refund(HttpServletRequest request,
......
......@@ -2,6 +2,8 @@ package com.ruoyi.web.controller.coffee;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -106,6 +108,12 @@ public class ShopController extends BaseController
{
return AjaxResult.success(shopService.addGoods(shopId,goodsIds));
}
@PostMapping(value = "/offGoods")
public AjaxResult offGoods(@RequestBody String body)
{
JSONObject jsonObject = JSON.parseObject(body);
return AjaxResult.success(shopService.offGoods(jsonObject));
}
/**
* 获取店铺里面的商品信息,分类展示
*/
......
......@@ -140,6 +140,7 @@ weixin:
url: https://api.mch.weixin.qq.com/pay/unifiedorder
query-url: https://api.mch.weixin.qq.com/pay/orderquery
cert-path: classpath:apiclient_cert.p12
refund-url: http://114.115.234.81:8080/weixin/refundNotify
#mqtt:
# url: tcp://iot-06z00dhgql5j8bw.mqtt.iothub.aliyuncs.com:1883
# clientId: h5kgirX6kNQ.XQ_000001A|securemode=2,signmethod=hmacsha256,timestamp=1651746531320|
......
......@@ -101,7 +101,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage","/weixin/**","/application/**","/v1/**","/tool/**").anonymous()
.antMatchers("/login", "/register", "/captchaImage","/weixin/**","/application/**","/v1/**","/tool/**","/system/**").anonymous()
.antMatchers(
HttpMethod.GET,
"/",
......
......@@ -11,12 +11,9 @@ import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.util.SignUtils;
import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayConfig;
import com.github.wxpay.sdk.WXPayConstants;
import com.github.wxpay.sdk.WXPayUtil;
import com.google.gson.Gson;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
......@@ -28,31 +25,21 @@ import com.ruoyi.framework.web.domain.server.Sys;
import com.ruoyi.system.domain.Customer;
import com.ruoyi.system.domain.Order;
import com.ruoyi.system.domain.OrderOperationLog;
import com.ruoyi.system.domain.OrderRefund;
import com.ruoyi.system.mapper.CustomerMapper;
import com.ruoyi.system.mapper.OrderMapper;
import com.ruoyi.system.mapper.OrderRefundMapper;
import com.ruoyi.system.service.impl.MachineApiServiceImpl;
import com.ruoyi.system.service.impl.OrderOperationLogServiceImpl;
import com.ruoyi.system.weixin.entity.OrderInfo;
import com.ruoyi.system.weixin.entity.OrderReturnInfo;
import com.ruoyi.system.weixin.entity.QueryReturnInfo;
import com.ruoyi.system.weixin.entity.SignInfo;
import com.ruoyi.system.weixin.util.PayUtil;
import com.ruoyi.system.weixin.util.RandomStringGenerator;
import com.ruoyi.system.weixin.util.Signature;
import com.thoughtworks.xstream.XStream;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.apache.poi.ooxml.util.DocumentHelper;
import org.aspectj.weaver.ast.Or;
import org.jdom2.Document;
import org.jdom2.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -101,6 +88,8 @@ public class WeixinServiceImpl {
private OrderOperationLogServiceImpl orderOperationLogService;
@Autowired
private MachineApiServiceImpl machineApiService;
@Autowired
private OrderRefundMapper orderRefundMapper;
private final ReentrantLock lock = new ReentrantLock();
......@@ -125,6 +114,8 @@ public class WeixinServiceImpl {
@Value("${weixin.cert-path}")
private String certPath;
@Value("${weixin.refund-url}")
private String refundUrl;
public String getSessionKeyOrOpenId(String code) {
String url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code";
......@@ -270,11 +261,11 @@ public class WeixinServiceImpl {
//退款订单号
.outRefundNo(refundNo)
//金额
.totalFee(1)
.totalFee(totalFee)
//退款金额
.refundFee(1)
.refundFee(refundFee)
//todo 回调地址
.notifyUrl("http://我们系统的域名/api/client/refund/refundNotify")
.notifyUrl(refundUrl)
.build();
WxPayRefundResult wxPayRefundResult;
try {
......@@ -288,6 +279,7 @@ public class WeixinServiceImpl {
}
} catch (WxPayException e) {
log.error("微信退款接口错误信息= {}", e);
throw new ServiceException("微信退款失败");
}
return "退款失败";
......@@ -487,7 +479,30 @@ public class WeixinServiceImpl {
//判断你返回状态信息是否正确
if ("SUCCESS".equals(wxPayRefundNotifyResult.getReturnCode())) {
WxPayRefundNotifyResult.ReqInfo reqInfo = wxPayRefundNotifyResult.getReqInfo();
reqInfo.getOutRefundNo();
String outRefundNo = reqInfo.getOutRefundNo();
OrderRefund orderRefund = new OrderRefund();
orderRefund.setRefundNo(outRefundNo);
List<OrderRefund> orderRefunds = orderRefundMapper.selectOrderRefundList(orderRefund);
if(orderRefunds.isEmpty()){
log.error("找不到该退款订单:【{}】",outRefundNo);
return WxPayNotifyResponse.fail("退款失败");
}
OrderRefund orderRefund1 = orderRefunds.get(0);
if("1".equals(orderRefund1.getState())){
orderRefund1.setState("2");
orderRefundMapper.updateOrderRefund(orderRefund1);
OrderOperationLog orderOperationLog = new OrderOperationLog();
orderOperationLog.setOrderId(String.valueOf(orderRefund1.getOrderId()));
orderOperationLog.setOperation("退款");
orderOperationLog.setOperationUser("自动退款");
orderOperationLog.setCreateAt(new Date());
orderOperationLog.setContent("退款成功");
orderOperationLog.setStatus("退款");
orderOperationLogService.insertOrderOperationLog(orderOperationLog);
return WxPayNotifyResponse.success("退款成功!");
}
//判断退款状态
// if (REFUND_SUCCESS.equals(reqInfo.getRefundStatus())) {
// //内部订单号
......
......@@ -27,10 +27,20 @@ public class Goods extends BaseEntity
@Excel(name = "商品名称")
private String name;
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
/** 商品分类 */
@Excel(name = "商品分类")
private String category;
private String categoryName;
/** 原售价 */
@Excel(name = "原售价")
private BigDecimal price;
......@@ -101,6 +111,25 @@ public class Goods extends BaseEntity
this.salesVolume = salesVolume;
}
public String getRecommend() {
return recommend;
}
public void setRecommend(String recommend) {
this.recommend = recommend;
}
public String getPreferential() {
return preferential;
}
public void setPreferential(String preferential) {
this.preferential = preferential;
}
private String recommend;
private String preferential;
/**
* 总销量
*/
......
......@@ -67,6 +67,16 @@ public class OrderRefund extends BaseEntity
private String orderNo;
public BigDecimal getTotalFee() {
return totalFee;
}
public void setTotalFee(BigDecimal totalFee) {
this.totalFee = totalFee;
}
private BigDecimal totalFee;
public Order getOrder() {
return order;
}
......
......@@ -70,4 +70,6 @@ public interface ShopGoodsSkuMapper
void deleteShopGoodsSkuByGoodsId(@Param("goodsId") Long goodsId);
int updateSkuStatus(@Param("skuIds") List<String> skuIds, @Param("machineCode") String robotID,@Param("shopId") String shopID,@Param("status") String status);
void deleteByGoodsIds(@Param("shopId") Long shopId, @Param("goodsIds") List<String> goodsIds);
}
......@@ -60,4 +60,6 @@ public interface IOrderRefundService
* @return 结果
*/
public int deleteOrderRefundById(String id);
OrderRefund getOrderRefund(String id);
}
......@@ -2,6 +2,7 @@ package com.ruoyi.system.service;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.domain.GoodsCategory;
import com.ruoyi.system.domain.GoodsSku;
import com.ruoyi.system.domain.Shop;
......@@ -73,4 +74,5 @@ public interface IShopService
List<String> getShopCity();
String offGoods(JSONObject body);
}
......@@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.GenerateCode;
import com.ruoyi.system.domain.Goods;
import com.ruoyi.system.service.IGoodsCategoryService;
......@@ -79,6 +80,15 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService
@Override
public int updateGoodsCategory(GoodsCategory goodsCategory)
{
if("2".equals(goodsCategory.getState())){
Goods goods = new Goods();
goods.setCategory(goodsCategory.getId());
goods.setIsDeleted(0L);
int size = goodsMapper.selectGoodsList(goods).size();
if(size>0){
throw new ServiceException("有商品还在使用,请先删除商品");
}
}
return goodsCategoryMapper.updateGoodsCategory(goodsCategory);
}
......@@ -91,6 +101,15 @@ public class GoodsCategoryServiceImpl implements IGoodsCategoryService
@Override
public int deleteGoodsCategoryByIds(String[] ids)
{
for (String id : ids) {
Goods goods = new Goods();
goods.setCategory(id);
goods.setIsDeleted(0L);
int size = goodsMapper.selectGoodsList(goods).size();
if(size>0){
throw new ServiceException("有商品还在使用,请先删除商品");
}
}
return goodsCategoryMapper.deleteGoodsCategoryByIds(ids);
}
......
......@@ -40,6 +40,8 @@ public class GoodsServiceImpl implements IGoodsService
private ShopGoodsSkuMapper shopGoodsSkuMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private GoodsCategoryMapper goodsCategoryMapper;
/**
* 查询商品
......@@ -68,7 +70,10 @@ public class GoodsServiceImpl implements IGoodsService
public List<Goods> selectGoodsList(Goods goods)
{
List<Goods> goodsList = goodsMapper.selectGoodsList(goods);
for (Goods goods1 : goodsList) {
GoodsCategory goodsCategory = goodsCategoryMapper.selectGoodsCategoryById(goods1.getCategory());
goods1.setCategoryName(goodsCategory.getName());
int count = orderMapper.selectSalesVolume(null,goods1.getId());
goods1.setSalesVolume(count);
}
......@@ -87,11 +92,14 @@ public class GoodsServiceImpl implements IGoodsService
@Transactional
public int insertGoods(Goods goods)
{
if(goods.getDiscount().compareTo(goods.getPrice())>0){
throw new ServiceException("折扣价不能大于等于原价");
}
goods.setCode(GenerateCode.getCode("G"));
goods.setCreatedAt(new Date());
goods.setUpdatedAt(new Date());
goods.setIsDeleted(0L);
goods.setState("2");
goods.setState("1");
goodsMapper.insertGoods(goods);
insertgoodsExt(goods);
return 1;
......
......@@ -4,6 +4,7 @@ import java.util.Date;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.GenerateCode;
import com.ruoyi.system.domain.Order;
import com.ruoyi.system.mapper.OrderMapper;
......@@ -89,6 +90,7 @@ public class OrderRefundServiceImpl implements IOrderRefundService
orderRefund.setState("0");
orderRefund.setOrderNo(order.getOrderNo());
orderRefund.setRefundNo(GenerateCode.getCode("R","%09d"));
orderRefund.setTotalFee(order.getAmount());
int i = orderRefundMapper.insertOrderRefund(orderRefund);
return AjaxResult.success(orderRefund);
}
......@@ -128,4 +130,17 @@ public class OrderRefundServiceImpl implements IOrderRefundService
{
return orderRefundMapper.deleteOrderRefundById(id);
}
@Override
public OrderRefund getOrderRefund(String id) {
OrderRefund orderRefund = orderRefundMapper.selectOrderRefundById(id);
if("0".equals(orderRefund.getState()) ||"3".equals(orderRefund.getState())){
}else{
throw new ServiceException("该状态不允许退款");
}
Order order = orderMapper.selectOrderById(orderRefund.getOrderId());
orderRefund.setTotalFee(order.getAmount());
return orderRefund;
}
}
......@@ -4,6 +4,7 @@ import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
......@@ -40,6 +41,8 @@ public class ShopServiceImpl implements IShopService
private OrderMapper orderMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private ShopRecommendMapper shopRecommendMapper;
......@@ -191,7 +194,23 @@ public class ShopServiceImpl implements IShopService
List<GoodsCategory> shopCategories = goodsCategoryMapper.selectByShopId(shopId);
for (GoodsCategory category : shopCategories) {
List<Goods> goodsList = shopGoodsMapper.selectShopCategoryGoodsByCategoryId(shopId,category.getId());
for (Goods goods : goodsList) {
ShopRecommend shopRecommend = new ShopRecommend();
shopRecommend.setShopId(String.valueOf(shopId));
shopRecommend.setGoodsId(String.valueOf(goods.getId()));
shopRecommend.setType("1");
goods.setPreferential("1");
goods.setRecommend("1");
List<ShopRecommend> shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend);
if(shopRecommends.size()>0){
goods.setPreferential("0");
}
shopRecommend.setType("2");
shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend);
if(shopRecommends.size()>0){
goods.setRecommend("0");
}
goods.setSalesVolume(orderMapper.selectSalesVolume(shopId,goods.getId()));
}
category.setGoodsList(goodsList);
......@@ -228,6 +247,16 @@ public class ShopServiceImpl implements IShopService
return collect;
}
@Override
public String offGoods(JSONObject body) {
Long shopId = body.getLong("shopId");
String string = body.getString("goodsIds");
List<String> goodsIds = JSONObject.parseArray(string, String.class);
shopGoodsSkuMapper.deleteByGoodsIds(shopId,goodsIds);
return null;
}
public AjaxResult checkSku(String shopId, String skuId, String machineCode) {
ShopGoodsSku shopGoodsSku = new ShopGoodsSku();
......
......@@ -139,6 +139,14 @@ public class SpecServiceImpl implements ISpecService
@Override
public int updateSpec(Spec spec)
{
if(2 == spec.getState()){
String query ="\"specId\": "+spec.getId();
List<GoodsSku> goodsSkus = goodsSkuMapper.selectSpec(query);
if(!goodsSkus.isEmpty()){
throw new ServiceException("当前还有商品使用,请先删除商品");
}
}
specRuleMapper.deleteSpecRuleBySpecId(spec.getId());
specRuleMaterialMapper.deleteSpecRuleMaterialBySpecId(spec.getId());
spec.setIsDeleted(0);
......
......@@ -168,6 +168,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="orderNo!=null ">
and order_no =#{orderNo}
</if>
<if test="orderNum!=null ">
and order_num =#{orderNum}
</if>
<if test="userName!=null">
and user_name like concat('%', #{userName}, '%')
</if>
<if test="shopId!=null ">
and shop_id =#{shopId}
</if>
<if test="state!=null ">
and shop_id =#{shopId}
</if>
<if test="createAtStart!=null ">
<![CDATA[ and create_at >= to_date(#{createAtStart,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
<if test="createAtEnd!=null ">
<![CDATA[ and create_at <= to_date(#{createAtEnd,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
<if test="payAtStart!=null ">
<![CDATA[ and pay_time >= to_date(#{payAtStart,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
<if test="payAtEnd!=null ">
<![CDATA[ and pay_time <= to_date(#{payAtEnd,jdbcType=DATE},'yyyy-MM-dd hh24:mi:ss')]]>
</if>
</where>
</select>
<select id="selectOrder" resultMap="OrderResult">
......
......@@ -125,4 +125,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</where>
</update>
<delete id="deleteByGoodsIds">
delete shop_goods_sku where shop_id=#{shopId}
and goods_id in
<foreach collection="goodsIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</delete>
</mapper>
\ No newline at end of file
......@@ -141,7 +141,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
g.pics,
g.`desc`,
g.remarks,
sg.state,
g.code
from
shop s ,
......
......@@ -24,7 +24,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSpecRuleList" parameterType="SpecRule" resultMap="SpecRuleResult">
<include refid="selectSpecRuleVo"/>
<where>
and is_deleted = 0
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="specId != null and specId != ''"> and spec_id = #{specId}</if>
<if test="amount != null "> and amount = #{amount}</if>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment