QyzxBusinessController.java 14.8 KB
Newer Older
1
/**  
2 3 4 5 6 7
 * <p>Title: QyzxBusinessController.java</p>  
 * <p>Description: </p>  
 * @author dsc  
 * @date 2020年4月22日  
 * @version 1.0  
 */
8 9
package cn.timer.api.controller.qyzx;

10
import java.util.ArrayList;
11
import java.util.Date;
12
import java.util.HashMap;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.stream.Collectors;
16

17 18
import javax.transaction.Transactional;

19 20 21 22
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
23
import org.springframework.web.bind.annotation.RequestParam;
24 25 26
import org.springframework.web.bind.annotation.RestController;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
27 28
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
29
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
30 31
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
32

33 34
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
邓实川 committed
35
import cn.hutool.core.util.ObjectUtil;
36
import cn.hutool.core.util.StrUtil;
37 38
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
39
import cn.timer.api.bean.qyzx.QyzxEntInfoM;
40
import cn.timer.api.bean.qyzx.businessService.QyzxBuyRecord;
41
import cn.timer.api.bean.qyzx.businessService.QyzxInvoiceData;
42 43 44
import cn.timer.api.bean.qyzx.businessService.QyzxOrderRecord;
import cn.timer.api.bean.qyzx.businessService.QyzxPayContent;
import cn.timer.api.bean.qyzx.businessService.QyzxRemainingQuantity;
45
import cn.timer.api.bean.qyzx.businessService.QyzxUseRecord;
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

/**
 * <p>
 * Title: QyzxBusinessController.java
 * </p>
 * <p>
 * Description:
 * </p>
 * 
 * @author dsc
 * @date 2020年4月22日
 * @version 1.0
 */
65
@Transactional
66 67 68 69 70 71
@RestController
@Api(tags = "4.1企业中心(购买服务)")
@RequestMapping(value = "/qyzxbs", produces = { "application/json" })
public class QyzxBusinessController {

	@GetMapping(value = "/getAllQuantity")
72
	@ApiOperation(value = "获取全部套餐余量信息", httpMethod = "GET", notes = "接口发布说明")
73 74 75 76 77 78 79 80
	public Result<List<QyzxRemainingQuantity>> s(@CurrentUser UserBean userBean) {
		List<QyzxRemainingQuantity> list = QyzxRemainingQuantity.builder().build()
				.selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().eq(QyzxRemainingQuantity::getIsDelete, 0)
						.eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode()));
		return ResultUtil.data(list, "查询成功");
	}

	@GetMapping(value = "/getQuantity")
81
	@ApiOperation(value = "获取套餐余量信息(数量)", httpMethod = "GET", notes = "接口发布说明")
82
	public Result<List<Map<String, Integer>>> getQuantity(@CurrentUser UserBean userBean) {
83
		List<QyzxRemainingQuantity> qyzxRemainingQuantitys1 = QyzxRemainingQuantity.builder().build()
84 85
				.selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().eq(QyzxRemainingQuantity::getIsDelete, 0)
						.eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode())
86
						.eq(QyzxRemainingQuantity::getPmid, 1).select(QyzxRemainingQuantity::getRemainder));
87 88 89
		Integer sum1 = qyzxRemainingQuantitys1.stream()
				.collect(Collectors.summingInt(QyzxRemainingQuantity::getRemainder));

90 91 92 93
		List<QyzxRemainingQuantity> qyzxRemainingQuantitys2 = QyzxRemainingQuantity.builder().build()
				.selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().eq(QyzxRemainingQuantity::getIsDelete, 0)
						.eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode())
						.eq(QyzxRemainingQuantity::getPmid, 2).select(QyzxRemainingQuantity::getRemainder));
94 95
		Integer sum2 = qyzxRemainingQuantitys2.stream()
				.collect(Collectors.summingInt(QyzxRemainingQuantity::getRemainder));
96

97
		Map<String, Integer> map1 = new HashMap<String, Integer>();
98
		map1.put("message", sum1);
99

100
		Map<String, Integer> map2 = new HashMap<String, Integer>();
101
		map2.put("contract", sum2);
102

