1、代码优化

2、bug修复
3、数据库优化
This commit is contained in:
张乐
2020-08-21 12:09:20 +08:00
parent 13f5d5348f
commit a02bd7eeda
61 changed files with 445 additions and 1077 deletions

View File

@@ -5259,6 +5259,21 @@
}
}
},
"dom7": {
"version": "2.1.5",
"resolved": "https://registry.npm.taobao.org/dom7/download/dom7-2.1.5.tgz?cache=0&sync_timestamp=1594742476927&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom7%2Fdownload%2Fdom7-2.1.5.tgz",
"integrity": "sha1-p5QRAXgAsx2EAAcM2uu/ySwfY3c=",
"requires": {
"ssr-window": "^2.0.0"
},
"dependencies": {
"ssr-window": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/ssr-window/download/ssr-window-2.0.0.tgz",
"integrity": "sha1-mMMBrvmVIzF/jWlhjwAQeRCW78Q="
}
}
},
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -15780,6 +15795,11 @@
"tweetnacl": "~0.14.0"
}
},
"ssr-window": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/ssr-window/download/ssr-window-1.0.1.tgz",
"integrity": "sha1-MHUqakZm53Z/C35qpvwv29DZs2k="
},
"ssri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
@@ -16358,6 +16378,15 @@
"upper-case": "^1.1.1"
}
},
"swiper": {
"version": "4.5.1",
"resolved": "https://registry.npm.taobao.org/swiper/download/swiper-4.5.1.tgz",
"integrity": "sha1-7UOZjngM60eGEAecjSP9Ql7KY28=",
"requires": {
"dom7": "^2.1.3",
"ssr-window": "^1.0.1"
}
},
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
@@ -16905,6 +16934,21 @@
"integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
"dev": true
},
"tree": {
"version": "0.1.3",
"resolved": "https://registry.npm.taobao.org/tree/download/tree-0.1.3.tgz",
"integrity": "sha1-FPulc9eFMAnEzO9E90CfrHFik48=",
"requires": {
"underscore": "^1.10.2"
},
"dependencies": {
"underscore": {
"version": "1.10.2",
"resolved": "https://registry.npm.taobao.org/underscore/download/underscore-1.10.2.tgz",
"integrity": "sha1-c9aqNmjzGI5K2w8ZQ70Sz9fvqq8="
}
}
},
"trim-newlines": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
@@ -17442,6 +17486,15 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
"integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
},
"vue-awesome-swiper": {
"version": "3.1.3",
"resolved": "https://registry.npm.taobao.org/vue-awesome-swiper/download/vue-awesome-swiper-3.1.3.tgz",
"integrity": "sha1-BVALUB/7P+yb9+uZhbz0roNg7Z4=",
"requires": {
"object-assign": "^4.1.1",
"swiper": "^4.0.7"
}
},
"vue-count-to": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/vue-count-to/-/vue-count-to-1.0.13.tgz",

View File

@@ -57,8 +57,8 @@
"js-cookie": "2.2.0",
"jsonlint": "1.6.3",
"jszip": "3.2.1",
"node-sass": "^4.13.1",
"monaco-editor": "^0.20.0",
"node-sass": "^4.13.1",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
@@ -68,6 +68,7 @@
"showdown": "1.9.0",
"sortablejs": "1.8.4",
"throttle-debounce": "^2.1.0",
"tree": "^0.1.3",
"tui-editor": "1.3.3",
"vue": "2.6.10",
"vue-awesome-swiper": "^3.1.3",

View File

