Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
2024-09-19 15:31:10 +08:00
15 changed files with 572 additions and 253 deletions

View File

@@ -1,6 +1,7 @@
package com.chaozhanggui.system.cashierservice.controller; package com.chaozhanggui.system.cashierservice.controller;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient; import com.alipay.api.AlipayClient;
@@ -11,11 +12,14 @@ import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse; import com.alipay.api.response.AlipayUserInfoShareResponse;
import com.chaozhanggui.system.cashierservice.annotation.LimitSubmit; import com.chaozhanggui.system.cashierservice.annotation.LimitSubmit;
import com.chaozhanggui.system.cashierservice.dao.TbShopInfoMapper;
import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail; import com.chaozhanggui.system.cashierservice.entity.TbOrderDetail;
import com.chaozhanggui.system.cashierservice.entity.TbShopInfo;
import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto; import com.chaozhanggui.system.cashierservice.entity.dto.ReturnGroupOrderDto;
import com.chaozhanggui.system.cashierservice.entity.dto.VipPayDTO; import com.chaozhanggui.system.cashierservice.entity.dto.VipPayDTO;
import com.chaozhanggui.system.cashierservice.model.PaymentReq; import com.chaozhanggui.system.cashierservice.model.PaymentReq;
import com.chaozhanggui.system.cashierservice.service.PayService; import com.chaozhanggui.system.cashierservice.service.PayService;
import com.chaozhanggui.system.cashierservice.service.ShopInfoService;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.IpUtil; import com.chaozhanggui.system.cashierservice.util.IpUtil;
@@ -32,7 +36,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@@ -40,26 +46,26 @@ import java.util.Objects;
@Slf4j @Slf4j
@RequestMapping("pay") @RequestMapping("pay")
public class PayController { public class PayController {
@Autowired @Autowired
PayService payService; PayService payService;
@Autowired
private ShopInfoService shopInfoService;
@Autowired
TbShopInfoMapper tbShopInfoMapper;
@RequestMapping("queryPayType") @RequestMapping("queryPayType")
public Result queryPayType( @RequestHeader("token") String token, public Result queryPayType(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("shopId") String shopId @RequestParam("shopId") String shopId) {
){
return payService.queryPayType(shopId); return payService.queryPayType(shopId);
} }
/** /**
* 扫码支付 * 扫码支付
*
* @param request * @param request
* @param token * @param token
* @param loginName * @param loginName
@@ -72,56 +78,55 @@ public class PayController {
@RequestHeader("token") String token, @RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody PaymentReq paymentReq @RequestBody PaymentReq paymentReq) {
) { return payService.scanPay(paymentReq.getOrderId(), paymentReq.getAuthCode(), IpUtil.getIpAddr(request), token, paymentReq.getPayAmount(), paymentReq.getDiscountAmount());
return payService.scanPay(paymentReq.getOrderId(),paymentReq.getAuthCode(), IpUtil.getIpAddr(request),token,paymentReq.getPayAmount(),paymentReq.getDiscountAmount());
} }
/** /**
* 储值卡支付 * 储值卡支付
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
* @return * @return
*/ */
@RequestMapping("accountPay") @RequestMapping("accountPay")
@LimitSubmit(key = "accountPay:%s") @LimitSubmit(key = "accountPay:%s")
public Result accountPay(@RequestHeader("token") String token, public Result accountPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody PaymentReq paymentReq @RequestBody PaymentReq paymentReq) {
){ return payService.accountPay(paymentReq.getOrderId(), paymentReq.getMemberId(), token, paymentReq.getMemberAccount(), paymentReq.getPayAmount(), paymentReq.getDiscountAmount());
return payService.accountPay(paymentReq.getOrderId(),paymentReq.getMemberId(),token,paymentReq.getMemberAccount(),paymentReq.getPayAmount(),paymentReq.getDiscountAmount());
} }
/** /**
* 快捷收款 * 快捷收款
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
* @param amount * @param amount
* @param authCode * @param authCode
* @param payType cash 现金 scanpay 扫码 * @param payType cash 现金 scanpay 扫码
* @return * @return
*/ */
@GetMapping("quickPay") @GetMapping("quickPay")
@LimitSubmit(key = "quickPay:%s") @LimitSubmit(key = "quickPay:%s")
public Result quickPay(@RequestHeader("token") String token, public Result quickPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("amount") String amount, @RequestParam("amount") String amount,
@RequestParam("authCode") String authCode, @RequestParam("authCode") String authCode,
@RequestParam("payType") String payType @RequestParam("payType") String payType) {
){ return payService.quickPay(token, amount, authCode, payType);
return payService.quickPay(token,amount,authCode,payType);
} }
/** /**
* 查询快捷订单状态 * 查询快捷订单状态
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -129,16 +134,16 @@ public class PayController {
*/ */
@GetMapping("queryQuickPayStatus") @GetMapping("queryQuickPayStatus")
public Result queryQuickPayStatus(@RequestHeader("token") String token, public Result queryQuickPayStatus(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("orderId") String orderId @RequestParam("orderId") String orderId) {
){
return payService.queryQuickPayStatus(orderId); return payService.queryQuickPayStatus(orderId);
} }
/** /**
* 获取快捷收款信息 * 获取快捷收款信息
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -148,21 +153,16 @@ public class PayController {
*/ */
@GetMapping("queryQuickPay") @GetMapping("queryQuickPay")
public Result queryQuickPay(@RequestHeader("token") String token, public Result queryQuickPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("page") Integer page, @RequestParam("page") Integer page,
@RequestParam("pageSize") Integer pageSize @RequestParam("pageSize") Integer pageSize) {
){ return payService.queryQuickPay(token, page, pageSize);
return payService.queryQuickPay(token,page,pageSize);
} }
/** /**
* 会员扫码支付 * 会员扫码支付
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -171,17 +171,16 @@ public class PayController {
@RequestMapping("memberScanPay") @RequestMapping("memberScanPay")
@LimitSubmit(key = "memberScanPay:%s") @LimitSubmit(key = "memberScanPay:%s")
public Result memberScanPay(@RequestHeader("token") String token, public Result memberScanPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody PaymentReq paymentReq @RequestBody PaymentReq paymentReq) {
){ return payService.memberScanPay(paymentReq.getOrderId(), paymentReq.getMemberCode(), token, paymentReq.getPayAmount(), paymentReq.getDiscountAmount());
return payService.memberScanPay(paymentReq.getOrderId(),paymentReq.getMemberCode(),token,paymentReq.getPayAmount(),paymentReq.getDiscountAmount());
} }
/** /**
* 现金支付 * 现金支付
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -192,14 +191,14 @@ public class PayController {
public Result cashPay(@RequestHeader("token") String token, public Result cashPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody PaymentReq paymentReq){ @RequestBody PaymentReq paymentReq) {
Result result = payService.cashPay(paymentReq.getOrderId(), token, paymentReq.getPayAmount(), paymentReq.getDiscountAmount()); Result result = payService.cashPay(paymentReq.getOrderId(), token, paymentReq.getPayAmount(), paymentReq.getDiscountAmount());
return result; return result;
} }
/** /**
* 会员支付 * 会员支付
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -208,29 +207,23 @@ public class PayController {
@PostMapping("vipPay") @PostMapping("vipPay")
@LimitSubmit(key = "vipPay:%s") @LimitSubmit(key = "vipPay:%s")
public Result vipPay(@RequestHeader("token") String token, public Result vipPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody VipPayDTO vipPayDTO @RequestBody VipPayDTO vipPayDTO) {
){
if (vipPayDTO.getOrderId() == null || vipPayDTO.getVipUserId() == null) { if (vipPayDTO.getOrderId() == null || vipPayDTO.getVipUserId() == null) {
return Result.fail("参数缺失"); return Result.fail("参数缺失");
} }
if ( if ((vipPayDTO.getPayAmount() != null && vipPayDTO.getPayAmount().compareTo(BigDecimal.ZERO) <= 0) ||
(vipPayDTO.getPayAmount() != null && vipPayDTO.getPayAmount().compareTo(BigDecimal.ZERO) <= 0) || (vipPayDTO.getDiscountAmount() != null && vipPayDTO.getDiscountAmount().compareTo(BigDecimal.ZERO) <= 0)) {
(vipPayDTO.getDiscountAmount() != null && vipPayDTO.getDiscountAmount().compareTo(BigDecimal.ZERO) <= 0)
) {
return Result.fail("折扣金额必须大于0"); return Result.fail("折扣金额必须大于0");
} }
return payService.vipPay(vipPayDTO.getOrderId(),token, vipPayDTO.getVipUserId(), vipPayDTO.getPayAmount(), vipPayDTO.getDiscountAmount()); return payService.vipPay(vipPayDTO.getOrderId(), token, vipPayDTO.getVipUserId(), vipPayDTO.getPayAmount(), vipPayDTO.getDiscountAmount());
} }
/** /**
* 银行卡支付 * 银行卡支付
*
* @param token * @param token
* @param loginName * @param loginName
* @param clientType * @param clientType
@@ -241,12 +234,10 @@ public class PayController {
public Result bankPay(@RequestHeader("token") String token, public Result bankPay(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody PaymentReq paymentReq){ @RequestBody PaymentReq paymentReq) {
return payService.bankPay(paymentReq.getOrderId(),token,paymentReq.getPayAmount(),paymentReq.getDiscountAmount()); return payService.bankPay(paymentReq.getOrderId(), token, paymentReq.getPayAmount(), paymentReq.getDiscountAmount());
} }
@RequestMapping("returnOrder") @RequestMapping("returnOrder")
@LimitSubmit(key = "returnOrder:%s", limit = 10) @LimitSubmit(key = "returnOrder:%s", limit = 10)
public Result returnOrder(@RequestHeader("token") String token, public Result returnOrder(@RequestHeader("token") String token,
@@ -254,12 +245,8 @@ public class PayController {
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestBody List<TbOrderDetail> list, @RequestBody List<TbOrderDetail> list,
@RequestParam("pwd") String pwd, @RequestParam("pwd") String pwd,
@RequestParam(defaultValue = "true") boolean isOnline @RequestParam(defaultValue = "true") boolean isOnline) {
){ return payService.returnOrder(list, token, pwd, isOnline);
return payService.returnOrder(list,token,pwd, isOnline);
} }
@@ -267,55 +254,46 @@ public class PayController {
public Result queryOrder(@RequestHeader("token") String token, public Result queryOrder(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("orderId") String orderId){ @RequestParam("orderId") String orderId) {
return payService.queryOrder(orderId,token); return payService.queryOrder(orderId, token);
} }
@RequestMapping("returnGpOrder") @RequestMapping("returnGpOrder")
public Result returnOrder(@RequestBody ReturnGroupOrderDto param){ public Result returnOrder(@RequestBody ReturnGroupOrderDto param) {
return payService.returnGroupOrder(param); return payService.returnGroupOrder(param);
} }
@RequestMapping("test") @RequestMapping("test")
@LimitSubmit(key = "testOrder:%s") @LimitSubmit(key = "testOrder:%s")
public Result testOrder( @RequestParam("orderId") String orderId){ public Result testOrder(@RequestParam("orderId") String orderId) {
return Result.success(CodeEnum.SUCCESS); return Result.success(CodeEnum.SUCCESS);
} }
@RequestMapping("getOrderDiscount") @RequestMapping("getOrderDiscount")
public Result getOrderDiscount(@RequestHeader("token") String token, public Result getOrderDiscount(@RequestHeader("token") String token,
@RequestHeader("loginName") String loginName, @RequestHeader("loginName") String loginName,
@RequestHeader("clientType") String clientType, @RequestHeader("clientType") String clientType,
@RequestParam("orderId") String orderId, @RequestParam("orderId") String orderId,
@RequestParam("staffId") String staffId @RequestParam("staffId") String staffId) {
){
return payService.getOrderDiscount(staffId, orderId, token); return payService.getOrderDiscount(staffId, orderId, token);
} }
@RequestMapping("pcscanpay") @RequestMapping("pcscanpay")
@LimitSubmit(key = "pcscanpay:%s") @LimitSubmit(key = "pcscanpay:%s")
public Result pcscanpay(HttpServletRequest request,@RequestBody PaymentReq paymentReq){ public Result pcscanpay(HttpServletRequest request, @RequestBody PaymentReq paymentReq) {
try { try {
return payService.pcscanpay(paymentReq.getOrderId(),IpUtil.getIpAddr(request),paymentReq.getUserId(),paymentReq.getPayType()); return payService.pcscanpay(paymentReq.getOrderId(), IpUtil.getIpAddr(request), paymentReq.getUserId(), paymentReq.getPayType());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return Result.fail(CodeEnum.FAIL); return Result.fail(CodeEnum.FAIL);
} }
@RequestMapping("createOrder") @RequestMapping("createOrder")
public Result createOrder(HttpServletRequest request,@RequestBody PaymentReq paymentReq){ public Result createOrder(HttpServletRequest request, @RequestBody PaymentReq paymentReq) {
try { try {
return payService.createOrder(IpUtil.getIpAddr(request),paymentReq.getUserId(),paymentReq.getPayType(),paymentReq.getShopId(),paymentReq.getPayAmount()); return payService.createOrder(IpUtil.getIpAddr(request), paymentReq.getUserId(), paymentReq.getPayType(),
paymentReq.getShopId(), paymentReq.getOrderId(), paymentReq.getPayAmount(), paymentReq.getRemark());
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -324,24 +302,16 @@ public class PayController {
} }
@GetMapping("queryOrderPay") @GetMapping("queryOrderPay")
public Result queryOrderPay(String orderId){ public Result queryOrderPay(String orderId) {
return payService.queryOrderPay(orderId); return payService.queryOrderPay(orderId);
} }
@Value("${wx.ysk.appId}") @Value("${wx.ysk.appId}")
private String appId; private String appId;
@Value("${wx.ysk.secrete}") @Value("${wx.ysk.secrete}")
private String secrete; private String secrete;
@Value("${ali.appId}") @Value("${ali.appId}")
private String aliAppId; private String aliAppId;
@@ -352,39 +322,45 @@ public class PayController {
private String publicKey; private String publicKey;
/** /**
* 获取支付宝或微信openId * 获取支付宝或微信openId
*
* @param code * @param code
* @return * @return
*/ */
@GetMapping("/openId") @GetMapping("/openId")
public Result getOpenId( public Result getOpenId(@RequestParam String code, @RequestParam String payType,
@RequestParam String code, @RequestParam String shopId) throws AlipayApiException {
@RequestParam String payType if (StrUtil.isBlank(shopId)) {
) throws AlipayApiException { return Result.fail("店铺ID不能为空");
}
if("WECHAT".equals(payType)){ // 查询店铺信息
TbShopInfo shopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
if (Objects.isNull(shopInfo)) {
return Result.fail("店铺不存在");
}
Map<String, Object> data = new HashMap<>(4);
data.put("shopId", shopInfo.getId());
data.put("shopName", shopInfo.getShopName());
data.put("shopImage", shopInfo.getCoverImg());
if ("WECHAT".equals(payType)) {
JSONObject SessionKeyOpenId = WechatUtil.getSessionKeyOrOpenId(code, appId, secrete); JSONObject SessionKeyOpenId = WechatUtil.getSessionKeyOrOpenId(code, appId, secrete);
log.info("SessionKeyOpenId:{}",SessionKeyOpenId.toString()); log.info("SessionKeyOpenId:{}", SessionKeyOpenId.toString());
String openid = SessionKeyOpenId.getString("openid"); String openid = SessionKeyOpenId.getString("openid");
if(Objects.isNull(openid)){ if (Objects.isNull(openid)) {
return Result.fail("获取微信id失败"); return Result.fail("获取微信id失败");
} }
return Result.success(CodeEnum.SUCCESS,openid); data.put("openId", openid);
}else if("ALIPAY".equals(payType)){ return Result.success(CodeEnum.SUCCESS, data);
} else if ("ALIPAY".equals(payType)) {
// 初始化SDK // 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig()); AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口 // 构造请求参数以调用接口
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
// 设置刷新令牌
// request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
// 设置授权码 // 设置授权码
request.setCode(code); request.setCode(code);
@@ -400,15 +376,17 @@ public class PayController {
return Result.fail("获取支付宝userId失败"); return Result.fail("获取支付宝userId失败");
} }
return Result.success(CodeEnum.SUCCESS, ObjectUtil.isNull(response.getUserId())?response.getOpenId():response.getUserId()); String openid = ObjectUtil.isNull(response.getUserId()) ? response.getOpenId() : response.getUserId();
data.put("openId", openid);
return Result.success(CodeEnum.SUCCESS, data);
} }
return Result.fail(CodeEnum.FAIL); return Result.fail(CodeEnum.FAIL);
} }
private AlipayConfig getAlipayConfig() {
private AlipayConfig getAlipayConfig() {
AlipayConfig alipayConfig = new AlipayConfig(); AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
alipayConfig.setAppId(aliAppId); alipayConfig.setAppId(aliAppId);
@@ -421,16 +399,12 @@ public class PayController {
} }
public static void main(String[] args){ public static void main(String[] args) {
LocalDate date=LocalDate.now(); LocalDate date = LocalDate.now();
if(date.isLeapYear()){ if (date.isLeapYear()) {
System.out.println(); System.out.println();
} }
} }
} }