103 104 105 106 107 108 109 110 111 112 113 114
		List<Map<String, Integer>> list = new ArrayList<Map<String, Integer>>();
		list.add(map1);
		list.add(map2);
		return ResultUtil.data(list, "获取成功");
	}

	@GetMapping(value = "/getQuantity/System")
	@ApiOperation(value = "获取系统剩余天数、版本", httpMethod = "GET", notes = "接口发布说明")
	public Result<Object> getSystemQuantity(@CurrentUser UserBean userBean) {
		QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxEntInfoM>().eq(QyzxEntInfoM::getId, userBean.getOrgCode()));
		Date endTime = qyzxEntInfoM.getEndTime();
邓实川 committed
115
		Long day = DateUtil.between(new Date(), endTime, DateUnit.DAY, false);
116 117 118 119 120 121 122 123
		Integer level = qyzxEntInfoM.getLevel();

		Map<String, Object> map1 = new HashMap<String, Object>();
		map1.put("betweenDay", day);

		Map<String, Object> map2 = new HashMap<String, Object>();
		map2.put("level", level);

124 125 126 127
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		list.add(map1);
		list.add(map2);
		return ResultUtil.data(list, "获取成功");
128

129 130 131 132
	}

	@GetMapping(value = "/getPayList/Contract")
	@ApiOperation(value = "获取短信商品列表", httpMethod = "GET", notes = "接口发布说明")
133
	public Result<List<QyzxPayContent>> getPayListwithContract(@CurrentUser UserBean userBean) {
134
		List<QyzxPayContent> list = QyzxPayContent.builder().build()
135
				.selectList(new LambdaQueryWrapper<QyzxPayContent>().eq(QyzxPayContent::getPmid, 1).select(
136 137 138
						QyzxPayContent::getId, QyzxPayContent::getContent, QyzxPayContent::getNowPrice,
						QyzxPayContent::getOriginalPrice, QyzxPayContent::getSpecification,
						QyzxPayContent::getExpiration));
139 140 141 142 143
		return ResultUtil.data(list, "获取成功");
	}

	@GetMapping(value = "/getPayList/Msg")
	@ApiOperation(value = "获取电子合同商品列表", httpMethod = "GET", notes = "接口发布说明")
144
	public Result<List<QyzxPayContent>> getPayListWithMsg(@CurrentUser UserBean userBean) {
145
		List<QyzxPayContent> list = QyzxPayContent.builder().build()
146
				.selectList(new LambdaQueryWrapper<QyzxPayContent>().eq(QyzxPayContent::getPmid, 2).select(
147 148 149
						QyzxPayContent::getId, QyzxPayContent::getContent, QyzxPayContent::getNowPrice,
						QyzxPayContent::getOriginalPrice, QyzxPayContent::getSpecification,
						QyzxPayContent::getExpiration));
150 151 152 153 154
		return ResultUtil.data(list, "获取成功");
	}

	@GetMapping(value = "/getPayList/System")
	@ApiOperation(value = "获取系统续费商品列表", httpMethod = "GET", notes = "接口发布说明")
邓实川 committed
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
	public Result<Map<String, Object>> getPayListWithSystem(@CurrentUser UserBean userBean) {
		List<QyzxPayContent> list1 = QyzxPayContent.builder().build()
				.selectList(new LambdaQueryWrapper<QyzxPayContent>().eq(QyzxPayContent::getPmid, 3)
						.eq(QyzxPayContent::getSpecification, 1).select(QyzxPayContent::getId,
								QyzxPayContent::getNowPrice, QyzxPayContent::getOriginalPrice,
								QyzxPayContent::getExpiration));
		List<QyzxPayContent> list2 = QyzxPayContent.builder().build()
				.selectList(new LambdaQueryWrapper<QyzxPayContent>().eq(QyzxPayContent::getPmid, 3)
						.eq(QyzxPayContent::getSpecification, 2).select(QyzxPayContent::getId,
								QyzxPayContent::getNowPrice, QyzxPayContent::getOriginalPrice,
								QyzxPayContent::getExpiration));

		Map<String, Object> map = new HashMap<String, Object>();
		map.put("simple", list1);
		map.put("professional", list2);
		return ResultUtil.data(map, "获取成功");
171 172 173 174
	}

	@PostMapping(value = "/generateOrder")
	@ApiOperation(value = "生成购买订单", httpMethod = "POST", notes = "接口发布说明")