@@ -49,6 +49,18 @@ service.interceptors.response.use(
response => {
const res = response.data
// if the custom code is not 20000, it is judged as an error.
if (res.code === 401) {
// to re-login
MessageBox.confirm('您已经登出,您可以取消停留在这个页面,或重新登录', '退出', {
confirmButtonText: '或重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
store.dispatch('user/resetToken').then(() => {
location.reload()
})
})
}
if (res.code !== 200) {
Message({
message: res.message || 'Error',
@@ -57,19 +69,7 @@ service.interceptors.response.use(
})
// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
if (res.code === 401) {
// to re-login
MessageBox.confirm('您已经登出,您可以取消停留在这个页面,或重新登录', '退出', {
confirmButtonText: '或重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
store.dispatch('user/resetToken').then(() => {
location.reload()
})
})
}
return Promise.reject(new Error(res.message || 'Error'))
// return Promise.reject(new Error(res.message || 'Error'))
} else {
return res.data
}

View File

@@ -121,7 +121,7 @@ export default {
},
loginForm: {
account: 'demo', // admin
pwd: '123456',
pwd: 'crmeb.com',
key: '',
code: ''
},

View File

@@ -95,12 +95,12 @@
min-width="400"
>
<template slot-scope="scope">
<div v-if="scope.row.productList.length">
<div v-if=" scope.row.productList && scope.row.productList.length">
<div v-for="(val, i ) in scope.row.productList" :key="i" class="tabBox acea-row row-middle">
<div class="demo-image__preview">
<el-image
:src="val.info.productInfo.image"
:preview-src-list="imgList"
:preview-src-list="[val.info.productInfo.image]"
/>
</div>
<span class="tabBox_tit mr10">{{ val.info.productInfo.storeName + ' | ' }}{{ val.info.productInfo.attrInfo.suk ? val.info.productInfo.attrInfo.suk:'-' }}</span>
@@ -308,7 +308,6 @@
isCreate: 1,
editData: null,
dialogVisible: false,
imgList: [],
tableData: {
data: [],
total: 0
@@ -508,11 +507,6 @@
this.tableData.data = res.list.list || []
this.tableData.total = res.list.total
this.orderChartType = res.status
this.tableData.data.map((item) => {
item.productList.map((i) => {
this.imgList.push(i.info.productInfo.image)
})
})
const stat = res.top
this.cardLists = [
{ name: '订单数量', count: stat.count },

View File

@@ -69,7 +69,7 @@
},
// 物流公司列表
getList () {
expressList({ page: 1, limit: 999, isShow:true }).then(async res => {
expressList({ page: 1, limit: 999, isShow:1 }).then(async res => {
this.express = res.list
})
},

View File

@@ -237,12 +237,12 @@
<template v-if="formValidate.isSub">
<el-table-column align="center" label="一级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_one" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerage" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
<el-table-column align="center" label="二级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_two" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerageTwo" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
</template>
@@ -276,12 +276,12 @@
<template v-if="formValidate.isSub">
<el-table-column align="center" label="一级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_one" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerage" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
<el-table-column align="center" label="二级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_two" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerageTwo" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
</template>
@@ -315,12 +315,12 @@
<template v-if="formValidate.isSub">
<el-table-column align="center" label="一级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_one" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerage" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
<el-table-column align="center" label="二级返佣(元)" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.extension_two" type="number" :min="0" class="priceBox" />
<el-input v-model="scope.row.brokerageTwo" type="number" :min="0" class="priceBox" />
</template>
</el-table-column>
</template>
@@ -735,23 +735,23 @@
onChangetype(item) {
if (item === 1) {
this.OneattrValue.map(item => {
this.$set(item, 'extension_one', null)
this.$set(item, 'extension_two', null)
this.$set(item, 'brokerage', null)
this.$set(item, 'brokerageTwo', null)
})
this.ManyAttrValue.map(item => {
this.$set(item, 'extension_one', null)
this.$set(item, 'extension_two', null)
this.$set(item, 'brokerage', null)
this.$set(item, 'brokerageTwo', null)
})
} else {
this.OneattrValue.map(item => {
delete item.extension_one
delete item.extension_two
this.$set(item, 'extension_one', null)
this.$set(item, 'extension_two', null)
delete item.brokerage
delete item.brokerageTwo
this.$set(item, 'brokerage', null)
this.$set(item, 'brokerageTwo', null)
})
this.ManyAttrValue.map(item => {
delete item.extension_one
delete item.extension_two
delete item.brokerage
delete item.brokerageTwo
})
}
},
@@ -772,8 +772,8 @@
this.$set(val, 'barCode', this.oneFormBatch[0].barCode)
this.$set(val, 'weight', this.oneFormBatch[0].weight)
this.$set(val, 'volume', this.oneFormBatch[0].volume)
this.$set(val, 'extension_one', this.oneFormBatch[0].extension_one)
this.$set(val, 'extension_two', this.oneFormBatch[0].extension_two)
this.$set(val, 'brokerage', this.oneFormBatch[0].brokerage)
this.$set(val, 'brokerageTwo', this.oneFormBatch[0].brokerageTwo)
}
},
// 添加按钮

View File

@@ -171,7 +171,7 @@ public class Constants {
//积分
public static final String CONFIG_KEY_INTEGRAL_RATE = "integral_ratio"; //积分抵用比例(1积分抵多少金额
public static final String CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE = "integral_order_give"; //下单支付金额按比例赠送积分实际支付1元赠送多少积分
public static final String CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE = "order_give_integral"; //下单支付金额按比例赠送积分实际支付1元赠送多少积分
//后台首页登录图片
public static final String CONFIG_KEY_ADMIN_LOGIN_LOGO = "login_logo"; //登录页LOGO

View File

@@ -1,5 +1,6 @@
package com.zbkj.crmeb.front.response;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
@@ -18,6 +19,6 @@ public class ComputeOrderResponse {
private BigDecimal payPostage;
private BigDecimal couponPrice;
private BigDecimal deductionPrice;
private BigDecimal usedIntegral;
private BigDecimal SurplusIntegral;
private Integer usedIntegral;
private Integer SurplusIntegral;
}

View File

@@ -22,5 +22,5 @@ public class PriceGroupResponse {
private BigDecimal payPrice;
private BigDecimal payPostage;
private BigDecimal deductionPrice;
private BigDecimal usedIntegral;
private Integer usedIntegral;
}

View File

@@ -78,7 +78,7 @@ public class UserCenterResponse implements Serializable {
private BigDecimal brokeragePrice;
@ApiModelProperty(value = "用户剩余积分")
private BigDecimal integral;
private Integer integral;
@ApiModelProperty(value = "用户剩余经验")
private Integer experience;

View File

@@ -163,7 +163,7 @@ public class OrderServiceImpl implements OrderService {
response.setStoreSelfMention(systemConfigService.getValueByKey("store_self_mention"));
response.setOther(otherMap);
response.setSystemStore(null);
response.setOrderKey(orderUtils.cacheOrderInfo(currentUserInfo.getUid(), response));
response.setOrderKey(orderUtils.cacheSetOrderInfo(currentUserInfo.getUid(), response));
return response;
}
@@ -366,6 +366,8 @@ public class OrderServiceImpl implements OrderService {
smsInfo.put("adminName", currentUser.getNickname());
boolean codeResult = smsService.pushCodeToList(currentUser.getPhone(),1, smsInfo);
if(!codeResult) throw new CrmebException("短信加入发送队列失败");
redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, existStoreOrder.getId());
return true;
}
@@ -646,7 +648,6 @@ public class OrderServiceImpl implements OrderService {
OrderCreateRequest orderCreateRequest = new OrderCreateRequest();
BeanUtils.copyProperties(request,orderCreateRequest);
ComputeOrderResponse priceGroup = orderUtils.computedOrder(orderCreateRequest, cor, orderKey);
if(null == priceGroup){
throw new CrmebException("计算失败");
}else{

View File

@@ -131,6 +131,7 @@ public class OrderPayServiceImpl extends PayService implements OrderPayService {
// 清除缓存的订单信息
}catch (Exception e){
e.printStackTrace();
throw new CrmebException("订单支付失败!");
}
return responseVo;

View File

@@ -126,13 +126,13 @@ public class StoreOrder implements Serializable {
private String deliveryId;
@ApiModelProperty(value = "消费赚取积分")
private BigDecimal gainIntegral;
private Integer gainIntegral;
@ApiModelProperty(value = "使用积分")
private BigDecimal useIntegral;
private Integer useIntegral;
@ApiModelProperty(value = "给用户退了多少积分")
private BigDecimal backIntegral;
private Integer backIntegral;
@ApiModelProperty(value = "备注")
private String mark;

View File

@@ -8,7 +8,9 @@ import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* <p>
@@ -26,11 +28,15 @@ public class StoreProductStockRequest implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "商品ID, 多个逗号分割,如果是修改所有的,参数值为 all", required = true)
@NotBlank(message = "请选择商品")
private String idList;
@ApiModelProperty(value = "商品ID", required = true)
@NotEmpty(message = "请选择商品")
private Integer productId;
@ApiModelProperty(value = "类型, 增加 add | 修改 update | 减少 diff", required = true)
@ApiModelProperty(value = "商品属性ID集合", required = true)
@NotEmpty(message = "请选择商品属性id集合")
private Integer attrId;
@ApiModelProperty(value = "类型, 增加 add | 减少 diff", required = true)
@NotBlank(message = "请选择类型")
private String type;

View File

@@ -109,7 +109,7 @@ public class StoreProductCartProductInfoResponse implements Serializable {
// private Boolean merUse;
@ApiModelProperty(value = "获得积分")
private BigDecimal giveIntegral;
private Integer giveIntegral;
@ApiModelProperty(value = "成本价")
private BigDecimal cost;

View File

@@ -48,6 +48,12 @@ public interface StoreProductService extends IService<StoreProduct> {
*/
List<StoreProduct> getList(IndexStoreProductSearchRequest request, PageParamRequest pageParamRequest);
/**
* 根据id集合获取商品信息
* @param productIds id集合
* @return 商品信息
*/
List<StoreProduct> getListInIds(List<Integer> productIds);
/**
* 基本参数获取
* @param storeProduct 产品参数
@@ -121,4 +127,9 @@ public interface StoreProductService extends IService<StoreProduct> {
* @return 删除结果
*/
boolean deleteProduct(Integer productId);
/**
* 后台任务批量操作
*/
public void consumeProductStock();
}

View File

@@ -6,6 +6,7 @@ import com.constants.Constants;
import com.utils.RedisUtil;
import com.zbkj.crmeb.store.model.StoreOrder;
import com.zbkj.crmeb.store.service.OrderTaskService;
import com.zbkj.crmeb.store.service.StoreOrderService;
import com.zbkj.crmeb.store.service.StoreOrderTaskService;
import com.zbkj.crmeb.task.order.OrderRefundByUser;
import org.slf4j.Logger;
@@ -29,6 +30,9 @@ public class OrderTaskServiceImpl implements OrderTaskService {
@Autowired
private StoreOrderTaskService storeOrderTaskService;
@Autowired
private StoreOrderService storeOrderService;
/**
* 用户取消订单
* @author Mr.Zhang
@@ -49,7 +53,8 @@ public class OrderTaskServiceImpl implements OrderTaskService {
continue;
}
try{
StoreOrder storeOrder = getJavaBeanStoreOrder(data);
// StoreOrder storeOrder = getJavaBeanStoreOrder(data);
StoreOrder storeOrder = storeOrderService.getById(Integer.valueOf(data.toString()));
boolean result = storeOrderTaskService.cancelByUser(storeOrder);
if(!result){
redisUtil.lPush(redisKey, data);
@@ -79,18 +84,18 @@ public class OrderTaskServiceImpl implements OrderTaskService {
}
for (int i = 0; i < size; i++) {
//如果10秒钟拿不到一个数据那么退出循环
Object data = redisUtil.getRightPop(redisKey, 10L);
if(null == data){
Object orderId = redisUtil.getRightPop(redisKey, 10L);
if(null == orderId){
continue;
}
try{
StoreOrder storeOrder = getJavaBeanStoreOrder(data);
StoreOrder storeOrder = storeOrderService.getById(Integer.valueOf(orderId.toString()));
boolean result = storeOrderTaskService.refundApply(storeOrder);
if(!result){
redisUtil.lPush(redisKey, data);
redisUtil.lPush(redisKey, orderId);
}
}catch (Exception e){
redisUtil.lPush(redisKey, data);
redisUtil.lPush(redisKey, orderId);
}
}
}
@@ -141,18 +146,18 @@ public class OrderTaskServiceImpl implements OrderTaskService {
}
for (int i = 0; i < size; i++) {
//如果10秒钟拿不到一个数据那么退出循环
Object data = redisUtil.getRightPop(redisKey, 10L);
if(null == data){
Object id = redisUtil.getRightPop(redisKey, 10L);
if(null == id){
continue;
}
try{
StoreOrder storeOrder = getJavaBeanStoreOrder(data);
StoreOrder storeOrder = storeOrderService.getByEntityOne(new StoreOrder().setId(Integer.valueOf(id.toString())));
boolean result = storeOrderTaskService.takeByUser(storeOrder);
if(!result){
redisUtil.lPush(redisKey, data);
redisUtil.lPush(redisKey, id);
}
}catch (Exception e){
redisUtil.lPush(redisKey, data);
redisUtil.lPush(redisKey, id);
}
}
}
@@ -187,4 +192,4 @@ public class OrderTaskServiceImpl implements OrderTaskService {
}
}
}
}
}

View File

@@ -1172,7 +1172,12 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderDao, StoreOrder
userBill.setLinkId(storeOrder.getId()+"");
userBill.setBalance(currentUser.getNowMoney());
userBill.setMark("支付" + storeOrder.getPayPrice() + "元购买商品");
userBillService.save(userBill);
boolean saveUserbillResult = userBillService.save(userBill);
if(storeOrder.getUseIntegral() > 0){
BigDecimal useIntegral = BigDecimal.valueOf(storeOrder.getUseIntegral(),0);
currentUser.setIntegral(currentUser.getIntegral().subtract(useIntegral));
userService.updateBase(currentUser);
}
userService.userPayCountPlus(currentUser);
return orderUpdate2PayResult;
}

View File

@@ -6,6 +6,7 @@ import com.utils.CrmebUtil;
import com.utils.DateUtil;
import com.zbkj.crmeb.marketing.service.StoreCouponUserService;
import com.zbkj.crmeb.store.model.StoreOrder;
import com.zbkj.crmeb.store.model.StoreProduct;
import com.zbkj.crmeb.store.request.StoreProductStockRequest;
import com.zbkj.crmeb.store.service.*;
import com.zbkj.crmeb.store.vo.StoreOrderInfoVo;
@@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author Mr.Zhang
@@ -78,10 +80,8 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
//回滚优惠券
rollbackCoupon(storeOrder);
//回滚库存
// 回滚积分
rollbackIntegral(storeOrder);
//回滚积分
setIntegral(storeOrder, 1); //单独回滚使用积分
return rollbackStock(storeOrder);
@@ -118,6 +118,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
//回滚经验
rollbackExp(storeOrder);
rollbackStock(storeOrder);
return true;
}catch (Exception e){
return false;
@@ -169,6 +170,9 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
//获得赠送积分
setIntegral(storeOrder, 1);
// 获取商品额外赠送的积分
setGiveIntegral(storeOrder);
//获得赠送经验
setExp(storeOrder, 1);
@@ -209,11 +213,11 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
*/
private void setIntegral(StoreOrder storeOrder, int type) {
try {
if(storeOrder.getUseIntegral().compareTo(BigDecimal.ZERO) < 1){
if(storeOrder.getUseIntegral() < 1){
return;
}
UserOperateFundsRequest userOperateFundsRequest = new UserOperateFundsRequest();
userOperateFundsRequest.setValue(storeOrder.getUseIntegral());
userOperateFundsRequest.setValue(BigDecimal.valueOf(storeOrder.getUseIntegral()));
userOperateFundsRequest.setFoundsType(Constants.ORDER_STATUS_STR_BARGAIN);
userOperateFundsRequest.setUid(storeOrder.getUid());
userOperateFundsRequest.setTitle(Constants.ORDER_STATUS_STR_TAKE);
@@ -225,6 +229,25 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
}
}
// 获取额外赠送积分
private void setGiveIntegral(StoreOrder storeOrder){
// 获取商品额外赠送积分
List<StoreOrderInfoVo> orderInfoList = storeOrderInfoService.getOrderListByOrderId(storeOrder.getId());
List<Integer> productIds = orderInfoList.stream().map(StoreOrderInfoVo::getProductId).collect(Collectors.toList());
if(productIds.size() > 0){
List<StoreProduct> products = storeProductService.getListInIds(productIds);
int sumIntegral = products.stream().mapToInt(e -> e.getGiveIntegral().intValue()).sum();
UserOperateFundsRequest userOperateFundsRequest = new UserOperateFundsRequest();
userOperateFundsRequest.setValue(BigDecimal.valueOf(sumIntegral));
userOperateFundsRequest.setFoundsType(Constants.ORDER_STATUS_STR_BARGAIN);
userOperateFundsRequest.setUid(storeOrder.getUid());
userOperateFundsRequest.setTitle(Constants.ORDER_STATUS_STR_TAKE);
userOperateFundsRequest.setFoundsCategory(Constants.USER_BILL_CATEGORY_INTEGRAL);
userOperateFundsRequest.setType(1);
userService.updateFounds(userOperateFundsRequest, true);
}
}
/**
* 计算积分
* @author Mr.Zhang
@@ -237,7 +260,7 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
rate = "1";
}
BigDecimal rateBigDecimal = CrmebUtil.getBigDecimalRate(rate);
return rateBigDecimal.multiply(payPrice).setScale(BigDecimal.ROUND_DOWN);
return rateBigDecimal.multiply(payPrice).setScale(BigDecimal.ROUND_HALF_DOWN);
}catch (Exception e){
throw new CrmebException("计算积分失败" + e.getMessage());
}
@@ -495,8 +518,9 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
for (StoreOrderInfoVo orderInfoVo : orderInfoVoList) {
StoreProductStockRequest stockRequest = new StoreProductStockRequest();
stockRequest.setIdList(orderInfoVo.getProductId().toString());
stockRequest.setType("diff");
stockRequest.setProductId(orderInfoVo.getProductId());
stockRequest.setAttrId(Integer.valueOf(orderInfoVo.getInfo().getProductAttrUnique()));
stockRequest.setType("add");
// if(orderInfoVo.getInfo().getInteger("cart_num") < 1){
if(orderInfoVo.getInfo().getCartNum() < 1){
//如果取不到值,则跳过
@@ -522,9 +546,10 @@ public class StoreOrderTaskServiceImpl implements StoreOrderTaskService {
private void rollbackIntegral(StoreOrder storeOrder) {
//回滚使用积分
if(storeOrder.getBackIntegral().compareTo(BigDecimal.ZERO) > 0){
if(storeOrder.getUseIntegral() > 0){
//有退积分操作, 那么用户使用的积分会减少
storeOrder.setUseIntegral(storeOrder.getUseIntegral().subtract(storeOrder.getBackIntegral()));
// storeOrder.setUseIntegral(storeOrder.getUseIntegral()- (storeOrder.getBackIntegral()));
storeOrder.setBackIntegral(storeOrder.getUseIntegral());
}
setIntegral(storeOrder, 1);

View File

@@ -108,7 +108,7 @@ public class StoreProductAttrValueServiceImpl extends ServiceImpl<StoreProductAt
@Override
public boolean decProductAttrStock(Integer productId, Integer attrValueId, Integer num, Integer type) {
List<StoreProductAttrValue> existAttrValues = getListByProductIdAndAttrId(productId, attrValueId+"");
if(existAttrValues.size() == 0) throw new CrmebException("商品存在");
if(existAttrValues.size() == 0) throw new CrmebException("商品存在");
StoreProductAttrValue attrValue = existAttrValues.get(0);
boolean result = false;

View File

@@ -32,10 +32,13 @@ import com.zbkj.crmeb.store.response.StoreProductTabsHeader;
import com.zbkj.crmeb.store.service.*;
import com.zbkj.crmeb.system.service.SystemAttachmentService;
import com.zbkj.crmeb.system.service.SystemConfigService;
import com.zbkj.crmeb.task.order.OrderRefundByUser;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -97,6 +100,8 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
@Autowired
private StoreCouponService storeCouponService;
private static final Logger logger = LoggerFactory.getLogger(OrderRefundByUser.class);
/**
* H5端使用
* @param request
@@ -242,6 +247,18 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
return CommonPage.copyPageInfo(storeProductPage, storeProductResponses);
}
/**
* 根据商品id集合获取
* @param productIds id集合
* @return
*/
@Override
public List<StoreProduct> getListInIds(List<Integer> productIds) {
LambdaQueryWrapper<StoreProduct> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(StoreProduct::getId,productIds);
return dao.selectList(lambdaQueryWrapper);
}
/**
* 根据产品属性查询
* @param storeProduct 产品参数
@@ -673,10 +690,36 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
*/
@Override
public boolean stockAddRedis(StoreProductStockRequest request) {
redisUtil.lPush(Constants.PRODUCT_STOCK_UPDATE, request);
redisUtil.lPush(Constants.PRODUCT_STOCK_UPDATE, JSON.toJSONString(request));
return true;
}
@Override
public void consumeProductStock() {
String redisKey = Constants.PRODUCT_STOCK_UPDATE;
Long size = redisUtil.getListSize(redisKey);
logger.info("StoreProductServiceImpl.doProductStock | size:" + size);
if(size < 1){
return;
}
for (int i = 0; i < size; i++) {
//如果10秒钟拿不到一个数据那么退出循环
Object data = redisUtil.getRightPop(redisKey, 10L);
if(null == data){
continue;
}
try{
StoreProductStockRequest storeProductStockRequest =
com.alibaba.fastjson.JSONObject.toJavaObject(com.alibaba.fastjson.JSONObject.parseObject(data.toString()), StoreProductStockRequest.class);
boolean result = doProductStock(storeProductStockRequest);
if(!result){
redisUtil.lPush(redisKey, data);
}
}catch (Exception e){
redisUtil.lPush(redisKey, data);
}
}
}
/**
* 扣减库存添加销量
@@ -691,14 +734,15 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
// 不存在=但属性 存在则是多属性
StoreProductAttrValue productsInAttrValue =
storeProductAttrValueService.getById(attrValueId);
StoreProduct storeProduct = getById(productId);
boolean result = false;
if(null != productsInAttrValue){
result = storeProductAttrValueService.decProductAttrStock(productId,attrValueId,num,type);
}
LambdaUpdateWrapper<StoreProduct> lqwuper = new LambdaUpdateWrapper<>();
lqwuper.eq(StoreProduct::getId, productId);
lqwuper.set(StoreProduct::getStock, productsInAttrValue.getStock()-num);
lqwuper.set(StoreProduct::getSales, productsInAttrValue.getStock()+num);
lqwuper.set(StoreProduct::getStock, storeProduct.getStock()-num);
lqwuper.set(StoreProduct::getSales, storeProduct.getSales()+num);
result = update(lqwuper);
if(result){ //判断库存警戒值
Integer alterNumI=0;
@@ -1251,6 +1295,26 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
///////////////////////////////////////////自定义方法
// 操作库存
private boolean doProductStock(StoreProductStockRequest storeProductStockRequest){
StoreProduct existProduct = getById(storeProductStockRequest.getProductId());
List<StoreProductAttrValue> existAttr =
storeProductAttrValueService.getListByProductIdAndAttrId(storeProductStockRequest.getProductId(), storeProductStockRequest.getAttrId().toString());
if(null == existProduct || null == existAttr){ // 为找到商品
logger.info("库存修改任务未获取到商品信息"+JSON.toJSONString(storeProductStockRequest));
return true;
}
boolean isPlus = storeProductStockRequest.getType().equals("add");
int productStock = isPlus ? existProduct.getStock() + storeProductStockRequest.getNum() : existProduct.getStock() - storeProductStockRequest.getNum();
existProduct.setStock(productStock);
updateById(existProduct);
for (StoreProductAttrValue attrValue : existAttr) {
int productAttrStock = isPlus ? attrValue.getStock() + storeProductStockRequest.getNum() : attrValue.getStock() - storeProductStockRequest.getNum();
attrValue.setStock(productAttrStock);
storeProductAttrValueService.updateById(attrValue);
}
return true;
}
/**

View File

@@ -246,9 +246,9 @@ public class OrderUtils {
// 需要return的自定义变量
BigDecimal couponPrice = BigDecimal.ZERO;
BigDecimal surPlusIntegral = BigDecimal.ZERO;
Integer surPlusIntegral = 0;
BigDecimal deductionPrice = BigDecimal.ZERO;
BigDecimal usedIntegral = BigDecimal.ZERO;
Integer usedIntegral = 0;
BigDecimal payPrice = cor.getPriceGroup().getTotalPrice();
User currentUser = userService.getInfo();
@@ -323,16 +323,18 @@ public class OrderUtils {
if(null != request.getUseIntegral() && currentUser.getIntegral().compareTo(BigDecimal.ZERO) > 0){
deductionPrice = currentUser.getIntegral().multiply(BigDecimal.valueOf(Double.valueOf(cor.getOther().get("integralRatio").toString())));
if(request.getUseIntegral()){
// 积分兑换金额小于实际支付金额
if(deductionPrice.compareTo(payPrice) < 0){
payPrice = payPrice.subtract(deductionPrice);
usedIntegral = currentUser.getIntegral();
usedIntegral = currentUser.getIntegral().intValue();
}else{
deductionPrice = payPrice;
if(payPrice.compareTo(BigDecimal.ZERO) > 0 && usedIntegral.compareTo(BigDecimal.ZERO) > 0){
usedIntegral = payPrice.divide(usedIntegral);
surPlusIntegral = currentUser.getIntegral().subtract(usedIntegral);
if(payPrice.compareTo(BigDecimal.ZERO) > 0 && usedIntegral > 0){
usedIntegral = payPrice.divide(BigDecimal.valueOf(usedIntegral.doubleValue())).intValue();
surPlusIntegral = currentUser.getIntegral().intValue() - usedIntegral;
}
payPrice = BigDecimal.ZERO;
usedIntegral = currentUser.getIntegral().intValue();
}
}else{
payPrice = currentOrderPriceGroup.getPayPrice();
@@ -340,7 +342,7 @@ public class OrderUtils {
}else{
deductionPrice = BigDecimal.ZERO;
usedIntegral = BigDecimal.ZERO;
usedIntegral = 0;
}
if(payPrice.compareTo(BigDecimal.ZERO) <= 0) payPrice = BigDecimal.ZERO;
@@ -358,9 +360,18 @@ public class OrderUtils {
result.setPayPrice(payPrice.setScale(2, BigDecimal.ROUND_CEILING));
result.setPayPostage(payPostage.setScale(2, BigDecimal.ROUND_CEILING));
result.setCouponPrice(couponPrice.setScale(2, BigDecimal.ROUND_CEILING));
result.setDeductionPrice(deductionPrice.setScale(2, BigDecimal.ROUND_CEILING));
result.setUsedIntegral(usedIntegral.setScale(2, BigDecimal.ROUND_CEILING));
result.setSurplusIntegral(surPlusIntegral.setScale(2, BigDecimal.ROUND_CEILING));
result.setDeductionPrice(request.getUseIntegral() ? deductionPrice.setScale(2, BigDecimal.ROUND_CEILING) : BigDecimal.ZERO);
result.setUsedIntegral(usedIntegral);
result.setSurplusIntegral(surPlusIntegral);
// 更新计算后的数据到订单缓存
cor.getPriceGroup().setTotalPrice(result.getTotalPrice());
cor.getPriceGroup().setPayPrice(result.getPayPrice());
cor.getPriceGroup().setPayPostage(result.getPayPostage());
cor.getPriceGroup().setCouponPrice(result.getCouponPrice());
cor.getPriceGroup().setDeductionPrice(result.getDeductionPrice());
cor.getPriceGroup().setUsedIntegral(result.getUsedIntegral());
// cacheDeleteOrderInfo(currentUser.getUid(), orderKey);
cacheRepliceOrderInfo(orderKey, currentUser.getUid(), cor);
return result;
}
@@ -376,7 +387,7 @@ public class OrderUtils {
UserAddress currentUserAddress = new UserAddress();
List<Integer> cartIds = new ArrayList<>();
Integer totalNum = 0;
BigDecimal gainIntegral = BigDecimal.ZERO;
Integer gainIntegral = 0;
// todo 开启事务
@@ -400,11 +411,11 @@ public class OrderUtils {
totalNum += cartResponse.getCartNum();
// todo 秒杀拼团砍价 二期
BigDecimal cartInfoGainIntegral =
cartResponse.getProductInfo().getGiveIntegral().compareTo(BigDecimal.ZERO) > 0 ?
cartResponse.getProductInfo().getGiveIntegral().multiply(BigDecimal.valueOf(cartResponse.getCartNum().doubleValue()))
:BigDecimal.ZERO;
gainIntegral = gainIntegral.add(cartInfoGainIntegral);
Integer cartInfoGainIntegral =
(cartResponse.getProductInfo().getGiveIntegral() != null && cartResponse.getProductInfo().getGiveIntegral() > 0 )?
cartResponse.getProductInfo().getGiveIntegral() * cartResponse.getCartNum()
: 0;
gainIntegral = gainIntegral + cartInfoGainIntegral;
}
// todo 检测营销产品状态
// 发快递还是门店自提
@@ -435,7 +446,7 @@ public class OrderUtils {
BigDecimal mapPayPrice = cor.getPriceGroup().getPayPrice();
BigDecimal mapPayPostage = cor.getPriceGroup().getPayPostage();
BigDecimal mapDeductionPrice = cor.getPriceGroup().getDeductionPrice();
BigDecimal mapUsedIntegral = cor.getPriceGroup().getUsedIntegral();
Integer mapUsedIntegral = cor.getPriceGroup().getUsedIntegral();
BigDecimal mapCostPrice = cor.getPriceGroup().getCostPrice();
int couponId = null == cor.getUsableCoupon() ? 0: cor.getUsableCoupon().getId();
@@ -483,8 +494,8 @@ public class OrderUtils {
if(request.getUseIntegral() && currentUser.getIntegral().compareTo(BigDecimal.ZERO) > 0){
BigDecimal deductionPrice = BigDecimal.ZERO;
if(null != cor.getPriceGroup().getUsedIntegral()){
deductionPrice = cor.getPriceGroup().getUsedIntegral();
if(cor.getPriceGroup().getUsedIntegral().compareTo(BigDecimal.ZERO) > 0){
deductionPrice = BigDecimal.valueOf(cor.getPriceGroup().getUsedIntegral(),2);
if(cor.getPriceGroup().getUsedIntegral() > 0){
currentUser.setIntegral(BigDecimal.ZERO);
disIntegle = userService.updateBase(currentUser);
}else{
@@ -538,7 +549,7 @@ public class OrderUtils {
storeCartService.deleteCartByIds(idsInt);
// 删除缓存订单
cacheDeleteOrderInfo(currentUser.getUid(),storeOrder.getId());
cacheDeleteOrderInfo(currentUser.getUid(), orderKey);
// 检查缺省的默认地址设置
UserAddress defaultAddress = userAddressService.getDefault();
if(null != defaultAddress){
@@ -783,7 +794,7 @@ public class OrderUtils {
* @param confirmOrderResponse 确认订单对象
* @return 缓存结果
*/
public String cacheOrderInfo(Integer userId,ConfirmOrderResponse confirmOrderResponse){
public String cacheSetOrderInfo(Integer userId,ConfirmOrderResponse confirmOrderResponse){
String key = DigestUtils.md5Hex(DateUtil.getNowTime().toString());
redisUtil.set("user_order_" + userId + key, JSONObject.toJSONString(confirmOrderResponse),Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES);
return key;
@@ -807,13 +818,27 @@ public class OrderUtils {
* @param userId 用户id
* @param cacheKey 缓存key
*/
public void cacheDeleteOrderInfo(Integer userId, Integer cacheKey){
public void cacheDeleteOrderInfo(Integer userId, String cacheKey){
String key = "user_order_" + userId + cacheKey;
boolean exists = redisUtil.exists(key);
if(!exists) return;
redisUtil.remove(key);
}
/**
* 更新当前订单结算信息 切换收货地址以及积分抵扣后支付金额可能会变动
* @param orderKey
* @param userId
* @param confirmOrderResponse
*/
public void cacheRepliceOrderInfo(String orderKey,Integer userId, ConfirmOrderResponse confirmOrderResponse){
String key = "user_order_" + userId + orderKey;
if(redisUtil.exists(key)){
redisUtil.remove(key);
}
redisUtil.set(key, JSONObject.toJSONString(confirmOrderResponse),Constants.ORDER_CASH_CONFIRM, TimeUnit.MINUTES);
}
/**
* 根据订单号查询订单信息
* @param id 订单id

View File

@@ -1,116 +0,0 @@
package com.zbkj.crmeb.system.controller;
import com.common.CommonPage;
import com.common.CommonResult;
import com.common.PageParamRequest;
import com.zbkj.crmeb.system.request.SystemUserTaskRequest;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import com.zbkj.crmeb.system.service.SystemUserTaskService;
import com.zbkj.crmeb.system.model.SystemUserTask;
/**
* 等级任务设置 前端控制器
*/
@Slf4j
@RestController
@RequestMapping("api/admin/system/user/task")
@Api(tags = "设置 -- 会员等级 -- 等级任务")
public class SystemUserTaskController {
@Autowired
private SystemUserTaskService systemUserTaskService;
/**
* 分页显示等级任务设置
* @param systemUserTaskRequest 搜索条件
* @param pageParamRequest 分页参数
* @author Mr.Zhang
* @since 2020-04-13
*/
@ApiOperation(value = "分页列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public CommonResult<CommonPage<SystemUserTask>> getList(@ModelAttribute SystemUserTaskRequest systemUserTaskRequest, @ModelAttribute PageParamRequest pageParamRequest){
SystemUserTask systemUserTask = new SystemUserTask();
BeanUtils.copyProperties(systemUserTaskRequest, systemUserTask);
CommonPage<SystemUserTask> systemUserTaskCommonPage = CommonPage.restPage(systemUserTaskService.getList(systemUserTaskRequest, pageParamRequest));
return CommonResult.success(systemUserTaskCommonPage);
}
/**
* 新增等级任务设置
* @param systemUserTaskRequest 新增参数
* @author Mr.Zhang
* @since 2020-04-13
*/
@ApiOperation(value = "新增")
@RequestMapping(value = "/save", method = RequestMethod.POST)
public CommonResult<String> save(@ModelAttribute SystemUserTaskRequest systemUserTaskRequest){
SystemUserTask systemUserTask = new SystemUserTask();
BeanUtils.copyProperties(systemUserTaskRequest, systemUserTask);
if(systemUserTaskService.save(systemUserTask)){
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 删除等级任务设置
* @param id Integer
* @author Mr.Zhang
* @since 2020-04-13
*/
@ApiOperation(value = "删除")
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public CommonResult<String> delete(@RequestParam(value = "id") Integer id){
if(systemUserTaskService.removeById(id)){
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 修改等级任务设置
* @param id integer id
* @param systemUserTaskRequest 修改参数
* @author Mr.Zhang
* @since 2020-04-13
*/
@ApiOperation(value = "修改")
@RequestMapping(value = "/update", method = RequestMethod.POST)
public CommonResult<String> update(@RequestParam Integer id, @ModelAttribute SystemUserTaskRequest systemUserTaskRequest){
SystemUserTask systemUserTask = new SystemUserTask();
BeanUtils.copyProperties(systemUserTaskRequest, systemUserTask);
systemUserTask.setId(id);
if(systemUserTaskService.updateById(systemUserTask)){
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 查询等级任务设置信息
* @param id Integer
* @author Mr.Zhang
* @since 2020-04-13
*/
@ApiOperation(value = "详情")
@RequestMapping(value = "/info", method = RequestMethod.GET)
public CommonResult<SystemUserTask> info(@RequestParam(value = "id") Integer id){
SystemUserTask systemUserTask = systemUserTaskService.getById(id);
return CommonResult.success(systemUserTask);
}
}

View File

@@ -1,16 +0,0 @@
package com.zbkj.crmeb.system.dao;
import com.zbkj.crmeb.system.model.SystemUserTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 等级任务设置 Mapper 接口
* </p>
*
* @author Mr.Zhang
* @since 2020-04-13
*/
public interface SystemUserTaskDao extends BaseMapper<SystemUserTask> {
}

View File

@@ -1,64 +0,0 @@
package com.zbkj.crmeb.system.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 等级任务设置
* </p>
*
* @author Mr.Zhang
* @since 2020-04-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_system_user_task")
@ApiModel(value="SystemUserTask对象", description="等级任务设置")
public class SystemUserTask implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "任务名称")
private String name;
@ApiModelProperty(value = "配置原名")
private String realName;
@ApiModelProperty(value = "任务类型")
private String taskType;
@ApiModelProperty(value = "限定数")
private Integer number;
@ApiModelProperty(value = "等级id")
private Integer levelId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否显示")
private Boolean isShow;
@ApiModelProperty(value = "是否务必达成任务,1务必达成,0=满足其一")
private Boolean isMust;
@ApiModelProperty(value = "任务说明")
private String illustrate;
@ApiModelProperty(value = "新增时间")
private Integer addTime;
}

View File

@@ -1,65 +0,0 @@
package com.zbkj.crmeb.system.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 等级任务设置
* </p>
*
* @author Mr.Zhang
* @since 2020-04-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_system_user_task")
@ApiModel(value="SystemUserTask对象", description="等级任务设置")
public class SystemUserTaskRequest implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "任务名称")
private String name;
@ApiModelProperty(value = "配置原名")
private String realName;
@ApiModelProperty(value = "任务类型")
private String taskType;
@ApiModelProperty(value = "限定数")
private Integer number;
@ApiModelProperty(value = "等级id")
private Integer levelId;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "是否显示")
private Boolean isShow;
@ApiModelProperty(value = "是否务必达成任务,1务必达成,0=满足其一")
private Boolean isMust;
@ApiModelProperty(value = "任务说明")
private String illustrate;
@ApiModelProperty(value = "新增时间")
private Integer addTime;
}

View File

@@ -1,19 +0,0 @@
package com.zbkj.crmeb.system.service;
import com.common.PageParamRequest;
import com.zbkj.crmeb.system.model.SystemUserTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.crmeb.system.request.SystemUserTaskRequest;
import java.util.List;
/**
* @author Mr.Zhang
* @Description SystemUserTaskService 接口
* @since 2020-04-13
*/
public interface SystemUserTaskService extends IService<SystemUserTask> {
List<SystemUserTask> getList(SystemUserTaskRequest request, PageParamRequest pageParamRequest);
boolean complete(Integer userId, Integer levelId);
}

View File

@@ -76,12 +76,15 @@ public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigDao, System
lambdaQueryWrapper.eq(SystemConfig::getStatus, false);
SystemConfig systemConfig = dao.selectOne(lambdaQueryWrapper);
if(StringUtils.isBlank(systemConfig.getValue())){
systemConfig.setValue(null);
String value = null;
if(null != systemConfig && StringUtils.isNotBlank(systemConfig.getValue())){
value = systemConfig.getValue();
}
return systemConfig.getValue();
return value;
}
/**
* 根据key更新值
* @param key key

View File

@@ -1,78 +0,0 @@
package com.zbkj.crmeb.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.common.PageParamRequest;
import com.github.pagehelper.PageHelper;
import com.zbkj.crmeb.system.model.SystemUserLevel;
import com.zbkj.crmeb.system.model.SystemUserTask;
import com.zbkj.crmeb.system.dao.SystemUserTaskDao;
import com.zbkj.crmeb.system.request.SystemUserTaskRequest;
import com.zbkj.crmeb.system.service.SystemUserLevelService;
import com.zbkj.crmeb.system.service.SystemUserTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zbkj.crmeb.user.service.UserTaskFinishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Mr.Zhang
* @Description SystemUserTaskServiceImpl 接口实现
* @since 2020-04-13
*/
@Service
public class SystemUserTaskServiceImpl extends ServiceImpl<SystemUserTaskDao, SystemUserTask> implements SystemUserTaskService {
@Resource
private SystemUserTaskDao dao;
@Autowired
private SystemUserLevelService systemUserLevelService;
@Autowired
private UserTaskFinishService userTaskFinishService;
@Override
public List<SystemUserTask> getList(SystemUserTaskRequest request, PageParamRequest pageParamRequest) {
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
return dao.selectList(null);
}
/**
* 完成任务
* @param userId integer id
* @param levelId integer 等级
* @author Mr.Zhang
* @since 2020-04-10
* @return boolean
*/
@Override
public boolean complete(Integer userId, Integer levelId) {
List<SystemUserLevel> systemUserLevels = systemUserLevelService.getGradeListByLevelId(levelId);
if(systemUserLevels == null){
return false;
}
//从集合中取出ID
List<Integer> idList = systemUserLevels.stream().map(SystemUserLevel::getId).distinct().collect(Collectors.toList());
//获取任务信息
LambdaQueryWrapper<SystemUserTask> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(SystemUserTask::getId);
lambdaQueryWrapper.in(SystemUserTask::getId, idList);
List<SystemUserTask> systemUserTasks = dao.selectList(lambdaQueryWrapper);
if(systemUserTasks == null){
return false;
}
//完成任务
return userTaskFinishService.saveByTaskList(userId, systemUserTasks);
}
}

View File

@@ -0,0 +1,45 @@
package com.zbkj.crmeb.task.product;
import com.utils.DateUtil;
import com.zbkj.crmeb.store.service.OrderTaskService;
import com.zbkj.crmeb.store.service.StoreProductService;
import com.zbkj.crmeb.task.order.OrderTakeByUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @author stivepeim
* @title: ProductStock
* @projectName crmeb
* @description: 操作商品库存
* @date 2020/8/2017:04
*/
@Component
@Configuration //读取配置
@EnableScheduling // 2.开启定时任务
public class ProductStock {
//日志
private static final Logger logger = LoggerFactory.getLogger(ProductStock.class);
@Autowired
private StoreProductService storeProductService;
@Scheduled(fixedDelay = 1000 * 60L) //1分钟同步一次数据
public void init(){
logger.info("---OrderTakeByUser task------produce Data with fixed rate task: Execution Time - {}", DateUtil.nowDateTime());
try {
storeProductService.consumeProductStock();
}catch (Exception e){
e.printStackTrace();
logger.error("OrderTakeByUser.task" + " | msg : " + e.getMessage());
}
}
}

View File

@@ -3,19 +3,17 @@ package com.zbkj.crmeb.user.controller;
import com.common.CommonPage;
import com.common.CommonResult;
import com.common.PageParamRequest;
import com.zbkj.crmeb.user.request.UserLevelRequest;
import com.zbkj.crmeb.user.model.UserLevel;
import com.zbkj.crmeb.user.request.UserLevelSearchRequest;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import com.zbkj.crmeb.user.service.UserLevelService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import com.zbkj.crmeb.user.service.UserLevelService;
import com.zbkj.crmeb.user.model.UserLevel;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -43,46 +41,6 @@ public class UserLevelController {
CommonPage<UserLevel> userLevelCommonPage = CommonPage.restPage(userLevelService.getList(request, pageParamRequest));
return CommonResult.success(userLevelCommonPage);
}
/**
* 修改用户会员等级
* @param userId integer id
* @param levelId integer 等级
* @author Mr.Zhang
* @since 2020-04-29
*/
@ApiOperation(value = "修改")
@RequestMapping(value = "/level", method = RequestMethod.POST)
@ApiImplicitParams({
@ApiImplicitParam(name="userId", value="会员ID", dataType = "Integer", required = true),
@ApiImplicitParam(name="levelId", value="等级ID", dataType = "Integer", required = true)
})
public CommonResult<String> level(@RequestParam Integer userId, @RequestParam int levelId){
if(userLevelService.level(userId, levelId)){
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
/**
* 清除会员等级
* @param userId integer id
* @author Mr.Zhang
* @since 2020-04-29
*/
@ApiOperation(value = "清除会员等级")
@RequestMapping(value = "/clean", method = RequestMethod.POST)
@ApiImplicitParams({
@ApiImplicitParam(name="userId", value="会员ID", dataType = "Integer", required = true),
})
public CommonResult<String> clean(@RequestParam Integer userId){
if(userLevelService.clean(userId)){
return CommonResult.success();
}else{
return CommonResult.failed();
}
}
}

View File

@@ -1,16 +0,0 @@
package com.zbkj.crmeb.user.dao;
import com.zbkj.crmeb.user.model.UserNotice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户通知表 Mapper 接口
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
public interface UserNoticeDao extends BaseMapper<UserNotice> {
}

View File

@@ -1,16 +0,0 @@
package com.zbkj.crmeb.user.dao;
import com.zbkj.crmeb.user.model.UserTaskFinish;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户任务完成记录表 Mapper 接口
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
public interface UserTaskFinishDao extends BaseMapper<UserTaskFinish> {
}

View File

@@ -1,58 +0,0 @@
package com.zbkj.crmeb.user.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 用户通知表
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_user_notice")
@ApiModel(value="UserNotice对象", description="用户通知表")
public class UserNotice implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "接收消息的用户id类型json数据")
private String uid;
@ApiModelProperty(value = "消息通知类型1系统消息2用户通知")
private Boolean type;
@ApiModelProperty(value = "发送人")
private String user;
@ApiModelProperty(value = "通知消息的标题信息")
private String title;
@ApiModelProperty(value = "通知消息的内容")
private String content;
@ApiModelProperty(value = "通知消息发送的时间")
private Integer addTime;
@ApiModelProperty(value = "是否发送0未发送1已发送")
private Boolean isSend;
@ApiModelProperty(value = "发送时间")
private Integer sendTime;
}

View File

@@ -1,54 +0,0 @@
package com.zbkj.crmeb.user.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 用户任务完成记录表
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_user_task_finish")
@ApiModel(value="UserTaskFinish对象", description="用户任务完成记录表")
public class UserTaskFinish implements Serializable {
private static final long serialVersionUID=1L;
public UserTaskFinish(){}
public UserTaskFinish(Integer taskId, Integer uid, Boolean status) {
this.taskId = taskId;
this.uid = uid;
this.status = status;
}
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "任务id")
private Integer taskId;
@ApiModelProperty(value = "用户id")
private Integer uid;
@ApiModelProperty(value = "是否有效")
private Boolean status;
@ApiModelProperty(value = "添加时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}

View File

@@ -1,59 +0,0 @@
package com.zbkj.crmeb.user.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 用户通知表
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_user_notice")
@ApiModel(value="UserNotice对象", description="用户通知表")
public class UserNoticeRequest implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "接收消息的用户id类型json数据")
private String uid;
@ApiModelProperty(value = "消息通知类型1系统消息2用户通知")
private Boolean type;
@ApiModelProperty(value = "发送人")
private String user;
@ApiModelProperty(value = "通知消息的标题信息")
private String title;
@ApiModelProperty(value = "通知消息的内容")
private String content;
@ApiModelProperty(value = "通知消息发送的时间")
private Integer addTime;
@ApiModelProperty(value = "是否发送0未发送1已发送")
private Boolean isSend;
@ApiModelProperty(value = "发送时间")
private Integer sendTime;
}

View File

@@ -1,59 +0,0 @@
package com.zbkj.crmeb.user.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 用户通知表
* </p>
*
* @author Mr.Zhang
* @since 2020-04-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_user_notice")
@ApiModel(value="UserNotice对象", description="用户通知表")
public class UserNoticeSearchRequest implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "接收消息的用户id类型json数据")
private String uid;
@ApiModelProperty(value = "消息通知类型1系统消息2用户通知")
private Boolean type;
@ApiModelProperty(value = "发送人")
private String user;
@ApiModelProperty(value = "通知消息的标题信息")
private String title;
@ApiModelProperty(value = "通知消息的内容")
private String content;
@ApiModelProperty(value = "通知消息发送的时间")
private Integer addTime;
@ApiModelProperty(value = "是否发送0未发送1已发送")
private Boolean isSend;
@ApiModelProperty(value = "发送时间")
private Integer sendTime;
}

View File

@@ -18,7 +18,6 @@ public interface UserLevelService extends IService<UserLevel> {
boolean level(Integer userId, int levelId);
boolean clean(Integer userId);
/**
* 根据用户id获取用户等级

View File

@@ -1,18 +0,0 @@
package com.zbkj.crmeb.user.service;
import com.common.PageParamRequest;
import com.zbkj.crmeb.user.model.UserNotice;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.crmeb.user.request.UserNoticeSearchRequest;
import java.util.List;
/**
* @author Mr.Zhang
* @Description UserNoticeService 接口
* @since 2020-04-28
*/
public interface UserNoticeService extends IService<UserNotice> {
List<UserNotice> getList(UserNoticeSearchRequest request, PageParamRequest pageParamRequest);
}

View File

@@ -1,19 +0,0 @@
package com.zbkj.crmeb.user.service;
import com.common.PageParamRequest;
import com.zbkj.crmeb.system.model.SystemUserTask;
import com.zbkj.crmeb.user.model.UserTaskFinish;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author Mr.Zhang
* @Description UserTaskFinishService 接口
* @since 2020-04-28
*/
public interface UserTaskFinishService extends IService<UserTaskFinish> {
boolean saveByTaskList(Integer userId, List<SystemUserTask> systemUserTasks);
boolean deleteByUser(Integer userId);
}

View File

@@ -9,7 +9,6 @@ import com.github.pagehelper.PageHelper;
import com.utils.DateUtil;
import com.zbkj.crmeb.system.model.SystemUserLevel;
import com.zbkj.crmeb.system.service.SystemUserLevelService;
import com.zbkj.crmeb.system.service.SystemUserTaskService;
import com.zbkj.crmeb.user.model.User;
import com.zbkj.crmeb.user.model.UserLevel;
import com.zbkj.crmeb.user.dao.UserLevelDao;
@@ -17,7 +16,6 @@ import com.zbkj.crmeb.user.request.UserLevelSearchRequest;
import com.zbkj.crmeb.user.service.UserLevelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zbkj.crmeb.user.service.UserService;
import com.zbkj.crmeb.user.service.UserTaskFinishService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -42,11 +40,6 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelDao, UserLevel> i
@Autowired
private UserService userService;
@Autowired
private SystemUserTaskService systemUserTaskService;
@Autowired
private UserTaskFinishService userTaskFinishService;
/**
* 列表
@@ -99,50 +92,12 @@ public class UserLevelServiceImpl extends ServiceImpl<UserLevelDao, UserLevel> i
updateById(userLevel);
}
//提取等级任务并记录完成情况
systemUserTaskService.complete(userId, levelId);
//更新会员等级
user.setLevel(systemUserLevel.getGrade());
userService.updateById(user);
return true;
}
/**
* 清除会员等级
* @param userId integer id
* @author Mr.Zhang
* @since 2020-04-29
* @return boolean
*/
@Override
public boolean clean(Integer userId) {
//删除当前会员信息
deleteByUserId(userId);
//删除任务
userTaskFinishService.deleteByUser(userId);
//更新user表
return userService.cleanLevel(userId);
}
/**
* 清除userLevel
* @param userId integer id
* @author Mr.Zhang
* @since 2020-04-29
*/
private void deleteByUserId(Integer userId) {
//删除当前会员信息
UserLevel userLevel = new UserLevel();
userLevel.setIsDel(true);
LambdaQueryWrapper<UserLevel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserLevel::getUid, userId);
update(userLevel, lambdaQueryWrapper);
}
/**
* 获取会员的等级信息,并且验证

View File

@@ -1,45 +0,0 @@
package com.zbkj.crmeb.user.service.impl;
import com.common.PageParamRequest;
import com.github.pagehelper.PageHelper;
import com.utils.CrmebUtil;
import com.zbkj.crmeb.user.model.UserNotice;
import com.zbkj.crmeb.user.dao.UserNoticeDao;
import com.zbkj.crmeb.user.request.UserNoticeSearchRequest;
import com.zbkj.crmeb.user.service.UserNoticeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author Mr.Zhang
* @Description UserNoticeServiceImpl 接口实现
* @since 2020-04-28
*/
@Service
public class UserNoticeServiceImpl extends ServiceImpl<UserNoticeDao, UserNotice> implements UserNoticeService {
@Resource
private UserNoticeDao dao;
/**
* 列表
* @param request 请求参数
* @param pageParamRequest 分页类参数
* @author Mr.Zhang
* @since 2020-04-28
* @return List<UserNotice>
*/
@Override
public List<UserNotice> getList(UserNoticeSearchRequest request, PageParamRequest pageParamRequest) {
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
return dao.selectList(null);
}
}

View File

@@ -320,7 +320,93 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
@Override
public boolean updateBase(User user) {
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.setEntity(user);
// lambdaUpdateWrapper.setEntity(user);
if(null == user.getUid()) return false;
lambdaUpdateWrapper.eq(User::getUid,user.getUid());
if(StringUtils.isNotBlank(user.getNickname())){
lambdaUpdateWrapper.set(User::getNickname, user.getNickname());
}
if(StringUtils.isNotBlank(user.getAccount())){
lambdaUpdateWrapper.set(User::getAccount, user.getAccount());
}
if(StringUtils.isNotBlank(user.getPwd())){
lambdaUpdateWrapper.set(User::getPwd, user.getPwd());
}
if(StringUtils.isNotBlank(user.getRealName())){
lambdaUpdateWrapper.set(User::getRealName, user.getRealName());
}
if(StringUtils.isNotBlank(user.getBirthday())){
lambdaUpdateWrapper.set(User::getBirthday, user.getBirthday());
}
if(StringUtils.isNotBlank(user.getCardId())){
lambdaUpdateWrapper.set(User::getCardId, user.getCardId());
}
if(StringUtils.isNotBlank(user.getMark())){
lambdaUpdateWrapper.set(User::getMark, user.getMark());
}
if(null != user.getPartnerId()){
lambdaUpdateWrapper.set(User::getPartnerId, user.getPartnerId());
}
if(StringUtils.isNotBlank(user.getGroupId())){
lambdaUpdateWrapper.set(User::getGroupId, user.getGroupId());
}
if(StringUtils.isNotBlank(user.getTagId())){
lambdaUpdateWrapper.set(User::getTagId, user.getTagId());
}
if(StringUtils.isNotBlank(user.getAvatar())){
lambdaUpdateWrapper.set(User::getAvatar, user.getAvatar());
}
if(StringUtils.isNotBlank(user.getPhone())){
lambdaUpdateWrapper.set(User::getPhone, user.getPhone());
}
if(StringUtils.isNotBlank(user.getAddIp())){
lambdaUpdateWrapper.set(User::getAddIp, user.getAddIp());
}
if(StringUtils.isNotBlank(user.getLastIp())){
lambdaUpdateWrapper.set(User::getLastIp, user.getLastIp());
}
if(null != user.getNowMoney() && user.getNowMoney().compareTo(BigDecimal.ZERO) > 0){
lambdaUpdateWrapper.set(User::getNowMoney, user.getNowMoney());
}
if(null != user.getBrokeragePrice() && user.getBrokeragePrice().compareTo(BigDecimal.ZERO) > 0){
lambdaUpdateWrapper.set(User::getBrokeragePrice, user.getBrokeragePrice());
}
if(null != user.getIntegral() && user.getIntegral().compareTo(BigDecimal.ZERO) >= 0){
lambdaUpdateWrapper.set(User::getIntegral, user.getIntegral());
}
if(null != user.getExperience() && user.getExperience() > 0){
lambdaUpdateWrapper.set(User::getExperience, user.getExperience());
}
if(null != user.getSignNum() && user.getSignNum() > 0){
lambdaUpdateWrapper.set(User::getSignNum, user.getSignNum());
}
if(null != user.getStatus()){
lambdaUpdateWrapper.set(User::getStatus, user.getStatus());
}
if(null != user.getLevel() && user.getLevel() > 0){
lambdaUpdateWrapper.set(User::getLevel, user.getLevel());
}
if(null != user.getSpreadUid() && user.getSpreadUid() > 0){
lambdaUpdateWrapper.set(User::getSpreadUid, user.getSpreadUid());
}
if(null != user.getSpreadTime()){
lambdaUpdateWrapper.set(User::getSpreadTime, user.getSpreadTime());
}
if(StringUtils.isNotBlank(user.getUserType())){
lambdaUpdateWrapper.set(User::getUserType, user.getUserType());
}
if(null != user.getIsPromoter()){
lambdaUpdateWrapper.set(User::getIsPromoter, user.getIsPromoter());
}
if(null != user.getPayCount()){
lambdaUpdateWrapper.set(User::getPayCount, user.getPayCount());
}
if(null != user.getSpreadCount()){
lambdaUpdateWrapper.set(User::getSpreadCount, user.getSpreadCount());
}
if(StringUtils.isNotBlank(user.getAddres())){
lambdaUpdateWrapper.set(User::getAddres, user.getAddres());
}
return update(lambdaUpdateWrapper);
}
@@ -698,8 +784,9 @@ public class UserServiceImpl extends ServiceImpl<UserDao, User> implements UserS
@Override
public UserCenterResponse getUserCenter() {
UserCenterResponse userCenterResponse = new UserCenterResponse();
BeanUtils.copyProperties(getInfo(), userCenterResponse);
User currentUser = getInfo();
BeanUtils.copyProperties(currentUser, userCenterResponse);
userCenterResponse.setIntegral(currentUser.getIntegral().intValue());
UserCenterOrderStatusNumResponse userCenterOrderStatusNumResponse = new UserCenterOrderStatusNumResponse();
userCenterOrderStatusNumResponse.setNoBuy(0);
userCenterOrderStatusNumResponse.setNoPink(0);

View File

@@ -1,89 +0,0 @@
package com.zbkj.crmeb.user.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zbkj.crmeb.system.model.SystemUserTask;
import com.zbkj.crmeb.user.model.UserTaskFinish;
import com.zbkj.crmeb.user.dao.UserTaskFinishDao;
import com.zbkj.crmeb.user.service.UserTaskFinishService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mr.Zhang
* @Description UserTaskFinishServiceImpl 接口实现
* @since 2020-04-28
*/
@Service
public class UserTaskFinishServiceImpl extends ServiceImpl<UserTaskFinishDao, UserTaskFinish> implements UserTaskFinishService {
@Resource
private UserTaskFinishDao dao;
/**
* 批量完成任务
* @param userId 用户id
* @param list 任务列表
* @author Mr.Zhang
* @since 2020-04-28
*/
@Override
public boolean saveByTaskList(Integer userId, List<SystemUserTask> list) {
ArrayList<UserTaskFinish> userTaskFinishes = new ArrayList<>();
for (SystemUserTask systemUserTasks: list) {
if(!checkTaskIsFinished(userId, systemUserTasks.getId())){
//如果没有完成任务,则新加一条数据
userTaskFinishes.add(new UserTaskFinish(systemUserTasks.getId(), userId, true));
}
}
if(userTaskFinishes.size() > 0){
return saveBatch(userTaskFinishes);
}
return true;
}
/**
* 批量删除任务
* @param userId 用户id
* @author Mr.Zhang
* @since 2020-04-29
*/
@Override
public boolean deleteByUser(Integer userId) {
LambdaQueryWrapper<UserTaskFinish> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserTaskFinish::getUid, userId);
return remove(lambdaQueryWrapper);
}
/**
* 检测任务是否已完成
* @param userId 用户id
* @param taskId 等级id
* @author Mr.Zhang
* @since 2020-04-28
*/
private boolean checkTaskIsFinished(Integer userId, Integer taskId) {
LambdaQueryWrapper<UserTaskFinish> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserTaskFinish::getUid, userId);
lambdaQueryWrapper.eq(UserTaskFinish::getTaskId, taskId);
UserTaskFinish userTaskFinish = getOne(lambdaQueryWrapper);
if(userTaskFinish == null){
//如果没有找到,那么说明没有完成
return false;
}
if(!userTaskFinish.getStatus()){
//status == false 更新当前ID的status
userTaskFinish.setStatus(true);
updateById(userTaskFinish);
}
return true;
}
}

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreBargainDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreBargainUserHelpDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreBargainUserDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreCategoryDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreCombinationDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StorePinkDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreServiceLogDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.store.dao.StoreServiceDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemConfigTabDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemFileDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemLogDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemNoticeAdminDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemNoticeDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.system.dao.SystemUserTaskDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.user.dao.UserNoticeDao">
</mapper>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.crmeb.user.dao.UserTaskFinishDao">
</mapper>