调整获取店铺/小区信息;添加微信支付
This commit is contained in:
parent
b99ab76617
commit
4976380d67
@ -1,10 +1,7 @@
|
|||||||
package com.cpop.core.service.impl;
|
package com.cpop.core.service.impl;
|
||||||
|
|
||||||
import com.cpop.common.constant.Constants;
|
|
||||||
import com.cpop.common.utils.bean.BeanUtils;
|
|
||||||
import com.cpop.core.abstracts.AbstractLoginInfoBuild;
|
import com.cpop.core.abstracts.AbstractLoginInfoBuild;
|
||||||
import com.cpop.core.base.entity.LoginUser;
|
import com.cpop.core.base.entity.LoginUser;
|
||||||
import com.cpop.core.base.entity.loginInfo.OamStaffLoginInfo;
|
|
||||||
import com.cpop.core.base.enums.OperationLogEnum;
|
import com.cpop.core.base.enums.OperationLogEnum;
|
||||||
import com.cpop.core.base.enums.UserType;
|
import com.cpop.core.base.enums.UserType;
|
||||||
import com.cpop.core.base.exception.ServiceException;
|
import com.cpop.core.base.exception.ServiceException;
|
||||||
@ -16,16 +13,14 @@ import com.cpop.core.service.CoreService;
|
|||||||
import com.cpop.core.utils.MessageUtils;
|
import com.cpop.core.utils.MessageUtils;
|
||||||
import com.cpop.core.utils.SecurityUtils;
|
import com.cpop.core.utils.SecurityUtils;
|
||||||
import com.cpop.core.utils.uuid.IdUtils;
|
import com.cpop.core.utils.uuid.IdUtils;
|
||||||
import com.mybatisflex.core.row.DbChain;
|
|
||||||
import com.mybatisflex.core.row.Row;
|
|
||||||
import com.mybatisflex.core.row.RowUtil;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Arrays;
|
||||||
import java.util.stream.Collectors;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DB
|
* @author DB
|
||||||
@ -237,6 +232,7 @@ public class CoreServiceImpl implements CoreService {
|
|||||||
* @return 登陆用户
|
* @return 登陆用户
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public LoginUser loadUserByPhone(String phoneNumber, UserType userType, Map<String, Object> credentials) {
|
public LoginUser loadUserByPhone(String phoneNumber, UserType userType, Map<String, Object> credentials) {
|
||||||
//统一获取系统用户信息
|
//统一获取系统用户信息
|
||||||
SysUser sysUser = this.getSysUserByPhone(phoneNumber, userType);
|
SysUser sysUser = this.getSysUserByPhone(phoneNumber, userType);
|
||||||
|
|||||||
@ -4,7 +4,7 @@ cpop:
|
|||||||
profile: E:/Cpop/uploadPath
|
profile: E:/Cpop/uploadPath
|
||||||
jwt:
|
jwt:
|
||||||
#白名单
|
#白名单
|
||||||
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources
|
whiteList: /login,/miniLogin,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources
|
||||||
gateway:
|
gateway:
|
||||||
rsa-keypair:
|
rsa-keypair:
|
||||||
# 公钥文件
|
# 公钥文件
|
||||||
|
|||||||
@ -4,23 +4,19 @@ cpop:
|
|||||||
profile: /root/jambox-union/jambox-oam/uploadPath/upload
|
profile: /root/jambox-union/jambox-oam/uploadPath/upload
|
||||||
jwt:
|
jwt:
|
||||||
#白名单
|
#白名单
|
||||||
whiteList: /login,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*
|
whiteList: /login,/miniLogin,/getCaptcha,/profile/**,/doc.html,/webjars/**,/favicon.ico,/v2/api-docs/**,/swagger-resources,/wxOpen/receiveTicket,/wxOpen/*/callback,/wxOpen/bindOpenAccount/*,/wxCp/portal/*
|
||||||
#拦截
|
#拦截
|
||||||
gateway:
|
gateway:
|
||||||
rsa-keypair:
|
rsa-keypair:
|
||||||
# 公钥文件
|
# 公钥文件
|
||||||
publicKeyFile: /root/jambox-union/jambox-oam/script/secretKey/publicKey
|
publicKeyFile: D:\WorkSpace\Cpop\Cpop-Union\Cpop-Mall\Cpop-Mall-Web\src\main\resources\static\keyPair\publicKey
|
||||||
# 公钥文件
|
# 公钥文件
|
||||||
privateKeyFile: /root/jambox-union/jambox-oam/script/secretKey/privateKey
|
privateKeyFile: D:\WorkSpace\Cpop\Cpop-Union\Cpop-Mall\Cpop-Mall-Web\src\main\resources\static\keyPair\privateKey
|
||||||
|
|
||||||
# DataSource Config
|
# DataSource Config
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: Cpop-Mall-Test
|
name: Cpop-Mall-Test
|
||||||
datasource:
|
|
||||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
|
||||||
username: root
|
|
||||||
password: Customer0401
|
|
||||||
#redis配置
|
#redis配置
|
||||||
redis:
|
redis:
|
||||||
#地址
|
#地址
|
||||||
@ -28,7 +24,7 @@ spring:
|
|||||||
#端口
|
#端口
|
||||||
port: 6333
|
port: 6333
|
||||||
#数据库
|
#数据库
|
||||||
database: 5
|
database: 10
|
||||||
#密码
|
#密码
|
||||||
password: Jambox.123*
|
password: Jambox.123*
|
||||||
#连接超时
|
#连接超时
|
||||||
@ -60,7 +56,7 @@ mybatis-flex:
|
|||||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
datasource:
|
datasource:
|
||||||
mall:
|
mall:
|
||||||
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop-union?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
url: jdbc:mysql://sh-cynosdbmysql-grp-fggo83js.sql.tencentcdb.com:20965/cpop_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
username: root
|
username: root
|
||||||
password: Customer0401
|
password: Customer0401
|
||||||
jambox:
|
jambox:
|
||||||
|
|||||||
@ -31,7 +31,7 @@ spring:
|
|||||||
max-file-size: 1024MB
|
max-file-size: 1024MB
|
||||||
max-request-size: 300MB
|
max-request-size: 300MB
|
||||||
profiles:
|
profiles:
|
||||||
active: dev,mall,system,jambox,sdk
|
active: test,mall,system,jambox,sdk
|
||||||
datasource:
|
datasource:
|
||||||
type: com.zaxxer.hikari.HikariDataSource
|
type: com.zaxxer.hikari.HikariDataSource
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
@ -124,4 +124,19 @@ xss:
|
|||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
#swagger日志
|
#swagger日志
|
||||||
springfox: error
|
springfox: error
|
||||||
|
|
||||||
|
#微信
|
||||||
|
wx:
|
||||||
|
#微信支付
|
||||||
|
pay:
|
||||||
|
#服务商模式
|
||||||
|
#微信公众号或者小程序等的appid
|
||||||
|
appId: wx1eb0e5fb7dac3c05
|
||||||
|
#微信支付商户号
|
||||||
|
mchId: 1618884922
|
||||||
|
#微信支付商户密钥
|
||||||
|
mchKey: JamBox20230919174000000000000002
|
||||||
|
apiV3Key: JamBox20230919174000000000000002
|
||||||
|
# p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
|
||||||
|
keyPath:
|
||||||
|
|||||||
@ -1,13 +1,50 @@
|
|||||||
package com.cpop.mall.web;
|
package com.cpop.mall.web;
|
||||||
|
|
||||||
|
import com.cpop.core.service.CoreService;
|
||||||
|
import com.cpop.core.utils.RsaUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
class CpopMallWebApplicationTests {
|
class CpopMallWebApplicationTests {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CoreService coreService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RsaUtils rsaUtils;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void contextLoads() {
|
void contextLoads() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化密钥对
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void initKeyPair() {
|
||||||
|
Map<String, String> keyPairMap = rsaUtils.initKeyPair();
|
||||||
|
String publicKey = keyPairMap.get("publicKey");
|
||||||
|
String privateKey = keyPairMap.get("privateKey");
|
||||||
|
System.out.println("公钥:");
|
||||||
|
System.out.println(publicKey);
|
||||||
|
System.out.println();
|
||||||
|
System.out.println("私钥:");
|
||||||
|
System.out.println(privateKey);
|
||||||
|
System.out.println();
|
||||||
|
String source = "Admin@123";
|
||||||
|
System.out.println("待加密字符串:"+source);
|
||||||
|
System.out.println();
|
||||||
|
String strEncrypt = rsaUtils.encrypt(source);
|
||||||
|
System.out.println("加密后的字符串:");
|
||||||
|
System.out.println(strEncrypt);
|
||||||
|
System.out.println();
|
||||||
|
String strDecrypt = rsaUtils.decrypt(strEncrypt);
|
||||||
|
System.out.println("解密后的字符串:");
|
||||||
|
System.out.println(strDecrypt);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,6 +52,7 @@ public class PlaceOrderBo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 店铺(校区)id
|
* 店铺(校区)id
|
||||||
*/
|
*/
|
||||||
|
@NotBlank(message = "店铺(校区)id不能为空")
|
||||||
@ApiModelProperty("店铺(校区)id")
|
@ApiModelProperty("店铺(校区)id")
|
||||||
private String storeId;
|
private String storeId;
|
||||||
|
|
||||||
|
|||||||
@ -2,29 +2,23 @@ package com.cpop.mall.business.controller.backstage;
|
|||||||
|
|
||||||
import com.cpop.core.base.R;
|
import com.cpop.core.base.R;
|
||||||
import com.cpop.core.utils.SpringUtils;
|
import com.cpop.core.utils.SpringUtils;
|
||||||
import com.cpop.jambox.business.entity.CardTemplate;
|
|
||||||
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
||||||
import com.cpop.mall.business.bo.ProductBo;
|
import com.cpop.mall.business.bo.ProductBo;
|
||||||
import com.cpop.mall.business.bo.ProductPageBo;
|
import com.cpop.mall.business.bo.ProductPageBo;
|
||||||
import com.cpop.mall.business.service.ProductRecordService;
|
import com.cpop.mall.business.service.ProductRecordService;
|
||||||
|
import com.cpop.mall.business.service.ProductService;
|
||||||
import com.cpop.mall.business.service.ProductSpecificationService;
|
import com.cpop.mall.business.service.ProductSpecificationService;
|
||||||
import com.cpop.mall.business.vo.ProductPageVo;
|
import com.cpop.mall.business.vo.ProductPageVo;
|
||||||
|
import com.cpop.mall.business.vo.StoreListVo;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import com.cpop.mall.business.service.ProductService;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -59,6 +53,19 @@ public class BackstageProductController {
|
|||||||
return R.ok(page);
|
return R.ok(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @descriptions 下单需要选择店铺/校区
|
||||||
|
* @author DB
|
||||||
|
* @date 2023/10/23 11:56
|
||||||
|
* @return: com.cpop.core.base.R<com.mybatisflex.core.paginate.Page<com.cpop.mall.business.entity.Product>>
|
||||||
|
*/
|
||||||
|
@GetMapping("/getStoreList")
|
||||||
|
@ApiOperation("选择品牌下的店铺/校区")
|
||||||
|
public R<List<StoreListVo>> getStoreList() {
|
||||||
|
List<StoreListVo> list = productService.getStoreList();
|
||||||
|
return R.ok(list);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @descriptions 获取果酱课卡模板
|
* @descriptions 获取果酱课卡模板
|
||||||
* @author DB
|
* @author DB
|
||||||
|
|||||||
@ -1,14 +1,8 @@
|
|||||||
package com.cpop.mall.business.controller.mini;
|
package com.cpop.mall.business.controller.mini;
|
||||||
|
|
||||||
import com.cpop.core.base.R;
|
import com.cpop.core.base.R;
|
||||||
import com.cpop.core.utils.SpringUtils;
|
|
||||||
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
|
||||||
import com.cpop.mall.business.bo.PlaceOrderBo;
|
|
||||||
import com.cpop.mall.business.bo.ProductBo;
|
|
||||||
import com.cpop.mall.business.bo.ProductPageBo;
|
import com.cpop.mall.business.bo.ProductPageBo;
|
||||||
import com.cpop.mall.business.service.ProductRecordService;
|
|
||||||
import com.cpop.mall.business.service.ProductService;
|
import com.cpop.mall.business.service.ProductService;
|
||||||
import com.cpop.mall.business.service.ProductSpecificationService;
|
|
||||||
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
||||||
import com.cpop.mall.business.vo.ProductPageVo;
|
import com.cpop.mall.business.vo.ProductPageVo;
|
||||||
import com.cpop.mall.business.vo.StoreListVo;
|
import com.cpop.mall.business.vo.StoreListVo;
|
||||||
@ -17,16 +11,13 @@ import io.swagger.annotations.Api;
|
|||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.cpop.mall.business.entity.table.ProductRecordTableDef.PRODUCT_RECORD;
|
|
||||||
import static com.cpop.mall.business.entity.table.ProductSpecificationTableDef.PRODUCT_SPECIFICATION;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商城-商品表 控制层。
|
* 商城-商品表 控制层。
|
||||||
*
|
*
|
||||||
@ -61,10 +52,10 @@ public class MiniProductController {
|
|||||||
* @date 2023/10/23 11:56
|
* @date 2023/10/23 11:56
|
||||||
* @return: com.cpop.core.base.R<com.mybatisflex.core.paginate.Page<com.cpop.mall.business.entity.Product>>
|
* @return: com.cpop.core.base.R<com.mybatisflex.core.paginate.Page<com.cpop.mall.business.entity.Product>>
|
||||||
*/
|
*/
|
||||||
@GetMapping("/paySelectStore")
|
@GetMapping("/getStoreList")
|
||||||
@ApiOperation("下单需要选择店铺/校区")
|
@ApiOperation("下单需要选择店铺/校区")
|
||||||
public R<List<StoreListVo>> paySelectStore() {
|
public R<List<StoreListVo>> getStoreList() {
|
||||||
List<StoreListVo> list = productService.paySelectStore();
|
List<StoreListVo> list = productService.getStoreList();
|
||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,14 @@
|
|||||||
package com.cpop.mall.business.service;
|
package com.cpop.mall.business.service;
|
||||||
|
|
||||||
import com.cpop.jambox.business.entity.CardTemplate;
|
|
||||||
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
||||||
import com.cpop.mall.business.bo.ProductBo;
|
import com.cpop.mall.business.bo.ProductBo;
|
||||||
import com.cpop.mall.business.bo.ProductPageBo;
|
import com.cpop.mall.business.bo.ProductPageBo;
|
||||||
|
import com.cpop.mall.business.entity.Product;
|
||||||
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
||||||
import com.cpop.mall.business.vo.ProductPageVo;
|
import com.cpop.mall.business.vo.ProductPageVo;
|
||||||
import com.cpop.mall.business.vo.StoreListVo;
|
import com.cpop.mall.business.vo.StoreListVo;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
import com.cpop.mall.business.entity.Product;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -81,7 +80,7 @@ public interface ProductService extends IService<Product> {
|
|||||||
* @date 2023/10/26 15:34
|
* @date 2023/10/26 15:34
|
||||||
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
||||||
*/
|
*/
|
||||||
List<StoreListVo> paySelectStore();
|
List<StoreListVo> getStoreList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @descriptions 查询商品评价分页列表
|
* @descriptions 查询商品评价分页列表
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import com.cpop.common.utils.StringUtils;
|
|||||||
import com.cpop.common.utils.bean.BeanUtils;
|
import com.cpop.common.utils.bean.BeanUtils;
|
||||||
import com.cpop.core.base.entity.PageDomain;
|
import com.cpop.core.base.entity.PageDomain;
|
||||||
import com.cpop.core.base.enums.SourceType;
|
import com.cpop.core.base.enums.SourceType;
|
||||||
import com.cpop.core.gateway.miniProgram.MiniUserLoginInfoBuild;
|
|
||||||
import com.cpop.core.utils.SecurityUtils;
|
import com.cpop.core.utils.SecurityUtils;
|
||||||
import com.cpop.core.utils.SpringUtils;
|
import com.cpop.core.utils.SpringUtils;
|
||||||
import com.cpop.core.utils.sql.SqlUtils;
|
import com.cpop.core.utils.sql.SqlUtils;
|
||||||
@ -14,43 +13,40 @@ import com.cpop.jambox.business.service.BrandExtendService;
|
|||||||
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
import com.cpop.jambox.business.vo.CardTemplateListVo;
|
||||||
import com.cpop.mall.business.bo.ProductBo;
|
import com.cpop.mall.business.bo.ProductBo;
|
||||||
import com.cpop.mall.business.bo.ProductPageBo;
|
import com.cpop.mall.business.bo.ProductPageBo;
|
||||||
import com.cpop.mall.business.entity.ProductSpecification;
|
import com.cpop.mall.business.entity.Product;
|
||||||
import com.cpop.mall.business.entity.ProductRecord;
|
import com.cpop.mall.business.entity.ProductRecord;
|
||||||
|
import com.cpop.mall.business.entity.ProductSpecification;
|
||||||
|
import com.cpop.mall.business.mapper.ProductMapper;
|
||||||
import com.cpop.mall.business.service.OrderEvaluateService;
|
import com.cpop.mall.business.service.OrderEvaluateService;
|
||||||
import com.cpop.mall.business.service.ProductRecordService;
|
import com.cpop.mall.business.service.ProductRecordService;
|
||||||
|
import com.cpop.mall.business.service.ProductService;
|
||||||
import com.cpop.mall.business.service.ProductSpecificationService;
|
import com.cpop.mall.business.service.ProductSpecificationService;
|
||||||
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
import com.cpop.mall.business.vo.ProductEvaluateVo;
|
||||||
import com.cpop.mall.business.vo.ProductPageVo;
|
import com.cpop.mall.business.vo.ProductPageVo;
|
||||||
import com.cpop.mall.business.vo.ProductRecordVo;
|
|
||||||
import com.cpop.mall.business.vo.StoreListVo;
|
import com.cpop.mall.business.vo.StoreListVo;
|
||||||
import com.cpop.system.business.entity.Brand;
|
import com.cpop.system.business.service.StoreService;
|
||||||
import com.cpop.system.business.service.BrandService;
|
|
||||||
import com.mybatisflex.core.datasource.DataSourceKey;
|
import com.mybatisflex.core.datasource.DataSourceKey;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.core.row.Db;
|
import com.mybatisflex.core.row.Db;
|
||||||
import com.mybatisflex.core.row.DbChain;
|
|
||||||
import com.mybatisflex.core.row.Row;
|
import com.mybatisflex.core.row.Row;
|
||||||
import com.mybatisflex.core.row.RowUtil;
|
import com.mybatisflex.core.row.RowUtil;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import com.cpop.mall.business.entity.Product;
|
|
||||||
import com.cpop.mall.business.mapper.ProductMapper;
|
|
||||||
import com.cpop.mall.business.service.ProductService;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.cpop.jambox.business.entity.table.BrandExtendTableDef.BRAND_EXTEND;
|
import static com.cpop.jambox.business.entity.table.BrandExtendTableDef.BRAND_EXTEND;
|
||||||
|
import static com.cpop.jambox.business.entity.table.StoreExtendTableDef.STORE_EXTEND;
|
||||||
import static com.cpop.mall.business.entity.table.OrderEvaluateTableDef.ORDER_EVALUATE;
|
import static com.cpop.mall.business.entity.table.OrderEvaluateTableDef.ORDER_EVALUATE;
|
||||||
import static com.cpop.mall.business.entity.table.OrderTableDef.ORDER;
|
import static com.cpop.mall.business.entity.table.OrderTableDef.ORDER;
|
||||||
import static com.cpop.mall.business.entity.table.ProductRecordTableDef.PRODUCT_RECORD;
|
import static com.cpop.mall.business.entity.table.ProductRecordTableDef.PRODUCT_RECORD;
|
||||||
import static com.cpop.mall.business.entity.table.ProductSpecificationTableDef.PRODUCT_SPECIFICATION;
|
import static com.cpop.mall.business.entity.table.ProductSpecificationTableDef.PRODUCT_SPECIFICATION;
|
||||||
import static com.cpop.mall.business.entity.table.ProductTableDef.PRODUCT;
|
import static com.cpop.mall.business.entity.table.ProductTableDef.PRODUCT;
|
||||||
import static com.cpop.system.business.entity.table.BrandTableDef.BRAND;
|
import static com.cpop.system.business.entity.table.BrandTableDef.BRAND;
|
||||||
|
import static com.cpop.system.business.entity.table.StoreTableDef.STORE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商城-商品表 服务层实现。
|
* 商城-商品表 服务层实现。
|
||||||
@ -244,46 +240,53 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
|
|||||||
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<StoreListVo> paySelectStore() {
|
public List<StoreListVo> getStoreList() {
|
||||||
//获取当前用户信息
|
//获取当前用户信息
|
||||||
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
JSONObject loginUserInfo = SecurityUtils.getInstance().getLoginUserInfo();
|
||||||
SourceType sourceType = SourceType.valueOf(loginUserInfo.getString("sourceType"));
|
SourceType sourceType = SourceType.valueOf(loginUserInfo.getString("sourceType"));
|
||||||
switch (sourceType) {
|
switch (sourceType) {
|
||||||
//果酱
|
//果酱
|
||||||
case JAMBOX:
|
case JAMBOX:
|
||||||
BrandExtend brandExtend = SpringUtils.getBean(BrandExtendService.class).queryChain()
|
return getJamboxStore(loginUserInfo);
|
||||||
.from(BRAND_EXTEND)
|
|
||||||
.leftJoin(BRAND).on(BRAND.ID.eq(BRAND_EXTEND.BRAND_ID))
|
|
||||||
.where(BRAND.ID.eq(loginUserInfo.getString("brandId"))).one();
|
|
||||||
return getJamboxStore(brandExtend.getBrandCloudId());
|
|
||||||
case COMMON:
|
case COMMON:
|
||||||
break;
|
return getCommonStore(loginUserInfo);
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @descriptions 获取通用校区信息
|
||||||
|
* @author DB
|
||||||
|
* @date 2023/10/26 15:54
|
||||||
|
* @param loginUserInfo 登录用户信息
|
||||||
|
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
||||||
|
*/
|
||||||
|
private List<StoreListVo> getCommonStore(JSONObject loginUserInfo) {
|
||||||
|
return SpringUtils.getBean(StoreService.class).queryChain()
|
||||||
|
.select(STORE.STORE_NAME, STORE.ID)
|
||||||
|
.from(STORE)
|
||||||
|
.leftJoin(BRAND).on(BRAND.ID.eq(STORE.BRAND_ID))
|
||||||
|
.where(BRAND.ID.eq(loginUserInfo.getString("brandId")))
|
||||||
|
.listAs(StoreListVo.class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @descriptions 获取果酱校区信息
|
* @descriptions 获取果酱校区信息
|
||||||
* @author DB
|
* @author DB
|
||||||
* @date 2023/10/26 15:54
|
* @date 2023/10/26 15:54
|
||||||
* @param brandCloudId 云平拍id
|
* @param loginUserInfo 登录用户信息
|
||||||
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
* @return: java.util.List<com.cpop.mall.business.vo.StoreListVo>
|
||||||
*/
|
*/
|
||||||
private List<StoreListVo> getJamboxStore(String brandCloudId) {
|
private List<StoreListVo> getJamboxStore(JSONObject loginUserInfo) {
|
||||||
try {
|
return SpringUtils.getBean(StoreService.class).queryChain()
|
||||||
DataSourceKey.use("jambox");
|
.select(STORE.STORE_NAME, STORE.ID)
|
||||||
//机构表
|
.select(STORE_EXTEND.STORE_CLOUD_ID.as(StoreListVo::getOutId))
|
||||||
List<Row> list = DbChain.table("t_mechanism_info")
|
.from(STORE)
|
||||||
.select("tmi.mechanism as storeName", "tmi.mechanism_id as id")
|
.leftJoin(BRAND).on(BRAND.ID.eq(STORE.BRAND_ID))
|
||||||
.from("t_mechanism_info").as("tmi")
|
.leftJoin(STORE_EXTEND).on(STORE_EXTEND.STORE_ID.eq(STORE.ID))
|
||||||
.leftJoin("t_brand_info").as("tbi").on("tbi.id = tmi.brand_id")
|
.where(BRAND.ID.eq(loginUserInfo.getString("brandId")))
|
||||||
.where("tbi.brand_id = ?", brandCloudId)
|
.listAs(StoreListVo.class);
|
||||||
.list();
|
|
||||||
return RowUtil.toEntityList(list,StoreListVo.class);
|
|
||||||
} finally {
|
|
||||||
DataSourceKey.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -26,4 +26,10 @@ public class StoreListVo {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty("店铺/校区名")
|
@ApiModelProperty("店铺/校区名")
|
||||||
private String storeName;
|
private String storeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外部id
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("外部id")
|
||||||
|
private String outId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,66 @@
|
|||||||
|
package com.cpop.mall.framework.config.wxPay;
|
||||||
|
|
||||||
|
import com.cpop.common.utils.StringUtils;
|
||||||
|
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||||
|
import com.github.binarywang.wxpay.service.WxPayService;
|
||||||
|
import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DB
|
||||||
|
* @Description:
|
||||||
|
* @create 2023-10-26 22:38
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ConditionalOnClass(WxPayService.class)
|
||||||
|
@EnableConfigurationProperties(WxPayProperties.class)
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WxPayConfiguration {
|
||||||
|
private WxPayProperties properties;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public WxPayService wxService() {
|
||||||
|
WxPayConfig payConfig = new WxPayConfig();
|
||||||
|
payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
|
||||||
|
payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
|
||||||
|
payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey()));
|
||||||
|
//服务商模式微信支付
|
||||||
|
payConfig.setApiV3Key(this.properties.getApiV3Key());
|
||||||
|
payConfig.setCertSerialNo(this.properties.getCertSerialNo());
|
||||||
|
payConfig.setKeyPath(this.properties.getKeyPath());
|
||||||
|
payConfig.setPrivateKeyPath(this.properties.getPrivateKeyPath());
|
||||||
|
payConfig.setPrivateCertPath(this.properties.getPrivateCertPath());
|
||||||
|
// 可以指定是否使用沙箱环境
|
||||||
|
payConfig.setUseSandboxEnv(false);
|
||||||
|
WxPayService wxPayService = new WxPayServiceImpl();
|
||||||
|
wxPayService.setConfig(payConfig);
|
||||||
|
return wxPayService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @descriptions 根据商户appid或商户号获取对应微信支付接口
|
||||||
|
* @author DB
|
||||||
|
* @date 2023/10/18 10:34
|
||||||
|
* @param subAppId 子商户appid
|
||||||
|
* @param subMchId 子商户id
|
||||||
|
* @return: com.github.binarywang.wxpay.service.WxPayService
|
||||||
|
*/
|
||||||
|
public WxPayService getWxService(String subAppId, String subMchId) {
|
||||||
|
WxPayService wxPayService = wxService();
|
||||||
|
WxPayConfig payConfig = wxPayService.getConfig();
|
||||||
|
//子商户信息
|
||||||
|
payConfig.setSubAppId(StringUtils.trimToNull(subAppId));
|
||||||
|
payConfig.setSubMchId(StringUtils.trimToNull(subMchId));
|
||||||
|
// 可以指定是否使用沙箱环境
|
||||||
|
payConfig.setUseSandboxEnv(false);
|
||||||
|
wxPayService.setConfig(payConfig);
|
||||||
|
return wxPayService;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
package com.cpop.mall.framework.config.wxPay;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DB
|
||||||
|
* @Description:
|
||||||
|
* @create 2023-10-26 22:39
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ConfigurationProperties(prefix = "wx.pay")
|
||||||
|
public class WxPayProperties {
|
||||||
|
/**
|
||||||
|
* 设置微信公众号或者小程序等的appid
|
||||||
|
*/
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信支付商户号
|
||||||
|
*/
|
||||||
|
private String mchId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信支付商户密钥
|
||||||
|
*/
|
||||||
|
private String mchKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除
|
||||||
|
*/
|
||||||
|
private String subAppId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除
|
||||||
|
*/
|
||||||
|
private String subMchId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
|
||||||
|
*/
|
||||||
|
private String keyPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* apiV3 秘钥值
|
||||||
|
*/
|
||||||
|
private String apiV3Key;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* apiclient_key.pem证书文件的绝对路径或者以classpath:开头的类路径
|
||||||
|
*/
|
||||||
|
private String privateKeyPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* apiclient_cert.pem证书文件的绝对路径或者以classpath:开头的类路径
|
||||||
|
*/
|
||||||
|
private String privateCertPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* apiV3 证书序列号值
|
||||||
|
*/
|
||||||
|
private String certSerialNo;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user