175 176
	public Result<QyzxOrderRecord> generateOrder(@CurrentUser UserBean userBean,
			@RequestBody QyzxOrderRecord qyzxOrderRecord) {
177 178 179 180 181 182
		Integer orgCode = userBean.getOrgCode();
		String orderNo = String.valueOf(System.currentTimeMillis()) + orgCode; // 时间毫秒数+orgCode

		qyzxOrderRecord.setCreateUser(userBean.getEmpNum()); // 创建人
		qyzxOrderRecord.setOrgCode(orgCode);
		qyzxOrderRecord.setOrderNo(orderNo); // 订单号
183
		qyzxOrderRecord.setOrderStatus(0); // 订单状态-无
184

185
		Integer pmid = qyzxOrderRecord.getPmid(); // 商品id
186 187
		Integer pcid = qyzxOrderRecord.getPcid(); // 商品id
		QyzxPayContent qyzxPayContent = QyzxPayContent.builder().build();
188 189
		QyzxPayContent qyzxPayContent2 = qyzxPayContent.selectOne(Wrappers.lambdaQuery(qyzxPayContent)
				.eq(QyzxPayContent::getId, pcid).eq(QyzxPayContent::getPmid, pmid).select(QyzxPayContent::getContent,
190 191
						QyzxPayContent::getSpecification, QyzxPayContent::getUnit, QyzxPayContent::getExpiration,
						QyzxPayContent::getOriginalPrice, QyzxPayContent::getNowPrice));
192 193 194
		if (qyzxPayContent2 == null) {
			return ResultUtil.error("商品不存在");
		}
195 196 197 198 199
		JSONObject json = JSONUtil.parseObj(qyzxPayContent2);
		qyzxOrderRecord.setOrderDetail(json.toString()); // 订单商品详情-json字符串
		qyzxOrderRecord.insert();

		// 请求第三方接口生成预支付交易,返回二维码链接code_url TODO
200

201 202 203 204 205 206
		// 生成二维码 TODO

		return ResultUtil.data(qyzxOrderRecord, "生成订单成功");

	}

207
	@GetMapping(value = "/queryBuyRecord")