View File

@@ -0,0 +1,25 @@
package com.chaozhanggui.system.cashierservice.controller;
import com.chaozhanggui.system.cashierservice.service.TbShopPermissionService;
import com.chaozhanggui.system.cashierservice.service.TbShopStaffPermissionService;
import com.chaozhanggui.system.cashierservice.sign.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
@RequestMapping("staffPermission")
public class StaffPermissionController {
@Autowired
private TbShopPermissionService permissionService;
@GetMapping
public Result getStaffPermission(String staffId, String code) {
return permissionService.getStaffPermission(staffId, code);
}
}

View File

@@ -0,0 +1,15 @@
package com.chaozhanggui.system.cashierservice.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chaozhanggui.system.cashierservice.entity.TbShopPermission;
/**
* (TbShopPermission)表数据库访问层
*
* @author makejava
* @since 2024-09-14 17:08:48
*/
public interface TbShopPermissionDao extends BaseMapper<TbShopPermission> {
}

View File

@@ -0,0 +1,15 @@
package com.chaozhanggui.system.cashierservice.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chaozhanggui.system.cashierservice.entity.TbShopStaffPermission;
/**
* 店铺员工权限关联表(TbShopStaffPermission)表数据库访问层
*
* @author makejava
* @since 2024-09-14 17:07:33
*/
public interface TbShopStaffPermissionDao extends BaseMapper<TbShopStaffPermission> {
}

