Commit 58cc8f87 by JayZhouLeiHao

修改代码

parent 3a078276
......@@ -28,7 +28,12 @@ public class H5MemberInterceptor extends HandlerInterceptorAdapter {
"/h5/wechat/login",
"/h5/account/login",
"/h5/register",
"/h5/validate"
"/h5/validate",
"/h5/agreementInfo/list",
"/h5/file/upload",
"/h5/slideshowInfo/list",
"/h5/posterInfo/list",
"/h5/blackImgInfo/list"
};
@Override
......
......@@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://db1.prd.jianghuxx.com:3317/wenchuang_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
url: jdbc:mysql://db1.prd.nyinhong.com:3317/wenchuang_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
username: root
password: 4f9fa23639242790
password: 2a0a6dfc62648fc3
# 从库数据源
slave:
# 从数据源开关/默认关闭
......@@ -21,18 +21,27 @@ spring:
login-username: ruoyi
login-password: 123456
# redis 配置
# redis:
# # 地址
# host: 127.0.0.1
# # 端口,默认为6379
# port: 6379
# # 数据库索引
# database: 0
# # 密码
## password: yongqi@2022
redis:
# 地址
host: localhost
host: cluster1.prd.nyinhong.com
# 端口,默认为6379
port: 6379
port: 6319
# 数据库索引
database: 0
# 密码
# password:
password: yongqi@2022
ruoyi:
# 文件路径 示例( Windows配置C:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: E:/yinhong/wenchuang/Java/file
profile: /www/wwwroot/wenchuang/profile
scheduling:
enabled: false
#操作oss需要的一些参数
......@@ -43,16 +52,17 @@ aliyun:
endPoint: 你的endpoint # Endpoint:在阿里云oss控制台查看自己使用的endpoint
bucketName: 你的bucketName # bucket 名称
wechat:
enabled: false
appId: 你的微信服务号信息(h5的时候需要,小程序的时候不需要)
secret: 你的微信服务号信息(h5的时候需要,小程序的时候不需要)
merchantId: 微信支付商户号
privateKeyPath: 微信支付密钥地址相对地址
merchantSerialNumber: 微信支付密钥对应的序列号
apiV3key: 微信支付apiV3key
notifyUrl: 微信支付回调地址
miniProgramAppId: wxb323afcbe152514f
miniProgramSecret: f975fc175dad70717f9a09384b55a9f7
enabled: true
appId:
secret:
merchantId: 1685133653
# privateKeyPath: E:\yinhong\wenchuang\Java\RuoYi-Mall\ruoyi-admin\src\main\resources\cert\apiclient_key.pem
privateKeyPath: /www/wwwroot/wenchuang/cert/apiclient_key.pem
merchantSerialNumber: 36FCC4F5C894D8A64F56AFA572A461E5F50A49B7
apiV3key: 1ascgdvbhyacbnhfdaqwexzfghbvgfa1
notifyUrl: https://wenchuang.yyinhong.cn/api/no-auth/wechat/notify
miniProgramAppId: wx4fd771bb1917b4f6
miniProgramSecret: 72eaa3bc19d635736c5ecfadf3404b1a
sms:
enabled: true
# 阿里云 dysmsapi.aliyuncs.com
......
......@@ -9,7 +9,7 @@ ruoyi:
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: C:/ruoyi/uploadPath
profile: /www/wwwroot/wenchuang/profile
# 获取ip地址开关
addressEnabled: true
# 验证码类型 math 数组计算 char 字符验证
......@@ -120,8 +120,8 @@ token:
# 令牌密钥
secret: abcdefghijkomnopqrstuvwxyx
# 令牌有效期(默认30分钟)
expireTime: 30
memberExpireTime: 30
expireTime: 380
memberExpireTime: 380
# mybatis-plus 配置
mybatis-plus:
# 搜索指定包别名
......@@ -156,8 +156,8 @@ xss:
urlPatterns: /system/*,/monitor/*,/tool/*
extra:
wx:
appid: wxb323afcbe152514f
secret: f975fc175dad70717f9a09384b55a9f7
appid: wx4fd771bb1917b4f6
secret: 72eaa3bc19d635736c5ecfadf3404b1a
redirect: ""
scheduling:
enabled: true
......
-----BEGIN CERTIFICATE-----
MIIEITCCAwmgAwIBAgIUNvzE9ciU2KZPVq+lcqRh5fUKSbcwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjQwOTEyMDMxMDA5WhcNMjkwOTExMDMxMDA5WjB7MRMwEQYDVQQDDAox
Njg1MTMzNjUzMRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM
HuS4iua1t+S8mOeyn+W5v+WRiuaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04xETAP
BgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
3z4OMaUWtmM+Kmygz3wtRZaw/u7p0y96sqA2o0QX/kUfkaDsGWblyCpA9O1CRFER
boNRZO5BRAoCnKFwe0C/xcjwzo9lYTO6oWYdBfTk09gnX6tg5+H63ypfKvhYSjbw
4cNKuvl9uA5KM4MiuPyPCkIGBiReTEsqUsH4jXWRN7aJ/m6FVIAQZDKZ57407uk6
FaMpYxaM1K1xxOSxlezrjR2d95VokKi/SQCkkDypX0THQOKB/iP7/juMVkXHIcD7
n0tNGiiy/9BU3CF9ZZOE5AlpDjaUZoXRMdr4AuKToYvqIzeRbEcVxHU19wTx0WB7
w8JvjtdQYnpCxPTv6k8TsQIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0PBAQD
AgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1cy5j
b20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3
NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMzQTg3
QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBAFIMZFxybIjhBPzD
vy1OXKGluTBnVsb20qsSOWkpAHpN660U8BN+GTWWP/l0jZbfnngaMNQpamWd/KPU
f9fy3DfWzF+2iqNSsYxLGRa7Tz6uvxvBlS5mpnRYqiuMzAZhtrVomZV+yNfGPkzO
0K5vi3BsZ+IqkaYQsbVwNW8vxpw604F+k9MLhaVBxSqKKDhtg20Bl/WEEzaEUWvW
wkj44IiT8IQYkS2sSnwQCpo53uTHdYNTmF6DYqB8ZrVS+0G1oVaSqegdBLweVEdJ
msmo2A4a5iQq+JyFSjZNb0hir/BV4er+jXZ0uCs0YGAFGUwh3S1apavFYp073J5x
AEKZ6cU=
-----END CERTIFICATE-----
......@@ -12,9 +12,12 @@ public enum OrderStatus
NOT_DELIVERED(1, "待发货"),
DELIVERED(2, "待收货"),
COMPLETE(3, "已完成"),
CLOSED(4, "已关闭"),
INVALID(5, "无效订单"),
REFUUND(-2, "售后订单");
CLOSED(4, "已取消"),
INVALID(5, "已售后"),
REFUUND(6, "售后中"),
REFUND_ERROR(9,"退款失败"),
REFUND_OK(8,"退款成功");
private final Integer type;
private final String msg;
......
......@@ -109,6 +109,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
).permitAll()
.antMatchers("/h5/**").permitAll()
.antMatchers("/no-auth/**").permitAll()
.antMatchers("/h5/slideshowInfo/**").permitAll()
.antMatchers("/h5/posterInfo/**").permitAll()
.antMatchers("/h5/blackImgInfo/**").permitAll()
.antMatchers("/common/download**").anonymous()
.antMatchers("/common/download/resource**").anonymous()
.antMatchers("/swagger-ui.html").anonymous()
......
......@@ -62,11 +62,7 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.64</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
......@@ -91,5 +87,11 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.70</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
......
......@@ -2,6 +2,7 @@ package com.cyl.h5.controller;
import com.cyl.manager.act.domain.entity.ActivityApplyInfo;
import com.cyl.manager.act.domain.query.ActivityApplyInfoQuery;
import com.cyl.manager.act.domain.vo.ActivityApplyInfoSaveVo;
import com.cyl.manager.act.service.ActivityApplyInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
......@@ -35,7 +36,6 @@ public class H5ActivityApplyInfoController extends BaseController {
@ApiOperation("我的报名列表")
@PostMapping("/list")
public ResponseEntity<Page<ActivityApplyInfo>> list(@RequestBody ActivityApplyInfoQuery query, Pageable page) {
query.setUserId(getUserId());
List<ActivityApplyInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page) list).getTotal()));
}
......@@ -52,4 +52,11 @@ public class H5ActivityApplyInfoController extends BaseController {
public ResponseEntity<Integer> edit(@RequestBody ActivityApplyInfo activityApplyInfo) {
return ResponseEntity.ok(service.update(activityApplyInfo));
}
@ApiOperation("新增活动报名信息")
@Log(title = "活动报名信息", businessType = BusinessType.INSERT)
@PostMapping
public ResponseEntity<Integer> insert(@RequestBody ActivityApplyInfoSaveVo activityApplyInfoSaveVo) {
return ResponseEntity.ok(service.insertAll(activityApplyInfoSaveVo));
}
}
package com.cyl.h5.controller;
import com.cyl.manager.oth.domain.entity.AgreementInfo;
import com.cyl.manager.oth.domain.query.AgreementInfoQuery;
import com.cyl.manager.oth.service.AgreementInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 协议管理信息Controller
*
* @author zcc
* @date 2024-08-01
*/
@Api(description ="小程序-协议管理信息接口列表")
@RestController
@RequestMapping("/h5/agreementInfo")
public class H5AgreementInfoController extends BaseController {
@Autowired
private AgreementInfoService service;
@ApiOperation("小程序-查询协议管理信息列表")
@PostMapping("/list")
public ResponseEntity<Page<AgreementInfo>> list(@RequestBody AgreementInfoQuery query, Pageable page) {
List<AgreementInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
@ApiOperation("小程序-获取协议管理信息详细信息")
@GetMapping(value = "/{id}")
public ResponseEntity<AgreementInfo> getInfo(@PathVariable("id") Long id) {
return ResponseEntity.ok(service.selectById(id));
}
}
package com.cyl.h5.controller;
import com.cyl.manager.oth.domain.entity.BlackImgInfo;
import com.cyl.manager.oth.domain.query.BlackImgInfoQuery;
import com.cyl.manager.oth.service.BlackImgInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 背景图管理信息Controller
*
* @author zcc
* @date 2024-08-01
*/
@Api(description ="小程序-背景图管理信息接口列表")
@RestController
@RequestMapping("/h5/blackImgInfo")
public class H5BlackImgInfoController extends BaseController {
@Autowired
private BlackImgInfoService service;
@ApiOperation("小程序-查询背景图管理信息列表")
@PostMapping("/list")
public ResponseEntity<Page<BlackImgInfo>> list(@RequestBody BlackImgInfoQuery query, Pageable page) {
List<BlackImgInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
}
......@@ -12,6 +12,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisService;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.OssUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.system.service.ISysConfigService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
......@@ -20,6 +21,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
......@@ -96,9 +98,13 @@ public class H5CommonController {
}
@PostMapping("/h5/file/upload")
public AjaxResult uploadFile(MultipartFile file) {
String url = ossUtils.uploadOneFile(file);
return AjaxResult.successData(url);
public AjaxResult uploadFile(MultipartFile file) throws IOException {
//返回上传oss的url
String url = FileUploadUtils.upload(file);
AjaxResult ajax = AjaxResult.success();
ajax.put("fileName", file.getOriginalFilename());
ajax.put("url", url);
return ajax;
}
@GetMapping("/no-auth/config/get")
......
......@@ -3,12 +3,15 @@ package com.cyl.h5.controller;
import com.cyl.h5.service.H5MemberAddressService;
import com.cyl.manager.ums.domain.form.MemberAddressForm;
import com.cyl.manager.ums.domain.vo.MemberAddressVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(description ="小程序-会员收货地址")
@RestController
@RequestMapping("/h5/member/address")
public class H5MemberAddressController {
......@@ -17,6 +20,7 @@ public class H5MemberAddressController {
private H5MemberAddressService h5MemberAddressService;
@GetMapping("/list")
@ApiOperation("小程序-会员收货地址列表")
public ResponseEntity<List<MemberAddressVO>> getList(){
return ResponseEntity.ok(h5MemberAddressService.selectList());
}
......@@ -27,11 +31,13 @@ public class H5MemberAddressController {
}
@PostMapping("/create")
@ApiOperation("小程序-新增会员收货地址")
public ResponseEntity<Integer> create(@RequestBody MemberAddressForm memberAddressForm){
return ResponseEntity.ok(h5MemberAddressService.insert(memberAddressForm));
}
@PutMapping("/update")
@ApiOperation("小程序-修改会员收货地址")
public ResponseEntity<Integer> update(@RequestBody MemberAddressForm memberAddressForm){
return ResponseEntity.ok(h5MemberAddressService.update(memberAddressForm));
}
......@@ -42,6 +48,7 @@ public class H5MemberAddressController {
}
@DeleteMapping("/{id}")
@ApiOperation("小程序-删除会员收货地址")
public ResponseEntity<Integer> remove(@PathVariable Long id) {
return ResponseEntity.ok(h5MemberAddressService.deleteById(id));
}
......
package com.cyl.h5.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cyl.h5.domain.form.RegisterForm;
import com.cyl.h5.domain.vo.H5LoginVO;
import com.cyl.h5.domain.vo.RegisterVO;
import com.cyl.h5.domain.vo.ValidatePhoneVO;
import com.cyl.h5.domain.vo.WechatLoginVO;
import com.cyl.h5.service.H5MemberService;
import com.cyl.manager.ums.domain.entity.Member;
import com.cyl.manager.ums.domain.vo.MemberVO;
import com.cyl.manager.ums.mapper.MemberMapper;
import com.ruoyi.common.core.domain.model.LoginMember;
import com.ruoyi.framework.web.service.TokenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
......@@ -19,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Api(description = "小程序-会员信息接口")
@RestController
@RequestMapping("/h5")
public class H5MemberController {
......@@ -26,29 +31,31 @@ public class H5MemberController {
@Autowired
private H5MemberService service;
@Autowired
private MemberMapper memberMapper;
@Autowired
private TokenService tokenService;
@ApiOperation("会员注册")
@PostMapping("/register")
public ResponseEntity<RegisterVO> register(@RequestBody RegisterForm request){
public ResponseEntity<RegisterVO> register(@RequestBody RegisterForm request) {
return ResponseEntity.ok(service.register(request));
}
@ApiOperation("注册登录验证码校验手机号")
@GetMapping("/validate/{phone}")
public ResponseEntity<ValidatePhoneVO> validate(@PathVariable String phone){
public ResponseEntity<ValidatePhoneVO> validate(@PathVariable String phone) {
return ResponseEntity.ok(service.validate(phone));
}
@ApiOperation("手机号密码登录")
@PostMapping("/account/login")
public ResponseEntity<H5LoginVO> accountLogin(@RequestBody String data){
public ResponseEntity<H5LoginVO> accountLogin(@RequestBody String data) {
return ResponseEntity.ok(service.accountLogin(data));
}
@PostMapping("/wechat/login")
public ResponseEntity<H5LoginVO> wechatLogin(String data) throws Exception {
@GetMapping("/wechat/login")
public ResponseEntity<H5LoginVO> wechatLogin(@RequestParam("data") String data) throws Exception {
if (StringUtils.isEmpty(data)) {
return ResponseEntity.ok(null);
}
......@@ -58,19 +65,19 @@ public class H5MemberController {
@ApiOperation("sms登录")
@PostMapping("/sms/login")
public ResponseEntity<H5LoginVO> smsLogin(@RequestBody String data){
public ResponseEntity<H5LoginVO> smsLogin(@RequestBody String data) {
return ResponseEntity.ok(service.smsLogin(data));
}
@ApiOperation("获取会员信息")
@GetMapping("/member/info")
public ResponseEntity<MemberVO> getMemberInfo(){
public ResponseEntity<MemberVO> getMemberInfo() {
return ResponseEntity.ok(service.getMemberInfo());
}
@ApiOperation("设置会员微信信息")
@PostMapping("/member/setWechatInfo")
public void setWechatInfo(@RequestBody String data){
public void setWechatInfo(@RequestBody String data) {
service.setWechatInfo(data);
}
......@@ -78,8 +85,14 @@ public class H5MemberController {
@GetMapping("/record/login")
public void add(HttpServletRequest request) {
LoginMember loginMember = tokenService.getLoginMember(request);
if (loginMember != null){
if (loginMember != null) {
service.insert(loginMember.getMemberId());
}
}
@ApiOperation("修改会员信息")
@PutMapping("/upd")
public void upd(@RequestBody Member member) {
service.upd(member);
}
}
package com.cyl.h5.controller;
import com.cyl.manager.oth.domain.entity.PosterInfo;
import com.cyl.manager.oth.domain.query.PosterInfoQuery;
import com.cyl.manager.oth.service.PosterInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 主引流海报信息Controller
*
* @author zcc
* @date 2024-08-01
*/
@Api(description ="小程序-主引流海报信息接口列表")
@RestController
@RequestMapping("/h5/posterInfo")
public class H5PosterInfoController extends BaseController {
@Autowired
private PosterInfoService service;
@ApiOperation("小程序-查询主引流海报信息列表")
@PostMapping("/list")
public ResponseEntity<Page<PosterInfo>> list(@RequestBody PosterInfoQuery query, Pageable page) {
List<PosterInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
}
package com.cyl.h5.controller;
import com.cyl.manager.pms.convert.ProductCategoryConvert;
import com.cyl.manager.pms.domain.entity.ProductCategory;
import com.cyl.manager.pms.domain.query.ProductCategoryQuery;
import com.cyl.manager.pms.domain.vo.ProductCategoryVO;
import com.cyl.manager.pms.service.ProductCategoryService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 商品分类Controller
*
* @author zcc
* @date 2022-11-28
*/
@Api(description ="小程序-商品分类接口列表")
@RestController
@RequestMapping("/h5/productCategory")
public class H5ProductCategoryController extends BaseController {
@Autowired
private ProductCategoryService service;
@Autowired
private ProductCategoryConvert convert;
@ApiOperation("小程序-查询商品分类列表")
@PostMapping("/list")
public ResponseEntity<List<ProductCategoryVO>> list(@RequestBody ProductCategoryQuery query) {
List<ProductCategoryVO> list = service.selectList(query, null);
return ResponseEntity.ok(list);
}
@ApiOperation("小程序-获取商品分类详细信息")
@GetMapping(value = "/{id}")
public ResponseEntity<ProductCategory> getInfo(@PathVariable("id") Long id) {
return ResponseEntity.ok(service.selectById(id));
}
}
package com.cyl.h5.controller;
import com.cyl.manager.oth.domain.entity.SalesAddressInfo;
import com.cyl.manager.oth.domain.query.SalesAddressInfoQuery;
import com.cyl.manager.oth.service.SalesAddressInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 退货地址信息Controller
*
* @author zcc
* @date 2024-08-01
*/
@Api(description ="小程序-退货地址信息接口列表")
@RestController
@RequestMapping("/h5/salesAddressInfo")
public class H5SalesAddressInfoController extends BaseController {
@Autowired
private SalesAddressInfoService service;
@ApiOperation("查询退货地址信息列表")
@PostMapping("/list")
public ResponseEntity<Page<SalesAddressInfo>> list(@RequestBody SalesAddressInfoQuery query, Pageable page) {
List<SalesAddressInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
@ApiOperation("获取退货地址信息详细信息")
@GetMapping(value = "/{id}")
public ResponseEntity<SalesAddressInfo> getInfo(@PathVariable("id") Long id) {
return ResponseEntity.ok(service.selectById(id));
}
}
package com.cyl.h5.controller;
import com.cyl.manager.oth.domain.entity.SlideshowInfo;
import com.cyl.manager.oth.domain.query.SlideshowInfoQuery;
import com.cyl.manager.oth.service.SlideshowInfoService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 轮播图信息Controller
*
* @author zcc
* @date 2024-08-01
*/
@Api(description ="小程序-轮播图信息接口列表")
@RestController
@RequestMapping("/h5/slideshowInfo")
public class H5SlideshowInfoController extends BaseController {
@Autowired
private SlideshowInfoService service;
@ApiOperation("小程序-查询轮播图信息列表")
@PostMapping("/list")
public ResponseEntity<Page<SlideshowInfo>> list(@RequestBody SlideshowInfoQuery query, Pageable page) {
List<SlideshowInfo> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
}
@ApiOperation("小程序-获取轮播图信息详细信息")
@GetMapping(value = "/{id}")
public ResponseEntity<SlideshowInfo> getInfo(@PathVariable("id") Long id) {
return ResponseEntity.ok(service.selectById(id));
}
}
......@@ -16,7 +16,7 @@
@ApiModel(value = "发货记录")
public class DeliveryReq {
@ApiModelProperty(value = "订单id", required = true)
@ApiModelProperty(value = "订单id", required = true)
@NotNull(message = "订单id不能为空")
private Long orderId;
......@@ -24,7 +24,4 @@
@NotBlank(message = "物流单号不能为空")
private String deliverySn;
@ApiModelProperty(value = "快递公司Code", required = true)
@NotBlank(message = "快递公司Code不能为空")
private String deliveryCompanyCode;
}
\ No newline at end of file
......@@ -34,6 +34,17 @@
@ApiModelProperty(value = "运费", hidden = true)
private BigDecimal freightAmount;
@ApiModelProperty(value = "优惠后金额", hidden = true)
private BigDecimal couponMoney;
@ApiModelProperty(value = "使用积分", hidden = true)
private BigDecimal useIntegral;
private BigDecimal giveIntegral;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
@ApiModelProperty(value = "隐藏 业务过程中的数据", hidden = true)
private Sku sku;
......
......@@ -16,19 +16,22 @@ public class ApplyRefundForm {
@ApiModelProperty(value = "申请售后类型 1:仅退款 2:退货退款", required = true)
private Integer applyRefundType;
@ApiModelProperty(value = "退款原因", required = true)
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty(value = "申请退货数量", required = true)
private Integer quantity;
@ApiModelProperty(value = "退款金额")
private BigDecimal refundAmount;
@ApiModelProperty(value = "退还积分")
private BigDecimal refundIntegral;
@ApiModelProperty(value = "描述")
private String description;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
@ApiModelProperty(name = "如果只生请一笔售后传入子订单的id")
private Long orderItemId;
}
package com.cyl.h5.domain.form;
import com.cyl.h5.domain.dto.OrderProductListDTO;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
......@@ -17,6 +20,17 @@ public class OrderSubmitForm {
/** 订单来源,购物车则为cart */
private String from;
private Long memberCouponId;
@ApiModelProperty("订单总金额")
private BigDecimal totalAmount;
@ApiModelProperty("应付金额(实际支付金额)")
private BigDecimal payAmount;
private BigDecimal totalIntegral;
private BigDecimal giveIntegral;
private BigDecimal deMoney;
@NotEmpty
private List<OrderProductListDTO> skuList;
@Data
......
......@@ -75,4 +75,19 @@ public class H5OrderVO {
@ApiModelProperty("支付倒计时")
private Long timeToPay;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
private String deliveryCompany;
@ApiModelProperty(value = "退款原因", required = true)
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
}
......@@ -9,4 +9,8 @@ public class H5ProductVO {
private String pic;
private String name;
private BigDecimal price;
private BigDecimal startPrice;
private BigDecimal endPrice;
}
......@@ -321,6 +321,18 @@ public class H5MemberService {
memberWechatMapper.update(null, wrapper);
}
public void upd(Member member) {
UpdateWrapper<Member> wrapper = new UpdateWrapper<>();
wrapper.eq("id", member.getId());
if(StringUtils.isNotEmpty(member.getNickname())){
wrapper.set("nickname", member.getNickname());
}
if(StringUtils.isNotEmpty(member.getAvatar())){
wrapper.set("avatar", member.getAvatar());
}
memberMapper.update(null, wrapper);
}
/**
* 新增会员登录记录
*
......
......@@ -55,7 +55,7 @@ public class OrderJob {
QueryWrapper<Order> qw = new QueryWrapper<>();
qw.eq("status", Constants.OrderStatus.GET);
qw.eq("aftersale_status", 1);
qw.le("delivery_time", LocalDateTime.now().minusDays(15));
qw.le("delivery_time", LocalDateTime.now().minusDays(7));
List<Order> orderList = orderMapper.selectList(qw);
h5OrderService.orderCompleteByJob(orderList);
log.info("【订单完成任务结束】,处理了:{}个订单",orderList.size());
......
......@@ -71,10 +71,9 @@ public class H5IntegralHistoryController extends BaseController {
}
@ApiOperation("积分统计")
@PostMapping("/stat")
public ResponseEntity<IntegralStatVO> statIntegral(@RequestBody IntegralHistoryQuery query) {
IntegralStatVO res = service.statIntegral(query);
@GetMapping("/stat")
public ResponseEntity<IntegralStatVO> statIntegral() {
IntegralStatVO res = service.statIntegral(null);
return ResponseEntity.ok(res);
}
}
......@@ -25,6 +25,8 @@ public class ActivityApplyInfo extends BaseAudit {
@Excel(name = "活动id")
private Long activityId;
@TableField(exist = false)
private String coverUrl;
/**
* 报名用户id
*/
......@@ -84,4 +86,18 @@ public class ActivityApplyInfo extends BaseAudit {
@ApiModelProperty("删除标志(0代表存在 2代表删除)")
private String delFlag;
@ApiModelProperty("报名人数")
@Excel(name = "报名人数")
@TableField(exist = false)
private String num;
@ApiModelProperty("人数限制")
@Excel(name = "人数限制")
@TableField(exist = false)
private Long personCondition;
/**
* 活动结束时间
*/
private String activityEndTime;
}
......@@ -2,8 +2,10 @@ package com.cyl.manager.act.domain.entity;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -16,7 +18,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
@ApiModel(description="活动信息对象")
@Data
@TableName("activity_info")
public class ActivityInfo {
public class ActivityInfo extends BaseAudit {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
......@@ -86,4 +88,15 @@ public class ActivityInfo {
@ApiModelProperty("删除标志")
private String delFlag;
/**
* 活动状态(0:启用,1:禁用)
*/
private String status;
/**
* 报名人数
*/
@TableField(exist = false)
private Integer num;
}
......@@ -35,8 +35,8 @@ public class IntegralHistory {
@Excel(name = "类型 1:收入 2:支出 3:其他")
private Integer opType;
@ApiModelProperty("子类型:11签到 12消费获得 21退款扣除积分")
@Excel(name = "子类型:11签到 12消费获得 21退款扣除积分")
@ApiModelProperty("子类型:11签到 12消费获得 21退款扣除积分 22 兑换优惠券,23平台扣除,24平台赠送,25退款退回积分")
@Excel(name = "子类型:11签到 12消费获得 21退款扣除积分 22 兑换优惠券,23平台扣除,24平台赠送,25退款退回积分")
private Integer subOpType;
@ApiModelProperty("订单金额")
......
......@@ -24,4 +24,6 @@ public class ActivityApplyInfoQuery {
private String cancelUserName;
private Long userId;
private Long activityId;
}
......@@ -40,4 +40,9 @@ public class ActivityInfoQuery {
@ApiModelProperty("活动介绍 精确匹配")
private String activityIntroduce;
/**
* 活动状态(0:启用,1:禁用)
*/
private String status;
}
package com.cyl.manager.act.domain.vo;
import com.cyl.manager.act.domain.entity.ActivityApplyInfo;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ActivityApplyInfoSaveVo {
/**
* 活动id
*/
private Long activityId;
private Long userId;
/**
* 活动结束时间
*/
private String activityEndTime;
/**
* 报名用户数组
*/
private List<ActivityApplyInfo> activityApplyInfos;
}
......@@ -52,4 +52,8 @@ public class ActivityInfoVO {
@Excel(name = "备注")
private String remark;
private String delFlag;
/**
* 活动状态(0:启用,1:禁用)
*/
private String status;
}
......@@ -23,7 +23,7 @@ public class IntegralHistoryVO {
@Excel(name = "类型 1:收入 2:支出 3:其他")
private Integer opType;
/** 子类型:11签到 12消费获得 21退款扣除积分 */
@Excel(name = "子类型:11签到 12消费获得 21退款扣除积分")
@Excel(name = "子类型:11签到 12消费获得 21退款扣除积分 22 兑换优惠券,23平台扣除,24平台赠送")
private Integer subOpType;
/** 订单金额 */
@Excel(name = "订单金额")
......
......@@ -20,5 +20,5 @@ public interface IntegralHistoryMapper extends BaseMapper<IntegralHistory> {
*/
List<IntegralHistory> selectByEntity(IntegralHistory integralHistory);
IntegralStatVO statIntegral(LocalDateTime start, LocalDateTime end, Long memberId);
IntegralStatVO statIntegral(Long memberId);
}
package com.cyl.manager.act.service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.time.LocalDateTime;
import java.util.Optional;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cyl.manager.act.domain.entity.ActivityApplyInfo;
import com.cyl.manager.act.domain.entity.ActivityInfo;
import com.cyl.manager.act.domain.query.ActivityApplyInfoQuery;
import com.cyl.manager.act.domain.vo.ActivityApplyInfoSaveVo;
import com.cyl.manager.act.mapper.ActivityApplyInfoMapper;
import com.cyl.manager.act.mapper.ActivityInfoMapper;
import com.cyl.manager.ums.domain.entity.Member;
import com.cyl.manager.ums.mapper.MemberMapper;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils;
......@@ -30,6 +43,9 @@ public class ActivityApplyInfoService {
@Autowired
private ActivityInfoMapper activityInfoMapper;
@Autowired
private MemberMapper memberMapper;
/**
* 查询活动报名信息
*
......@@ -37,7 +53,31 @@ public class ActivityApplyInfoService {
* @return 活动报名信息
*/
public ActivityApplyInfo selectById(Long id) {
return activityApplyInfoMapper.selectById(id);
ActivityApplyInfo activityApplyInfo = activityApplyInfoMapper.selectById(id);
int num;
List<ActivityApplyInfo> list = activityApplyInfoMapper.selectList(Wrappers.<ActivityApplyInfo>lambdaQuery()
.eq(ActivityApplyInfo::getActivityId, activityApplyInfo.getActivityId()).ne(ActivityApplyInfo::getStatus,3));
if (CollectionUtils.isNotEmpty(list)) {
num = list.size();
} else {
num = 0;
}
Optional.ofNullable(activityInfoMapper.selectById(activityApplyInfo.getActivityId()))
.ifPresent(activityInfo -> {
activityApplyInfo.setActivityTitle(activityInfo.getActivityTitle());
activityApplyInfo.setCoverUrl(activityInfo.getCoverUrl());
activityApplyInfo.setActivityDate(activityInfo.getActivityDate());
activityApplyInfo.setActivityAddress(activityInfo.getActivityAddress());
activityApplyInfo.setApplyStartTime(activityInfo.getApplyStartTime());
activityApplyInfo.setApplyEndTime(activityInfo.getApplyEndTime());
activityApplyInfo.setNum(num + "/" + activityInfo.getPersonCondition());
activityApplyInfo.setPersonCondition(activityInfo.getPersonCondition());
});
Member member = memberMapper.selectById(activityApplyInfo.getUserId());
if (null != member) {
activityApplyInfo.setCancelUserName(member.getNickname());
}
return activityApplyInfo;
}
/**
......@@ -48,6 +88,21 @@ public class ActivityApplyInfoService {
* @return 活动报名信息
*/
public List<ActivityApplyInfo> selectList(ActivityApplyInfoQuery query, Pageable page) {
List<ActivityApplyInfo> result = activityApplyInfoMapper.selectList(null);
if (CollectionUtils.isNotEmpty(result)) {
result.forEach(activityApplyInfo -> {
//判断报名活动是否到期并且未核销
if (activityApplyInfo.getStatus().equals("0")) {
if (isBeforeCurrentTime(activityApplyInfo.getActivityEndTime())) {
UpdateWrapper<ActivityApplyInfo> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", activityApplyInfo.getId());
updateWrapper.set("status", "2");
//修改状态
activityApplyInfoMapper.update(null, updateWrapper);
}
}
});
}
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
......@@ -68,22 +123,42 @@ public class ActivityApplyInfoService {
if (!StringUtils.isEmpty(status)) {
qw.eq("status", status);
}
if (null != query.getActivityId()) {
qw.eq("activity_id", query.getActivityId());
}
List<ActivityApplyInfo> activityApplyInfos = activityApplyInfoMapper.selectList(qw);
if (CollectionUtils.isNotEmpty(activityApplyInfos)) {
activityApplyInfos.forEach(activityApplyInfo -> {
Optional.ofNullable(activityInfoMapper.selectById(activityApplyInfo.getActivityId()))
.ifPresent(activityInfo -> {
activityApplyInfo.setActivityTitle(activityInfo.getActivityTitle());
activityApplyInfo.setCoverUrl(activityInfo.getCoverUrl());
activityApplyInfo.setActivityDate(activityInfo.getActivityDate());
activityApplyInfo.setActivityAddress(activityInfo.getActivityAddress());
activityApplyInfo.setApplyStartTime(activityInfo.getApplyStartTime());
activityApplyInfo.setApplyEndTime(activityInfo.getApplyEndTime());
//获取报名人数
List<ActivityApplyInfo> list = activityApplyInfoMapper.selectList(Wrappers.<ActivityApplyInfo>lambdaQuery()
.eq(ActivityApplyInfo::getActivityId, activityInfo.getId()).ne(ActivityApplyInfo::getStatus, "3"));
activityApplyInfo.setNum(String.valueOf(list.size()));
activityApplyInfo.setPersonCondition(activityInfo.getPersonCondition());
});
});
}
return activityApplyInfos;
}
public static boolean isBeforeCurrentTime(String inputTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
try {
Date date = sdf.parse(inputTime);
return date.before(new Date());
} catch (ParseException e) {
throw new RuntimeException("时间格式错误", e);
}
}
/**
* 新增活动报名信息
*
......@@ -97,6 +172,36 @@ public class ActivityApplyInfoService {
}
/**
* 批量新增活动报名信息
*
* @param activityApplyInfoSaveVo 活动报名信息
* @return 结果
*/
public int insertAll(ActivityApplyInfoSaveVo activityApplyInfoSaveVo) {
int i = 0;
if (null != activityApplyInfoSaveVo.getActivityId()) {
ActivityInfo activityInfo = activityInfoMapper.selectById(activityApplyInfoSaveVo.getActivityId());
if (CollectionUtils.isNotEmpty(activityApplyInfoSaveVo.getActivityApplyInfos())) {
for (ActivityApplyInfo activityApplyInfo : activityApplyInfoSaveVo.getActivityApplyInfos()) {
activityApplyInfo.setCreateTime(LocalDateTime.now());
activityApplyInfo.setDelFlag("0");
activityApplyInfo.setActivityEndTime(activityApplyInfoSaveVo.getActivityEndTime());
activityApplyInfo.setActivityTitle(activityInfo.getActivityTitle());
activityApplyInfo.setActivityDate(activityInfo.getActivityDate());
activityApplyInfo.setActivityAddress(activityInfo.getActivityAddress());
activityApplyInfo.setApplyStartTime(activityInfo.getApplyStartTime());
activityApplyInfo.setActivityId(activityInfo.getId());
activityApplyInfo.setUserId(activityApplyInfoSaveVo.getUserId());
activityApplyInfo.setApplyEndTime(activityInfo.getApplyEndTime());
activityApplyInfo.setCancelCode(RandomUtil.randomString(10));
i = activityApplyInfoMapper.insert(activityApplyInfo);
}
}
}
return i;
}
/**
* 修改活动报名信息
*
* @param activityApplyInfo 活动报名信息
......
......@@ -4,9 +4,14 @@ import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cyl.manager.act.domain.entity.ActivityApplyInfo;
import com.cyl.manager.act.domain.entity.ActivityInfo;
import com.cyl.manager.act.domain.query.ActivityInfoQuery;
import com.cyl.manager.act.mapper.ActivityApplyInfoMapper;
import com.cyl.manager.act.mapper.ActivityInfoMapper;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -17,7 +22,6 @@ import org.springframework.stereotype.Service;
/**
* 活动信息Service业务层处理
*
*
* @author zcc
*/
@Service
......@@ -25,6 +29,10 @@ public class ActivityInfoService {
@Autowired
private ActivityInfoMapper activityInfoMapper;
@Autowired
private ActivityApplyInfoMapper activityApplyInfoMapper;
/**
* 查询活动信息
*
......@@ -32,14 +40,23 @@ public class ActivityInfoService {
* @return 活动信息
*/
public ActivityInfo selectById(Long id) {
return activityInfoMapper.selectById(id);
ActivityInfo activityInfo = activityInfoMapper.selectById(id);
//获取报名人数
List<ActivityApplyInfo> activityApplyInfos = activityApplyInfoMapper.selectList(Wrappers.<ActivityApplyInfo>lambdaQuery()
.eq(ActivityApplyInfo::getActivityId, activityInfo.getId())
.ne(ActivityApplyInfo::getDelFlag, "2")
.notIn(ActivityApplyInfo::getStatus, 2, 3));
if (CollectionUtils.isNotEmpty(activityApplyInfos)) {
activityInfo.setNum(activityApplyInfos.size());
}
return activityInfo;
}
/**
* 查询活动信息列表
*
* @param query 查询条件
* @param page 分页条件
* @param page 分页条件
* @return 活动信息
*/
public List<ActivityInfo> selectList(ActivityInfoQuery query, Pageable page) {
......@@ -47,7 +64,7 @@ public class ActivityInfoService {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<ActivityInfo> qw = new QueryWrapper<>();
qw.eq("del_flag",0);
qw.eq("del_flag", 0);
String activityTitle = query.getActivityTitle();
if (!StringUtils.isEmpty(activityTitle)) {
qw.eq("activity_title", activityTitle);
......@@ -64,6 +81,9 @@ public class ActivityInfoService {
if (!StringUtils.isEmpty(applyEndTime)) {
qw.eq("apply_end_time", applyEndTime);
}
if (!StringUtils.isEmpty(query.getStatus())) {
qw.eq("status", query.getStatus());
}
String activityAddress = query.getActivityAddress();
if (!StringUtils.isEmpty(activityAddress)) {
qw.eq("activity_address", activityAddress);
......@@ -84,7 +104,19 @@ public class ActivityInfoService {
if (!StringUtils.isEmpty(activityIntroduce)) {
qw.eq("activity_introduce", activityIntroduce);
}
return activityInfoMapper.selectList(qw);
List<ActivityInfo> list = activityInfoMapper.selectList(qw);
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(activityInfo -> {
//获取报名人数
List<ActivityApplyInfo> activityApplyInfos = activityApplyInfoMapper.selectList(Wrappers.<ActivityApplyInfo>lambdaQuery()
.eq(ActivityApplyInfo::getActivityId, activityInfo.getId())
.notIn(ActivityApplyInfo::getStatus, 2, 3));
if (CollectionUtils.isNotEmpty(activityApplyInfos)) {
activityInfo.setNum(activityApplyInfos.size());
}
});
}
return list;
}
/**
......
......@@ -7,13 +7,19 @@ import java.util.List;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cyl.h5.config.SecurityUtil;
import com.cyl.manager.act.constant.IntegralRule;
import com.cyl.manager.act.domain.vo.IntegralStatVO;
import com.cyl.manager.oms.domain.entity.Order;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.ums.domain.entity.Member;
import com.cyl.manager.ums.domain.entity.MemberAccount;
import com.cyl.manager.ums.mapper.MemberAccountMapper;
import com.cyl.manager.ums.mapper.MemberMapper;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.service.ISysConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -40,6 +46,10 @@ public class IntegralHistoryService {
private MemberAccountMapper memberAccountMapper;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private MemberMapper memberMapper;
@Autowired
private OrderMapper orderMapper;
/**
* 查询积分流水表
......@@ -142,32 +152,36 @@ public class IntegralHistoryService {
}
public void handleIntegral(Long orderId, BigDecimal amount, Long memberId) {
String config = sysConfigService.selectConfigByKey(Constants.INTEGRAL_RULE_KEY);
IntegralRule rule;
if (StringUtils.isNotEmpty(config)) {
rule = JSON.parseObject(config, IntegralRule.class);
} else {
rule = new IntegralRule();
//扣除用户积分
Member member = memberMapper.selectById(memberId);
if (null == member) {
throw new ServiceException("用户信息异常!");
}
BigDecimal divide = amount.divide(rule.getOrderAmount(), 0, RoundingMode.DOWN);
if (divide.compareTo(BigDecimal.ZERO) < 1) {
log.info("订单:{},金额:{}不足{}元,不记录积分",orderId,amount,rule.getOrderAmount());
return;
//获取订单信息
Order order = orderMapper.selectById(orderId);
if (null == order) {
throw new ServiceException("订单信息异常!");
}
BigDecimal total = divide.multiply(rule.getOrderCount());
if (total.compareTo(BigDecimal.ZERO) < 1) {
log.info("订单:{},orderCount为0,不记录积分",orderId);
if(null == order.getTotalIntegral() || order.getTotalIntegral().compareTo(BigDecimal.ZERO) < 1){
log.info("订单:{},金额为0,不记录积分", orderId);
return;
}
BigDecimal integral = member.getIntegral().subtract(order.getTotalIntegral());
UpdateWrapper<Member> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", memberId);
updateWrapper.set("integral", integral);
memberMapper.update(null, updateWrapper);
IntegralHistory history = new IntegralHistory();
history.setOpType(1);
history.setSubOpType(12);
history.setAmount(total);
history.setOpType(2);
history.setSubOpType(23);
history.setAmount(order.getTotalIntegral());
history.setOrderId(orderId);
history.setOrderAmount(amount);
history.setMemberId(memberId);
history.setCreateTime(LocalDateTime.now());
insert2(history);
integralHistoryMapper.insert(history);
}
/**
......@@ -195,9 +209,7 @@ public class IntegralHistoryService {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<IntegralHistory> qw = new QueryWrapper<>();
qw.eq("member_id", SecurityUtil.getLocalMember().getId())
.ge("create_time", query.getStart())
.le("create_time", query.getEnd());
qw.eq("member_id", SecurityUtil.getLocalMember().getId());
Integer opType = query.getOpType();
if (opType != null) {
qw.eq("op_type", opType);
......@@ -212,7 +224,7 @@ public class IntegralHistoryService {
public IntegralStatVO statIntegral(IntegralHistoryQuery query) {
Long memberId = SecurityUtil.getLocalMember().getId();
IntegralStatVO statVO = integralHistoryMapper.statIntegral(query.getStart(), query.getEnd(), memberId);
IntegralStatVO statVO = integralHistoryMapper.statIntegral(memberId);
if (statVO == null) {
statVO = new IntegralStatVO();
}
......
package com.cyl.manager.live.domain;
import java.util.Date;
/**
* 调取微信接口创建直播间所用实体
*
* @author songrongzhen
* @date 2023/05/05
*/
public class WechatzbjView {
/**
* 直播间房号
*/
private Number id;
/**
* 直播间名字
* 是否必填:是
*/
private String name;
/**
* 背景图,填入mediaID(mediaID获取后,三天内有效)
* 是否必填:是
*/
private String coverImg;
/**
* 直播计划开始时间(开播时间需要在当前时间的10分钟后 并且 开始时间不能在 6 个月后)
* 是否必填:是
*/
private Number startTime;
/**
* 直播计划结束时间(开播时间和结束时间间隔不得短于30分钟,不得超过24小时)
* 是否必填:是
*/
private Number endTime;
/**
* 主播昵称
* 是否必填:是
*/
private String anchorName;
/**
* 主播微信号
* 是否必填:是
*/
private String anchorWechat;
/**
* 主播副号微信号
* 是否必填:否
*/
private String subAnchorWechat;
/**
* 创建者微信号
* 是否必填:否
*/
private String createrWechat;
/**
* 分享图,填入mediaID(mediaID获取后,三天内有效)
* 是否必填:是
*/
private String shareImg;
/**
* 购物直播频道封面图,填入mediaID(mediaID获取后,三天内有效)
* 是否必填:是
*/
private String feedsImg;
/**
* 是否开启官方收录 【1: 开启,0:关闭】,默认开启收录
* 是否必填:否
*/
private Number isFeedsPublic;
/**
* 直播间类型 【1: 推流,0:手机直播】
* 是否必填:是
*/
private Number type;
/**
* 是否关闭点赞 【0:开启,1:关闭】
* 是否必填:是
*/
private Number closeLike;
/**
* 是否关闭货架 【0:开启,1:关闭】
* 是否必填:是
*/
private Number closeGoods;
/**
* 是否关闭评论 【0:开启,1:关闭】
* 是否必填:是
*/
private Number closeComment;
/**
* 是否关闭回放 【0:开启,1:关闭】
* 是否必填:否
*/
private Number closeReplay;
/**
* 是否关闭分享 【0:开启,1:关闭】
* 是否必填:否
*/
private Number closeShare;
/**
* 是否关闭客服 【0:开启,1:关闭】
* 是否必填:否
*/
private Number closeKf;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.cyl.manager.oms.controller;
import com.cyl.manager.oms.convert.OrderConvert;
import com.cyl.manager.oms.domain.entity.Order;
import com.cyl.manager.oms.domain.entity.OrderItem;
import com.cyl.manager.oms.domain.query.OrderQuery;
import com.cyl.manager.oms.domain.form.DeliverProductForm;
import com.cyl.manager.oms.domain.form.ManagerOrderQueryForm;
......@@ -25,13 +26,14 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 订单表Controller
*
*
* @author zcc
* @date 2022-12-01
*/
@Api(description ="订单表接口列表")
@Api(description = "订单表接口列表")
@RestController
@RequestMapping("/oms/order")
@Slf4j
......@@ -93,7 +95,7 @@ public class OrderController extends BaseController {
@ApiOperation("删除订单表")
@PreAuthorize("@ss.hasPermi('oms:order:remove')")
@Log(title = "订单表", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
@DeleteMapping("/{id}")
public ResponseEntity<Integer> remove(@PathVariable Long id) {
return ResponseEntity.ok(service.deleteById(id));
}
......@@ -102,27 +104,28 @@ public class OrderController extends BaseController {
@PreAuthorize("@ss.hasPermi('oms:order:note:add')")
@Log(title = "订单表", businessType = BusinessType.UPDATE)
@PostMapping("/merchantNote/add")
public ResponseEntity<Integer> saveMerchantNote(@RequestBody Order order){
public ResponseEntity<Integer> saveMerchantNote(@RequestBody Order order) {
return ResponseEntity.ok(service.saveMerchantNote(order));
}
@ApiOperation("管理后台订单发货")
@PreAuthorize("@ss.hasPermi('oms:order:delivery')")
@PostMapping("/deliverProduct")
public ResponseEntity<String> delivery(@RequestBody DeliverProductForm request){
public ResponseEntity<String> delivery(@RequestBody DeliverProductForm request) {
Long userId = SecurityUtils.getUserId();
String redisKey = "oms_order_deliverProduct" + request.getOrderId();
String redisValue = request.getOrderId() + "_" + System.currentTimeMillis();
try{
try {
redisService.lock(redisKey, redisValue, 60);
return ResponseEntity.ok(service.deliverProduct(request, userId));
}catch (Exception e){
} catch (Exception e) {
log.error("订单发货接口异常");
throw new RuntimeException("发货失败");
}finally {
try{
redisService.unLock(redisKey, redisValue);;
}catch (Exception e){
} finally {
try {
redisService.unLock(redisKey, redisValue);
;
} catch (Exception e) {
log.error("", e);
}
}
......@@ -130,15 +133,40 @@ public class OrderController extends BaseController {
@ApiOperation("订单日志")
@GetMapping("/log/{orderId}")
public ResponseEntity<List<OrderOperateHistoryVO>> log(@PathVariable Long orderId){
public ResponseEntity<List<OrderOperateHistoryVO>> log(@PathVariable Long orderId) {
return ResponseEntity.ok(service.log(orderId));
}
@PreAuthorize("@ss.hasAnyRoles('admin')")
@ApiOperation("订单解密")
@GetMapping("/decryptPhone/{orderId}")
public ResponseEntity<String> decryptPhone(@PathVariable Long orderId){
public ResponseEntity<String> decryptPhone(@PathVariable Long orderId) {
String decryptPhone = service.decryptPhone(orderId);
return ResponseEntity.ok(decryptPhone);
}
@ApiOperation("查询退款产品信息")
@GetMapping(value = "/refundOrderDetail/{id}")
public ResponseEntity<List<OrderItem>> refundOrderDetail(@PathVariable("id") Long id) {
return ResponseEntity.ok(service.refundOrderDetail(id));
}
@ApiOperation("通过OR驳回,STATUS=0通过,STATUS=1驳回")
@GetMapping("/refund")
public ResponseEntity<String> refund(Long id, Long status) {
return ResponseEntity.ok(service.refund(id, status));
}
@ApiOperation("退款")
@GetMapping("/tuikuan")
public ResponseEntity<String> tuikuan(Long id) {
return ResponseEntity.ok(service.tuikuan(id));
}
@ApiOperation("驳回")
@GetMapping("/bohui")
public ResponseEntity<String> bohui(Long id,Long type) {
return ResponseEntity.ok(service.bohui(id,type));
}
}
......@@ -61,8 +61,8 @@ public class Order extends BaseAudit {
@Excel(name = "支付方式:0->未支付;1->支付宝;2->微信")
private Integer payType;
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
@Excel(name = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款")
@Excel(name = "订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款")
private Integer status;
@ApiModelProperty("退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功")
......@@ -159,4 +159,20 @@ public class Order extends BaseAudit {
@ApiModelProperty("优惠券金额")
private BigDecimal couponAmount;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
@ApiModelProperty("使用积分")
private BigDecimal totalIntegral;
@ApiModelProperty(value = "退款原因", required = true)
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
}
......@@ -10,12 +10,13 @@ import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.core.domain.BaseAudit;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
/**
* 订单中所包含的商品对象 oms_order_item
*
*
* @author zcc
*/
@ApiModel(description="订单中所包含的商品对象")
@ApiModel(description = "订单中所包含的商品对象")
@Data
@TableName("oms_order_item")
public class OrderItem extends BaseAudit {
......@@ -81,4 +82,29 @@ public class OrderItem extends BaseAudit {
@Excel(name = "商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}]")
private String spData;
@ApiModelProperty("优惠后金额")
private BigDecimal couponMoney;
@ApiModelProperty("使用积分")
private BigDecimal useIntegral;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
@ApiModelProperty("状态(0:售后中,1:申请失败,2:待退款,3:退款失败,4:售后取消,5:待发货,6:待收货,7:已完成,8:退款成功,9:已取消)")
private String status;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
@ApiModelProperty("退货单号")
private String refundOn;
}
......@@ -20,4 +20,15 @@ import javax.validation.constraints.NotNull;
@ApiModelProperty(name = "remark",value = "拒绝理由 操作类型为2时必填",required = true,dataType = "String")
private String remark;
@ApiModelProperty(name = "如果只生请一笔售后传入子订单的id")
private Long orderItemId;
@ApiModelProperty(name = "退款原因")
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
private Long memberId;
}
\ No newline at end of file
......@@ -30,7 +30,7 @@ public class ManagerOrderQueryForm {
@ApiModelProperty(name = "payType", value = "支付方式 0->未支付;1->支付宝;2->微信", required = true, dataType = "Integer")
private Integer payType;
@ApiModelProperty(name = "status", value = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单", required = true, dataType = "String")
@ApiModelProperty(name = "status", value = "订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款", required = true, dataType = "String")
private Integer status;
@ApiModelProperty("省份/直辖市 精确匹配")
......
......@@ -35,7 +35,7 @@ public class OrderQuery {
@ApiModelProperty("支付方式:0->未支付;1->支付宝;2->微信 精确匹配")
private Integer payType;
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 精确匹配")
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款")
private Integer status;
@ApiModelProperty("退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功 精确匹配")
......
......@@ -44,4 +44,11 @@ public class ManagerOrderDetailVO {
@ApiModelProperty("订单金额")
private BigDecimal totalAmount;
private BigDecimal couponAmount;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
}
......@@ -9,6 +9,7 @@ import java.math.BigDecimal;
@Data
@ApiModel("订单")
public class ManagerOrderProductVO {
private Long id;
@ApiModelProperty("商品id")
private Long productId;
@ApiModelProperty("商品名称")
......@@ -21,5 +22,20 @@ public class ManagerOrderProductVO {
private Integer buyNum;
@ApiModelProperty("销售价格")
private BigDecimal salePrice;
@ApiModelProperty("优惠后金额")
private BigDecimal couponMoney;
private String status;
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
@ApiModelProperty("退货单号")
private String refundOn;
@ApiModelProperty("使用积分")
private BigDecimal useIntegral;
}
......@@ -31,7 +31,7 @@ public class ManagerOrderVO {
@ApiModelProperty(name = "avatar",value = "用户头像",required = true,dataType = "String")
private String avatar;
@ApiModelProperty(name = "status",value = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单",required = true,dataType = "Integer")
@ApiModelProperty(name = "status",value = "0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单;->6:售后处理中,7:退款中,8: 退款成功",required = true,dataType = "Integer")
private Integer status;
@ApiModelProperty("退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功")
......@@ -92,6 +92,8 @@ public class ManagerOrderVO {
private String receiverProvince;
private String receiverPhoneEncrypted;
private String receiverCity;
private String receiverDistrict;
......@@ -101,4 +103,13 @@ public class ManagerOrderVO {
private String mark;
private BigDecimal couponAmount;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
@ApiModelProperty("使用积分")
private BigDecimal totalIntegral;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
}
......@@ -3,6 +3,7 @@ package com.cyl.manager.oms.domain.vo;
import java.math.BigDecimal;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 订单中所包含的商品 数据视图对象
......@@ -55,4 +56,20 @@ public class OrderItemVO extends BaseAudit {
/** 商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}] */
@Excel(name = "商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}]")
private String spData;
private BigDecimal deMoney;
/**
* 赠送积分
*/
private BigDecimal giveIntegral;
@ApiModelProperty(value = "退款原因")
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
@ApiModelProperty("退货单号")
private String refundOn;
@ApiModelProperty("优惠后金额")
private BigDecimal couponMoney;
}
......@@ -8,6 +8,7 @@ import com.cyl.manager.oms.domain.entity.OrderItem;
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 订单表 数据视图对象
......@@ -43,8 +44,8 @@ public class OrderVO extends BaseAudit {
/** 支付方式:0->未支付;1->支付宝;2->微信 */
@Excel(name = "支付方式:0->未支付;1->支付宝;2->微信")
private Integer payType;
/** 订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 */
@Excel(name = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单")
/** 订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款 */
@Excel(name = "订单状态:0->待付款;1->待发货;2->待收货;3->已完成;4->订单取消;5->售后取消;->6:售后处理中,7:申请失败,8: 退款成功,9:待退款")
private Integer status;
/** 退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功 */
@Excel(name = "退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功")
......@@ -52,6 +53,11 @@ public class OrderVO extends BaseAudit {
/** 物流公司(配送方式) */
@Excel(name = "物流公司(配送方式)")
private String deliveryCompany;
@ApiModelProperty(value = "退款原因", required = true)
private String reason;
@ApiModelProperty("凭证图片以逗号隔开")
private String proofPics;
/** 物流单号 */
@Excel(name = "物流单号")
private String deliverySn;
......@@ -109,5 +115,10 @@ public class OrderVO extends BaseAudit {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "确认收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime receiveTime;
@ApiModelProperty("抵扣金额")
private BigDecimal deMoney;
@ApiModelProperty("使用积分")
private BigDecimal totalIntegral;
private List<OrderItem> items;
}
......@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cyl.h5.domain.dto.OrderProductListDTO;
......@@ -22,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
/**
* 订单中所包含的商品Service业务层处理
*
*
* @author zcc
*/
@Service
......@@ -44,7 +44,7 @@ public class OrderItemService extends ServiceImpl<OrderItemMapper, OrderItem> {
* 查询订单中所包含的商品列表
*
* @param query 查询条件
* @param page 分页条件
* @param page 分页条件
* @return 订单中所包含的商品
*/
public List<OrderItem> selectList(OrderItemQuery query, Pageable page) {
......@@ -144,19 +144,23 @@ public class OrderItemService extends ServiceImpl<OrderItemMapper, OrderItem> {
@Transactional
public void saveOrderItem(Member member, LocalDateTime optTime,
Long orderId, List<OrderProductListDTO> list){
Long orderId, List<OrderProductListDTO> list) {
List<OrderItem> addOrderItemList = new ArrayList<>();
list.forEach(item -> {
OrderItem orderItem = new OrderItem();
orderItem.setId(IDGenerator.generateId());
orderItem.setGiveIntegral(item.getGiveIntegral());
orderItem.setOrderId(orderId);
orderItem.setProductId(item.getProduct().getId());
orderItem.setOutProductId(item.getProduct().getOutProductId());
orderItem.setSkuId(item.getSku().getId());
orderItem.setOutSkuId(item.getSku().getOutSkuId());
orderItem.setPic(item.getSku().getPic());
orderItem.setDeMoney(item.getDeMoney());
orderItem.setProductName(item.getProduct().getName());
orderItem.setSalePrice(item.getSku().getPrice());
orderItem.setCouponMoney(item.getCouponMoney());
orderItem.setUseIntegral(item.getUseIntegral());
orderItem.setQuantity(item.getQuantity());
orderItem.setProductCategoryId(item.getProduct().getCategoryId());
orderItem.setSpData(item.getSku().getSpData());
......@@ -165,7 +169,7 @@ public class OrderItemService extends ServiceImpl<OrderItemMapper, OrderItem> {
addOrderItemList.add(orderItem);
});
boolean flag = saveBatch(addOrderItemList);
if (!flag){
if (!flag) {
throw new RuntimeException("新增订单item失败");
}
}
......
......@@ -74,8 +74,8 @@ public class SlideshowInfoController extends BaseController {
@ApiOperation("删除轮播图信息")
@PreAuthorize("@ss.hasPermi('oth:slideshowInfo:remove')")
@Log(title = "轮播图信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public ResponseEntity<Integer> remove(@PathVariable Long[] ids) {
return ResponseEntity.ok(service.deleteByIds(ids));
@DeleteMapping("/{id}")
public ResponseEntity<Integer> remove(@PathVariable Long id) {
return ResponseEntity.ok(service.deleteByIds(id));
}
}
......@@ -19,12 +19,18 @@ public class AgreementInfo extends BaseAudit {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("协议内容")
@Excel(name = "协议内容")
private String content;
@ApiModelProperty("用户协议")
@Excel(name = "用户协议")
private String userContent;
@ApiModelProperty("类型(0:用户协议,1:隐私协议,2:购买须知)")
@Excel(name = "类型", readConverterExp = "0=:用户协议,1:隐私协议,2:购买须知")
private String type;
@ApiModelProperty("隐私协议")
@Excel(name = "隐私协议")
private String privacyContent;
@ApiModelProperty("购买协议")
@Excel(name = "购买协议")
private String buyContent;
@ApiModelProperty("是否展示直播(0:否,1:是)")
private String isZb;
}
......@@ -19,12 +19,16 @@ public class BlackImgInfo extends BaseAudit {
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("背景图url")
@Excel(name = "背景图url")
private String imgUrl;
@ApiModelProperty("首页背景图url")
@Excel(name = "首页背景图url")
private String homeImgUrl;
@ApiModelProperty("类型(0:首页,1:产品分类,2:我的)")
@Excel(name = "类型", readConverterExp = "0=:首页,1:产品分类,2:我的")
private String type;
@ApiModelProperty("产品分类背景图url")
@Excel(name = "产品分类背景图url")
private String typeImgUrl;
@ApiModelProperty("我的背景图url")
@Excel(name = "我的背景图url")
private String thisImgUrl;
}
......@@ -45,7 +45,7 @@ public class ScenicSpotInfo extends BaseAudit {
@ApiModelProperty("相关产品id")
@Excel(name = "相关产品id")
private Long productId;
private String productIds;
@ApiModelProperty("备注")
@Excel(name = "备注")
......
......@@ -14,6 +14,5 @@ import io.swagger.annotations.ApiModelProperty;
@Data
public class AgreementInfoQuery {
@ApiModelProperty("类型(0:用户协议,1:隐私协议,2:购买须知)")
private String type;
}
......@@ -11,7 +11,6 @@ import io.swagger.annotations.ApiModelProperty;
@ApiModel(description="背景图管理信息 查询 对象")
@Data
public class BlackImgInfoQuery {
@ApiModelProperty("类型(0:首页,1:产品分类,2:我的) 精确匹配")
private String type;
}
......@@ -30,6 +30,6 @@ public class ScenicSpotInfoQuery {
private String introduce;
@ApiModelProperty("相关产品id 精确匹配")
private Long productId;
private Long productIds;
}
......@@ -3,20 +3,33 @@ package com.cyl.manager.oth.domain.vo;
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 协议管理信息 数据视图对象
*
*
* @author zcc
*/
@Data
public class AgreementInfoVO extends BaseAudit {
/** 主键 */
/**
* 主键
*/
private Long id;
/** 协议内容 */
@Excel(name = "协议内容")
private String content;
/** 类型(0:用户协议,1:隐私协议,2:购买须知) */
@Excel(name = "类型", readConverterExp = "0=:用户协议,1:隐私协议,2:购买须知")
private String type;
@ApiModelProperty("用户协议")
@Excel(name = "用户协议")
private String userContent;
@ApiModelProperty("隐私协议")
@Excel(name = "隐私协议")
private String privacyContent;
@ApiModelProperty("购买协议")
@Excel(name = "购买协议")
private String buyContent;
@ApiModelProperty("是否展示直播(0:否,1:是)")
private String isZb;
}
......@@ -3,6 +3,7 @@ package com.cyl.manager.oth.domain.vo;
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 背景图管理信息 数据视图对象
......@@ -13,10 +14,15 @@ import lombok.Data;
public class BlackImgInfoVO extends BaseAudit {
/** 主键 */
private Long id;
/** 背景图url */
@Excel(name = "背景图url")
private String imgUrl;
/** 类型(0:首页,1:产品分类,2:我的) */
@Excel(name = "类型", readConverterExp = "0=:首页,1:产品分类,2:我的")
private String type;
@ApiModelProperty("首页背景图url")
@Excel(name = "首页背景图url")
private String homeImgUrl;
@ApiModelProperty("产品分类背景图url")
@Excel(name = "产品分类背景图url")
private String typeImgUrl;
@ApiModelProperty("我的背景图url")
@Excel(name = "我的背景图url")
private String thisImgUrl;
}
......@@ -34,7 +34,7 @@ public class ScenicSpotInfoVO extends BaseAudit {
private String introduce;
/** 相关产品id */
@Excel(name = "相关产品id")
private Long productId;
private String productIds;
/** 备注 */
@Excel(name = "备注")
private String remark;
......
......@@ -47,7 +47,6 @@ public class AgreementInfoService {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
LambdaQueryWrapper<AgreementInfo> qw = new LambdaQueryWrapper<>();
qw.eq(AgreementInfo::getType, query.getType());
return agreementInfoMapper.selectList(qw);
}
......
......@@ -46,10 +46,6 @@ public class BlackImgInfoService {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<BlackImgInfo> qw = new QueryWrapper<>();
String type = query.getType();
if (!StringUtils.isEmpty(type)) {
qw.eq("type", type);
}
return blackImgInfoMapper.selectList(qw);
}
......
......@@ -2,6 +2,8 @@ package com.cyl.manager.oth.service;
import java.util.Arrays;
import java.util.List;
import java.time.LocalDateTime;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.manager.oth.domain.entity.ScenicSpotInfo;
import com.cyl.manager.oth.domain.query.ScenicSpotInfoQuery;
......@@ -69,10 +71,6 @@ public class ScenicSpotInfoService {
if (!StringUtils.isEmpty(introduce)) {
qw.eq("introduce", introduce);
}
Long productId = query.getProductId();
if (productId != null) {
qw.eq("product_id", productId);
}
return scenicSpotInfoMapper.selectList(qw);
}
......
......@@ -51,6 +51,7 @@ public class SlideshowInfoService {
if (!StringUtils.isEmpty(nameLike)) {
qw.like("name", nameLike);
}
qw.orderByAsc("order_num");
return slideshowInfoMapper.selectList(qw);
}
......@@ -81,8 +82,8 @@ public class SlideshowInfoService {
* @param ids 需要删除的轮播图信息主键
* @return 结果
*/
public int deleteByIds(Long[] ids) {
return slideshowInfoMapper.updateDelFlagByIds(ids);
public int deleteByIds(Long id) {
return slideshowInfoMapper.deleteById(id);
}
/**
......
......@@ -85,4 +85,15 @@ public class Product extends BaseAudit {
@Excel(name = "商品分类名称")
private String productCategoryName;
/**
* 虚拟销量
*/
@ApiModelProperty("虚拟销量")
@Excel(name = "虚拟销量")
private Long virtualSales;
private BigDecimal startPrice;
private BigDecimal endPrice;
}
......@@ -63,5 +63,15 @@ public class ProductVO extends BaseAudit {
private String productCategoryName;
@Excel(name = "商品销售属性,json格式")
private String productAttr;
private BigDecimal startPrice;
private BigDecimal endPrice;
/**
* 虚拟销量
*/
private Long virtualSales;
private List<Sku> skuList;
}
......@@ -4,8 +4,10 @@ import java.util.*;
import java.time.LocalDateTime;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.util.BeanUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.h5.domain.vo.ProductDetailVO;
......@@ -29,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
/**
* 商品信息Service业务层处理
*
*
* @author zcc
*/
@Service
......@@ -53,7 +54,7 @@ public class ProductService {
*/
public ProductVO selectById(Long id) {
Product product = productMapper.selectById(id);
ProductVO productVO = convert.do2vo(product);
ProductVO productVO = BeanUtil.toBean(product, ProductVO.class);
QueryWrapper<Sku> qw = new QueryWrapper<>();
qw.eq("product_id", product.getId());
List<Sku> skus = skuMapper.selectList(qw);
......@@ -65,7 +66,7 @@ public class ProductService {
* 查询商品信息列表
*
* @param query 查询条件
* @param page 分页条件
* @param page 分页条件
* @return 商品信息
*/
public List<Product> selectList(ProductQuery query, Pageable page) {
......@@ -73,13 +74,13 @@ public class ProductService {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<Product> qw = new QueryWrapper<>();
if (StringUtils.isNoneEmpty(query.getOrderField())){
if (StringUtils.isNoneEmpty(query.getOrderField())) {
if (StringUtils.isNotEmpty(query.getOrderSort()) && "desc".equalsIgnoreCase(query.getOrderSort())) {
qw.orderByDesc(query.getOrderField());
} else {
qw.orderByAsc(query.getOrderField());
}
}else {
} else {
qw.orderByDesc("publish_status");
qw.orderByAsc("sort");
}
......@@ -87,19 +88,21 @@ public class ProductService {
if (categoryId != null) {
qw.eq("category_id", categoryId);
}
Integer publishStatus = query.getPublishStatus();
if (publishStatus != null) {
qw.eq("publish_status", publishStatus);
}
String search = query.getSearch();
if (StringUtils.isNoneEmpty(search)){
qw.like("name", "%".concat(query.getSearch().trim()).concat("%"));
if (StringUtils.isNotEmpty(query.getProductCategoryNameLike())) {
qw.eq("product_category_name", query.getProductCategoryNameLike());
}
if (CollectionUtil.isNotEmpty(query.getExcludeProductIds())) {
qw.notIn("id",query.getExcludeProductIds());
String search = query.getNameLike();
if (StringUtils.isNoneEmpty(search)) {
qw.like("name", "%".concat(search.trim()).concat("%"));
}
if (CollectionUtil.isNotEmpty(query.getIds())) {
qw.in("id",query.getIds());
qw.in("id", query.getIds());
}
if (null != query.getPublishStatus()) {
qw.in("publish_status", query.getPublishStatus());
}
if (CollectionUtil.isNotEmpty(query.getExcludeProductIds())) {
qw.in("id", query.getExcludeProductIds());
}
return productMapper.selectList(qw);
}
......@@ -113,11 +116,11 @@ public class ProductService {
@Transactional
public int insert(ProductVO productVO) {
Product product = convert.vo2do(productVO);
Product product = BeanUtil.toBean(productVO, Product.class);
product.setCreateTime(LocalDateTime.now());
List<Sku> skuList = productVO.getSkuList();
productMapper.insert(product);
if(skuList!=null){
if (skuList != null) {
skuList.forEach(sku -> {
sku.setProductId(product.getId());
sku.setCreateTime(LocalDateTime.now());
......@@ -141,20 +144,20 @@ public class ProductService {
return 0;
}
Long userId = SecurityUtils.getUserId();
Product product = convert.vo2do(productVO);
Product product = BeanUtil.toBean(productVO, Product.class);
List<Sku> skuList = productVO.getSkuList();
product.setUpdateBy(userId);
product.setUpdateTime(LocalDateTime.now());
productMapper.updateById(product);
//查找库中所有的sku
Map<String,Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
map.put("product_id", product.getId());
Map<Long, Sku> skuMap = skuMapper.selectByMap(map).stream().collect(Collectors.toMap(it -> it.getId(), it -> it));
//针对已有的进行编辑
List<Sku> updateList = productVO.getSkuList().stream().filter(it -> it.getId() != null).collect(Collectors.toList());
if (!CollectionUtil.isEmpty(updateList)) {
log.info("共有{}个sku需要修改,{},productId:{}",updateList.size(), JSONUtil.toJsonStr(updateList),productVO.getId());
updateList.forEach(it->{
log.info("共有{}个sku需要修改,{},productId:{}", updateList.size(), JSONUtil.toJsonStr(updateList), productVO.getId());
updateList.forEach(it -> {
Sku sku = skuMap.get(it.getId());
sku.setUpdateBy(SecurityUtils.getUserId());
sku.setUpdateTime(LocalDateTime.now());
......@@ -169,7 +172,7 @@ public class ProductService {
//针对没有的进行新增
List<Sku> addList = productVO.getSkuList().stream().filter(it -> it.getId() == null).collect(Collectors.toList());
if (!CollectionUtil.isEmpty(addList)) {
log.info("共有{}个sku需要新增,{},productId:{}",addList.size(), JSONUtil.toJsonStr(addList),productVO.getId());
log.info("共有{}个sku需要新增,{},productId:{}", addList.size(), JSONUtil.toJsonStr(addList), productVO.getId());
addList.forEach(sku -> {
sku.setProductId(product.getId());
sku.setCreateTime(LocalDateTime.now());
......@@ -179,7 +182,7 @@ public class ProductService {
//删除
List<Long> deleteIds = skuMap.keySet().stream().filter(it -> !idList.contains(it)).collect(Collectors.toList());
if (!CollectionUtil.isEmpty(deleteIds)) {
log.info("共有{}个sku需要删除,{},productId:{}",deleteIds.size(), JSONUtil.toJsonStr(deleteIds),productVO.getId());
log.info("共有{}个sku需要删除,{},productId:{}", deleteIds.size(), JSONUtil.toJsonStr(deleteIds), productVO.getId());
skuMapper.deleteBatchIds(deleteIds);
}
return 1;
......
package com.cyl.manager.ums.controller;
import com.cyl.manager.ums.convert.MemberConvert;
import com.cyl.manager.ums.domain.dto.MemberDTO;
import com.cyl.manager.ums.domain.form.ChangeMemberStatusForm;
import com.cyl.manager.ums.domain.entity.Member;
import com.cyl.manager.ums.domain.query.MemberQuery;
......@@ -24,13 +25,14 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 会员信息Controller
*
*
* @author zcc
* @date 2022-11-28
*/
@Api(description ="会员信息接口列表")
@Api(description = "会员信息接口列表")
@RestController
public class MemberController extends BaseController {
@Autowired
......@@ -40,7 +42,7 @@ public class MemberController extends BaseController {
@Autowired
private WechatAuthService wechatAuthService;
@RequestMapping(path ={"/ums/member/wechat/code","/h5/member/wechat/code","/no-auth/wechat/code"},method=RequestMethod.GET)
@RequestMapping(path = {"/ums/member/wechat/code", "/h5/member/wechat/code", "/no-auth/wechat/code"}, method = RequestMethod.GET)
public AjaxResult getWechatCode(@RequestParam(required = false) String scene) {
return AjaxResult.successData(wechatAuthService.getQRCode(scene));
}
......@@ -50,7 +52,7 @@ public class MemberController extends BaseController {
@PostMapping("/ums/member/list")
public ResponseEntity<Page<Member>> list(@RequestBody MemberQuery query, Pageable page) {
List<Member> list = service.selectList(query, page);
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page) list).getTotal()));
}
@ApiOperation("导出会员信息列表")
......@@ -70,6 +72,12 @@ public class MemberController extends BaseController {
return ResponseEntity.ok(service.selectById(id));
}
@ApiOperation("会员积分增加减少")
@PostMapping(value = "/ums/member/integralAddOrSub")
public ResponseEntity<Integer> integralAddOrSub(@RequestBody MemberDTO member) {
return ResponseEntity.ok(service.integralAddOrSub(member));
}
@ApiOperation("新增会员信息")
@PreAuthorize("@ss.hasPermi('ums:member:add')")
@Log(title = "会员信息", businessType = BusinessType.INSERT)
......@@ -97,7 +105,7 @@ public class MemberController extends BaseController {
@ApiOperation("删除会员信息")
@PreAuthorize("@ss.hasPermi('ums:member:remove')")
@Log(title = "会员信息", businessType = BusinessType.DELETE)
@DeleteMapping("/ums/member/{id}")
@DeleteMapping("/ums/member/{id}")
public ResponseEntity<Integer> remove(@PathVariable Long id) {
return ResponseEntity.ok(service.deleteById(id));
}
......@@ -105,19 +113,19 @@ public class MemberController extends BaseController {
@ApiOperation(("修改会员账户状态"))
@Log(title = "会员信息", businessType = BusinessType.UPDATE)
@PostMapping("/ums/member/status/change")
public ResponseEntity<Integer> changeStatus(@RequestBody ChangeMemberStatusForm form){
public ResponseEntity<Integer> changeStatus(@RequestBody ChangeMemberStatusForm form) {
return ResponseEntity.ok(service.changeStatus(form));
}
@ApiOperation("会员手机号解密")
@GetMapping("/ums/member/phone/decrypt/{phoneEncrypted}")
public ResponseEntity<String> getPhoneDecrypted(@PathVariable String phoneEncrypted){
public ResponseEntity<String> getPhoneDecrypted(@PathVariable String phoneEncrypted) {
return ResponseEntity.ok(service.getPhoneDecrypted(phoneEncrypted));
}
@ApiOperation("查看会员统计数据")
@GetMapping("/ums/member/view/statistics/{memberId}")
public ResponseEntity<MemberDataStatisticsVO> viewStatistics(@PathVariable Long memberId){
public ResponseEntity<MemberDataStatisticsVO> viewStatistics(@PathVariable Long memberId) {
return ResponseEntity.ok(service.viewStatistics(memberId));
}
}
package com.cyl.manager.ums.domain.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MemberDTO {
private String type;
private Long memberId;
private BigDecimal integral;
}
......@@ -85,6 +85,9 @@ public class Member extends BaseAudit {
@Excel(name = "等级")
private Integer level;
@ApiModelProperty("用户身份(0:普通用户,1:核销人员)")
private String userType;
@ApiModelProperty("用户剩余积分")
@Excel(name = "用户剩余积分")
private BigDecimal integral;
......
......@@ -66,4 +66,6 @@ public class MemberQuery {
private String beginTime;
private String endTime;
private String userType;
}
......@@ -6,6 +6,7 @@ import java.time.LocalDateTime;
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 会员信息 数据视图对象
......@@ -61,6 +62,9 @@ public class MemberVO extends BaseAudit {
/** 等级 */
@Excel(name = "等级")
private Integer level;
@ApiModelProperty("用户身份(0:普通用户,1:核销人员)")
private String userType;
/** 用户剩余积分 */
@Excel(name = "用户剩余积分")
private BigDecimal integral;
......
......@@ -3,8 +3,11 @@ package com.cyl.manager.ums.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cyl.manager.act.domain.entity.IntegralHistory;
import com.cyl.manager.act.mapper.IntegralHistoryMapper;
import com.cyl.manager.oms.mapper.AftersaleMapper;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.ums.domain.dto.MemberDTO;
import com.cyl.manager.ums.domain.entity.Member;
import com.cyl.manager.ums.domain.entity.MemberCart;
import com.cyl.manager.ums.mapper.MemberCartMapper;
......@@ -21,13 +24,14 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* 会员信息Service业务层处理
*
*
* @author zcc
*/
@Service
......@@ -46,6 +50,9 @@ public class MemberService {
@Autowired
private AftersaleMapper aftersaleMapper;
@Autowired
private IntegralHistoryMapper integralHistoryMapper;
/**
* 查询会员信息
*
......@@ -57,42 +64,79 @@ public class MemberService {
}
/**
* 会员积分增加减少
*/
public int integralAddOrSub(MemberDTO dto) {
Member member = memberMapper.selectById(dto.getMemberId());
if (null != member) {
IntegralHistory integralHistory = new IntegralHistory();
BigDecimal jf = new BigDecimal("0.0");
if (dto.getType().equals("0")) {
//平台扣减
integralHistory.setMemberId(dto.getMemberId());
integralHistory.setAmount(dto.getIntegral());
integralHistory.setOpType(2);
integralHistory.setSubOpType(23);
jf = member.getIntegral().subtract(dto.getIntegral());
} else if (dto.getType().equals("1")) {
//平台赠送
integralHistory.setMemberId(dto.getMemberId());
integralHistory.setAmount(dto.getIntegral());
integralHistory.setOpType(1);
integralHistory.setSubOpType(24);
jf = member.getIntegral().add(dto.getIntegral());
}
UpdateWrapper<Member> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", dto.getMemberId());
updateWrapper.set("integral", jf);
memberMapper.update(null, updateWrapper);
integralHistory.setCreateTime(LocalDateTime.now());
return integralHistoryMapper.insert(integralHistory);
}
return 0;
}
/**
* 查询会员信息列表
*
* @param query 查询条件
* @param page 分页条件
* @param page 分页条件
* @return 会员信息
*/
public List<Member> selectList(MemberQuery query, Pageable page) {
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(),"id desc"));
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize(), SortUtil.sort2string(page.getSort(), "id desc"));
}
QueryWrapper<Member> qw = new QueryWrapper<>();
String nicknameLike = query.getNickname();
if (!StringUtils.isEmpty(nicknameLike)) {
qw.like("nickname", nicknameLike);
}
if (!StringUtils.isEmpty(query.getUserType())) {
qw.like("user_type", query.getUserType());
}
String phone = query.getPhone();
if (!StringUtils.isEmpty(phone)) {
qw.eq("phone_encrypted", AesCryptoUtils.encrypt(aesKey, phone));
}
if (!StringUtils.isEmpty(query.getBeginTime()) && !StringUtils.isEmpty(query.getEndTime())){
if (!StringUtils.isEmpty(query.getBeginTime()) && !StringUtils.isEmpty(query.getEndTime())) {
qw.ge("create_time", query.getBeginTime());
qw.lt("create_time", query.getEndTime());
}
if (query.getHasMark() != null) {
switch (query.getHasMark()) {
case 0:
qw.isNull("mark").or().eq("mark","");
qw.isNull("mark").or().eq("mark", "");
break;
case 1:
qw.isNotNull("mark").ne("mark","");
qw.isNotNull("mark").ne("mark", "");
break;
default:
break;
}
}
if (query.getStatus() != null){
if (query.getStatus() != null) {
qw.eq("status", query.getStatus());
}
return memberMapper.selectList(qw);
......@@ -121,10 +165,10 @@ public class MemberService {
public int updateMark(Member member) {
UpdateWrapper<Member> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("mark",member.getMark())
.set("update_time",LocalDateTime.now())
.eq("id",member.getId());
return memberMapper.update(null,updateWrapper);
updateWrapper.set("mark", member.getMark())
.set("update_time", LocalDateTime.now())
.eq("id", member.getId());
return memberMapper.update(null, updateWrapper);
}
/**
......
......@@ -41,8 +41,8 @@ public class WechatController {
}
@ApiOperation("获取微信用户授权信息")
@PostMapping("/getWechatUserAuth")
public ResponseEntity<WechatUserAuth> getWechatUserAuth(@RequestBody String data){
@GetMapping("/getWechatUserAuth")
public ResponseEntity<WechatUserAuth> getWechatUserAuth(@RequestParam("data") String data){
return ResponseEntity.ok(service.getWechatUserAuth(data));
}
}
......@@ -2,9 +2,12 @@ package com.cyl.wechat;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.IOException;
public class WechatPayConfig {
private static Config wechatPayConfig;
......@@ -17,7 +20,34 @@ public class WechatPayConfig {
if (wechatPayConfig == null) {
wechatPayConfig = new RSAAutoCertificateConfig.Builder()
.merchantId(WechatPayData.merchantId)
.privateKeyFromPath(WechatPayData.privateKeyPath)
.privateKey("-----BEGIN PRIVATE KEY-----\n" +
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDfPg4xpRa2Yz4q\n" +
"bKDPfC1FlrD+7unTL3qyoDajRBf+RR+RoOwZZuXIKkD07UJEURFug1Fk7kFECgKc\n" +
"oXB7QL/FyPDOj2VhM7qhZh0F9OTT2Cdfq2Dn4frfKl8q+FhKNvDhw0q6+X24Dkoz\n" +
"gyK4/I8KQgYGJF5MSypSwfiNdZE3ton+boVUgBBkMpnnvjTu6ToVoyljFozUrXHE\n" +
"5LGV7OuNHZ33lWiQqL9JAKSQPKlfRMdA4oH+I/v+O4xWRcchwPufS00aKLL/0FTc\n" +
"IX1lk4TkCWkONpRmhdEx2vgC4pOhi+ojN5FsRxXEdTX3BPHRYHvDwm+O11BiekLE\n" +
"9O/qTxOxAgMBAAECggEATk/ojsXI9+ZMknlU2DRJdVXtdSC+adUIB81oHVHv0MTS\n" +
"1DVNXYPZK6SW8NSiIHEH2mq6jNt/jaytSeDgInyOSYW549wtxjFtUN0PZV2JQD9d\n" +
"YJQwBGgjp1Gn3N0Nq8smKSxm9Lw8u+pXYUapUZdXXlPW5SSw57aefDWLSaRqcs4w\n" +
"TmruBaTTXGXyqjijQ2CRmxMaxH8kksetretHUyvgUGPntMXcROoIN22DbCkKiOdh\n" +
"F5IEDKdfCB/P+4nI0pmbaCm8mbRb7jykptJg3/sHu0cKLD4JNHNwOzk2hUmIIPk0\n" +
"tw+VNgJBP4xnhOZlEe+mdGBGqQD1ZqXHCWYg0bkoIQKBgQDzM8aq3xvDiDXBX7+O\n" +
"rVEOTA05w/B4AvPxXSOqxCGlPjBPoxHGcDCwNYoNQvZU2NYKbOWOhZZm0vUw1uqm\n" +
"beXrfnWlYXycUl3aKI6k8YHrMTMvwgtLJXVIguvCW2Pup1gWX+uAuybaJl5ynnpf\n" +
"vjawxUxwDZYjh76V8jJOdzEtVQKBgQDq/WWBJbLFPYSjyuzthZaZ5aOAI8VZMNEr\n" +
"iWTm2zN7+jUVOIwVorQtQjZPCZyTh3U9m60BBrZixsIogVGAuplR/B63YkB1hWut\n" +
"SKnauJLzcgsOQa1lmWHnJcxtA2eZ1iGuH2eiFB/c0GEznpVId40Gs3fEpt+xR45h\n" +
"W4h1Iges7QKBgAkcPGn0N58IgDMBOjTHC01Ezg4G6AAm5Cp7ebWQ6U2+WaLyEd1k\n" +
"IH7JUqWSh5XAFayITcUb/flWF7c/pcScQ0uiDhgm4bsdXsSoVkeZgGtmCWvVkgS7\n" +
"n3wa42gBcmnjPOqBp1nIKPltDIawpxblEjlm+qkL6T7le980FmxYDLCNAoGBAJv8\n" +
"+ZRxYepsm8/etMg3FXGzboVxOV+reC5eVgypFdQGk5Yyo0r5ZoFkooh06OtF0B3F\n" +
"aWJ1Aj0vk1MwBNpfA8fYhMtW/VMF7iRpR9dZDrNr0Mr17hSzbLnz7W+wAuWrr0/W\n" +
"qQR+N2htKxkI/C/OrF72Y1q3K2aTCYC3Mi4PGOlBAoGBAJGIuDGQVaWY7XlKNYqk\n" +
"g+0l3CoPO1GokGU17YVzrM4UrvNqPy6R/+KHtX/XYd0kh+4xHKEIydC2TZXHvdvo\n" +
"AuP1zrEmnV0FZy8quw+89KX5uj0SO81yGHReDawlG2AAMZc6SmYrEFumlFKBOeVn\n" +
"Hf8trwRlMLiv+10a4bwZtNon\n" +
"-----END PRIVATE KEY-----\n")
.merchantSerialNumber(WechatPayData.merchantSerialNumber)
.apiV3Key(WechatPayData.apiV3key)
.build();
......
......@@ -29,7 +29,7 @@ public class WechatPayUtil {
public static String getSign(String signatureStr,String privateKey) throws InvalidKeyException, NoSuchAlgorithmException, SignatureException, IOException, URISyntaxException {
//replace 根据实际情况,不一定都需要
String replace = privateKey.replace("\\n", "\n");
InputStream certStream = Files.newInputStream(Paths.get(privateKey));
InputStream certStream = Files.newInputStream(Paths.get(replace));
PrivateKey merchantPrivateKey = PemUtil.readPemPrivateKey(certStream);
Signature sign = Signature.getInstance("SHA256withRSA");
sign.initSign(merchantPrivateKey);
......
......@@ -34,8 +34,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select sum(case when op_type = 1 then amount else 0 end) as income,
sum(case when op_type = 2 then amount else 0 end) as expenditure
from act_integral_history
where member_id = #{param3}
and create_time >= #{param1}
and create_time <![CDATA[ <= ]]> #{param2}
where member_id = #{param1}
</select>
</mapper>
......@@ -95,6 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
a.id,
a.order_sn orderSn,
a.de_money deMoney,
a.aftersale_status aftersaleStatus,
a.status,
a.member_username userName,
......@@ -114,6 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.receiver_district receiverDistrict,
a.receiver_detail_address receiverDetailAddress,
a.delivery_time deliveryTime,
a.receiver_phone_encrypted receiverPhoneEncrypted,
a.delivery_sn deliverySn,
-- b.quantity buyNum,
-- b.pic,
......@@ -183,15 +185,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete_status=0
and member_id=#{memberId}
<if test="status==-1">
and status in (1,2,3,4)
and status in (1,2,3,4,5,6,7,8,9)
</if>
<if test="status>-1 and status&lt;3">
and status=#{status}
and aftersale_status=1
<if test="status==6">
and status in (5,6,9,8,5,6,7,8,9)
</if>
<if test="status==-2">
and aftersale_status in (2, 3)
</if>
<if test="status==0">
and status in (0)
</if>
<if test="status==1">
and status in (1)
</if>
<if test="status==2">
and status in (2)
</if>
<if test="status==3">
and status in (3)
</if>
order by create_time desc
</select>
<select id="selectOrderDetail" resultType="com.cyl.h5.domain.vo.H5OrderVO">
......@@ -214,7 +227,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
receiver_province,
receiver_city,
receiver_district,
receiver_detail_address
receiver_detail_address,
de_money,
delivery_company,
give_integral
from oms_order
where
delete_status=0
......
......@@ -6,8 +6,9 @@
<resultMap type="AgreementInfo" id="AgreementInfoResult">
<result property="id" column="id"/>
<result property="content" column="content"/>
<result property="type" column="type"/>
<result property="userContent" column="user_content"/>
<result property="privacyContent" column="privacy_content"/>
<result property="buyContent" column="buy_content"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
......@@ -19,7 +20,7 @@
</resultMap>
<sql id="selectAgreementInfoVo">
select id, content, type, create_by, create_time, update_by, update_time
select id, user_content, privacy_content,buy_content, create_by, create_time, update_by, update_time
from agreement_info
</sql>
......
......@@ -6,8 +6,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BlackImgInfo" id="BlackImgInfoResult">
<result property="id" column="id"/>
<result property="imgUrl" column="img_url"/>
<result property="type" column="type"/>
<result property="homeImgUrl" column="home_img_url"/>
<result property="typeImgUrl" column="type_img_url"/>
<result property="thisImgUrl" column="this_img_url"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
......@@ -19,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectBlackImgInfoVo">
select id, img_url, type, create_by, create_time, update_by, update_time from black_img_info
select id, home_img_url, type_img_url, this_img_url,create_by, create_time, update_by, update_time from black_img_info
</sql>
<select id="selectByEntity" parameterType="BlackImgInfo" resultMap="BlackImgInfoResult">
......
......@@ -21,6 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="detailMobileHtml" column="detail_mobile_html"/>
<result property="brandName" column="brand_name"/>
<result property="productCategoryName" column="product_category_name"/>
<result property="virtualSales" column="virtual_sales"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
......
......@@ -64,4 +64,7 @@ public interface SysUserRoleMapper
@Select("SELECT count(0) FROM sys_user_role WHERE user_id = #{userId} AND role_id = #{roleId}")
int countRoleAndUserId(@Param("roleId") Long roleId, @Param("userId") Long userId);
@Select("SELECT * FROM sys_user_role WHERE user_id = #{userId}")
SysUserRole selectByUserId(@Param("userId")Long userId);
}
......@@ -65,6 +65,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="userName != null and userName != ''">
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test="nickName != null and nickName != ''">
AND u.nick_name like concat('%', #{nickName}, '%')
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</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