208 209 210 211
	@ApiOperation(value = "查询购买记录", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<QyzxBuyRecord>> queryBuyRecord(@CurrentUser UserBean userBean,
			@RequestParam(defaultValue = "1", required = false) Integer pageNum,
			@RequestParam(defaultValue = "10", required = false) Integer pageSize,
212 213
			@RequestParam(required = false) String query, @RequestParam(required = false) String s,
			@RequestParam(required = false) String e) {
214
		QueryWrapper<QyzxBuyRecord> queryWrapper = new QueryWrapper<>();
215
		queryWrapper.eq("org_code", userBean.getOrgCode()).and(query != null && query != "",
216
				wq -> wq.like("order_no", query).or().like("content", query));
217
		queryWrapper.between(s != null && s != "" && e != null && e != "", "create_time",
218
				!StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00");
219 220
		Page<Object> page = PageHelper.startPage(pageNum, pageSize);
		List<QyzxBuyRecord> list = QyzxBuyRecord.builder().build().selectList(queryWrapper);
221
		return ResultUtil.pageData(list, page.getTotal(), "查询成功");
222 223
	}

邓实川 committed
224 225 226 227 228 229 230 231 232 233 234 235 236
	public static void main(String[] args) {
		QyzxInvoiceData qyzxInvoiceData = new QyzxInvoiceData();
		qyzxInvoiceData.setBankAccount("123");
		qyzxInvoiceData.setBankName("234");

		if (!ObjectUtil.isAllNotEmpty(qyzxInvoiceData, qyzxInvoiceData.getBankAccount(),
				qyzxInvoiceData.getBankName())) {
			System.out.println("请完善发票信息!");
		} else {
			System.err.println("可以,不错");
		}
	}

237 238 239 240
	@PostMapping(value = "/invoicing")
	@ApiOperation(value = "开发票", httpMethod = "POST", notes = "接口发布说明")
	public Result<QyzxInvoiceData> generateOrder(@CurrentUser UserBean userBean,
			@RequestBody QyzxInvoiceData qyzxInvoiceData) {
邓实川 committed
241 242 243
		if (!ObjectUtil.isAllNotEmpty(
//				qyzxInvoiceData, 
				qyzxInvoiceData.getInvoiceTitle(),
邓实川 committed
244 245 246 247 248 249 250 251 252
				qyzxInvoiceData.getDutyParagraph(), qyzxInvoiceData.getCompanyAddress(),
				qyzxInvoiceData.getCompanyPhone(), qyzxInvoiceData.getBankName(), qyzxInvoiceData.getBankAccount(),
				qyzxInvoiceData.getInvoiceType(), qyzxInvoiceData.getInvoiceProject(),
				qyzxInvoiceData.getInvoiceValue(), qyzxInvoiceData.getConsignee(), qyzxInvoiceData.getConsigneePhone(),
				qyzxInvoiceData.getEmail(), qyzxInvoiceData.getShippingArea(), qyzxInvoiceData.getShippingAddress(),
				qyzxInvoiceData.getZipCode())) {
			return ResultUtil.error("请完善发票信息!");
		}

253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
		String orderNo = qyzxInvoiceData.getOrderNo();
		QyzxBuyRecord qyzxBuyRecord = QyzxBuyRecord.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxBuyRecord>().eq(QyzxBuyRecord::getOrderNo, orderNo));
		if (qyzxBuyRecord.getInvoiceStatus() != 0) {
			return ResultUtil.error("开票失败,请检查发票状态");
		}
		qyzxInvoiceData.setCreateUser(userBean.getEmpNum());
		qyzxInvoiceData.setOrgCode(userBean.getOrgCode());
		qyzxInvoiceData.insert();

		qyzxBuyRecord.setInvoiceStatus(1);
		qyzxBuyRecord.update(new LambdaUpdateWrapper<QyzxBuyRecord>().eq(QyzxBuyRecord::getOrderNo, orderNo));
		return ResultUtil.data(qyzxInvoiceData, "开票成功");
	}

	@GetMapping(value = "/queryInvoiceDetail")
	@ApiOperation(value = "查询开票详情", httpMethod = "GET", notes = "接口发布说明")
	public Result<QyzxInvoiceData> queryInvoiceDetail(@CurrentUser UserBean userBean, @RequestParam String orderNo) {
		return ResultUtil.data(QyzxInvoiceData.builder().build()
				.selectOne(new LambdaQueryWrapper<QyzxInvoiceData>().eq(QyzxInvoiceData::getOrderNo, orderNo)), "查询成功");
	}

	@GetMapping(value = "/queryMsgRecord")
	@ApiOperation(value = "查询短信套餐余量", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<QyzxRemainingQuantity>> queryMsgRecord(@CurrentUser UserBean userBean) {
		List<QyzxRemainingQuantity> list = QyzxRemainingQuantity.builder().build()
279
				.selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().ne(QyzxRemainingQuantity::getIsDelete, 1)
280 281 282 283 284 285 286 287 288
						.eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode())
						.eq(QyzxRemainingQuantity::getPmid, 1));
		return ResultUtil.data(list, "查询成功");
	}

	@GetMapping(value = "/queryContractRecord")
	@ApiOperation(value = "查询电子合同套餐余量", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<QyzxRemainingQuantity>> queryContractRecord(@CurrentUser UserBean userBean) {
		List<QyzxRemainingQuantity> list = QyzxRemainingQuantity.builder().build()
289
				.selectList(new LambdaQueryWrapper<QyzxRemainingQuantity>().ne(QyzxRemainingQuantity::getIsDelete, 1)
290 291 292 293
						.eq(QyzxRemainingQuantity::getOrgCode, userBean.getOrgCode())
						.eq(QyzxRemainingQuantity::getPmid, 2));
		return ResultUtil.data(list, "查询成功");
	}
294

295 296 297 298 299
	@GetMapping(value = "/queryMsgUseRecord")
	@ApiOperation(value = "查询短信使用记录", httpMethod = "GET", notes = "接口发布说明")
	public Result<List<QyzxUseRecord>> queryMsgUseRecord(@CurrentUser UserBean userBean, String orderNo) {
		return ResultUtil.data(QyzxUseRecord.builder().build()
				.selectList(new LambdaQueryWrapper<QyzxUseRecord>().eq(QyzxUseRecord::getOrderNo, orderNo)), "查询成功");
300
	}
301

302 303
	// TODO 不同业务使用 不同数据表

304 305 306 307
	@GetMapping(value = "/queryContractUseRecord")
	@ApiOperation(value = "查询电子合同套餐使用记录", httpMethod = "GET", notes = "接口发布说明")
	public Result<Object> queryContractUseRecord(@CurrentUser UserBean userBean) {
		return null;
308 309 310
	}

}