View File

@@ -0,0 +1,129 @@
package com.chaozhanggui.system.cashierservice.entity;
import java.util.Date;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
/**
* (TbShopPermission)表实体类
*
* @author makejava
* @since 2024-09-14 17:08:48
*/
@SuppressWarnings("serial")
public class TbShopPermission extends Model<TbShopPermission> {
private Integer id;
//权限类型staff 员工,
private String type;
//权限名称
private String label;
//权限code为了区分采用汉语拼音
private String code;
//层级
private Integer level;
//上级ID
private Integer parentId;
//是否重要: 重要对应页面红色
private Integer isImportant;
//排序
private Integer sort;
private Date createTime;
private Date updateTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public Integer getIsImportant() {
return isImportant;
}
public void setIsImportant(Integer isImportant) {
this.isImportant = isImportant;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.id;
}
}

View File

@@ -0,0 +1,77 @@
package com.chaozhanggui.system.cashierservice.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
/**
* 店铺员工权限关联表(TbShopStaffPermission)表实体类
*
* @author makejava
* @since 2024-09-14 17:07:33
*/
@SuppressWarnings("serial")
public class TbShopStaffPermission extends Model<TbShopStaffPermission> {
private Integer id;
//权限ID
private Integer permissionId;
//员工ID
private Integer staffId;
//店铺ID
private Integer shopId;
//用户ID
private Integer userId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPermissionId() {
return permissionId;
}
public void setPermissionId(Integer permissionId) {
this.permissionId = permissionId;
}
public Integer getStaffId() {
return staffId;
}
public void setStaffId(Integer staffId) {
this.staffId = staffId;
}
public Integer getShopId() {
return shopId;
}
public void setShopId(Integer shopId) {
this.shopId = shopId;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.id;
}
}

