|
@@ -19,6 +19,7 @@ use support\exception\BusinessException;
|
|
|
use support\Request;
|
|
|
use support\Response;
|
|
|
use support\view\Raw;
|
|
|
+use Tinywan\Jwt\JwtToken;
|
|
|
|
|
|
class QuotaController extends Curd
|
|
|
{
|
|
@@ -323,8 +324,110 @@ class QuotaController extends Curd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public static function doWriteOff($params){
|
|
|
+ /**
|
|
|
+ * @Desc 额度核销-批量
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/6/4 8:32
|
|
|
+ *
|
|
|
+ * @param Request $request
|
|
|
+ * @return Response
|
|
|
+ */
|
|
|
+ public function writeOffBatch(Request $request)
|
|
|
+ {
|
|
|
+ $params = $request->post();
|
|
|
+ $memberId = $params['member_id'] ?? '';
|
|
|
+ $times = $params['times'] ?? '';
|
|
|
+ $code = $params['sms_code'] ?? '';
|
|
|
+
|
|
|
+ if (!$memberId || !$code) {
|
|
|
+ return json_fail("参数异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证码核验
|
|
|
+ $member = Member::find($memberId);
|
|
|
+ $mobile = $member->member_mobile;
|
|
|
+ $key = "SMS:CODE:WRITE_OFF:" . $mobile;
|
|
|
+ $redisCode = Redis::get($key);
|
|
|
+ if ($redisCode != $code) {
|
|
|
+ return json_fail("验证码错误,请重新输入");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!$times) {
|
|
|
+ $params['times'] = date('Y-m-d H:i:s');
|
|
|
+ } else {
|
|
|
+ $params['times'] = date('Y-m-d H:i:s', strtotime($times));
|
|
|
+ }
|
|
|
+
|
|
|
+ Db::beginTransaction();
|
|
|
+ try {
|
|
|
+ foreach($params['quotaList'] as $quota){
|
|
|
+ if (!isset($quota['nbr']) || intval($quota['nbr']) == 0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $nbr = intval($quota['nbr']);
|
|
|
+
|
|
|
+ $quotas = MemberQuota::where('join_quota_member_id', $memberId)
|
|
|
+ ->where('join_member_rule_added_component_id', $quota['rule_added_component_id'])
|
|
|
+ ->where('member_quota_status', 'PENDING')
|
|
|
+ ->limit($nbr)
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+
|
|
|
+ if ($quotas[0]['member_quota_nbr'] != '-99.00' && count($quotas) < intval($nbr)) {
|
|
|
+ return json_fail("可核销数量不足");
|
|
|
+ }
|
|
|
+ // 生成核销数据
|
|
|
+ $param = [
|
|
|
+ 'component_id'=>$quota['rule_added_component_id'],
|
|
|
+ 'member_id'=>$memberId,
|
|
|
+ 'write_off_member_id'=>$params['write_off_member_id'],
|
|
|
+ 'dept_premises_id'=>$params['dept_premises_id'] ?? '',
|
|
|
+ 'times'=>$params['times'],
|
|
|
+ 'remark'=>$params['remark'] ?? ''
|
|
|
+ ];
|
|
|
+ $writeOffData = AddedService::generateWriteOffData($param);
|
|
|
+ if($quotas[0]['member_quota_nbr'] != '-99.00'){
|
|
|
+ foreach ($quotas as $quota) {
|
|
|
+ $writeOffData['member_quota_id'] = $quota['member_quota_id'];
|
|
|
|
|
|
+ MemberQuota::where('member_quota_id', $quota['member_quota_id'])->update([
|
|
|
+ 'member_quota_status' => 'USED',
|
|
|
+ 'member_quota_used_json' => json_encode($writeOffData)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $quota = $quotas[0];
|
|
|
+ for($i=0;$i<$nbr;$i++){
|
|
|
+ $quota['member_quota_id'] = 'MQ'.date('YmdHis').random_string(6,'up');
|
|
|
+ $quota['member_quota_status'] = 'USED';
|
|
|
+ $quota['member_quota_used_json'] = json_encode($writeOffData);
|
|
|
+ $quota['member_quota_addtimes'] = strtotime($quota['member_quota_addtimes']);
|
|
|
+ $quota['member_quota_nbr'] = 1;
|
|
|
+ MemberQuota::insert($quota);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ _syslog("核销","核销成功");
|
|
|
+
|
|
|
+ // 清除验证码
|
|
|
+ // Redis::del($key);
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+
|
|
|
+ return json_success("核销成功");
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Db::rollBack();
|
|
|
+
|
|
|
+ dump($e->getMessage());
|
|
|
+ _syslog("核销","核销失败");
|
|
|
+
|
|
|
+ return json_fail("核销失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function doWriteOff($params)
|
|
|
+ {
|
|
|
$quotas = MemberQuota::where('join_quota_member_id', $params['member_id'])
|
|
|
->where('join_member_rule_added_component_id', $params['component_id'])
|
|
|
->where('member_quota_status', 'PENDING')
|
|
@@ -364,4 +467,31 @@ class QuotaController extends Curd
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 会员账户,批量核销选择的权益
|
|
|
+ */
|
|
|
+ public function chooseList(Request $request)
|
|
|
+ {
|
|
|
+ $memberId = $request->get('member_id', '');
|
|
|
+ $componentIds = $request->get('component_ids', []);
|
|
|
+
|
|
|
+ if(empty($componentIds) || !$memberId){
|
|
|
+ return json_fail("参数异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ $components = RuleAddedComponent::whereIn('rule_added_component_id',$componentIds)
|
|
|
+ ->select('rule_added_component_name','rule_added_component_id')
|
|
|
+ ->get();
|
|
|
+ foreach ($components as &$component){
|
|
|
+ $component->unused = MemberQuota::where('join_quota_member_id',$memberId)
|
|
|
+ ->where('join_member_rule_added_component_id',$component->rule_added_component_id)
|
|
|
+ ->where('member_quota_status','PENDING')
|
|
|
+ ->count();
|
|
|
+ }
|
|
|
+
|
|
|
+ $member = Member::where('member_id',$memberId)->select('member_id','member_mobile')->first();
|
|
|
+
|
|
|
+ return json_success('',['member'=>$member,'quotas'=>$components]);
|
|
|
+ }
|
|
|
+
|
|
|
}
|