Unverified Commit 2f3ef296 authored by 端午安康's avatar 端午安康 Committed by GitHub
Browse files

Merge pull request #1 from linlinjava/master

update
parents a2f77152 83711ec2
......@@ -14,7 +14,7 @@
<div class="operator-container">
<el-button v-permission="['POST /admin/topic/create']" class="filter-item" type="primary" icon="el-icon-edit" @click="handleCreate">添加</el-button>
<el-button v-permission="['GET /admin/topic/batch-delete']" class="filter-item" type="danger" icon="el-icon-delete" @click="handleBatchDelete">批量删除</el-button>
<el-button v-permission="['POST /admin/topic/batch-delete']" class="filter-item" type="danger" icon="el-icon-delete" @click="handleBatchDelete">批量删除</el-button>
</div>
<!-- 查询结果 -->
......@@ -163,8 +163,7 @@ export default {
title: '成功',
message: '删除专题成功'
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
this.getList()
})
.catch(response => {
this.$notify.error({
......
......@@ -3,7 +3,7 @@
<!-- 查询和其他操作 -->
<div class="filter-container">
<el-input v-model="listQuery.username" clearable class="filter-item" style="width: 200px;" placeholder="请输入管理员名称"/>
<el-input v-model="listQuery.username" clearable class="filter-item" style="width: 200px;" placeholder="请输入管理员名称" />
<el-button v-permission="['GET /admin/admin/list']" class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">查找</el-button>
<el-button v-permission="['POST /admin/admin/create']" class="filter-item" type="primary" icon="el-icon-edit" @click="handleCreate">添加</el-button>
<el-button :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">导出</el-button>
......@@ -11,9 +11,9 @@
<!-- 查询结果 -->
<el-table v-loading="listLoading" :data="list" element-loading-text="正在查询中。。。" border fit highlight-current-row>
<el-table-column align="center" label="管理员ID" prop="id" sortable/>
<el-table-column align="center" label="管理员ID" prop="id" sortable />
<el-table-column align="center" label="管理员名称" prop="username"/>
<el-table-column align="center" label="管理员名称" prop="username" />
<el-table-column align="center" label="管理员头像" prop="avatar">
<template slot-scope="scope">
......@@ -41,10 +41,10 @@
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
<el-form ref="dataForm" :rules="rules" :model="dataForm" status-icon label-position="left" label-width="100px" style="width: 400px; margin-left:50px;">
<el-form-item label="管理员名称" prop="username">
<el-input v-model="dataForm.username"/>
<el-input v-model="dataForm.username" />
</el-form-item>
<el-form-item label="管理员密码" prop="password">
<el-input v-model="dataForm.password" type="password" auto-complete="off"/>
<el-input v-model="dataForm.password" type="password" auto-complete="off" />
</el-form-item>
<el-form-item label="管理员头像" prop="avatar">
<el-upload
......@@ -53,9 +53,10 @@
:show-file-list="false"
:on-success="uploadAvatar"
class="avatar-uploader"
accept=".jpg,.jpeg,.png,.gif">
accept=".jpg,.jpeg,.png,.gif"
>
<img v-if="dataForm.avatar" :src="dataForm.avatar" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"/>
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload>
</el-form-item>
<el-form-item label="管理员角色" prop="roleIds">
......@@ -64,7 +65,8 @@
v-for="item in roleOptions"
:key="item.value"
:label="item.label"
:value="item.value"/>
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
......@@ -275,8 +277,7 @@ export default {
title: '成功',
message: '删除管理员成功'
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
this.getList()
})
.catch(response => {
this.$notify.error({
......
......@@ -237,8 +237,7 @@ export default {
title: '成功',
message: '删除通知成功'
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
this.getList()
})
.catch(response => {
this.$notify.error({
......
......@@ -3,8 +3,8 @@
<!-- 查询和其他操作 -->
<div class="filter-container">
<el-input v-model="listQuery.key" clearable class="filter-item" style="width: 200px;" placeholder="请输入对象KEY"/>
<el-input v-model="listQuery.name" clearable class="filter-item" style="width: 200px;" placeholder="请输入对象名称"/>
<el-input v-model="listQuery.key" clearable class="filter-item" style="width: 200px;" placeholder="请输入对象KEY" />
<el-input v-model="listQuery.name" clearable class="filter-item" style="width: 200px;" placeholder="请输入对象名称" />
<el-button v-permission="['GET /admin/storage/list']" class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">查找</el-button>
<el-button v-permission="['POST /admin/storage/create']" class="filter-item" type="primary" icon="el-icon-edit" @click="handleCreate">添加</el-button>
<el-button :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">导出</el-button>
......@@ -13,13 +13,13 @@
<!-- 查询结果 -->
<el-table v-loading="listLoading" :data="list" element-loading-text="正在查询中。。。" border fit highlight-current-row>
<el-table-column align="center" label="对象KEY" prop="key"/>
<el-table-column align="center" label="对象KEY" prop="key" />
<el-table-column align="center" label="对象名称" prop="name"/>
<el-table-column align="center" label="对象名称" prop="name" />
<el-table-column align="center" label="对象类型" prop="type"/>
<el-table-column align="center" label="对象类型" prop="type" />
<el-table-column align="center" label="对象大小" prop="size"/>
<el-table-column align="center" label="对象大小" prop="size" />
<el-table-column align="center" property="url" label="图片">
<template slot-scope="scope">
......@@ -27,7 +27,7 @@
</template>
</el-table-column>
<el-table-column align="center" label="图片链接" prop="url"/>
<el-table-column align="center" label="图片链接" prop="url" />
<el-table-column align="center" label="操作" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
......@@ -50,7 +50,7 @@
<el-dialog :visible.sync="updateDialogVisible" title="修改对象名称">
<el-form ref="dataForm" :rules="rules" :model="dataForm" status-icon label-position="left" label-width="100px" style="width: 400px; margin-left:50px;">
<el-form-item label="对象名称" prop="name">
<el-input v-model="dataForm.name"/>
<el-input v-model="dataForm.name" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -177,8 +177,7 @@ export default {
title: '成功',
message: '删除成功'
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
this.getList()
}).catch(response => {
this.$notify.error({
title: '失败',
......
......@@ -3,16 +3,16 @@
<!-- 查询和其他操作 -->
<div class="filter-container">
<el-input v-model="listQuery.name" clearable class="filter-item" style="width: 200px;" placeholder="请输入角色名称"/>
<el-input v-model="listQuery.name" clearable class="filter-item" style="width: 200px;" placeholder="请输入角色名称" />
<el-button v-permission="['GET /admin/role/list']" class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">查找</el-button>
<el-button v-permission="['POST /admin/role/create']" class="filter-item" type="primary" icon="el-icon-edit" @click="handleCreate">添加</el-button>
</div>
<!-- 查询结果 -->
<el-table v-loading="listLoading" :data="list" element-loading-text="正在查询中。。。" border fit highlight-current-row>
<el-table-column align="center" label="角色名称" prop="name" sortable/>
<el-table-column align="center" label="角色名称" prop="name" sortable />
<el-table-column align="center" label="说明" prop="desc"/>
<el-table-column align="center" label="说明" prop="desc" />
<el-table-column align="center" label="操作" class-name="small-padding fixed-width">
<template slot-scope="scope">
......@@ -29,10 +29,10 @@
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
<el-form ref="dataForm" :rules="rules" :model="dataForm" status-icon label-position="left" label-width="100px" style="width: 400px; margin-left:50px;">
<el-form-item label="角色名称" prop="name">
<el-input v-model="dataForm.name"/>
<el-input v-model="dataForm.name" />
</el-form-item>
<el-form-item label="说明" prop="desc">
<el-input v-model="dataForm.desc"/>
<el-input v-model="dataForm.desc" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -50,7 +50,8 @@
:default-checked-keys="assignedPermissions"
show-checkbox
node-key="id"
highlight-current>
highlight-current
>
<span slot-scope="{ node, data }" class="custom-tree-node">
<span>{{ data.label }}</span>
<el-tag v-if="data.api" type="success" size="mini">{{ data.api }}</el-tag>
......@@ -208,8 +209,7 @@ export default {
title: '成功',
message: '删除管理员成功'
})
const index = this.list.indexOf(row)
this.list.splice(index, 1)
this.getList()
})
.catch(response => {
this.$notify.error({
......
......@@ -4,6 +4,7 @@
<!-- 查询和其他操作 -->
<div class="filter-container">
<el-input v-model="listQuery.username" clearable class="filter-item" style="width: 200px;" placeholder="请输入用户名"/>
<el-input v-model="listQuery.userId" clearable class="filter-item" style="width: 200px;" placeholder="请输入用户Id"/>
<el-input v-model="listQuery.mobile" clearable class="filter-item" style="width: 200px;" placeholder="请输入手机号"/>
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="handleFilter">查找</el-button>
<el-button :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">导出</el-button>
......@@ -36,16 +37,49 @@
<el-tag>{{ statusDic[scope.row.status] }}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="250" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleDetail(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
<!-- 用户编辑对话框 -->
<el-dialog :visible.sync="userDialogVisible" title="用户编辑">
<el-form ref="userDetail" :model="userDetail" status-icon label-position="left" label-width="100px" style="width: 400px; margin-left:50px;">
<el-form-item label="用户名" prop="username">
<el-input v-model="userDetail.username" :disabled="true" />
</el-form-item>
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="userDetail.nickname" />
</el-form-item>
<el-form-item label="用户密码" prop="mobile">
<el-input v-model="userDetail.password" />
</el-form-item>
<el-form-item label="用户手机" prop="mobile">
<el-input v-model="userDetail.mobile" />
</el-form-item>
<el-form-item label="用户性别" prop="gender">
<el-select v-model="userDetail.gender" placeholder="请选择"><el-option v-for="(item, index) in genderDic" :key="index" :label="item" :value="index" /></el-select>
</el-form-item>
<el-form-item label="用户等级" prop="userLevel">
<el-select v-model="userDetail.userLevel" placeholder="请选择"><el-option v-for="(item, index) in levelDic" :key="index" :label="item" :value="index" /></el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="userDetail.status" placeholder="请选择"><el-option v-for="(item, index) in statusDic" :key="index" :label="item" :value="index" /></el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="userDialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleUserUpdate">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { fetchList } from '@/api/user'
import { fetchList ,userDetail ,updateUser } from '@/api/user'
import Pagination from '@/components/Pagination' // Secondary package based on el-pagination
export default {
......@@ -61,13 +95,17 @@ export default {
limit: 20,
username: undefined,
mobile: undefined,
userId: undefined,
sort: 'add_time',
order: 'desc'
},
downloadLoading: false,
genderDic: ['未知', '', ''],
levelDic: ['普通用户', 'VIP用户', '高级VIP用户'],
statusDic: ['可用', '禁用', '注销']
statusDic: ['可用', '禁用', '注销'],
userDialogVisible: false,
userDetail:{
}
}
},
created() {
......@@ -76,6 +114,24 @@ export default {
methods: {
getList() {
this.listLoading = true
if(this.listQuery.userId){
userDetail(this.listQuery.userId).then(response => {
this.list = [];
if(response.data.data){
this.list.push(response.data.data)
this.total = 1
this.listLoading = false
}else{
this.list = []
this.total = 0
this.listLoading = false
}
}).catch(() => {
this.list = []
this.total = 0
this.listLoading = false
})
}else{
fetchList(this.listQuery).then(response => {
this.list = response.data.data.list
this.total = response.data.data.total
......@@ -85,6 +141,7 @@ export default {
this.total = 0
this.listLoading = false
})
}
},
handleFilter() {
this.listQuery.page = 1
......@@ -98,6 +155,26 @@ export default {
excel.export_json_to_excel2(tHeader, this.list, filterVal, '用户信息')
this.downloadLoading = false
})
},
handleDetail(row) {
this.userDetail = row
this.userDialogVisible = true
},
handleUserUpdate(){
updateUser(this.userDetail)
.then((response) => {
this.userDialogVisible = false
this.$notify.success({
title: '成功',
message: '更新用户成功'
})
})
.catch(response => {
this.$notify.error({
title: '失败',
message: response.data.errmsg
})
})
}
}
}
......
......@@ -29,7 +29,12 @@ module.exports = {
lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
port: port
port: port,
open: true,
overlay: {
warnings: false,
errors: true
}
},
configureWebpack: {
// provide the app's title in webpack's name field, so that
......@@ -42,8 +47,11 @@ module.exports = {
}
},
chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test
// it can improve the speed of the first screen, it is recommended to turn on preload
// config.plugins.delete('preload')
// when there are many pages, it will cause too many meaningless requests
config.plugins.delete('prefetch') //
// set svg-sprite-loader
config.module
......@@ -73,12 +81,6 @@ module.exports = {
})
.end()
config
// https://webpack.js.org/configuration/devtool/#development
.when(process.env.NODE_ENV === 'development',
config => config.devtool('cheap-source-map')
)
config
.when(process.env.NODE_ENV !== 'development',
config => {
......
......@@ -42,8 +42,8 @@
</commentGenerator>
<!--数据库连接信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/litemall?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;verifyServerCertificate=false&amp;useSSL=false"
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/litemall?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;verifyServerCertificate=false&amp;useSSL=false&amp;nullCatalogMeansCurrent=true"
userId="litemall"
password="litemall123456"/>
......
......@@ -57,7 +57,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>com.itfsw</groupId>
......
......@@ -110,7 +110,7 @@ CREATE TABLE `litemall_aftersale` (
`handle_time` datetime DEFAULT NULL COMMENT '管理员操作时间',
`add_time` datetime DEFAULT NULL COMMENT '添加时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT '0' COMMENT '售后编号',
`deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='售后表';
/*!40101 SET character_set_client = @saved_cs_client */;
......
package org.linlinjava.litemall.db.service;
import org.linlinjava.litemall.db.domain.LitemallCart;
import org.linlinjava.litemall.db.domain.LitemallCoupon;
import org.linlinjava.litemall.db.domain.LitemallCouponUser;
import org.linlinjava.litemall.db.util.CouponConstant;
......@@ -8,6 +9,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
@Service
public class CouponVerifyService {
......@@ -16,6 +18,8 @@ public class CouponVerifyService {
private LitemallCouponUserService couponUserService;
@Autowired
private LitemallCouponService couponService;
@Autowired
private LitemallGoodsService goodsService;
/**
* 检测优惠券是否适合
......@@ -25,9 +29,9 @@ public class CouponVerifyService {
* @param checkedGoodsPrice
* @return
*/
public LitemallCoupon checkCoupon(Integer userId, Integer couponId, Integer userCouponId, BigDecimal checkedGoodsPrice) {
public LitemallCoupon checkCoupon(Integer userId, Integer couponId, Integer userCouponId, BigDecimal checkedGoodsPrice, List<LitemallCart> cartList) {
LitemallCoupon coupon = couponService.findById(couponId);
if (coupon == null) {
if (coupon == null || coupon.getDeleted()) {
return null;
}
......@@ -62,11 +66,39 @@ public class CouponVerifyService {
}
// 检测商品是否符合
// TODO 目前仅支持全平台商品,所以不需要检测
Map<Integer, List<LitemallCart>> cartMap = new HashMap<>();
//可使用优惠券的商品或分类
List<Integer> goodsValueList = new ArrayList<>(Arrays.asList(coupon.getGoodsValue()));
Short goodType = coupon.getGoodsType();
if (!goodType.equals(CouponConstant.GOODS_TYPE_ALL)) {
if (goodType.equals(CouponConstant.GOODS_TYPE_CATEGORY) ||
goodType.equals((CouponConstant.GOODS_TYPE_ARRAY))) {
for (LitemallCart cart : cartList) {
Integer key = goodType.equals(CouponConstant.GOODS_TYPE_ARRAY) ? cart.getGoodsId() :
goodsService.findById(cart.getGoodsId()).getCategoryId();
List<LitemallCart> carts = cartMap.get(key);
if (carts == null) {
carts = new LinkedList<>();
}
carts.add(cart);
cartMap.put(key, carts);
}
//购物车中可以使用优惠券的商品或分类
goodsValueList.retainAll(cartMap.keySet());
//可使用优惠券的商品的总价格
BigDecimal total = new BigDecimal(0);
for (Integer goodsId : goodsValueList) {
List<LitemallCart> carts = cartMap.get(goodsId);
for (LitemallCart cart : carts) {
total = total.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));
}
}
//是否达到优惠券满减金额
if (total.compareTo(coupon.getMin()) == -1) {
return null;
}
}
// 检测订单状态
Short status = coupon.getStatus();
......
......@@ -7,8 +7,8 @@ pagehelper:
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: litemall
password: litemall123456
initial-size: 10
......
......@@ -4191,9 +4191,9 @@
"dev": true
},
"elliptic": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
"integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
"integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
......@@ -6748,9 +6748,9 @@
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
"version": "4.17.19",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
"integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ=="
},
"lodash.defaultsdeep": {
"version": "4.6.1",
......
......@@ -18,7 +18,7 @@
"axios": ">=0.18.1",
"dayjs": "^1.7.7",
"js-cookie": "2.2.0",
"lodash": "^4.17.11",
"lodash": "^4.17.19",
"vant": "^2.0.6",
"vue": "^2.5.17",
"vue-router": "^3.0.1",
......
<template>
<div>
<van-nav-bar title="收货地址" left-text="返回" left-arrow @click-left="goback"/>
<van-address-list v-model="chosenAddressId" :list="addressList" @add="onAdd" @edit="onEdit" @select="onSelect"/>
</div>
</template>
......
......@@ -290,11 +290,16 @@ public class WxOrderService {
}
// (2)不允许参加自己开团的团购
LitemallGroupon groupon = grouponService.queryById(userId, grouponLinkId);
// if(groupon.getCreatorUserId().equals(userId)){
// return ResponseUtil.fail(GROUPON_JOIN, "团购活动已经参加!");
// }
if(groupon!=null) {
if(groupon.getCreatorUserId().equals(userId)){
return ResponseUtil.fail(GROUPON_JOIN, "团购活动已经参加!");
}
}
}
}
if (cartId == null || addressId == null || couponId == null) {
return ResponseUtil.badArgument();
......@@ -340,7 +345,7 @@ public class WxOrderService {
BigDecimal couponPrice = new BigDecimal(0);
// 如果couponId=0则没有优惠券,couponId=-1则不使用优惠券
if (couponId != 0 && couponId != -1) {
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice);
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice, checkedGoodsList);
if (coupon == null) {
return ResponseUtil.badArgumentValue();
}
......@@ -485,7 +490,7 @@ public class WxOrderService {
* 1. 检测当前订单是否能够取消;
* 2. 设置订单取消状态;
* 3. 商品货品库存恢复;
* 4. TODO 优惠券;
* 4. 返还优惠券;
*
* @param userId 用户ID
* @param body 订单信息,{ orderId:xxx }
......
......@@ -79,7 +79,7 @@ public class WxAddressController extends GetRegionService {
if (StringUtils.isEmpty(mobile)) {
return ResponseUtil.badArgument();
}
if (!RegexUtil.isMobileExact(mobile)) {
if (!RegexUtil.isMobileSimple(mobile)) {
return ResponseUtil.badArgument();
}
......
......@@ -189,7 +189,7 @@ public class WxAuthController {
if (StringUtils.isEmpty(phoneNumber)) {
return ResponseUtil.badArgument();
}
if (!RegexUtil.isMobileExact(phoneNumber)) {
if (!RegexUtil.isMobileSimple(phoneNumber)) {
return ResponseUtil.badArgumentValue();
}
......@@ -256,7 +256,7 @@ public class WxAuthController {
if (userList.size() > 0) {
return ResponseUtil.fail(AUTH_MOBILE_REGISTERED, "手机号已注册");
}
if (!RegexUtil.isMobileExact(mobile)) {
if (!RegexUtil.isMobileSimple(mobile)) {
return ResponseUtil.fail(AUTH_INVALID_MOBILE, "手机号格式不正确");
}
//判断验证码是否正确
......@@ -343,7 +343,7 @@ public class WxAuthController {
if (StringUtils.isEmpty(phoneNumber)) {
return ResponseUtil.badArgument();
}
if (!RegexUtil.isMobileExact(phoneNumber)) {
if (!RegexUtil.isMobileSimple(phoneNumber)) {
return ResponseUtil.badArgumentValue();
}
if (StringUtils.isEmpty(captchaType)) {
......
......@@ -469,7 +469,7 @@ public class WxCartController {
int tmpCouponLength = 0;
List<LitemallCouponUser> couponUserList = couponUserService.queryAll(userId);
for(LitemallCouponUser couponUser : couponUserList){
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponUser.getCouponId(), couponUser.getId(), checkedGoodsPrice);
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponUser.getCouponId(), couponUser.getId(), checkedGoodsPrice, checkedGoodsList);
if(coupon == null){
continue;
}
......@@ -498,7 +498,7 @@ public class WxCartController {
userCouponId = tmpUserCouponId;
}
else {
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice);
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice, checkedGoodsList);
// 用户选择的优惠券有问题,则选择合适优惠券,否则使用用户选择的优惠券
if(coupon == null){
couponPrice = tmpCouponPrice;
......
......@@ -155,12 +155,11 @@ public class WxCouponController {
checkedGoodsPrice = checkedGoodsPrice.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));
}
}
// 计算优惠券可用情况
List<LitemallCouponUser> couponUserList = couponUserService.queryAll(userId);
List<CouponVo> couponVoList = change(couponUserList);
for (CouponVo cv : couponVoList) {
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, cv.getCid(), cv.getId(), checkedGoodsPrice);
LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, cv.getCid(), cv.getId(), checkedGoodsPrice, checkedGoodsList);
cv.setAvailable(coupon != null);
}
......
Supports Markdown
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