View File

@@ -28,6 +28,5 @@ public class PaymentReq implements Serializable {
private String shopId; private String shopId;
private String remark;
} }

View File

@@ -66,8 +66,8 @@ public class ConsService {
List<TbConsInfoFlow> consInfoFlows=new ArrayList<>(); List<TbConsInfoFlow> consInfoFlows=new ArrayList<>();
for (TbOrderDetail orderDetail : orderDetails) { for (TbOrderDetail orderDetail : orderDetails) {
// List<TbProskuCon> proskuCons= tbProskuConMapper.selectByShopIdAndSkuIdAndProductId(orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId()); List<TbProskuCon> proskuCons= tbProskuConMapper.selectByShopIdAndSkuIdAndProductId(orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId());
List<TbProskuCon> proskuCons= tbProskuConMapper.selectByShopIdAndSkuIdAndProductIdAndCheck(orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId()); // List<TbProskuCon> proskuCons= tbProskuConMapper.selectByShopIdAndSkuIdAndProductIdAndCheck(orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId());
if(Objects.isNull(proskuCons)||proskuCons.size()<=0){ if(Objects.isNull(proskuCons)||proskuCons.size()<=0){
log.info("耗材信息未配置或未开启校验:orderId:{},skuId:{},shopId:{},productId:{}",orderDetail.getOrderId(),orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId()); log.info("耗材信息未配置或未开启校验:orderId:{},skuId:{},shopId:{},productId:{}",orderDetail.getOrderId(),orderDetail.getProductSkuId(),orderDetail.getShopId(),orderDetail.getProductId());
continue; continue;

View File

@@ -1545,17 +1545,13 @@ public class PayService {
if (ObjectUtil.isNotNull(orderstatus) && ObjectUtil.isNotEmpty(orderstatus)) { if (ObjectUtil.isNotNull(orderstatus) && ObjectUtil.isNotEmpty(orderstatus)) {
if ("000000".equals(orderstatus.getCode())) { if ("000000".equals(orderstatus.getCode())) {
if ("TRADE_SUCCESS".equals(orderstatus.getObjData().getState())) { if ("TRADE_SUCCESS".equals(orderstatus.getObjData().getState())) {
tbQuickPay.setStatus("0"); tbQuickPay.setStatus("0");
tbQuickPay.setUpdateTime(new Date()); tbQuickPay.setUpdateTime(new Date());
tbQuickPayMapper.updateByPrimaryKeySelective(tbQuickPay); tbQuickPayMapper.updateByPrimaryKeySelective(tbQuickPay);
} }
} }
} }
} }
} }
return Result.success(CodeEnum.SUCCESS, tbQuickPay); return Result.success(CodeEnum.SUCCESS, tbQuickPay);
@@ -1858,12 +1854,12 @@ public class PayService {
return "QR" + date + randomNum; return "QR" + date + randomNum;
} }
public Result createOrder(String ip, String userId, String payType, String shopId, BigDecimal amount) throws JsonProcessingException { public Result createOrder(String ip, String userId, String payType, String shopId, String orderId,
BigDecimal amount, String remark) throws JsonProcessingException {
if (ObjectUtil.isNull(userId) || ObjectUtil.isEmpty(userId) || ObjectUtil.isEmpty(payType) || ObjectUtil.isNull(payType) if (ObjectUtil.isNull(userId) || ObjectUtil.isEmpty(userId) || ObjectUtil.isEmpty(payType) ||
ObjectUtil.isNull(payType) || ObjectUtil.isNull(shopId) || ObjectUtil.isEmpty(shopId) ||
|| ObjectUtil.isNull(shopId) || ObjectUtil.isEmpty(shopId) || ObjectUtil.isNull(shopId) || ObjectUtil.isNull(amount) || ObjectUtil.isEmpty(amount) ObjectUtil.isNull(shopId) || ObjectUtil.isNull(amount) || ObjectUtil.isEmpty(amount)) {
) {
return Result.fail(CodeEnum.PARAM); return Result.fail(CodeEnum.PARAM);
} }
@@ -1873,32 +1869,44 @@ public class PayService {
return Result.fail(CodeEnum.SHOPINFONOEXIST); return Result.fail(CodeEnum.SHOPINFONOEXIST);
} }
TbOrderInfo orderInfo;
TbOrderInfo orderInfo = new TbOrderInfo(); if (StrUtil.isNotBlank(orderId)) {
orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if (ObjectUtil.isNull(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if (StrUtil.isNotBlank(remark)) {
orderInfo.setRemark(remark);
tbOrderInfoMapper.updateByPrimaryKey(orderInfo);
}
} else {
orderInfo = new TbOrderInfo();
String orderNo = generateOrderNumber(); String orderNo = generateOrderNumber();
orderInfo.setOrderNo(orderNo); orderInfo.setOrderNo(orderNo);
orderInfo.setSettlementAmount(amount); orderInfo.setSettlementAmount(amount);
orderInfo.setPackFee(BigDecimal.ZERO); orderInfo.setPackFee(BigDecimal.ZERO);
orderInfo.setOriginAmount(amount); orderInfo.setOriginAmount(amount);
orderInfo.setPayAmount(amount); orderInfo.setPayAmount(amount);
orderInfo.setAmount(amount); orderInfo.setAmount(amount);
orderInfo.setRefundAmount(BigDecimal.ZERO); orderInfo.setRefundAmount(BigDecimal.ZERO);
orderInfo.setPayType(payType); orderInfo.setPayType(payType);
orderInfo.setPayAmount(amount); orderInfo.setPayAmount(amount);
orderInfo.setOrderAmount(amount); orderInfo.setOrderAmount(amount);
orderInfo.setSendType("QR"); orderInfo.setSendType("QR");
orderInfo.setStatus("WAIT_PAY"); orderInfo.setStatus("WAIT_PAY");
orderInfo.setMerchantId(shopInfo.getMerchantId()); orderInfo.setMerchantId(shopInfo.getMerchantId());
orderInfo.setShopId(shopId); orderInfo.setShopId(shopId);
orderInfo.setRefundAble(Byte.valueOf("1")); orderInfo.setRefundAble(Byte.valueOf("1"));
orderInfo.setSystemTime(System.currentTimeMillis()); orderInfo.setSystemTime(System.currentTimeMillis());
orderInfo.setCreatedAt(System.currentTimeMillis()); orderInfo.setCreatedAt(System.currentTimeMillis());
orderInfo.setIsAccepted(Byte.valueOf("1")); orderInfo.setIsAccepted(Byte.valueOf("1"));
orderInfo.setTradeDay(DateUtils.getDay()); orderInfo.setTradeDay(DateUtils.getDay());
orderInfo.setRemark(remark);
tbOrderInfoMapper.insert(orderInfo);
tbOrderInfoMapper.insert(orderInfo);
}
TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderInfo.getId().toString()); TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderInfo.getId().toString());
if (ObjectUtil.isEmpty(payment) || payment == null) { if (ObjectUtil.isEmpty(payment) || payment == null) {
@@ -1928,111 +1936,59 @@ public class PayService {
} }
String reqbody = "店铺收款码"; String reqbody = "店铺收款码";
PublicResp<JspayResp> publicResp = thirdPayService.jspay(url, thirdApply.getAppId(), thirdApply.getAppToken(),
reqbody, reqbody, orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(),
payType, thirdApply.getSmallAppid(), userId, ip,
DateUtils.getSsdfTimes(), thirdApply.getStoreId(), backUrl, backUrl);
if("WECHAT".equals(payType)){ if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
PublicResp<JspayResp> publicResp = thirdPayService.jspay(url, thirdApply.getAppId(), thirdApply.getAppToken(), reqbody, reqbody, orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(), payType, "WECHAT".equals(payType) ? thirdApply.getSmallAppid() : null, userId, ip, DateUtils.getSsdfTimes(), thirdApply.getStoreId(), backUrl, backUrl); if ("000000".equals(publicResp.getCode())) {
JspayResp scanpayResp = publicResp.getObjData();
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
payment.setTradeNumber(scanpayResp.getPayOrderId());
payment.setUpdatedAt(System.currentTimeMillis());
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
//处理支付成功的订单
orderInfo.setStatus("closed");
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { ObjectMapper mapper = new ObjectMapper();
if ("000000".equals(publicResp.getCode())) { return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo()));
JspayResp scanpayResp = publicResp.getObjData();
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
payment.setTradeNumber(scanpayResp.getPayOrderId()); } else if ("TRADE_AWAIT".equals(scanpayResp.getState())) {
payment.setUpdatedAt(System.currentTimeMillis()); orderInfo.setStatus("paying");
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment); orderInfo.setPayOrderNo(payment.getTradeNumber());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//处理支付成功的订单 payment.setTradeNumber(scanpayResp.getPayOrderId());
orderInfo.setStatus("closed"); payment.setUpdatedAt(System.currentTimeMillis());
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId()); tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
ObjectMapper mapper = new ObjectMapper(); if ("WECHAT".equals(scanpayResp.getPayType())) {
return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo())); orderInfo.setPayType("WECHAT");
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
} else if ("TRADE_AWAIT".equals(scanpayResp.getState())) { orderInfo.setPayType("ALIPAY");
orderInfo.setStatus("paying"); } else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
orderInfo.setPayOrderNo(payment.getTradeNumber()); orderInfo.setPayType("UNIONPAY");
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
payment.setTradeNumber(scanpayResp.getPayOrderId());
payment.setUpdatedAt(System.currentTimeMillis());
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
if ("WECHAT".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("WECHAT");
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("ALIPAY");
} else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("UNIONPAY");
}
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map=new HashMap<>();
map.put("orderInfo",orderInfo);
map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
return Result.success(CodeEnum.PAYING, map);
} }
}
}
}else if("ALIPAY".equals(payType)){
PublicResp<ApppayResp> publicResp= thirdPayService.apppay(url,thirdApply.getAppId(),thirdApply.getAppToken(),reqbody,reqbody,orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(),payType,ip,DateUtils.getSsdfTimes(),thirdApply.getStoreId(),backUrl,backUrl);
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
if ("000000".equals(publicResp.getCode())) {
ApppayResp scanpayResp = publicResp.getObjData();
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
payment.setTradeNumber(scanpayResp.getPayOrderId());
payment.setUpdatedAt(System.currentTimeMillis());
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
//处理支付成功的订单
orderInfo.setStatus("closed");
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo()));
} else if ("TRADE_AWAIT".equals(scanpayResp.getState())) { Map<String,Object> map=new HashMap<>();
orderInfo.setStatus("paying");
orderInfo.setPayOrderNo(payment.getTradeNumber());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
payment.setTradeNumber(scanpayResp.getPayOrderId()); map.put("orderInfo",orderInfo);
payment.setUpdatedAt(System.currentTimeMillis()); map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment); return Result.success(CodeEnum.PAYING, map);
if ("WECHAT".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("WECHAT");
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("ALIPAY");
} else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
orderInfo.setPayType("UNIONPAY");
}
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map=new HashMap<>();
map.put("orderInfo",orderInfo);
map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
return Result.success(CodeEnum.PAYING, map);
}
} }
} }
} }
return Result.fail(CodeEnum.FAIL); return Result.fail(CodeEnum.FAIL);
} }

View File

@@ -0,0 +1,21 @@
package com.chaozhanggui.system.cashierservice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chaozhanggui.system.cashierservice.entity.TbShopPermission;
import com.chaozhanggui.system.cashierservice.sign.Result;
/**
* (TbShopPermission)表服务接口
*
* @author makejava
* @since 2024-09-14 17:08:48
*/
public interface TbShopPermissionService extends IService<TbShopPermission> {
/**
* 查询员工是否拥有某个权限
*/
Result getStaffPermission(String staffId, String code);
}

View File

@@ -0,0 +1,15 @@
package com.chaozhanggui.system.cashierservice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chaozhanggui.system.cashierservice.entity.TbShopStaffPermission;
/**
* 店铺员工权限关联表(TbShopStaffPermission)表服务接口
*
* @author makejava
* @since 2024-09-14 17:07:33
*/
public interface TbShopStaffPermissionService extends IService<TbShopStaffPermission> {
}

View File

@@ -0,0 +1,46 @@
package com.chaozhanggui.system.cashierservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chaozhanggui.system.cashierservice.dao.TbShopPermissionDao;
import com.chaozhanggui.system.cashierservice.entity.TbShopPermission;
import com.chaozhanggui.system.cashierservice.entity.TbShopStaffPermission;
import com.chaozhanggui.system.cashierservice.service.TbShopPermissionService;
import com.chaozhanggui.system.cashierservice.service.TbShopStaffPermissionService;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
* (TbShopPermission)表服务实现类
*
* @author makejava
* @since 2024-09-14 17:08:49
*/
@Service
@Primary
public class TbShopPermissionServiceImpl extends ServiceImpl<TbShopPermissionDao, TbShopPermission> implements TbShopPermissionService {
@Autowired
private TbShopStaffPermissionService shopStaffPermissionService;
@Override
public Result getStaffPermission(String staffId, String code) {
QueryWrapper<TbShopPermission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("code", code);
TbShopPermission permission = this.getOne(queryWrapper);
if (permission == null) {
return Result.fail("权限不存在");
}
QueryWrapper<TbShopStaffPermission> staffPermissionQueryWrapper = new QueryWrapper<>();
staffPermissionQueryWrapper.eq("staff_id", staffId);
staffPermissionQueryWrapper.eq("permission_id", permission.getId());
TbShopStaffPermission staffPermission = shopStaffPermissionService.getOne(staffPermissionQueryWrapper);
return Result.success(CodeEnum.SUCCESS, staffPermission != null);
}
}

View File

@@ -0,0 +1,21 @@
package com.chaozhanggui.system.cashierservice.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chaozhanggui.system.cashierservice.dao.TbShopStaffPermissionDao;
import com.chaozhanggui.system.cashierservice.entity.TbShopStaffPermission;
import com.chaozhanggui.system.cashierservice.service.TbShopStaffPermissionService;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
* 店铺员工权限关联表(TbShopStaffPermission)表服务实现类
*
* @author makejava
* @since 2024-09-14 17:07:33
*/
@Service
@Primary
public class TbShopStaffPermissionServiceImpl extends ServiceImpl<TbShopStaffPermissionDao, TbShopStaffPermission> implements TbShopStaffPermissionService {
}

View File

@@ -197,9 +197,13 @@ public class ThirdPayService {
* @param key * @param key
* @return * @return
*/ */
public PublicResp<OrderReturnResp> returnOrder(String url,String appId, String mchRefundNo, String payOrderId, String mchOrderNo, String refundReason, Long refundAmount, String notifyUrl, String extParam,String key){ public PublicResp<OrderReturnResp> returnOrder(String url,String appId, String mchRefundNo, String payOrderId,
OrderRefundReq req=new OrderRefundReq(mchRefundNo, payOrderId, mchOrderNo, refundReason, refundAmount, notifyUrl, extParam); String mchOrderNo, String refundReason, Long refundAmount,
PublicParam param=new PublicParam(appId,null,SignTypeEnum.MD5.getValue(), null,DateUtils.getSdfTimes(), "1.0", String.valueOf(System.currentTimeMillis())); String notifyUrl, String extParam,String key){
OrderRefundReq req=new OrderRefundReq(mchRefundNo, payOrderId, mchOrderNo, refundReason, refundAmount,
notifyUrl, extParam);
PublicParam param=new PublicParam(appId,null,SignTypeEnum.MD5.getValue(), null,DateUtils.getSdfTimes(),
"1.0", String.valueOf(System.currentTimeMillis()));
try { try {
String str = JSONUtil.toJSONString(sortFields(req)); String str = JSONUtil.toJSONString(sortFields(req));
param.setBizData(str); param.setBizData(str);

View File

@@ -0,0 +1,22 @@
package com.chaozhanggui.system.cashierservice;
import com.chaozhanggui.system.cashierservice.service.TbShopPermissionService;
import com.chaozhanggui.system.cashierservice.sign.Result;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@ActiveProfiles("dev")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class StaffPermissionTest {
@Autowired
private TbShopPermissionService tbShopPermissionService;
@Test
public void testStaffPermission() {
Result yunXuTuiKuan = tbShopPermissionService.getStaffPermission("128", "yun_xu_tui_kuan2");
System.out.println(yunXuTuiKuan);
}
}